@txnlab/use-wallet-ui-react 1.1.0 → 1.2.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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../src/utils/fontLoader.ts","../../../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs","../../../../node_modules/.pnpm/tailwind-merge@3.5.0/node_modules/tailwind-merge/dist/bundle-mjs.mjs","../../src/utils/cn.ts","../../src/components/ConnectWalletButton.tsx","../../../../node_modules/.pnpm/@tanstack+query-core@5.90.20/node_modules/@tanstack/query-core/build/modern/subscribable.js","../../../../node_modules/.pnpm/@tanstack+query-core@5.90.20/node_modules/@tanstack/query-core/build/modern/timeoutManager.js","../../../../node_modules/.pnpm/@tanstack+query-core@5.90.20/node_modules/@tanstack/query-core/build/modern/utils.js","../../../../node_modules/.pnpm/@tanstack+query-core@5.90.20/node_modules/@tanstack/query-core/build/modern/focusManager.js","../../../../node_modules/.pnpm/@tanstack+query-core@5.90.20/node_modules/@tanstack/query-core/build/modern/thenable.js","../../../../node_modules/.pnpm/@tanstack+query-core@5.90.20/node_modules/@tanstack/query-core/build/modern/notifyManager.js","../../../../node_modules/.pnpm/@tanstack+query-core@5.90.20/node_modules/@tanstack/query-core/build/modern/onlineManager.js","../../../../node_modules/.pnpm/@tanstack+query-core@5.90.20/node_modules/@tanstack/query-core/build/modern/retryer.js","../../../../node_modules/.pnpm/@tanstack+query-core@5.90.20/node_modules/@tanstack/query-core/build/modern/removable.js","../../../../node_modules/.pnpm/@tanstack+query-core@5.90.20/node_modules/@tanstack/query-core/build/modern/query.js","../../../../node_modules/.pnpm/@tanstack+query-core@5.90.20/node_modules/@tanstack/query-core/build/modern/queryObserver.js","../../../../node_modules/.pnpm/@tanstack+query-core@5.90.20/node_modules/@tanstack/query-core/build/modern/infiniteQueryBehavior.js","../../../../node_modules/.pnpm/@tanstack+query-core@5.90.20/node_modules/@tanstack/query-core/build/modern/mutation.js","../../../../node_modules/.pnpm/@tanstack+query-core@5.90.20/node_modules/@tanstack/query-core/build/modern/mutationCache.js","../../../../node_modules/.pnpm/@tanstack+query-core@5.90.20/node_modules/@tanstack/query-core/build/modern/queryCache.js","../../../../node_modules/.pnpm/@tanstack+query-core@5.90.20/node_modules/@tanstack/query-core/build/modern/queryClient.js","../../../../node_modules/.pnpm/@tanstack+react-query@5.90.21_react@19.2.4/node_modules/@tanstack/react-query/build/modern/QueryClientProvider.js","../../../../node_modules/.pnpm/@tanstack+react-query@5.90.21_react@19.2.4/node_modules/@tanstack/react-query/build/modern/IsRestoringProvider.js","../../../../node_modules/.pnpm/@tanstack+react-query@5.90.21_react@19.2.4/node_modules/@tanstack/react-query/build/modern/QueryErrorResetBoundary.js","../../../../node_modules/.pnpm/@tanstack+react-query@5.90.21_react@19.2.4/node_modules/@tanstack/react-query/build/modern/errorBoundaryUtils.js","../../../../node_modules/.pnpm/@tanstack+react-query@5.90.21_react@19.2.4/node_modules/@tanstack/react-query/build/modern/suspense.js","../../../../node_modules/.pnpm/@tanstack+react-query@5.90.21_react@19.2.4/node_modules/@tanstack/react-query/build/modern/useBaseQuery.js","../../../../node_modules/.pnpm/@tanstack+react-query@5.90.21_react@19.2.4/node_modules/@tanstack/react-query/build/modern/useQuery.js","../../src/hooks/useResolvedTheme.ts","../../src/plugins/PluginContext.tsx","../../src/plugins/PluginDialogRenderer.tsx","../../src/plugins/PluginLifecycleManager.tsx","../../src/providers/WalletUIProvider.tsx","../../src/components/WalletList.tsx","../../src/components/ConnectWalletMenu.tsx","../../../../node_modules/.pnpm/@txnlab+utils-ts@0.1.0/node_modules/@txnlab/utils-ts/dist/esm/index.js","../../src/hooks/useNfd.ts","../../src/utils/ipfs.ts","../../src/components/NfdAvatar.tsx","../../src/components/ConnectedWalletButton.tsx","../../../../node_modules/.pnpm/@react-aria+utils@3.29.1_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@react-aria/utils/dist/useLayoutEffect.mjs","../../../../node_modules/.pnpm/@react-aria+utils@3.29.1_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@react-aria/utils/dist/useEffectEvent.mjs","../../../../node_modules/.pnpm/@react-aria+utils@3.29.1_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@react-aria/utils/dist/domHelpers.mjs","../../../../node_modules/.pnpm/@react-stately+flags@3.1.2/node_modules/@react-stately/flags/dist/import.mjs","../../../../node_modules/.pnpm/@react-aria+utils@3.29.1_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@react-aria/utils/dist/DOMFunctions.mjs","../../../../node_modules/.pnpm/@react-aria+utils@3.29.1_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@react-aria/utils/dist/platform.mjs","../../../../node_modules/.pnpm/@react-aria+utils@3.29.1_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@react-aria/utils/dist/useGlobalListeners.mjs","../../../../node_modules/.pnpm/@react-aria+utils@3.29.1_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@react-aria/utils/dist/isVirtualEvent.mjs","../../../../node_modules/.pnpm/@react-aria+interactions@3.25.3_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@react-aria/interactions/dist/utils.mjs","../../../../node_modules/.pnpm/@react-aria+interactions@3.25.3_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@react-aria/interactions/dist/useFocusVisible.mjs","../../../../node_modules/.pnpm/@react-aria+interactions@3.25.3_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@react-aria/interactions/dist/useFocus.mjs","../../../../node_modules/.pnpm/@react-aria+interactions@3.25.3_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@react-aria/interactions/dist/useFocusWithin.mjs","../../../../node_modules/.pnpm/@react-aria+interactions@3.25.3_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@react-aria/interactions/dist/useHover.mjs","../../../../node_modules/.pnpm/@react-aria+focus@3.20.5_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@react-aria/focus/dist/useFocusRing.mjs","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/utils/env.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/utils/owner.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/utils/micro-task.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/utils/disposables.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/hooks/use-disposables.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/hooks/use-iso-morphic-effect.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/hooks/use-latest-value.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/hooks/use-event.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/hooks/use-active-press.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/hooks/use-slot.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/internal/disabled.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/utils/class-names.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/utils/match.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/utils/render.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/hooks/use-controllable.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/hooks/use-default-value.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/utils/form.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/internal/hidden.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/internal/form-fields.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/internal/id.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/utils/dom.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/utils/bugs.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/hooks/use-sync-refs.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/components/description/description.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/components/keyboard.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/components/label/label.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/hooks/use-by-comparator.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/hooks/use-element-size.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/components/mouse.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/hooks/use-handle-toggle.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/utils/default-map.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/machine.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/machines/stack-machine.js","../../../../node_modules/.pnpm/use-sync-external-store@1.5.0_react@19.2.4/node_modules/use-sync-external-store/cjs/use-sync-external-store-with-selector.production.js","../../../../node_modules/.pnpm/use-sync-external-store@1.5.0_react@19.2.4/node_modules/use-sync-external-store/cjs/use-sync-external-store-with-selector.development.js","../../../../node_modules/.pnpm/use-sync-external-store@1.5.0_react@19.2.4/node_modules/use-sync-external-store/with-selector.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/react-glue.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/hooks/use-is-top-layer.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/hooks/use-inert-others.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/hooks/use-on-disappear.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/utils/focus-management.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/utils/platform.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/hooks/use-document-event.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/hooks/use-window-event.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/hooks/use-outside-click.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/hooks/use-owner.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/hooks/use-quick-release.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/hooks/use-resolve-button-type.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/hooks/use-store.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/utils/store.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/hooks/document-overflow/adjust-scrollbar-padding.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/hooks/document-overflow/handle-ios-locking.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/hooks/document-overflow/prevent-scroll.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/hooks/document-overflow/overflow-store.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/hooks/document-overflow/use-document-overflow.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/hooks/use-scroll-lock.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/hooks/use-tracked-pointer.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/hooks/use-flags.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/hooks/use-transition.js","../../../../node_modules/.pnpm/@floating-ui+react@0.26.28_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@floating-ui/react/dist/floating-ui.react.utils.mjs","../../../../node_modules/.pnpm/@floating-ui+react@0.26.28_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@floating-ui/react/dist/floating-ui.react.mjs","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/internal/floating.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/internal/frozen.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/internal/open-closed.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/utils/calculate-active-index.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/hooks/use-on-unmount.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/internal/portal-force-root.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/components/portal/portal.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/utils/element-movement.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/utils/get-text-value.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/hooks/use-text-value.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/components/listbox/listbox-machine.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/components/listbox/listbox-machine-glue.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.9_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@headlessui/react/dist/components/listbox/listbox.js","../../src/hooks/useAccountInfo.ts","../../src/plugins/PluginSlot.tsx","../../src/components/AlgoSymbol.tsx","../../src/components/ConnectedWalletMenu.tsx","../../src/components/WalletButton.tsx","../../src/index.ts"],"sourcesContent":["/**\n * Initiates font injection process with SSR safety mechanisms.\n * Defers actual injection to ensure compatibility with various rendering environments.\n * @private\n */\nconst injectFonts = (): void => {\n if (typeof window === 'undefined' || typeof document === 'undefined') {\n return\n }\n\n if (typeof window.requestAnimationFrame === 'function') {\n window.requestAnimationFrame(() => {\n performFontInjection()\n })\n } else {\n setTimeout(performFontInjection, 0)\n }\n}\n\n/**\n * Handles the actual font injection process.\n * Creates a style element with font-face declarations and appends it to document head.\n * Includes fallback mechanisms for various failure scenarios.\n * @private\n */\nconst performFontInjection = (): void => {\n try {\n const existingStyle = document.getElementById('wallet-ui-fonts')\n if (existingStyle) return\n\n const style = document.createElement('style')\n style.id = 'wallet-ui-fonts'\n\n let fontUrl = ''\n try {\n fontUrl = new URL(\n '../fonts/Aeonik-Bold.woff2',\n import.meta.url,\n ).toString()\n } catch (urlError) {\n console.warn(\n 'Could not resolve font URL. Using fallback styling.',\n urlError,\n )\n }\n\n style.textContent = `\n @font-face {\n font-family: 'Aeonik';\n src: url('${fontUrl}') format('woff2');\n font-weight: 700;\n font-style: normal;\n font-display: swap;\n }\n \n .wallet-custom-font {\n font-family: 'Aeonik', system-ui, sans-serif !important;\n }\n `\n // Insert at the START of <head> so consumer styles can override if needed\n document.head.insertBefore(style, document.head.firstChild)\n console.log('Wallet UI fonts loaded')\n } catch (error) {\n console.warn(\n 'Failed to load custom fonts, using system fonts instead',\n error,\n )\n }\n}\n\n/**\n * Initializes font loading for the UI components.\n * Safe to use in any environment (SSR, CSR, Next.js, etc).\n * Will automatically inject the Aeonik font for components using the 'wallet-custom-font' class.\n * Falls back gracefully to system fonts if loading fails.\n */\nexport const initializeFonts = (): void => {\n if (typeof window !== 'undefined') {\n injectFonts()\n }\n}\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","/**\n * Concatenates two arrays faster than the array spread operator.\n */\nconst concatArrays = (array1, array2) => {\n // Pre-allocate for better V8 optimization\n const combinedArray = new Array(array1.length + array2.length);\n for (let i = 0; i < array1.length; i++) {\n combinedArray[i] = array1[i];\n }\n for (let i = 0; i < array2.length; i++) {\n combinedArray[array1.length + i] = array2[i];\n }\n return combinedArray;\n};\n\n// Factory function ensures consistent object shapes\nconst createClassValidatorObject = (classGroupId, validator) => ({\n classGroupId,\n validator\n});\n// Factory ensures consistent ClassPartObject shape\nconst createClassPartObject = (nextPart = new Map(), validators = null, classGroupId) => ({\n nextPart,\n validators,\n classGroupId\n});\nconst CLASS_PART_SEPARATOR = '-';\nconst EMPTY_CONFLICTS = [];\n// I use two dots here because one dot is used as prefix for class groups in plugins\nconst ARBITRARY_PROPERTY_PREFIX = 'arbitrary..';\nconst createClassGroupUtils = config => {\n const classMap = createClassMap(config);\n const {\n conflictingClassGroups,\n conflictingClassGroupModifiers\n } = config;\n const getClassGroupId = className => {\n if (className.startsWith('[') && className.endsWith(']')) {\n return getGroupIdForArbitraryProperty(className);\n }\n const classParts = className.split(CLASS_PART_SEPARATOR);\n // Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and skip it.\n const startIndex = classParts[0] === '' && classParts.length > 1 ? 1 : 0;\n return getGroupRecursive(classParts, startIndex, classMap);\n };\n const getConflictingClassGroupIds = (classGroupId, hasPostfixModifier) => {\n if (hasPostfixModifier) {\n const modifierConflicts = conflictingClassGroupModifiers[classGroupId];\n const baseConflicts = conflictingClassGroups[classGroupId];\n if (modifierConflicts) {\n if (baseConflicts) {\n // Merge base conflicts with modifier conflicts\n return concatArrays(baseConflicts, modifierConflicts);\n }\n // Only modifier conflicts\n return modifierConflicts;\n }\n // Fall back to without postfix if no modifier conflicts\n return baseConflicts || EMPTY_CONFLICTS;\n }\n return conflictingClassGroups[classGroupId] || EMPTY_CONFLICTS;\n };\n return {\n getClassGroupId,\n getConflictingClassGroupIds\n };\n};\nconst getGroupRecursive = (classParts, startIndex, classPartObject) => {\n const classPathsLength = classParts.length - startIndex;\n if (classPathsLength === 0) {\n return classPartObject.classGroupId;\n }\n const currentClassPart = classParts[startIndex];\n const nextClassPartObject = classPartObject.nextPart.get(currentClassPart);\n if (nextClassPartObject) {\n const result = getGroupRecursive(classParts, startIndex + 1, nextClassPartObject);\n if (result) return result;\n }\n const validators = classPartObject.validators;\n if (validators === null) {\n return undefined;\n }\n // Build classRest string efficiently by joining from startIndex onwards\n const classRest = startIndex === 0 ? classParts.join(CLASS_PART_SEPARATOR) : classParts.slice(startIndex).join(CLASS_PART_SEPARATOR);\n const validatorsLength = validators.length;\n for (let i = 0; i < validatorsLength; i++) {\n const validatorObj = validators[i];\n if (validatorObj.validator(classRest)) {\n return validatorObj.classGroupId;\n }\n }\n return undefined;\n};\n/**\n * Get the class group ID for an arbitrary property.\n *\n * @param className - The class name to get the group ID for. Is expected to be string starting with `[` and ending with `]`.\n */\nconst getGroupIdForArbitraryProperty = className => className.slice(1, -1).indexOf(':') === -1 ? undefined : (() => {\n const content = className.slice(1, -1);\n const colonIndex = content.indexOf(':');\n const property = content.slice(0, colonIndex);\n return property ? ARBITRARY_PROPERTY_PREFIX + property : undefined;\n})();\n/**\n * Exported for testing only\n */\nconst createClassMap = config => {\n const {\n theme,\n classGroups\n } = config;\n return processClassGroups(classGroups, theme);\n};\n// Split into separate functions to maintain monomorphic call sites\nconst processClassGroups = (classGroups, theme) => {\n const classMap = createClassPartObject();\n for (const classGroupId in classGroups) {\n const group = classGroups[classGroupId];\n processClassesRecursively(group, classMap, classGroupId, theme);\n }\n return classMap;\n};\nconst processClassesRecursively = (classGroup, classPartObject, classGroupId, theme) => {\n const len = classGroup.length;\n for (let i = 0; i < len; i++) {\n const classDefinition = classGroup[i];\n processClassDefinition(classDefinition, classPartObject, classGroupId, theme);\n }\n};\n// Split into separate functions for each type to maintain monomorphic call sites\nconst processClassDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n if (typeof classDefinition === 'string') {\n processStringDefinition(classDefinition, classPartObject, classGroupId);\n return;\n }\n if (typeof classDefinition === 'function') {\n processFunctionDefinition(classDefinition, classPartObject, classGroupId, theme);\n return;\n }\n processObjectDefinition(classDefinition, classPartObject, classGroupId, theme);\n};\nconst processStringDefinition = (classDefinition, classPartObject, classGroupId) => {\n const classPartObjectToEdit = classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition);\n classPartObjectToEdit.classGroupId = classGroupId;\n};\nconst processFunctionDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n if (isThemeGetter(classDefinition)) {\n processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);\n return;\n }\n if (classPartObject.validators === null) {\n classPartObject.validators = [];\n }\n classPartObject.validators.push(createClassValidatorObject(classGroupId, classDefinition));\n};\nconst processObjectDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n const entries = Object.entries(classDefinition);\n const len = entries.length;\n for (let i = 0; i < len; i++) {\n const [key, value] = entries[i];\n processClassesRecursively(value, getPart(classPartObject, key), classGroupId, theme);\n }\n};\nconst getPart = (classPartObject, path) => {\n let current = classPartObject;\n const parts = path.split(CLASS_PART_SEPARATOR);\n const len = parts.length;\n for (let i = 0; i < len; i++) {\n const part = parts[i];\n let next = current.nextPart.get(part);\n if (!next) {\n next = createClassPartObject();\n current.nextPart.set(part, next);\n }\n current = next;\n }\n return current;\n};\n// Type guard maintains monomorphic check\nconst isThemeGetter = func => 'isThemeGetter' in func && func.isThemeGetter === true;\n\n// LRU cache implementation using plain objects for simplicity\nconst createLruCache = maxCacheSize => {\n if (maxCacheSize < 1) {\n return {\n get: () => undefined,\n set: () => {}\n };\n }\n let cacheSize = 0;\n let cache = Object.create(null);\n let previousCache = Object.create(null);\n const update = (key, value) => {\n cache[key] = value;\n cacheSize++;\n if (cacheSize > maxCacheSize) {\n cacheSize = 0;\n previousCache = cache;\n cache = Object.create(null);\n }\n };\n return {\n get(key) {\n let value = cache[key];\n if (value !== undefined) {\n return value;\n }\n if ((value = previousCache[key]) !== undefined) {\n update(key, value);\n return value;\n }\n },\n set(key, value) {\n if (key in cache) {\n cache[key] = value;\n } else {\n update(key, value);\n }\n }\n };\n};\nconst IMPORTANT_MODIFIER = '!';\nconst MODIFIER_SEPARATOR = ':';\nconst EMPTY_MODIFIERS = [];\n// Pre-allocated result object shape for consistency\nconst createResultObject = (modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition, isExternal) => ({\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition,\n isExternal\n});\nconst createParseClassName = config => {\n const {\n prefix,\n experimentalParseClassName\n } = config;\n /**\n * Parse class name into parts.\n *\n * Inspired by `splitAtTopLevelOnly` used in Tailwind CSS\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js\n */\n let parseClassName = className => {\n // Use simple array with push for better performance\n const modifiers = [];\n let bracketDepth = 0;\n let parenDepth = 0;\n let modifierStart = 0;\n let postfixModifierPosition;\n const len = className.length;\n for (let index = 0; index < len; index++) {\n const currentCharacter = className[index];\n if (bracketDepth === 0 && parenDepth === 0) {\n if (currentCharacter === MODIFIER_SEPARATOR) {\n modifiers.push(className.slice(modifierStart, index));\n modifierStart = index + 1;\n continue;\n }\n if (currentCharacter === '/') {\n postfixModifierPosition = index;\n continue;\n }\n }\n if (currentCharacter === '[') bracketDepth++;else if (currentCharacter === ']') bracketDepth--;else if (currentCharacter === '(') parenDepth++;else if (currentCharacter === ')') parenDepth--;\n }\n const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.slice(modifierStart);\n // Inline important modifier check\n let baseClassName = baseClassNameWithImportantModifier;\n let hasImportantModifier = false;\n if (baseClassNameWithImportantModifier.endsWith(IMPORTANT_MODIFIER)) {\n baseClassName = baseClassNameWithImportantModifier.slice(0, -1);\n hasImportantModifier = true;\n } else if (\n /**\n * In Tailwind CSS v3 the important modifier was at the start of the base class name. This is still supported for legacy reasons.\n * @see https://github.com/dcastil/tailwind-merge/issues/513#issuecomment-2614029864\n */\n baseClassNameWithImportantModifier.startsWith(IMPORTANT_MODIFIER)) {\n baseClassName = baseClassNameWithImportantModifier.slice(1);\n hasImportantModifier = true;\n }\n const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : undefined;\n return createResultObject(modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition);\n };\n if (prefix) {\n const fullPrefix = prefix + MODIFIER_SEPARATOR;\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => className.startsWith(fullPrefix) ? parseClassNameOriginal(className.slice(fullPrefix.length)) : createResultObject(EMPTY_MODIFIERS, false, className, undefined, true);\n }\n if (experimentalParseClassName) {\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => experimentalParseClassName({\n className,\n parseClassName: parseClassNameOriginal\n });\n }\n return parseClassName;\n};\n\n/**\n * Sorts modifiers according to following schema:\n * - Predefined modifiers are sorted alphabetically\n * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it\n */\nconst createSortModifiers = config => {\n // Pre-compute weights for all known modifiers for O(1) comparison\n const modifierWeights = new Map();\n // Assign weights to sensitive modifiers (highest priority, but preserve order)\n config.orderSensitiveModifiers.forEach((mod, index) => {\n modifierWeights.set(mod, 1000000 + index); // High weights for sensitive mods\n });\n return modifiers => {\n const result = [];\n let currentSegment = [];\n // Process modifiers in one pass\n for (let i = 0; i < modifiers.length; i++) {\n const modifier = modifiers[i];\n // Check if modifier is sensitive (starts with '[' or in orderSensitiveModifiers)\n const isArbitrary = modifier[0] === '[';\n const isOrderSensitive = modifierWeights.has(modifier);\n if (isArbitrary || isOrderSensitive) {\n // Sort and flush current segment alphabetically\n if (currentSegment.length > 0) {\n currentSegment.sort();\n result.push(...currentSegment);\n currentSegment = [];\n }\n result.push(modifier);\n } else {\n // Regular modifier - add to current segment for batch sorting\n currentSegment.push(modifier);\n }\n }\n // Sort and add any remaining segment items\n if (currentSegment.length > 0) {\n currentSegment.sort();\n result.push(...currentSegment);\n }\n return result;\n };\n};\nconst createConfigUtils = config => ({\n cache: createLruCache(config.cacheSize),\n parseClassName: createParseClassName(config),\n sortModifiers: createSortModifiers(config),\n ...createClassGroupUtils(config)\n});\nconst SPLIT_CLASSES_REGEX = /\\s+/;\nconst mergeClassList = (classList, configUtils) => {\n const {\n parseClassName,\n getClassGroupId,\n getConflictingClassGroupIds,\n sortModifiers\n } = configUtils;\n /**\n * Set of classGroupIds in following format:\n * `{importantModifier}{variantModifiers}{classGroupId}`\n * @example 'float'\n * @example 'hover:focus:bg-color'\n * @example 'md:!pr'\n */\n const classGroupsInConflict = [];\n const classNames = classList.trim().split(SPLIT_CLASSES_REGEX);\n let result = '';\n for (let index = classNames.length - 1; index >= 0; index -= 1) {\n const originalClassName = classNames[index];\n const {\n isExternal,\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition\n } = parseClassName(originalClassName);\n if (isExternal) {\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n let hasPostfixModifier = !!maybePostfixModifierPosition;\n let classGroupId = getClassGroupId(hasPostfixModifier ? baseClassName.substring(0, maybePostfixModifierPosition) : baseClassName);\n if (!classGroupId) {\n if (!hasPostfixModifier) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n classGroupId = getClassGroupId(baseClassName);\n if (!classGroupId) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n hasPostfixModifier = false;\n }\n // Fast path: skip sorting for empty or single modifier\n const variantModifier = modifiers.length === 0 ? '' : modifiers.length === 1 ? modifiers[0] : sortModifiers(modifiers).join(':');\n const modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier;\n const classId = modifierId + classGroupId;\n if (classGroupsInConflict.indexOf(classId) > -1) {\n // Tailwind class omitted due to conflict\n continue;\n }\n classGroupsInConflict.push(classId);\n const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier);\n for (let i = 0; i < conflictGroups.length; ++i) {\n const group = conflictGroups[i];\n classGroupsInConflict.push(modifierId + group);\n }\n // Tailwind class not in conflict\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n }\n return result;\n};\n\n/**\n * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.\n *\n * Specifically:\n * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js\n * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts\n *\n * Original code has MIT license: Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n */\nconst twJoin = (...classLists) => {\n let index = 0;\n let argument;\n let resolvedValue;\n let string = '';\n while (index < classLists.length) {\n if (argument = classLists[index++]) {\n if (resolvedValue = toValue(argument)) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n};\nconst toValue = mix => {\n // Fast path for strings\n if (typeof mix === 'string') {\n return mix;\n }\n let resolvedValue;\n let string = '';\n for (let k = 0; k < mix.length; k++) {\n if (mix[k]) {\n if (resolvedValue = toValue(mix[k])) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n};\nconst createTailwindMerge = (createConfigFirst, ...createConfigRest) => {\n let configUtils;\n let cacheGet;\n let cacheSet;\n let functionToCall;\n const initTailwindMerge = classList => {\n const config = createConfigRest.reduce((previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig), createConfigFirst());\n configUtils = createConfigUtils(config);\n cacheGet = configUtils.cache.get;\n cacheSet = configUtils.cache.set;\n functionToCall = tailwindMerge;\n return tailwindMerge(classList);\n };\n const tailwindMerge = classList => {\n const cachedResult = cacheGet(classList);\n if (cachedResult) {\n return cachedResult;\n }\n const result = mergeClassList(classList, configUtils);\n cacheSet(classList, result);\n return result;\n };\n functionToCall = initTailwindMerge;\n return (...args) => functionToCall(twJoin(...args));\n};\nconst fallbackThemeArr = [];\nconst fromTheme = key => {\n const themeGetter = theme => theme[key] || fallbackThemeArr;\n themeGetter.isThemeGetter = true;\n return themeGetter;\n};\nconst arbitraryValueRegex = /^\\[(?:(\\w[\\w-]*):)?(.+)\\]$/i;\nconst arbitraryVariableRegex = /^\\((?:(\\w[\\w-]*):)?(.+)\\)$/i;\nconst fractionRegex = /^\\d+(?:\\.\\d+)?\\/\\d+(?:\\.\\d+)?$/;\nconst tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/;\nconst lengthUnitRegex = /\\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\\b(calc|min|max|clamp)\\(.+\\)|^0$/;\nconst colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\\(.+\\)$/;\n// Shadow always begins with x and y offset separated by underscore optionally prepended by inset\nconst shadowRegex = /^(inset_)?-?((\\d+)?\\.?(\\d+)[a-z]+|0)_-?((\\d+)?\\.?(\\d+)[a-z]+|0)/;\nconst imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\\(.+\\)$/;\nconst isFraction = value => fractionRegex.test(value);\nconst isNumber = value => !!value && !Number.isNaN(Number(value));\nconst isInteger = value => !!value && Number.isInteger(Number(value));\nconst isPercent = value => value.endsWith('%') && isNumber(value.slice(0, -1));\nconst isTshirtSize = value => tshirtUnitRegex.test(value);\nconst isAny = () => true;\nconst isLengthOnly = value =>\n// `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.\n// For example, `hsl(0 0% 0%)` would be classified as a length without this check.\n// I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.\nlengthUnitRegex.test(value) && !colorFunctionRegex.test(value);\nconst isNever = () => false;\nconst isShadow = value => shadowRegex.test(value);\nconst isImage = value => imageRegex.test(value);\nconst isAnyNonArbitrary = value => !isArbitraryValue(value) && !isArbitraryVariable(value);\nconst isArbitrarySize = value => getIsArbitraryValue(value, isLabelSize, isNever);\nconst isArbitraryValue = value => arbitraryValueRegex.test(value);\nconst isArbitraryLength = value => getIsArbitraryValue(value, isLabelLength, isLengthOnly);\nconst isArbitraryNumber = value => getIsArbitraryValue(value, isLabelNumber, isNumber);\nconst isArbitraryWeight = value => getIsArbitraryValue(value, isLabelWeight, isAny);\nconst isArbitraryFamilyName = value => getIsArbitraryValue(value, isLabelFamilyName, isNever);\nconst isArbitraryPosition = value => getIsArbitraryValue(value, isLabelPosition, isNever);\nconst isArbitraryImage = value => getIsArbitraryValue(value, isLabelImage, isImage);\nconst isArbitraryShadow = value => getIsArbitraryValue(value, isLabelShadow, isShadow);\nconst isArbitraryVariable = value => arbitraryVariableRegex.test(value);\nconst isArbitraryVariableLength = value => getIsArbitraryVariable(value, isLabelLength);\nconst isArbitraryVariableFamilyName = value => getIsArbitraryVariable(value, isLabelFamilyName);\nconst isArbitraryVariablePosition = value => getIsArbitraryVariable(value, isLabelPosition);\nconst isArbitraryVariableSize = value => getIsArbitraryVariable(value, isLabelSize);\nconst isArbitraryVariableImage = value => getIsArbitraryVariable(value, isLabelImage);\nconst isArbitraryVariableShadow = value => getIsArbitraryVariable(value, isLabelShadow, true);\nconst isArbitraryVariableWeight = value => getIsArbitraryVariable(value, isLabelWeight, true);\n// Helpers\nconst getIsArbitraryValue = (value, testLabel, testValue) => {\n const result = arbitraryValueRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return testValue(result[2]);\n }\n return false;\n};\nconst getIsArbitraryVariable = (value, testLabel, shouldMatchNoLabel = false) => {\n const result = arbitraryVariableRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return shouldMatchNoLabel;\n }\n return false;\n};\n// Labels\nconst isLabelPosition = label => label === 'position' || label === 'percentage';\nconst isLabelImage = label => label === 'image' || label === 'url';\nconst isLabelSize = label => label === 'length' || label === 'size' || label === 'bg-size';\nconst isLabelLength = label => label === 'length';\nconst isLabelNumber = label => label === 'number';\nconst isLabelFamilyName = label => label === 'family-name';\nconst isLabelWeight = label => label === 'number' || label === 'weight';\nconst isLabelShadow = label => label === 'shadow';\nconst validators = /*#__PURE__*/Object.defineProperty({\n __proto__: null,\n isAny,\n isAnyNonArbitrary,\n isArbitraryFamilyName,\n isArbitraryImage,\n isArbitraryLength,\n isArbitraryNumber,\n isArbitraryPosition,\n isArbitraryShadow,\n isArbitrarySize,\n isArbitraryValue,\n isArbitraryVariable,\n isArbitraryVariableFamilyName,\n isArbitraryVariableImage,\n isArbitraryVariableLength,\n isArbitraryVariablePosition,\n isArbitraryVariableShadow,\n isArbitraryVariableSize,\n isArbitraryVariableWeight,\n isArbitraryWeight,\n isFraction,\n isInteger,\n isNumber,\n isPercent,\n isTshirtSize\n}, Symbol.toStringTag, {\n value: 'Module'\n});\nconst getDefaultConfig = () => {\n /**\n * Theme getters for theme variable namespaces\n * @see https://tailwindcss.com/docs/theme#theme-variable-namespaces\n */\n /***/\n const themeColor = fromTheme('color');\n const themeFont = fromTheme('font');\n const themeText = fromTheme('text');\n const themeFontWeight = fromTheme('font-weight');\n const themeTracking = fromTheme('tracking');\n const themeLeading = fromTheme('leading');\n const themeBreakpoint = fromTheme('breakpoint');\n const themeContainer = fromTheme('container');\n const themeSpacing = fromTheme('spacing');\n const themeRadius = fromTheme('radius');\n const themeShadow = fromTheme('shadow');\n const themeInsetShadow = fromTheme('inset-shadow');\n const themeTextShadow = fromTheme('text-shadow');\n const themeDropShadow = fromTheme('drop-shadow');\n const themeBlur = fromTheme('blur');\n const themePerspective = fromTheme('perspective');\n const themeAspect = fromTheme('aspect');\n const themeEase = fromTheme('ease');\n const themeAnimate = fromTheme('animate');\n /**\n * Helpers to avoid repeating the same scales\n *\n * We use functions that create a new array every time they're called instead of static arrays.\n * This ensures that users who modify any scale by mutating the array (e.g. with `array.push(element)`) don't accidentally mutate arrays in other parts of the config.\n */\n /***/\n const scaleBreak = () => ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'];\n const scalePosition = () => ['center', 'top', 'bottom', 'left', 'right', 'top-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-top', 'top-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-top', 'bottom-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-bottom', 'bottom-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-bottom'];\n const scalePositionWithArbitrary = () => [...scalePosition(), isArbitraryVariable, isArbitraryValue];\n const scaleOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'];\n const scaleOverscroll = () => ['auto', 'contain', 'none'];\n const scaleUnambiguousSpacing = () => [isArbitraryVariable, isArbitraryValue, themeSpacing];\n const scaleInset = () => [isFraction, 'full', 'auto', ...scaleUnambiguousSpacing()];\n const scaleGridTemplateColsRows = () => [isInteger, 'none', 'subgrid', isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartAndEnd = () => ['auto', {\n span: ['full', isInteger, isArbitraryVariable, isArbitraryValue]\n }, isInteger, isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartOrEnd = () => [isInteger, 'auto', isArbitraryVariable, isArbitraryValue];\n const scaleGridAutoColsRows = () => ['auto', 'min', 'max', 'fr', isArbitraryVariable, isArbitraryValue];\n const scaleAlignPrimaryAxis = () => ['start', 'end', 'center', 'between', 'around', 'evenly', 'stretch', 'baseline', 'center-safe', 'end-safe'];\n const scaleAlignSecondaryAxis = () => ['start', 'end', 'center', 'stretch', 'center-safe', 'end-safe'];\n const scaleMargin = () => ['auto', ...scaleUnambiguousSpacing()];\n const scaleSizing = () => [isFraction, 'auto', 'full', 'dvw', 'dvh', 'lvw', 'lvh', 'svw', 'svh', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];\n const scaleSizingInline = () => [isFraction, 'screen', 'full', 'dvw', 'lvw', 'svw', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];\n const scaleSizingBlock = () => [isFraction, 'screen', 'full', 'lh', 'dvh', 'lvh', 'svh', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];\n const scaleColor = () => [themeColor, isArbitraryVariable, isArbitraryValue];\n const scaleBgPosition = () => [...scalePosition(), isArbitraryVariablePosition, isArbitraryPosition, {\n position: [isArbitraryVariable, isArbitraryValue]\n }];\n const scaleBgRepeat = () => ['no-repeat', {\n repeat: ['', 'x', 'y', 'space', 'round']\n }];\n const scaleBgSize = () => ['auto', 'cover', 'contain', isArbitraryVariableSize, isArbitrarySize, {\n size: [isArbitraryVariable, isArbitraryValue]\n }];\n const scaleGradientStopPosition = () => [isPercent, isArbitraryVariableLength, isArbitraryLength];\n const scaleRadius = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', 'full', themeRadius, isArbitraryVariable, isArbitraryValue];\n const scaleBorderWidth = () => ['', isNumber, isArbitraryVariableLength, isArbitraryLength];\n const scaleLineStyle = () => ['solid', 'dashed', 'dotted', 'double'];\n const scaleBlendMode = () => ['normal', 'multiply', 'screen', 'overlay', 'darken', 'lighten', 'color-dodge', 'color-burn', 'hard-light', 'soft-light', 'difference', 'exclusion', 'hue', 'saturation', 'color', 'luminosity'];\n const scaleMaskImagePosition = () => [isNumber, isPercent, isArbitraryVariablePosition, isArbitraryPosition];\n const scaleBlur = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeBlur, isArbitraryVariable, isArbitraryValue];\n const scaleRotate = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleScale = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleSkew = () => [isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleTranslate = () => [isFraction, 'full', ...scaleUnambiguousSpacing()];\n return {\n cacheSize: 500,\n theme: {\n animate: ['spin', 'ping', 'pulse', 'bounce'],\n aspect: ['video'],\n blur: [isTshirtSize],\n breakpoint: [isTshirtSize],\n color: [isAny],\n container: [isTshirtSize],\n 'drop-shadow': [isTshirtSize],\n ease: ['in', 'out', 'in-out'],\n font: [isAnyNonArbitrary],\n 'font-weight': ['thin', 'extralight', 'light', 'normal', 'medium', 'semibold', 'bold', 'extrabold', 'black'],\n 'inset-shadow': [isTshirtSize],\n leading: ['none', 'tight', 'snug', 'normal', 'relaxed', 'loose'],\n perspective: ['dramatic', 'near', 'normal', 'midrange', 'distant', 'none'],\n radius: [isTshirtSize],\n shadow: [isTshirtSize],\n spacing: ['px', isNumber],\n text: [isTshirtSize],\n 'text-shadow': [isTshirtSize],\n tracking: ['tighter', 'tight', 'normal', 'wide', 'wider', 'widest']\n },\n classGroups: {\n // --------------\n // --- Layout ---\n // --------------\n /**\n * Aspect Ratio\n * @see https://tailwindcss.com/docs/aspect-ratio\n */\n aspect: [{\n aspect: ['auto', 'square', isFraction, isArbitraryValue, isArbitraryVariable, themeAspect]\n }],\n /**\n * Container\n * @see https://tailwindcss.com/docs/container\n * @deprecated since Tailwind CSS v4.0.0\n */\n container: ['container'],\n /**\n * Columns\n * @see https://tailwindcss.com/docs/columns\n */\n columns: [{\n columns: [isNumber, isArbitraryValue, isArbitraryVariable, themeContainer]\n }],\n /**\n * Break After\n * @see https://tailwindcss.com/docs/break-after\n */\n 'break-after': [{\n 'break-after': scaleBreak()\n }],\n /**\n * Break Before\n * @see https://tailwindcss.com/docs/break-before\n */\n 'break-before': [{\n 'break-before': scaleBreak()\n }],\n /**\n * Break Inside\n * @see https://tailwindcss.com/docs/break-inside\n */\n 'break-inside': [{\n 'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column']\n }],\n /**\n * Box Decoration Break\n * @see https://tailwindcss.com/docs/box-decoration-break\n */\n 'box-decoration': [{\n 'box-decoration': ['slice', 'clone']\n }],\n /**\n * Box Sizing\n * @see https://tailwindcss.com/docs/box-sizing\n */\n box: [{\n box: ['border', 'content']\n }],\n /**\n * Display\n * @see https://tailwindcss.com/docs/display\n */\n display: ['block', 'inline-block', 'inline', 'flex', 'inline-flex', 'table', 'inline-table', 'table-caption', 'table-cell', 'table-column', 'table-column-group', 'table-footer-group', 'table-header-group', 'table-row-group', 'table-row', 'flow-root', 'grid', 'inline-grid', 'contents', 'list-item', 'hidden'],\n /**\n * Screen Reader Only\n * @see https://tailwindcss.com/docs/display#screen-reader-only\n */\n sr: ['sr-only', 'not-sr-only'],\n /**\n * Floats\n * @see https://tailwindcss.com/docs/float\n */\n float: [{\n float: ['right', 'left', 'none', 'start', 'end']\n }],\n /**\n * Clear\n * @see https://tailwindcss.com/docs/clear\n */\n clear: [{\n clear: ['left', 'right', 'both', 'none', 'start', 'end']\n }],\n /**\n * Isolation\n * @see https://tailwindcss.com/docs/isolation\n */\n isolation: ['isolate', 'isolation-auto'],\n /**\n * Object Fit\n * @see https://tailwindcss.com/docs/object-fit\n */\n 'object-fit': [{\n object: ['contain', 'cover', 'fill', 'none', 'scale-down']\n }],\n /**\n * Object Position\n * @see https://tailwindcss.com/docs/object-position\n */\n 'object-position': [{\n object: scalePositionWithArbitrary()\n }],\n /**\n * Overflow\n * @see https://tailwindcss.com/docs/overflow\n */\n overflow: [{\n overflow: scaleOverflow()\n }],\n /**\n * Overflow X\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-x': [{\n 'overflow-x': scaleOverflow()\n }],\n /**\n * Overflow Y\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-y': [{\n 'overflow-y': scaleOverflow()\n }],\n /**\n * Overscroll Behavior\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n overscroll: [{\n overscroll: scaleOverscroll()\n }],\n /**\n * Overscroll Behavior X\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-x': [{\n 'overscroll-x': scaleOverscroll()\n }],\n /**\n * Overscroll Behavior Y\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-y': [{\n 'overscroll-y': scaleOverscroll()\n }],\n /**\n * Position\n * @see https://tailwindcss.com/docs/position\n */\n position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],\n /**\n * Inset\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n inset: [{\n inset: scaleInset()\n }],\n /**\n * Inset Inline\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-x': [{\n 'inset-x': scaleInset()\n }],\n /**\n * Inset Block\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-y': [{\n 'inset-y': scaleInset()\n }],\n /**\n * Inset Inline Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n * @todo class group will be renamed to `inset-s` in next major release\n */\n start: [{\n 'inset-s': scaleInset(),\n /**\n * @deprecated since Tailwind CSS v4.2.0 in favor of `inset-s-*` utilities.\n * @see https://github.com/tailwindlabs/tailwindcss/pull/19613\n */\n start: scaleInset()\n }],\n /**\n * Inset Inline End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n * @todo class group will be renamed to `inset-e` in next major release\n */\n end: [{\n 'inset-e': scaleInset(),\n /**\n * @deprecated since Tailwind CSS v4.2.0 in favor of `inset-e-*` utilities.\n * @see https://github.com/tailwindlabs/tailwindcss/pull/19613\n */\n end: scaleInset()\n }],\n /**\n * Inset Block Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-bs': [{\n 'inset-bs': scaleInset()\n }],\n /**\n * Inset Block End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-be': [{\n 'inset-be': scaleInset()\n }],\n /**\n * Top\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n top: [{\n top: scaleInset()\n }],\n /**\n * Right\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n right: [{\n right: scaleInset()\n }],\n /**\n * Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n bottom: [{\n bottom: scaleInset()\n }],\n /**\n * Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n left: [{\n left: scaleInset()\n }],\n /**\n * Visibility\n * @see https://tailwindcss.com/docs/visibility\n */\n visibility: ['visible', 'invisible', 'collapse'],\n /**\n * Z-Index\n * @see https://tailwindcss.com/docs/z-index\n */\n z: [{\n z: [isInteger, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------------\n // --- Flexbox and Grid ---\n // ------------------------\n /**\n * Flex Basis\n * @see https://tailwindcss.com/docs/flex-basis\n */\n basis: [{\n basis: [isFraction, 'full', 'auto', themeContainer, ...scaleUnambiguousSpacing()]\n }],\n /**\n * Flex Direction\n * @see https://tailwindcss.com/docs/flex-direction\n */\n 'flex-direction': [{\n flex: ['row', 'row-reverse', 'col', 'col-reverse']\n }],\n /**\n * Flex Wrap\n * @see https://tailwindcss.com/docs/flex-wrap\n */\n 'flex-wrap': [{\n flex: ['nowrap', 'wrap', 'wrap-reverse']\n }],\n /**\n * Flex\n * @see https://tailwindcss.com/docs/flex\n */\n flex: [{\n flex: [isNumber, isFraction, 'auto', 'initial', 'none', isArbitraryValue]\n }],\n /**\n * Flex Grow\n * @see https://tailwindcss.com/docs/flex-grow\n */\n grow: [{\n grow: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Flex Shrink\n * @see https://tailwindcss.com/docs/flex-shrink\n */\n shrink: [{\n shrink: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Order\n * @see https://tailwindcss.com/docs/order\n */\n order: [{\n order: [isInteger, 'first', 'last', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Grid Template Columns\n * @see https://tailwindcss.com/docs/grid-template-columns\n */\n 'grid-cols': [{\n 'grid-cols': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Column Start / End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start-end': [{\n col: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Column Start\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start': [{\n 'col-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Column End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-end': [{\n 'col-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Template Rows\n * @see https://tailwindcss.com/docs/grid-template-rows\n */\n 'grid-rows': [{\n 'grid-rows': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Row Start / End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start-end': [{\n row: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Row Start\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start': [{\n 'row-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Row End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-end': [{\n 'row-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Auto Flow\n * @see https://tailwindcss.com/docs/grid-auto-flow\n */\n 'grid-flow': [{\n 'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense']\n }],\n /**\n * Grid Auto Columns\n * @see https://tailwindcss.com/docs/grid-auto-columns\n */\n 'auto-cols': [{\n 'auto-cols': scaleGridAutoColsRows()\n }],\n /**\n * Grid Auto Rows\n * @see https://tailwindcss.com/docs/grid-auto-rows\n */\n 'auto-rows': [{\n 'auto-rows': scaleGridAutoColsRows()\n }],\n /**\n * Gap\n * @see https://tailwindcss.com/docs/gap\n */\n gap: [{\n gap: scaleUnambiguousSpacing()\n }],\n /**\n * Gap X\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-x': [{\n 'gap-x': scaleUnambiguousSpacing()\n }],\n /**\n * Gap Y\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-y': [{\n 'gap-y': scaleUnambiguousSpacing()\n }],\n /**\n * Justify Content\n * @see https://tailwindcss.com/docs/justify-content\n */\n 'justify-content': [{\n justify: [...scaleAlignPrimaryAxis(), 'normal']\n }],\n /**\n * Justify Items\n * @see https://tailwindcss.com/docs/justify-items\n */\n 'justify-items': [{\n 'justify-items': [...scaleAlignSecondaryAxis(), 'normal']\n }],\n /**\n * Justify Self\n * @see https://tailwindcss.com/docs/justify-self\n */\n 'justify-self': [{\n 'justify-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n /**\n * Align Content\n * @see https://tailwindcss.com/docs/align-content\n */\n 'align-content': [{\n content: ['normal', ...scaleAlignPrimaryAxis()]\n }],\n /**\n * Align Items\n * @see https://tailwindcss.com/docs/align-items\n */\n 'align-items': [{\n items: [...scaleAlignSecondaryAxis(), {\n baseline: ['', 'last']\n }]\n }],\n /**\n * Align Self\n * @see https://tailwindcss.com/docs/align-self\n */\n 'align-self': [{\n self: ['auto', ...scaleAlignSecondaryAxis(), {\n baseline: ['', 'last']\n }]\n }],\n /**\n * Place Content\n * @see https://tailwindcss.com/docs/place-content\n */\n 'place-content': [{\n 'place-content': scaleAlignPrimaryAxis()\n }],\n /**\n * Place Items\n * @see https://tailwindcss.com/docs/place-items\n */\n 'place-items': [{\n 'place-items': [...scaleAlignSecondaryAxis(), 'baseline']\n }],\n /**\n * Place Self\n * @see https://tailwindcss.com/docs/place-self\n */\n 'place-self': [{\n 'place-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n // Spacing\n /**\n * Padding\n * @see https://tailwindcss.com/docs/padding\n */\n p: [{\n p: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Inline\n * @see https://tailwindcss.com/docs/padding\n */\n px: [{\n px: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Block\n * @see https://tailwindcss.com/docs/padding\n */\n py: [{\n py: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Inline Start\n * @see https://tailwindcss.com/docs/padding\n */\n ps: [{\n ps: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Inline End\n * @see https://tailwindcss.com/docs/padding\n */\n pe: [{\n pe: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Block Start\n * @see https://tailwindcss.com/docs/padding\n */\n pbs: [{\n pbs: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Block End\n * @see https://tailwindcss.com/docs/padding\n */\n pbe: [{\n pbe: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Top\n * @see https://tailwindcss.com/docs/padding\n */\n pt: [{\n pt: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Right\n * @see https://tailwindcss.com/docs/padding\n */\n pr: [{\n pr: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Bottom\n * @see https://tailwindcss.com/docs/padding\n */\n pb: [{\n pb: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Left\n * @see https://tailwindcss.com/docs/padding\n */\n pl: [{\n pl: scaleUnambiguousSpacing()\n }],\n /**\n * Margin\n * @see https://tailwindcss.com/docs/margin\n */\n m: [{\n m: scaleMargin()\n }],\n /**\n * Margin Inline\n * @see https://tailwindcss.com/docs/margin\n */\n mx: [{\n mx: scaleMargin()\n }],\n /**\n * Margin Block\n * @see https://tailwindcss.com/docs/margin\n */\n my: [{\n my: scaleMargin()\n }],\n /**\n * Margin Inline Start\n * @see https://tailwindcss.com/docs/margin\n */\n ms: [{\n ms: scaleMargin()\n }],\n /**\n * Margin Inline End\n * @see https://tailwindcss.com/docs/margin\n */\n me: [{\n me: scaleMargin()\n }],\n /**\n * Margin Block Start\n * @see https://tailwindcss.com/docs/margin\n */\n mbs: [{\n mbs: scaleMargin()\n }],\n /**\n * Margin Block End\n * @see https://tailwindcss.com/docs/margin\n */\n mbe: [{\n mbe: scaleMargin()\n }],\n /**\n * Margin Top\n * @see https://tailwindcss.com/docs/margin\n */\n mt: [{\n mt: scaleMargin()\n }],\n /**\n * Margin Right\n * @see https://tailwindcss.com/docs/margin\n */\n mr: [{\n mr: scaleMargin()\n }],\n /**\n * Margin Bottom\n * @see https://tailwindcss.com/docs/margin\n */\n mb: [{\n mb: scaleMargin()\n }],\n /**\n * Margin Left\n * @see https://tailwindcss.com/docs/margin\n */\n ml: [{\n ml: scaleMargin()\n }],\n /**\n * Space Between X\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x': [{\n 'space-x': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between X Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x-reverse': ['space-x-reverse'],\n /**\n * Space Between Y\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y': [{\n 'space-y': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between Y Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y-reverse': ['space-y-reverse'],\n // --------------\n // --- Sizing ---\n // --------------\n /**\n * Size\n * @see https://tailwindcss.com/docs/width#setting-both-width-and-height\n */\n size: [{\n size: scaleSizing()\n }],\n /**\n * Inline Size\n * @see https://tailwindcss.com/docs/width\n */\n 'inline-size': [{\n inline: ['auto', ...scaleSizingInline()]\n }],\n /**\n * Min-Inline Size\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-inline-size': [{\n 'min-inline': ['auto', ...scaleSizingInline()]\n }],\n /**\n * Max-Inline Size\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-inline-size': [{\n 'max-inline': ['none', ...scaleSizingInline()]\n }],\n /**\n * Block Size\n * @see https://tailwindcss.com/docs/height\n */\n 'block-size': [{\n block: ['auto', ...scaleSizingBlock()]\n }],\n /**\n * Min-Block Size\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-block-size': [{\n 'min-block': ['auto', ...scaleSizingBlock()]\n }],\n /**\n * Max-Block Size\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-block-size': [{\n 'max-block': ['none', ...scaleSizingBlock()]\n }],\n /**\n * Width\n * @see https://tailwindcss.com/docs/width\n */\n w: [{\n w: [themeContainer, 'screen', ...scaleSizing()]\n }],\n /**\n * Min-Width\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-w': [{\n 'min-w': [themeContainer, 'screen', /** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'none', ...scaleSizing()]\n }],\n /**\n * Max-Width\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-w': [{\n 'max-w': [themeContainer, 'screen', 'none', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'prose', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n {\n screen: [themeBreakpoint]\n }, ...scaleSizing()]\n }],\n /**\n * Height\n * @see https://tailwindcss.com/docs/height\n */\n h: [{\n h: ['screen', 'lh', ...scaleSizing()]\n }],\n /**\n * Min-Height\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-h': [{\n 'min-h': ['screen', 'lh', 'none', ...scaleSizing()]\n }],\n /**\n * Max-Height\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-h': [{\n 'max-h': ['screen', 'lh', ...scaleSizing()]\n }],\n // ------------------\n // --- Typography ---\n // ------------------\n /**\n * Font Size\n * @see https://tailwindcss.com/docs/font-size\n */\n 'font-size': [{\n text: ['base', themeText, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Font Smoothing\n * @see https://tailwindcss.com/docs/font-smoothing\n */\n 'font-smoothing': ['antialiased', 'subpixel-antialiased'],\n /**\n * Font Style\n * @see https://tailwindcss.com/docs/font-style\n */\n 'font-style': ['italic', 'not-italic'],\n /**\n * Font Weight\n * @see https://tailwindcss.com/docs/font-weight\n */\n 'font-weight': [{\n font: [themeFontWeight, isArbitraryVariableWeight, isArbitraryWeight]\n }],\n /**\n * Font Stretch\n * @see https://tailwindcss.com/docs/font-stretch\n */\n 'font-stretch': [{\n 'font-stretch': ['ultra-condensed', 'extra-condensed', 'condensed', 'semi-condensed', 'normal', 'semi-expanded', 'expanded', 'extra-expanded', 'ultra-expanded', isPercent, isArbitraryValue]\n }],\n /**\n * Font Family\n * @see https://tailwindcss.com/docs/font-family\n */\n 'font-family': [{\n font: [isArbitraryVariableFamilyName, isArbitraryFamilyName, themeFont]\n }],\n /**\n * Font Feature Settings\n * @see https://tailwindcss.com/docs/font-feature-settings\n */\n 'font-features': [{\n 'font-features': [isArbitraryValue]\n }],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-normal': ['normal-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-ordinal': ['ordinal'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-slashed-zero': ['slashed-zero'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-figure': ['lining-nums', 'oldstyle-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-spacing': ['proportional-nums', 'tabular-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-fraction': ['diagonal-fractions', 'stacked-fractions'],\n /**\n * Letter Spacing\n * @see https://tailwindcss.com/docs/letter-spacing\n */\n tracking: [{\n tracking: [themeTracking, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Line Clamp\n * @see https://tailwindcss.com/docs/line-clamp\n */\n 'line-clamp': [{\n 'line-clamp': [isNumber, 'none', isArbitraryVariable, isArbitraryNumber]\n }],\n /**\n * Line Height\n * @see https://tailwindcss.com/docs/line-height\n */\n leading: [{\n leading: [/** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n themeLeading, ...scaleUnambiguousSpacing()]\n }],\n /**\n * List Style Image\n * @see https://tailwindcss.com/docs/list-style-image\n */\n 'list-image': [{\n 'list-image': ['none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * List Style Position\n * @see https://tailwindcss.com/docs/list-style-position\n */\n 'list-style-position': [{\n list: ['inside', 'outside']\n }],\n /**\n * List Style Type\n * @see https://tailwindcss.com/docs/list-style-type\n */\n 'list-style-type': [{\n list: ['disc', 'decimal', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Alignment\n * @see https://tailwindcss.com/docs/text-align\n */\n 'text-alignment': [{\n text: ['left', 'center', 'right', 'justify', 'start', 'end']\n }],\n /**\n * Placeholder Color\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://v3.tailwindcss.com/docs/placeholder-color\n */\n 'placeholder-color': [{\n placeholder: scaleColor()\n }],\n /**\n * Text Color\n * @see https://tailwindcss.com/docs/text-color\n */\n 'text-color': [{\n text: scaleColor()\n }],\n /**\n * Text Decoration\n * @see https://tailwindcss.com/docs/text-decoration\n */\n 'text-decoration': ['underline', 'overline', 'line-through', 'no-underline'],\n /**\n * Text Decoration Style\n * @see https://tailwindcss.com/docs/text-decoration-style\n */\n 'text-decoration-style': [{\n decoration: [...scaleLineStyle(), 'wavy']\n }],\n /**\n * Text Decoration Thickness\n * @see https://tailwindcss.com/docs/text-decoration-thickness\n */\n 'text-decoration-thickness': [{\n decoration: [isNumber, 'from-font', 'auto', isArbitraryVariable, isArbitraryLength]\n }],\n /**\n * Text Decoration Color\n * @see https://tailwindcss.com/docs/text-decoration-color\n */\n 'text-decoration-color': [{\n decoration: scaleColor()\n }],\n /**\n * Text Underline Offset\n * @see https://tailwindcss.com/docs/text-underline-offset\n */\n 'underline-offset': [{\n 'underline-offset': [isNumber, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Transform\n * @see https://tailwindcss.com/docs/text-transform\n */\n 'text-transform': ['uppercase', 'lowercase', 'capitalize', 'normal-case'],\n /**\n * Text Overflow\n * @see https://tailwindcss.com/docs/text-overflow\n */\n 'text-overflow': ['truncate', 'text-ellipsis', 'text-clip'],\n /**\n * Text Wrap\n * @see https://tailwindcss.com/docs/text-wrap\n */\n 'text-wrap': [{\n text: ['wrap', 'nowrap', 'balance', 'pretty']\n }],\n /**\n * Text Indent\n * @see https://tailwindcss.com/docs/text-indent\n */\n indent: [{\n indent: scaleUnambiguousSpacing()\n }],\n /**\n * Vertical Alignment\n * @see https://tailwindcss.com/docs/vertical-align\n */\n 'vertical-align': [{\n align: ['baseline', 'top', 'middle', 'bottom', 'text-top', 'text-bottom', 'sub', 'super', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Whitespace\n * @see https://tailwindcss.com/docs/whitespace\n */\n whitespace: [{\n whitespace: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'break-spaces']\n }],\n /**\n * Word Break\n * @see https://tailwindcss.com/docs/word-break\n */\n break: [{\n break: ['normal', 'words', 'all', 'keep']\n }],\n /**\n * Overflow Wrap\n * @see https://tailwindcss.com/docs/overflow-wrap\n */\n wrap: [{\n wrap: ['break-word', 'anywhere', 'normal']\n }],\n /**\n * Hyphens\n * @see https://tailwindcss.com/docs/hyphens\n */\n hyphens: [{\n hyphens: ['none', 'manual', 'auto']\n }],\n /**\n * Content\n * @see https://tailwindcss.com/docs/content\n */\n content: [{\n content: ['none', isArbitraryVariable, isArbitraryValue]\n }],\n // -------------------\n // --- Backgrounds ---\n // -------------------\n /**\n * Background Attachment\n * @see https://tailwindcss.com/docs/background-attachment\n */\n 'bg-attachment': [{\n bg: ['fixed', 'local', 'scroll']\n }],\n /**\n * Background Clip\n * @see https://tailwindcss.com/docs/background-clip\n */\n 'bg-clip': [{\n 'bg-clip': ['border', 'padding', 'content', 'text']\n }],\n /**\n * Background Origin\n * @see https://tailwindcss.com/docs/background-origin\n */\n 'bg-origin': [{\n 'bg-origin': ['border', 'padding', 'content']\n }],\n /**\n * Background Position\n * @see https://tailwindcss.com/docs/background-position\n */\n 'bg-position': [{\n bg: scaleBgPosition()\n }],\n /**\n * Background Repeat\n * @see https://tailwindcss.com/docs/background-repeat\n */\n 'bg-repeat': [{\n bg: scaleBgRepeat()\n }],\n /**\n * Background Size\n * @see https://tailwindcss.com/docs/background-size\n */\n 'bg-size': [{\n bg: scaleBgSize()\n }],\n /**\n * Background Image\n * @see https://tailwindcss.com/docs/background-image\n */\n 'bg-image': [{\n bg: ['none', {\n linear: [{\n to: ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl']\n }, isInteger, isArbitraryVariable, isArbitraryValue],\n radial: ['', isArbitraryVariable, isArbitraryValue],\n conic: [isInteger, isArbitraryVariable, isArbitraryValue]\n }, isArbitraryVariableImage, isArbitraryImage]\n }],\n /**\n * Background Color\n * @see https://tailwindcss.com/docs/background-color\n */\n 'bg-color': [{\n bg: scaleColor()\n }],\n /**\n * Gradient Color Stops From Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from-pos': [{\n from: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops Via Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via-pos': [{\n via: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops To Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to-pos': [{\n to: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops From\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from': [{\n from: scaleColor()\n }],\n /**\n * Gradient Color Stops Via\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via': [{\n via: scaleColor()\n }],\n /**\n * Gradient Color Stops To\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to': [{\n to: scaleColor()\n }],\n // ---------------\n // --- Borders ---\n // ---------------\n /**\n * Border Radius\n * @see https://tailwindcss.com/docs/border-radius\n */\n rounded: [{\n rounded: scaleRadius()\n }],\n /**\n * Border Radius Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-s': [{\n 'rounded-s': scaleRadius()\n }],\n /**\n * Border Radius End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-e': [{\n 'rounded-e': scaleRadius()\n }],\n /**\n * Border Radius Top\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-t': [{\n 'rounded-t': scaleRadius()\n }],\n /**\n * Border Radius Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-r': [{\n 'rounded-r': scaleRadius()\n }],\n /**\n * Border Radius Bottom\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-b': [{\n 'rounded-b': scaleRadius()\n }],\n /**\n * Border Radius Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-l': [{\n 'rounded-l': scaleRadius()\n }],\n /**\n * Border Radius Start Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ss': [{\n 'rounded-ss': scaleRadius()\n }],\n /**\n * Border Radius Start End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-se': [{\n 'rounded-se': scaleRadius()\n }],\n /**\n * Border Radius End End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ee': [{\n 'rounded-ee': scaleRadius()\n }],\n /**\n * Border Radius End Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-es': [{\n 'rounded-es': scaleRadius()\n }],\n /**\n * Border Radius Top Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tl': [{\n 'rounded-tl': scaleRadius()\n }],\n /**\n * Border Radius Top Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tr': [{\n 'rounded-tr': scaleRadius()\n }],\n /**\n * Border Radius Bottom Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-br': [{\n 'rounded-br': scaleRadius()\n }],\n /**\n * Border Radius Bottom Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-bl': [{\n 'rounded-bl': scaleRadius()\n }],\n /**\n * Border Width\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w': [{\n border: scaleBorderWidth()\n }],\n /**\n * Border Width Inline\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-x': [{\n 'border-x': scaleBorderWidth()\n }],\n /**\n * Border Width Block\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-y': [{\n 'border-y': scaleBorderWidth()\n }],\n /**\n * Border Width Inline Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-s': [{\n 'border-s': scaleBorderWidth()\n }],\n /**\n * Border Width Inline End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-e': [{\n 'border-e': scaleBorderWidth()\n }],\n /**\n * Border Width Block Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-bs': [{\n 'border-bs': scaleBorderWidth()\n }],\n /**\n * Border Width Block End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-be': [{\n 'border-be': scaleBorderWidth()\n }],\n /**\n * Border Width Top\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-t': [{\n 'border-t': scaleBorderWidth()\n }],\n /**\n * Border Width Right\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-r': [{\n 'border-r': scaleBorderWidth()\n }],\n /**\n * Border Width Bottom\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-b': [{\n 'border-b': scaleBorderWidth()\n }],\n /**\n * Border Width Left\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-l': [{\n 'border-l': scaleBorderWidth()\n }],\n /**\n * Divide Width X\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x': [{\n 'divide-x': scaleBorderWidth()\n }],\n /**\n * Divide Width X Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x-reverse': ['divide-x-reverse'],\n /**\n * Divide Width Y\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y': [{\n 'divide-y': scaleBorderWidth()\n }],\n /**\n * Divide Width Y Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y-reverse': ['divide-y-reverse'],\n /**\n * Border Style\n * @see https://tailwindcss.com/docs/border-style\n */\n 'border-style': [{\n border: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Divide Style\n * @see https://tailwindcss.com/docs/border-style#setting-the-divider-style\n */\n 'divide-style': [{\n divide: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Border Color\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color': [{\n border: scaleColor()\n }],\n /**\n * Border Color Inline\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-x': [{\n 'border-x': scaleColor()\n }],\n /**\n * Border Color Block\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-y': [{\n 'border-y': scaleColor()\n }],\n /**\n * Border Color Inline Start\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-s': [{\n 'border-s': scaleColor()\n }],\n /**\n * Border Color Inline End\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-e': [{\n 'border-e': scaleColor()\n }],\n /**\n * Border Color Block Start\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-bs': [{\n 'border-bs': scaleColor()\n }],\n /**\n * Border Color Block End\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-be': [{\n 'border-be': scaleColor()\n }],\n /**\n * Border Color Top\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-t': [{\n 'border-t': scaleColor()\n }],\n /**\n * Border Color Right\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-r': [{\n 'border-r': scaleColor()\n }],\n /**\n * Border Color Bottom\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-b': [{\n 'border-b': scaleColor()\n }],\n /**\n * Border Color Left\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-l': [{\n 'border-l': scaleColor()\n }],\n /**\n * Divide Color\n * @see https://tailwindcss.com/docs/divide-color\n */\n 'divide-color': [{\n divide: scaleColor()\n }],\n /**\n * Outline Style\n * @see https://tailwindcss.com/docs/outline-style\n */\n 'outline-style': [{\n outline: [...scaleLineStyle(), 'none', 'hidden']\n }],\n /**\n * Outline Offset\n * @see https://tailwindcss.com/docs/outline-offset\n */\n 'outline-offset': [{\n 'outline-offset': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Outline Width\n * @see https://tailwindcss.com/docs/outline-width\n */\n 'outline-w': [{\n outline: ['', isNumber, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Outline Color\n * @see https://tailwindcss.com/docs/outline-color\n */\n 'outline-color': [{\n outline: scaleColor()\n }],\n // ---------------\n // --- Effects ---\n // ---------------\n /**\n * Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow\n */\n shadow: [{\n shadow: [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color\n */\n 'shadow-color': [{\n shadow: scaleColor()\n }],\n /**\n * Inset Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow\n */\n 'inset-shadow': [{\n 'inset-shadow': ['none', themeInsetShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Inset Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color\n */\n 'inset-shadow-color': [{\n 'inset-shadow': scaleColor()\n }],\n /**\n * Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-a-ring\n */\n 'ring-w': [{\n ring: scaleBorderWidth()\n }],\n /**\n * Ring Width Inset\n * @see https://v3.tailwindcss.com/docs/ring-width#inset-rings\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-w-inset': ['ring-inset'],\n /**\n * Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color\n */\n 'ring-color': [{\n ring: scaleColor()\n }],\n /**\n * Ring Offset Width\n * @see https://v3.tailwindcss.com/docs/ring-offset-width\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-w': [{\n 'ring-offset': [isNumber, isArbitraryLength]\n }],\n /**\n * Ring Offset Color\n * @see https://v3.tailwindcss.com/docs/ring-offset-color\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-color': [{\n 'ring-offset': scaleColor()\n }],\n /**\n * Inset Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring\n */\n 'inset-ring-w': [{\n 'inset-ring': scaleBorderWidth()\n }],\n /**\n * Inset Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color\n */\n 'inset-ring-color': [{\n 'inset-ring': scaleColor()\n }],\n /**\n * Text Shadow\n * @see https://tailwindcss.com/docs/text-shadow\n */\n 'text-shadow': [{\n 'text-shadow': ['none', themeTextShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Text Shadow Color\n * @see https://tailwindcss.com/docs/text-shadow#setting-the-shadow-color\n */\n 'text-shadow-color': [{\n 'text-shadow': scaleColor()\n }],\n /**\n * Opacity\n * @see https://tailwindcss.com/docs/opacity\n */\n opacity: [{\n opacity: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Mix Blend Mode\n * @see https://tailwindcss.com/docs/mix-blend-mode\n */\n 'mix-blend': [{\n 'mix-blend': [...scaleBlendMode(), 'plus-darker', 'plus-lighter']\n }],\n /**\n * Background Blend Mode\n * @see https://tailwindcss.com/docs/background-blend-mode\n */\n 'bg-blend': [{\n 'bg-blend': scaleBlendMode()\n }],\n /**\n * Mask Clip\n * @see https://tailwindcss.com/docs/mask-clip\n */\n 'mask-clip': [{\n 'mask-clip': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n }, 'mask-no-clip'],\n /**\n * Mask Composite\n * @see https://tailwindcss.com/docs/mask-composite\n */\n 'mask-composite': [{\n mask: ['add', 'subtract', 'intersect', 'exclude']\n }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image-linear-pos': [{\n 'mask-linear': [isNumber]\n }],\n 'mask-image-linear-from-pos': [{\n 'mask-linear-from': scaleMaskImagePosition()\n }],\n 'mask-image-linear-to-pos': [{\n 'mask-linear-to': scaleMaskImagePosition()\n }],\n 'mask-image-linear-from-color': [{\n 'mask-linear-from': scaleColor()\n }],\n 'mask-image-linear-to-color': [{\n 'mask-linear-to': scaleColor()\n }],\n 'mask-image-t-from-pos': [{\n 'mask-t-from': scaleMaskImagePosition()\n }],\n 'mask-image-t-to-pos': [{\n 'mask-t-to': scaleMaskImagePosition()\n }],\n 'mask-image-t-from-color': [{\n 'mask-t-from': scaleColor()\n }],\n 'mask-image-t-to-color': [{\n 'mask-t-to': scaleColor()\n }],\n 'mask-image-r-from-pos': [{\n 'mask-r-from': scaleMaskImagePosition()\n }],\n 'mask-image-r-to-pos': [{\n 'mask-r-to': scaleMaskImagePosition()\n }],\n 'mask-image-r-from-color': [{\n 'mask-r-from': scaleColor()\n }],\n 'mask-image-r-to-color': [{\n 'mask-r-to': scaleColor()\n }],\n 'mask-image-b-from-pos': [{\n 'mask-b-from': scaleMaskImagePosition()\n }],\n 'mask-image-b-to-pos': [{\n 'mask-b-to': scaleMaskImagePosition()\n }],\n 'mask-image-b-from-color': [{\n 'mask-b-from': scaleColor()\n }],\n 'mask-image-b-to-color': [{\n 'mask-b-to': scaleColor()\n }],\n 'mask-image-l-from-pos': [{\n 'mask-l-from': scaleMaskImagePosition()\n }],\n 'mask-image-l-to-pos': [{\n 'mask-l-to': scaleMaskImagePosition()\n }],\n 'mask-image-l-from-color': [{\n 'mask-l-from': scaleColor()\n }],\n 'mask-image-l-to-color': [{\n 'mask-l-to': scaleColor()\n }],\n 'mask-image-x-from-pos': [{\n 'mask-x-from': scaleMaskImagePosition()\n }],\n 'mask-image-x-to-pos': [{\n 'mask-x-to': scaleMaskImagePosition()\n }],\n 'mask-image-x-from-color': [{\n 'mask-x-from': scaleColor()\n }],\n 'mask-image-x-to-color': [{\n 'mask-x-to': scaleColor()\n }],\n 'mask-image-y-from-pos': [{\n 'mask-y-from': scaleMaskImagePosition()\n }],\n 'mask-image-y-to-pos': [{\n 'mask-y-to': scaleMaskImagePosition()\n }],\n 'mask-image-y-from-color': [{\n 'mask-y-from': scaleColor()\n }],\n 'mask-image-y-to-color': [{\n 'mask-y-to': scaleColor()\n }],\n 'mask-image-radial': [{\n 'mask-radial': [isArbitraryVariable, isArbitraryValue]\n }],\n 'mask-image-radial-from-pos': [{\n 'mask-radial-from': scaleMaskImagePosition()\n }],\n 'mask-image-radial-to-pos': [{\n 'mask-radial-to': scaleMaskImagePosition()\n }],\n 'mask-image-radial-from-color': [{\n 'mask-radial-from': scaleColor()\n }],\n 'mask-image-radial-to-color': [{\n 'mask-radial-to': scaleColor()\n }],\n 'mask-image-radial-shape': [{\n 'mask-radial': ['circle', 'ellipse']\n }],\n 'mask-image-radial-size': [{\n 'mask-radial': [{\n closest: ['side', 'corner'],\n farthest: ['side', 'corner']\n }]\n }],\n 'mask-image-radial-pos': [{\n 'mask-radial-at': scalePosition()\n }],\n 'mask-image-conic-pos': [{\n 'mask-conic': [isNumber]\n }],\n 'mask-image-conic-from-pos': [{\n 'mask-conic-from': scaleMaskImagePosition()\n }],\n 'mask-image-conic-to-pos': [{\n 'mask-conic-to': scaleMaskImagePosition()\n }],\n 'mask-image-conic-from-color': [{\n 'mask-conic-from': scaleColor()\n }],\n 'mask-image-conic-to-color': [{\n 'mask-conic-to': scaleColor()\n }],\n /**\n * Mask Mode\n * @see https://tailwindcss.com/docs/mask-mode\n */\n 'mask-mode': [{\n mask: ['alpha', 'luminance', 'match']\n }],\n /**\n * Mask Origin\n * @see https://tailwindcss.com/docs/mask-origin\n */\n 'mask-origin': [{\n 'mask-origin': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n }],\n /**\n * Mask Position\n * @see https://tailwindcss.com/docs/mask-position\n */\n 'mask-position': [{\n mask: scaleBgPosition()\n }],\n /**\n * Mask Repeat\n * @see https://tailwindcss.com/docs/mask-repeat\n */\n 'mask-repeat': [{\n mask: scaleBgRepeat()\n }],\n /**\n * Mask Size\n * @see https://tailwindcss.com/docs/mask-size\n */\n 'mask-size': [{\n mask: scaleBgSize()\n }],\n /**\n * Mask Type\n * @see https://tailwindcss.com/docs/mask-type\n */\n 'mask-type': [{\n 'mask-type': ['alpha', 'luminance']\n }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image': [{\n mask: ['none', isArbitraryVariable, isArbitraryValue]\n }],\n // ---------------\n // --- Filters ---\n // ---------------\n /**\n * Filter\n * @see https://tailwindcss.com/docs/filter\n */\n filter: [{\n filter: [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Blur\n * @see https://tailwindcss.com/docs/blur\n */\n blur: [{\n blur: scaleBlur()\n }],\n /**\n * Brightness\n * @see https://tailwindcss.com/docs/brightness\n */\n brightness: [{\n brightness: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Contrast\n * @see https://tailwindcss.com/docs/contrast\n */\n contrast: [{\n contrast: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Drop Shadow\n * @see https://tailwindcss.com/docs/drop-shadow\n */\n 'drop-shadow': [{\n 'drop-shadow': [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeDropShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Drop Shadow Color\n * @see https://tailwindcss.com/docs/filter-drop-shadow#setting-the-shadow-color\n */\n 'drop-shadow-color': [{\n 'drop-shadow': scaleColor()\n }],\n /**\n * Grayscale\n * @see https://tailwindcss.com/docs/grayscale\n */\n grayscale: [{\n grayscale: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Hue Rotate\n * @see https://tailwindcss.com/docs/hue-rotate\n */\n 'hue-rotate': [{\n 'hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Invert\n * @see https://tailwindcss.com/docs/invert\n */\n invert: [{\n invert: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Saturate\n * @see https://tailwindcss.com/docs/saturate\n */\n saturate: [{\n saturate: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Sepia\n * @see https://tailwindcss.com/docs/sepia\n */\n sepia: [{\n sepia: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Filter\n * @see https://tailwindcss.com/docs/backdrop-filter\n */\n 'backdrop-filter': [{\n 'backdrop-filter': [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Blur\n * @see https://tailwindcss.com/docs/backdrop-blur\n */\n 'backdrop-blur': [{\n 'backdrop-blur': scaleBlur()\n }],\n /**\n * Backdrop Brightness\n * @see https://tailwindcss.com/docs/backdrop-brightness\n */\n 'backdrop-brightness': [{\n 'backdrop-brightness': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Contrast\n * @see https://tailwindcss.com/docs/backdrop-contrast\n */\n 'backdrop-contrast': [{\n 'backdrop-contrast': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Grayscale\n * @see https://tailwindcss.com/docs/backdrop-grayscale\n */\n 'backdrop-grayscale': [{\n 'backdrop-grayscale': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Hue Rotate\n * @see https://tailwindcss.com/docs/backdrop-hue-rotate\n */\n 'backdrop-hue-rotate': [{\n 'backdrop-hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Invert\n * @see https://tailwindcss.com/docs/backdrop-invert\n */\n 'backdrop-invert': [{\n 'backdrop-invert': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Opacity\n * @see https://tailwindcss.com/docs/backdrop-opacity\n */\n 'backdrop-opacity': [{\n 'backdrop-opacity': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Saturate\n * @see https://tailwindcss.com/docs/backdrop-saturate\n */\n 'backdrop-saturate': [{\n 'backdrop-saturate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Sepia\n * @see https://tailwindcss.com/docs/backdrop-sepia\n */\n 'backdrop-sepia': [{\n 'backdrop-sepia': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n // --------------\n // --- Tables ---\n // --------------\n /**\n * Border Collapse\n * @see https://tailwindcss.com/docs/border-collapse\n */\n 'border-collapse': [{\n border: ['collapse', 'separate']\n }],\n /**\n * Border Spacing\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing': [{\n 'border-spacing': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing X\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-x': [{\n 'border-spacing-x': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing Y\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-y': [{\n 'border-spacing-y': scaleUnambiguousSpacing()\n }],\n /**\n * Table Layout\n * @see https://tailwindcss.com/docs/table-layout\n */\n 'table-layout': [{\n table: ['auto', 'fixed']\n }],\n /**\n * Caption Side\n * @see https://tailwindcss.com/docs/caption-side\n */\n caption: [{\n caption: ['top', 'bottom']\n }],\n // ---------------------------------\n // --- Transitions and Animation ---\n // ---------------------------------\n /**\n * Transition Property\n * @see https://tailwindcss.com/docs/transition-property\n */\n transition: [{\n transition: ['', 'all', 'colors', 'opacity', 'shadow', 'transform', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Behavior\n * @see https://tailwindcss.com/docs/transition-behavior\n */\n 'transition-behavior': [{\n transition: ['normal', 'discrete']\n }],\n /**\n * Transition Duration\n * @see https://tailwindcss.com/docs/transition-duration\n */\n duration: [{\n duration: [isNumber, 'initial', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Timing Function\n * @see https://tailwindcss.com/docs/transition-timing-function\n */\n ease: [{\n ease: ['linear', 'initial', themeEase, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Delay\n * @see https://tailwindcss.com/docs/transition-delay\n */\n delay: [{\n delay: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Animation\n * @see https://tailwindcss.com/docs/animation\n */\n animate: [{\n animate: ['none', themeAnimate, isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------\n // --- Transforms ---\n // ------------------\n /**\n * Backface Visibility\n * @see https://tailwindcss.com/docs/backface-visibility\n */\n backface: [{\n backface: ['hidden', 'visible']\n }],\n /**\n * Perspective\n * @see https://tailwindcss.com/docs/perspective\n */\n perspective: [{\n perspective: [themePerspective, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Perspective Origin\n * @see https://tailwindcss.com/docs/perspective-origin\n */\n 'perspective-origin': [{\n 'perspective-origin': scalePositionWithArbitrary()\n }],\n /**\n * Rotate\n * @see https://tailwindcss.com/docs/rotate\n */\n rotate: [{\n rotate: scaleRotate()\n }],\n /**\n * Rotate X\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-x': [{\n 'rotate-x': scaleRotate()\n }],\n /**\n * Rotate Y\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-y': [{\n 'rotate-y': scaleRotate()\n }],\n /**\n * Rotate Z\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-z': [{\n 'rotate-z': scaleRotate()\n }],\n /**\n * Scale\n * @see https://tailwindcss.com/docs/scale\n */\n scale: [{\n scale: scaleScale()\n }],\n /**\n * Scale X\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-x': [{\n 'scale-x': scaleScale()\n }],\n /**\n * Scale Y\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-y': [{\n 'scale-y': scaleScale()\n }],\n /**\n * Scale Z\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-z': [{\n 'scale-z': scaleScale()\n }],\n /**\n * Scale 3D\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-3d': ['scale-3d'],\n /**\n * Skew\n * @see https://tailwindcss.com/docs/skew\n */\n skew: [{\n skew: scaleSkew()\n }],\n /**\n * Skew X\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-x': [{\n 'skew-x': scaleSkew()\n }],\n /**\n * Skew Y\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-y': [{\n 'skew-y': scaleSkew()\n }],\n /**\n * Transform\n * @see https://tailwindcss.com/docs/transform\n */\n transform: [{\n transform: [isArbitraryVariable, isArbitraryValue, '', 'none', 'gpu', 'cpu']\n }],\n /**\n * Transform Origin\n * @see https://tailwindcss.com/docs/transform-origin\n */\n 'transform-origin': [{\n origin: scalePositionWithArbitrary()\n }],\n /**\n * Transform Style\n * @see https://tailwindcss.com/docs/transform-style\n */\n 'transform-style': [{\n transform: ['3d', 'flat']\n }],\n /**\n * Translate\n * @see https://tailwindcss.com/docs/translate\n */\n translate: [{\n translate: scaleTranslate()\n }],\n /**\n * Translate X\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-x': [{\n 'translate-x': scaleTranslate()\n }],\n /**\n * Translate Y\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-y': [{\n 'translate-y': scaleTranslate()\n }],\n /**\n * Translate Z\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-z': [{\n 'translate-z': scaleTranslate()\n }],\n /**\n * Translate None\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-none': ['translate-none'],\n // ---------------------\n // --- Interactivity ---\n // ---------------------\n /**\n * Accent Color\n * @see https://tailwindcss.com/docs/accent-color\n */\n accent: [{\n accent: scaleColor()\n }],\n /**\n * Appearance\n * @see https://tailwindcss.com/docs/appearance\n */\n appearance: [{\n appearance: ['none', 'auto']\n }],\n /**\n * Caret Color\n * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n */\n 'caret-color': [{\n caret: scaleColor()\n }],\n /**\n * Color Scheme\n * @see https://tailwindcss.com/docs/color-scheme\n */\n 'color-scheme': [{\n scheme: ['normal', 'dark', 'light', 'light-dark', 'only-dark', 'only-light']\n }],\n /**\n * Cursor\n * @see https://tailwindcss.com/docs/cursor\n */\n cursor: [{\n cursor: ['auto', 'default', 'pointer', 'wait', 'text', 'move', 'help', 'not-allowed', 'none', 'context-menu', 'progress', 'cell', 'crosshair', 'vertical-text', 'alias', 'copy', 'no-drop', 'grab', 'grabbing', 'all-scroll', 'col-resize', 'row-resize', 'n-resize', 'e-resize', 's-resize', 'w-resize', 'ne-resize', 'nw-resize', 'se-resize', 'sw-resize', 'ew-resize', 'ns-resize', 'nesw-resize', 'nwse-resize', 'zoom-in', 'zoom-out', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Field Sizing\n * @see https://tailwindcss.com/docs/field-sizing\n */\n 'field-sizing': [{\n 'field-sizing': ['fixed', 'content']\n }],\n /**\n * Pointer Events\n * @see https://tailwindcss.com/docs/pointer-events\n */\n 'pointer-events': [{\n 'pointer-events': ['auto', 'none']\n }],\n /**\n * Resize\n * @see https://tailwindcss.com/docs/resize\n */\n resize: [{\n resize: ['none', '', 'y', 'x']\n }],\n /**\n * Scroll Behavior\n * @see https://tailwindcss.com/docs/scroll-behavior\n */\n 'scroll-behavior': [{\n scroll: ['auto', 'smooth']\n }],\n /**\n * Scroll Margin\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-m': [{\n 'scroll-m': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Inline\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mx': [{\n 'scroll-mx': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Block\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-my': [{\n 'scroll-my': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Inline Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ms': [{\n 'scroll-ms': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Inline End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-me': [{\n 'scroll-me': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Block Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mbs': [{\n 'scroll-mbs': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Block End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mbe': [{\n 'scroll-mbe': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Top\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mt': [{\n 'scroll-mt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Right\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mr': [{\n 'scroll-mr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Bottom\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mb': [{\n 'scroll-mb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Left\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ml': [{\n 'scroll-ml': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-p': [{\n 'scroll-p': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Inline\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-px': [{\n 'scroll-px': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Block\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-py': [{\n 'scroll-py': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Inline Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-ps': [{\n 'scroll-ps': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Inline End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pe': [{\n 'scroll-pe': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Block Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pbs': [{\n 'scroll-pbs': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Block End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pbe': [{\n 'scroll-pbe': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Top\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pt': [{\n 'scroll-pt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Right\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pr': [{\n 'scroll-pr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Bottom\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pb': [{\n 'scroll-pb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Left\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pl': [{\n 'scroll-pl': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Snap Align\n * @see https://tailwindcss.com/docs/scroll-snap-align\n */\n 'snap-align': [{\n snap: ['start', 'end', 'center', 'align-none']\n }],\n /**\n * Scroll Snap Stop\n * @see https://tailwindcss.com/docs/scroll-snap-stop\n */\n 'snap-stop': [{\n snap: ['normal', 'always']\n }],\n /**\n * Scroll Snap Type\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-type': [{\n snap: ['none', 'x', 'y', 'both']\n }],\n /**\n * Scroll Snap Type Strictness\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-strictness': [{\n snap: ['mandatory', 'proximity']\n }],\n /**\n * Touch Action\n * @see https://tailwindcss.com/docs/touch-action\n */\n touch: [{\n touch: ['auto', 'none', 'manipulation']\n }],\n /**\n * Touch Action X\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-x': [{\n 'touch-pan': ['x', 'left', 'right']\n }],\n /**\n * Touch Action Y\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-y': [{\n 'touch-pan': ['y', 'up', 'down']\n }],\n /**\n * Touch Action Pinch Zoom\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-pz': ['touch-pinch-zoom'],\n /**\n * User Select\n * @see https://tailwindcss.com/docs/user-select\n */\n select: [{\n select: ['none', 'text', 'all', 'auto']\n }],\n /**\n * Will Change\n * @see https://tailwindcss.com/docs/will-change\n */\n 'will-change': [{\n 'will-change': ['auto', 'scroll', 'contents', 'transform', isArbitraryVariable, isArbitraryValue]\n }],\n // -----------\n // --- SVG ---\n // -----------\n /**\n * Fill\n * @see https://tailwindcss.com/docs/fill\n */\n fill: [{\n fill: ['none', ...scaleColor()]\n }],\n /**\n * Stroke Width\n * @see https://tailwindcss.com/docs/stroke-width\n */\n 'stroke-w': [{\n stroke: [isNumber, isArbitraryVariableLength, isArbitraryLength, isArbitraryNumber]\n }],\n /**\n * Stroke\n * @see https://tailwindcss.com/docs/stroke\n */\n stroke: [{\n stroke: ['none', ...scaleColor()]\n }],\n // ---------------------\n // --- Accessibility ---\n // ---------------------\n /**\n * Forced Color Adjust\n * @see https://tailwindcss.com/docs/forced-color-adjust\n */\n 'forced-color-adjust': [{\n 'forced-color-adjust': ['auto', 'none']\n }]\n },\n conflictingClassGroups: {\n overflow: ['overflow-x', 'overflow-y'],\n overscroll: ['overscroll-x', 'overscroll-y'],\n inset: ['inset-x', 'inset-y', 'inset-bs', 'inset-be', 'start', 'end', 'top', 'right', 'bottom', 'left'],\n 'inset-x': ['right', 'left'],\n 'inset-y': ['top', 'bottom'],\n flex: ['basis', 'grow', 'shrink'],\n gap: ['gap-x', 'gap-y'],\n p: ['px', 'py', 'ps', 'pe', 'pbs', 'pbe', 'pt', 'pr', 'pb', 'pl'],\n px: ['pr', 'pl'],\n py: ['pt', 'pb'],\n m: ['mx', 'my', 'ms', 'me', 'mbs', 'mbe', 'mt', 'mr', 'mb', 'ml'],\n mx: ['mr', 'ml'],\n my: ['mt', 'mb'],\n size: ['w', 'h'],\n 'font-size': ['leading'],\n 'fvn-normal': ['fvn-ordinal', 'fvn-slashed-zero', 'fvn-figure', 'fvn-spacing', 'fvn-fraction'],\n 'fvn-ordinal': ['fvn-normal'],\n 'fvn-slashed-zero': ['fvn-normal'],\n 'fvn-figure': ['fvn-normal'],\n 'fvn-spacing': ['fvn-normal'],\n 'fvn-fraction': ['fvn-normal'],\n 'line-clamp': ['display', 'overflow'],\n rounded: ['rounded-s', 'rounded-e', 'rounded-t', 'rounded-r', 'rounded-b', 'rounded-l', 'rounded-ss', 'rounded-se', 'rounded-ee', 'rounded-es', 'rounded-tl', 'rounded-tr', 'rounded-br', 'rounded-bl'],\n 'rounded-s': ['rounded-ss', 'rounded-es'],\n 'rounded-e': ['rounded-se', 'rounded-ee'],\n 'rounded-t': ['rounded-tl', 'rounded-tr'],\n 'rounded-r': ['rounded-tr', 'rounded-br'],\n 'rounded-b': ['rounded-br', 'rounded-bl'],\n 'rounded-l': ['rounded-tl', 'rounded-bl'],\n 'border-spacing': ['border-spacing-x', 'border-spacing-y'],\n 'border-w': ['border-w-x', 'border-w-y', 'border-w-s', 'border-w-e', 'border-w-bs', 'border-w-be', 'border-w-t', 'border-w-r', 'border-w-b', 'border-w-l'],\n 'border-w-x': ['border-w-r', 'border-w-l'],\n 'border-w-y': ['border-w-t', 'border-w-b'],\n 'border-color': ['border-color-x', 'border-color-y', 'border-color-s', 'border-color-e', 'border-color-bs', 'border-color-be', 'border-color-t', 'border-color-r', 'border-color-b', 'border-color-l'],\n 'border-color-x': ['border-color-r', 'border-color-l'],\n 'border-color-y': ['border-color-t', 'border-color-b'],\n translate: ['translate-x', 'translate-y', 'translate-none'],\n 'translate-none': ['translate', 'translate-x', 'translate-y', 'translate-z'],\n 'scroll-m': ['scroll-mx', 'scroll-my', 'scroll-ms', 'scroll-me', 'scroll-mbs', 'scroll-mbe', 'scroll-mt', 'scroll-mr', 'scroll-mb', 'scroll-ml'],\n 'scroll-mx': ['scroll-mr', 'scroll-ml'],\n 'scroll-my': ['scroll-mt', 'scroll-mb'],\n 'scroll-p': ['scroll-px', 'scroll-py', 'scroll-ps', 'scroll-pe', 'scroll-pbs', 'scroll-pbe', 'scroll-pt', 'scroll-pr', 'scroll-pb', 'scroll-pl'],\n 'scroll-px': ['scroll-pr', 'scroll-pl'],\n 'scroll-py': ['scroll-pt', 'scroll-pb'],\n touch: ['touch-x', 'touch-y', 'touch-pz'],\n 'touch-x': ['touch'],\n 'touch-y': ['touch'],\n 'touch-pz': ['touch']\n },\n conflictingClassGroupModifiers: {\n 'font-size': ['leading']\n },\n orderSensitiveModifiers: ['*', '**', 'after', 'backdrop', 'before', 'details-content', 'file', 'first-letter', 'first-line', 'marker', 'placeholder', 'selection']\n };\n};\n\n/**\n * @param baseConfig Config where other config will be merged into. This object will be mutated.\n * @param configExtension Partial config to merge into the `baseConfig`.\n */\nconst mergeConfigs = (baseConfig, {\n cacheSize,\n prefix,\n experimentalParseClassName,\n extend = {},\n override = {}\n}) => {\n overrideProperty(baseConfig, 'cacheSize', cacheSize);\n overrideProperty(baseConfig, 'prefix', prefix);\n overrideProperty(baseConfig, 'experimentalParseClassName', experimentalParseClassName);\n overrideConfigProperties(baseConfig.theme, override.theme);\n overrideConfigProperties(baseConfig.classGroups, override.classGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroups, override.conflictingClassGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroupModifiers, override.conflictingClassGroupModifiers);\n overrideProperty(baseConfig, 'orderSensitiveModifiers', override.orderSensitiveModifiers);\n mergeConfigProperties(baseConfig.theme, extend.theme);\n mergeConfigProperties(baseConfig.classGroups, extend.classGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroups, extend.conflictingClassGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroupModifiers, extend.conflictingClassGroupModifiers);\n mergeArrayProperties(baseConfig, extend, 'orderSensitiveModifiers');\n return baseConfig;\n};\nconst overrideProperty = (baseObject, overrideKey, overrideValue) => {\n if (overrideValue !== undefined) {\n baseObject[overrideKey] = overrideValue;\n }\n};\nconst overrideConfigProperties = (baseObject, overrideObject) => {\n if (overrideObject) {\n for (const key in overrideObject) {\n overrideProperty(baseObject, key, overrideObject[key]);\n }\n }\n};\nconst mergeConfigProperties = (baseObject, mergeObject) => {\n if (mergeObject) {\n for (const key in mergeObject) {\n mergeArrayProperties(baseObject, mergeObject, key);\n }\n }\n};\nconst mergeArrayProperties = (baseObject, mergeObject, key) => {\n const mergeValue = mergeObject[key];\n if (mergeValue !== undefined) {\n baseObject[key] = baseObject[key] ? baseObject[key].concat(mergeValue) : mergeValue;\n }\n};\nconst extendTailwindMerge = (configExtension, ...createConfig) => typeof configExtension === 'function' ? createTailwindMerge(getDefaultConfig, configExtension, ...createConfig) : createTailwindMerge(() => mergeConfigs(getDefaultConfig(), configExtension), ...createConfig);\nconst twMerge = /*#__PURE__*/createTailwindMerge(getDefaultConfig);\nexport { createTailwindMerge, extendTailwindMerge, fromTheme, getDefaultConfig, mergeConfigs, twJoin, twMerge, validators };\n//# sourceMappingURL=bundle-mjs.mjs.map\n","import { type ClassValue, clsx } from 'clsx'\nimport { twMerge } from 'tailwind-merge'\n\n/**\n * Uses clsx and tailwind-merge to construct className strings conditionally.\n * @param {ClassValue[]} inputs - Any number of arguments, can be Object, Array, Boolean, or String\n * @returns {string} The combined class names, merged without style conflicts\n * @see {@link https://github.com/lukeed/clsx#usage}\n * @see {@link https://github.com/dcastil/tailwind-merge}\n * @example\n * ```jsx\n * <p className={cn('text-center', { 'text-blue-500': isBlue })}>\n * Hello, world!\n * </p>\n * ```\n */\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs))\n}\n","import React from 'react'\n\nimport { cn } from '../utils'\n\nexport type ButtonSize = 'sm' | 'md' | 'lg'\n\nconst sizeClasses: Record<ButtonSize, string> = {\n sm: 'py-1.5 px-3 text-sm rounded-lg',\n md: 'py-2.5 px-4 text-base rounded-xl',\n lg: 'py-3 px-5 text-lg rounded-xl',\n}\n\nexport interface ConnectWalletButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n /** Size variant for the button */\n size?: ButtonSize\n style?: React.CSSProperties\n}\n\nexport const ConnectWalletButton = React.forwardRef<\n HTMLButtonElement,\n ConnectWalletButtonProps\n>(({ className = '', children, style, size = 'md', ...props }, ref) => {\n // Base styles using CSS custom properties for theming\n const baseStyles =\n 'bg-[var(--wui-color-primary)] transition-colors hover:bg-[var(--wui-color-primary-hover)] text-[var(--wui-color-primary-text)] font-bold cursor-pointer disabled:opacity-50 wallet-custom-font'\n\n return (\n <button\n ref={ref}\n data-wallet-ui\n data-wallet-button\n className={cn(baseStyles, sizeClasses[size], className)}\n style={style}\n {...props}\n type=\"button\"\n >\n {children || 'Connect Wallet'}\n </button>\n )\n})\n\nConnectWalletButton.displayName = 'ConnectWalletButton'\n","// src/subscribable.ts\nvar Subscribable = class {\n constructor() {\n this.listeners = /* @__PURE__ */ new Set();\n this.subscribe = this.subscribe.bind(this);\n }\n subscribe(listener) {\n this.listeners.add(listener);\n this.onSubscribe();\n return () => {\n this.listeners.delete(listener);\n this.onUnsubscribe();\n };\n }\n hasListeners() {\n return this.listeners.size > 0;\n }\n onSubscribe() {\n }\n onUnsubscribe() {\n }\n};\nexport {\n Subscribable\n};\n//# sourceMappingURL=subscribable.js.map","// src/timeoutManager.ts\nvar defaultTimeoutProvider = {\n // We need the wrapper function syntax below instead of direct references to\n // global setTimeout etc.\n //\n // BAD: `setTimeout: setTimeout`\n // GOOD: `setTimeout: (cb, delay) => setTimeout(cb, delay)`\n //\n // If we use direct references here, then anything that wants to spy on or\n // replace the global setTimeout (like tests) won't work since we'll already\n // have a hard reference to the original implementation at the time when this\n // file was imported.\n setTimeout: (callback, delay) => setTimeout(callback, delay),\n clearTimeout: (timeoutId) => clearTimeout(timeoutId),\n setInterval: (callback, delay) => setInterval(callback, delay),\n clearInterval: (intervalId) => clearInterval(intervalId)\n};\nvar TimeoutManager = class {\n // We cannot have TimeoutManager<T> as we must instantiate it with a concrete\n // type at app boot; and if we leave that type, then any new timer provider\n // would need to support ReturnType<typeof setTimeout>, which is infeasible.\n //\n // We settle for type safety for the TimeoutProvider type, and accept that\n // this class is unsafe internally to allow for extension.\n #provider = defaultTimeoutProvider;\n #providerCalled = false;\n setTimeoutProvider(provider) {\n if (process.env.NODE_ENV !== \"production\") {\n if (this.#providerCalled && provider !== this.#provider) {\n console.error(\n `[timeoutManager]: Switching provider after calls to previous provider might result in unexpected behavior.`,\n { previous: this.#provider, provider }\n );\n }\n }\n this.#provider = provider;\n if (process.env.NODE_ENV !== \"production\") {\n this.#providerCalled = false;\n }\n }\n setTimeout(callback, delay) {\n if (process.env.NODE_ENV !== \"production\") {\n this.#providerCalled = true;\n }\n return this.#provider.setTimeout(callback, delay);\n }\n clearTimeout(timeoutId) {\n this.#provider.clearTimeout(timeoutId);\n }\n setInterval(callback, delay) {\n if (process.env.NODE_ENV !== \"production\") {\n this.#providerCalled = true;\n }\n return this.#provider.setInterval(callback, delay);\n }\n clearInterval(intervalId) {\n this.#provider.clearInterval(intervalId);\n }\n};\nvar timeoutManager = new TimeoutManager();\nfunction systemSetTimeoutZero(callback) {\n setTimeout(callback, 0);\n}\nexport {\n TimeoutManager,\n defaultTimeoutProvider,\n systemSetTimeoutZero,\n timeoutManager\n};\n//# sourceMappingURL=timeoutManager.js.map","// src/utils.ts\nimport { timeoutManager } from \"./timeoutManager.js\";\nvar isServer = typeof window === \"undefined\" || \"Deno\" in globalThis;\nfunction noop() {\n}\nfunction functionalUpdate(updater, input) {\n return typeof updater === \"function\" ? updater(input) : updater;\n}\nfunction isValidTimeout(value) {\n return typeof value === \"number\" && value >= 0 && value !== Infinity;\n}\nfunction timeUntilStale(updatedAt, staleTime) {\n return Math.max(updatedAt + (staleTime || 0) - Date.now(), 0);\n}\nfunction resolveStaleTime(staleTime, query) {\n return typeof staleTime === \"function\" ? staleTime(query) : staleTime;\n}\nfunction resolveEnabled(enabled, query) {\n return typeof enabled === \"function\" ? enabled(query) : enabled;\n}\nfunction matchQuery(filters, query) {\n const {\n type = \"all\",\n exact,\n fetchStatus,\n predicate,\n queryKey,\n stale\n } = filters;\n if (queryKey) {\n if (exact) {\n if (query.queryHash !== hashQueryKeyByOptions(queryKey, query.options)) {\n return false;\n }\n } else if (!partialMatchKey(query.queryKey, queryKey)) {\n return false;\n }\n }\n if (type !== \"all\") {\n const isActive = query.isActive();\n if (type === \"active\" && !isActive) {\n return false;\n }\n if (type === \"inactive\" && isActive) {\n return false;\n }\n }\n if (typeof stale === \"boolean\" && query.isStale() !== stale) {\n return false;\n }\n if (fetchStatus && fetchStatus !== query.state.fetchStatus) {\n return false;\n }\n if (predicate && !predicate(query)) {\n return false;\n }\n return true;\n}\nfunction matchMutation(filters, mutation) {\n const { exact, status, predicate, mutationKey } = filters;\n if (mutationKey) {\n if (!mutation.options.mutationKey) {\n return false;\n }\n if (exact) {\n if (hashKey(mutation.options.mutationKey) !== hashKey(mutationKey)) {\n return false;\n }\n } else if (!partialMatchKey(mutation.options.mutationKey, mutationKey)) {\n return false;\n }\n }\n if (status && mutation.state.status !== status) {\n return false;\n }\n if (predicate && !predicate(mutation)) {\n return false;\n }\n return true;\n}\nfunction hashQueryKeyByOptions(queryKey, options) {\n const hashFn = options?.queryKeyHashFn || hashKey;\n return hashFn(queryKey);\n}\nfunction hashKey(queryKey) {\n return JSON.stringify(\n queryKey,\n (_, val) => isPlainObject(val) ? Object.keys(val).sort().reduce((result, key) => {\n result[key] = val[key];\n return result;\n }, {}) : val\n );\n}\nfunction partialMatchKey(a, b) {\n if (a === b) {\n return true;\n }\n if (typeof a !== typeof b) {\n return false;\n }\n if (a && b && typeof a === \"object\" && typeof b === \"object\") {\n return Object.keys(b).every((key) => partialMatchKey(a[key], b[key]));\n }\n return false;\n}\nvar hasOwn = Object.prototype.hasOwnProperty;\nfunction replaceEqualDeep(a, b, depth = 0) {\n if (a === b) {\n return a;\n }\n if (depth > 500) return b;\n const array = isPlainArray(a) && isPlainArray(b);\n if (!array && !(isPlainObject(a) && isPlainObject(b))) return b;\n const aItems = array ? a : Object.keys(a);\n const aSize = aItems.length;\n const bItems = array ? b : Object.keys(b);\n const bSize = bItems.length;\n const copy = array ? new Array(bSize) : {};\n let equalItems = 0;\n for (let i = 0; i < bSize; i++) {\n const key = array ? i : bItems[i];\n const aItem = a[key];\n const bItem = b[key];\n if (aItem === bItem) {\n copy[key] = aItem;\n if (array ? i < aSize : hasOwn.call(a, key)) equalItems++;\n continue;\n }\n if (aItem === null || bItem === null || typeof aItem !== \"object\" || typeof bItem !== \"object\") {\n copy[key] = bItem;\n continue;\n }\n const v = replaceEqualDeep(aItem, bItem, depth + 1);\n copy[key] = v;\n if (v === aItem) equalItems++;\n }\n return aSize === bSize && equalItems === aSize ? a : copy;\n}\nfunction shallowEqualObjects(a, b) {\n if (!b || Object.keys(a).length !== Object.keys(b).length) {\n return false;\n }\n for (const key in a) {\n if (a[key] !== b[key]) {\n return false;\n }\n }\n return true;\n}\nfunction isPlainArray(value) {\n return Array.isArray(value) && value.length === Object.keys(value).length;\n}\nfunction isPlainObject(o) {\n if (!hasObjectPrototype(o)) {\n return false;\n }\n const ctor = o.constructor;\n if (ctor === void 0) {\n return true;\n }\n const prot = ctor.prototype;\n if (!hasObjectPrototype(prot)) {\n return false;\n }\n if (!prot.hasOwnProperty(\"isPrototypeOf\")) {\n return false;\n }\n if (Object.getPrototypeOf(o) !== Object.prototype) {\n return false;\n }\n return true;\n}\nfunction hasObjectPrototype(o) {\n return Object.prototype.toString.call(o) === \"[object Object]\";\n}\nfunction sleep(timeout) {\n return new Promise((resolve) => {\n timeoutManager.setTimeout(resolve, timeout);\n });\n}\nfunction replaceData(prevData, data, options) {\n if (typeof options.structuralSharing === \"function\") {\n return options.structuralSharing(prevData, data);\n } else if (options.structuralSharing !== false) {\n if (process.env.NODE_ENV !== \"production\") {\n try {\n return replaceEqualDeep(prevData, data);\n } catch (error) {\n console.error(\n `Structural sharing requires data to be JSON serializable. To fix this, turn off structuralSharing or return JSON-serializable data from your queryFn. [${options.queryHash}]: ${error}`\n );\n throw error;\n }\n }\n return replaceEqualDeep(prevData, data);\n }\n return data;\n}\nfunction keepPreviousData(previousData) {\n return previousData;\n}\nfunction addToEnd(items, item, max = 0) {\n const newItems = [...items, item];\n return max && newItems.length > max ? newItems.slice(1) : newItems;\n}\nfunction addToStart(items, item, max = 0) {\n const newItems = [item, ...items];\n return max && newItems.length > max ? newItems.slice(0, -1) : newItems;\n}\nvar skipToken = /* @__PURE__ */ Symbol();\nfunction ensureQueryFn(options, fetchOptions) {\n if (process.env.NODE_ENV !== \"production\") {\n if (options.queryFn === skipToken) {\n console.error(\n `Attempted to invoke queryFn when set to skipToken. This is likely a configuration error. Query hash: '${options.queryHash}'`\n );\n }\n }\n if (!options.queryFn && fetchOptions?.initialPromise) {\n return () => fetchOptions.initialPromise;\n }\n if (!options.queryFn || options.queryFn === skipToken) {\n return () => Promise.reject(new Error(`Missing queryFn: '${options.queryHash}'`));\n }\n return options.queryFn;\n}\nfunction shouldThrowError(throwOnError, params) {\n if (typeof throwOnError === \"function\") {\n return throwOnError(...params);\n }\n return !!throwOnError;\n}\nfunction addConsumeAwareSignal(object, getSignal, onCancelled) {\n let consumed = false;\n let signal;\n Object.defineProperty(object, \"signal\", {\n enumerable: true,\n get: () => {\n signal ??= getSignal();\n if (consumed) {\n return signal;\n }\n consumed = true;\n if (signal.aborted) {\n onCancelled();\n } else {\n signal.addEventListener(\"abort\", onCancelled, { once: true });\n }\n return signal;\n }\n });\n return object;\n}\nexport {\n addConsumeAwareSignal,\n addToEnd,\n addToStart,\n ensureQueryFn,\n functionalUpdate,\n hashKey,\n hashQueryKeyByOptions,\n isPlainArray,\n isPlainObject,\n isServer,\n isValidTimeout,\n keepPreviousData,\n matchMutation,\n matchQuery,\n noop,\n partialMatchKey,\n replaceData,\n replaceEqualDeep,\n resolveEnabled,\n resolveStaleTime,\n shallowEqualObjects,\n shouldThrowError,\n skipToken,\n sleep,\n timeUntilStale\n};\n//# sourceMappingURL=utils.js.map","// src/focusManager.ts\nimport { Subscribable } from \"./subscribable.js\";\nimport { isServer } from \"./utils.js\";\nvar FocusManager = class extends Subscribable {\n #focused;\n #cleanup;\n #setup;\n constructor() {\n super();\n this.#setup = (onFocus) => {\n if (!isServer && window.addEventListener) {\n const listener = () => onFocus();\n window.addEventListener(\"visibilitychange\", listener, false);\n return () => {\n window.removeEventListener(\"visibilitychange\", listener);\n };\n }\n return;\n };\n }\n onSubscribe() {\n if (!this.#cleanup) {\n this.setEventListener(this.#setup);\n }\n }\n onUnsubscribe() {\n if (!this.hasListeners()) {\n this.#cleanup?.();\n this.#cleanup = void 0;\n }\n }\n setEventListener(setup) {\n this.#setup = setup;\n this.#cleanup?.();\n this.#cleanup = setup((focused) => {\n if (typeof focused === \"boolean\") {\n this.setFocused(focused);\n } else {\n this.onFocus();\n }\n });\n }\n setFocused(focused) {\n const changed = this.#focused !== focused;\n if (changed) {\n this.#focused = focused;\n this.onFocus();\n }\n }\n onFocus() {\n const isFocused = this.isFocused();\n this.listeners.forEach((listener) => {\n listener(isFocused);\n });\n }\n isFocused() {\n if (typeof this.#focused === \"boolean\") {\n return this.#focused;\n }\n return globalThis.document?.visibilityState !== \"hidden\";\n }\n};\nvar focusManager = new FocusManager();\nexport {\n FocusManager,\n focusManager\n};\n//# sourceMappingURL=focusManager.js.map","// src/thenable.ts\nimport { noop } from \"./utils.js\";\nfunction pendingThenable() {\n let resolve;\n let reject;\n const thenable = new Promise((_resolve, _reject) => {\n resolve = _resolve;\n reject = _reject;\n });\n thenable.status = \"pending\";\n thenable.catch(() => {\n });\n function finalize(data) {\n Object.assign(thenable, data);\n delete thenable.resolve;\n delete thenable.reject;\n }\n thenable.resolve = (value) => {\n finalize({\n status: \"fulfilled\",\n value\n });\n resolve(value);\n };\n thenable.reject = (reason) => {\n finalize({\n status: \"rejected\",\n reason\n });\n reject(reason);\n };\n return thenable;\n}\nfunction tryResolveSync(promise) {\n let data;\n promise.then((result) => {\n data = result;\n return result;\n }, noop)?.catch(noop);\n if (data !== void 0) {\n return { data };\n }\n return void 0;\n}\nexport {\n pendingThenable,\n tryResolveSync\n};\n//# sourceMappingURL=thenable.js.map","// src/notifyManager.ts\nimport { systemSetTimeoutZero } from \"./timeoutManager.js\";\nvar defaultScheduler = systemSetTimeoutZero;\nfunction createNotifyManager() {\n let queue = [];\n let transactions = 0;\n let notifyFn = (callback) => {\n callback();\n };\n let batchNotifyFn = (callback) => {\n callback();\n };\n let scheduleFn = defaultScheduler;\n const schedule = (callback) => {\n if (transactions) {\n queue.push(callback);\n } else {\n scheduleFn(() => {\n notifyFn(callback);\n });\n }\n };\n const flush = () => {\n const originalQueue = queue;\n queue = [];\n if (originalQueue.length) {\n scheduleFn(() => {\n batchNotifyFn(() => {\n originalQueue.forEach((callback) => {\n notifyFn(callback);\n });\n });\n });\n }\n };\n return {\n batch: (callback) => {\n let result;\n transactions++;\n try {\n result = callback();\n } finally {\n transactions--;\n if (!transactions) {\n flush();\n }\n }\n return result;\n },\n /**\n * All calls to the wrapped function will be batched.\n */\n batchCalls: (callback) => {\n return (...args) => {\n schedule(() => {\n callback(...args);\n });\n };\n },\n schedule,\n /**\n * Use this method to set a custom notify function.\n * This can be used to for example wrap notifications with `React.act` while running tests.\n */\n setNotifyFunction: (fn) => {\n notifyFn = fn;\n },\n /**\n * Use this method to set a custom function to batch notifications together into a single tick.\n * By default React Query will use the batch function provided by ReactDOM or React Native.\n */\n setBatchNotifyFunction: (fn) => {\n batchNotifyFn = fn;\n },\n setScheduler: (fn) => {\n scheduleFn = fn;\n }\n };\n}\nvar notifyManager = createNotifyManager();\nexport {\n createNotifyManager,\n defaultScheduler,\n notifyManager\n};\n//# sourceMappingURL=notifyManager.js.map","// src/onlineManager.ts\nimport { Subscribable } from \"./subscribable.js\";\nimport { isServer } from \"./utils.js\";\nvar OnlineManager = class extends Subscribable {\n #online = true;\n #cleanup;\n #setup;\n constructor() {\n super();\n this.#setup = (onOnline) => {\n if (!isServer && window.addEventListener) {\n const onlineListener = () => onOnline(true);\n const offlineListener = () => onOnline(false);\n window.addEventListener(\"online\", onlineListener, false);\n window.addEventListener(\"offline\", offlineListener, false);\n return () => {\n window.removeEventListener(\"online\", onlineListener);\n window.removeEventListener(\"offline\", offlineListener);\n };\n }\n return;\n };\n }\n onSubscribe() {\n if (!this.#cleanup) {\n this.setEventListener(this.#setup);\n }\n }\n onUnsubscribe() {\n if (!this.hasListeners()) {\n this.#cleanup?.();\n this.#cleanup = void 0;\n }\n }\n setEventListener(setup) {\n this.#setup = setup;\n this.#cleanup?.();\n this.#cleanup = setup(this.setOnline.bind(this));\n }\n setOnline(online) {\n const changed = this.#online !== online;\n if (changed) {\n this.#online = online;\n this.listeners.forEach((listener) => {\n listener(online);\n });\n }\n }\n isOnline() {\n return this.#online;\n }\n};\nvar onlineManager = new OnlineManager();\nexport {\n OnlineManager,\n onlineManager\n};\n//# sourceMappingURL=onlineManager.js.map","// src/retryer.ts\nimport { focusManager } from \"./focusManager.js\";\nimport { onlineManager } from \"./onlineManager.js\";\nimport { pendingThenable } from \"./thenable.js\";\nimport { isServer, sleep } from \"./utils.js\";\nfunction defaultRetryDelay(failureCount) {\n return Math.min(1e3 * 2 ** failureCount, 3e4);\n}\nfunction canFetch(networkMode) {\n return (networkMode ?? \"online\") === \"online\" ? onlineManager.isOnline() : true;\n}\nvar CancelledError = class extends Error {\n constructor(options) {\n super(\"CancelledError\");\n this.revert = options?.revert;\n this.silent = options?.silent;\n }\n};\nfunction isCancelledError(value) {\n return value instanceof CancelledError;\n}\nfunction createRetryer(config) {\n let isRetryCancelled = false;\n let failureCount = 0;\n let continueFn;\n const thenable = pendingThenable();\n const isResolved = () => thenable.status !== \"pending\";\n const cancel = (cancelOptions) => {\n if (!isResolved()) {\n const error = new CancelledError(cancelOptions);\n reject(error);\n config.onCancel?.(error);\n }\n };\n const cancelRetry = () => {\n isRetryCancelled = true;\n };\n const continueRetry = () => {\n isRetryCancelled = false;\n };\n const canContinue = () => focusManager.isFocused() && (config.networkMode === \"always\" || onlineManager.isOnline()) && config.canRun();\n const canStart = () => canFetch(config.networkMode) && config.canRun();\n const resolve = (value) => {\n if (!isResolved()) {\n continueFn?.();\n thenable.resolve(value);\n }\n };\n const reject = (value) => {\n if (!isResolved()) {\n continueFn?.();\n thenable.reject(value);\n }\n };\n const pause = () => {\n return new Promise((continueResolve) => {\n continueFn = (value) => {\n if (isResolved() || canContinue()) {\n continueResolve(value);\n }\n };\n config.onPause?.();\n }).then(() => {\n continueFn = void 0;\n if (!isResolved()) {\n config.onContinue?.();\n }\n });\n };\n const run = () => {\n if (isResolved()) {\n return;\n }\n let promiseOrValue;\n const initialPromise = failureCount === 0 ? config.initialPromise : void 0;\n try {\n promiseOrValue = initialPromise ?? config.fn();\n } catch (error) {\n promiseOrValue = Promise.reject(error);\n }\n Promise.resolve(promiseOrValue).then(resolve).catch((error) => {\n if (isResolved()) {\n return;\n }\n const retry = config.retry ?? (isServer ? 0 : 3);\n const retryDelay = config.retryDelay ?? defaultRetryDelay;\n const delay = typeof retryDelay === \"function\" ? retryDelay(failureCount, error) : retryDelay;\n const shouldRetry = retry === true || typeof retry === \"number\" && failureCount < retry || typeof retry === \"function\" && retry(failureCount, error);\n if (isRetryCancelled || !shouldRetry) {\n reject(error);\n return;\n }\n failureCount++;\n config.onFail?.(failureCount, error);\n sleep(delay).then(() => {\n return canContinue() ? void 0 : pause();\n }).then(() => {\n if (isRetryCancelled) {\n reject(error);\n } else {\n run();\n }\n });\n });\n };\n return {\n promise: thenable,\n status: () => thenable.status,\n cancel,\n continue: () => {\n continueFn?.();\n return thenable;\n },\n cancelRetry,\n continueRetry,\n canStart,\n start: () => {\n if (canStart()) {\n run();\n } else {\n pause().then(run);\n }\n return thenable;\n }\n };\n}\nexport {\n CancelledError,\n canFetch,\n createRetryer,\n isCancelledError\n};\n//# sourceMappingURL=retryer.js.map","// src/removable.ts\nimport { timeoutManager } from \"./timeoutManager.js\";\nimport { isServer, isValidTimeout } from \"./utils.js\";\nvar Removable = class {\n #gcTimeout;\n destroy() {\n this.clearGcTimeout();\n }\n scheduleGc() {\n this.clearGcTimeout();\n if (isValidTimeout(this.gcTime)) {\n this.#gcTimeout = timeoutManager.setTimeout(() => {\n this.optionalRemove();\n }, this.gcTime);\n }\n }\n updateGcTime(newGcTime) {\n this.gcTime = Math.max(\n this.gcTime || 0,\n newGcTime ?? (isServer ? Infinity : 5 * 60 * 1e3)\n );\n }\n clearGcTimeout() {\n if (this.#gcTimeout) {\n timeoutManager.clearTimeout(this.#gcTimeout);\n this.#gcTimeout = void 0;\n }\n }\n};\nexport {\n Removable\n};\n//# sourceMappingURL=removable.js.map","// src/query.ts\nimport {\n ensureQueryFn,\n noop,\n replaceData,\n resolveEnabled,\n resolveStaleTime,\n skipToken,\n timeUntilStale\n} from \"./utils.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { CancelledError, canFetch, createRetryer } from \"./retryer.js\";\nimport { Removable } from \"./removable.js\";\nvar Query = class extends Removable {\n #initialState;\n #revertState;\n #cache;\n #client;\n #retryer;\n #defaultOptions;\n #abortSignalConsumed;\n constructor(config) {\n super();\n this.#abortSignalConsumed = false;\n this.#defaultOptions = config.defaultOptions;\n this.setOptions(config.options);\n this.observers = [];\n this.#client = config.client;\n this.#cache = this.#client.getQueryCache();\n this.queryKey = config.queryKey;\n this.queryHash = config.queryHash;\n this.#initialState = getDefaultState(this.options);\n this.state = config.state ?? this.#initialState;\n this.scheduleGc();\n }\n get meta() {\n return this.options.meta;\n }\n get promise() {\n return this.#retryer?.promise;\n }\n setOptions(options) {\n this.options = { ...this.#defaultOptions, ...options };\n this.updateGcTime(this.options.gcTime);\n if (this.state && this.state.data === void 0) {\n const defaultState = getDefaultState(this.options);\n if (defaultState.data !== void 0) {\n this.setState(\n successState(defaultState.data, defaultState.dataUpdatedAt)\n );\n this.#initialState = defaultState;\n }\n }\n }\n optionalRemove() {\n if (!this.observers.length && this.state.fetchStatus === \"idle\") {\n this.#cache.remove(this);\n }\n }\n setData(newData, options) {\n const data = replaceData(this.state.data, newData, this.options);\n this.#dispatch({\n data,\n type: \"success\",\n dataUpdatedAt: options?.updatedAt,\n manual: options?.manual\n });\n return data;\n }\n setState(state, setStateOptions) {\n this.#dispatch({ type: \"setState\", state, setStateOptions });\n }\n cancel(options) {\n const promise = this.#retryer?.promise;\n this.#retryer?.cancel(options);\n return promise ? promise.then(noop).catch(noop) : Promise.resolve();\n }\n destroy() {\n super.destroy();\n this.cancel({ silent: true });\n }\n reset() {\n this.destroy();\n this.setState(this.#initialState);\n }\n isActive() {\n return this.observers.some(\n (observer) => resolveEnabled(observer.options.enabled, this) !== false\n );\n }\n isDisabled() {\n if (this.getObserversCount() > 0) {\n return !this.isActive();\n }\n return this.options.queryFn === skipToken || this.state.dataUpdateCount + this.state.errorUpdateCount === 0;\n }\n isStatic() {\n if (this.getObserversCount() > 0) {\n return this.observers.some(\n (observer) => resolveStaleTime(observer.options.staleTime, this) === \"static\"\n );\n }\n return false;\n }\n isStale() {\n if (this.getObserversCount() > 0) {\n return this.observers.some(\n (observer) => observer.getCurrentResult().isStale\n );\n }\n return this.state.data === void 0 || this.state.isInvalidated;\n }\n isStaleByTime(staleTime = 0) {\n if (this.state.data === void 0) {\n return true;\n }\n if (staleTime === \"static\") {\n return false;\n }\n if (this.state.isInvalidated) {\n return true;\n }\n return !timeUntilStale(this.state.dataUpdatedAt, staleTime);\n }\n onFocus() {\n const observer = this.observers.find((x) => x.shouldFetchOnWindowFocus());\n observer?.refetch({ cancelRefetch: false });\n this.#retryer?.continue();\n }\n onOnline() {\n const observer = this.observers.find((x) => x.shouldFetchOnReconnect());\n observer?.refetch({ cancelRefetch: false });\n this.#retryer?.continue();\n }\n addObserver(observer) {\n if (!this.observers.includes(observer)) {\n this.observers.push(observer);\n this.clearGcTimeout();\n this.#cache.notify({ type: \"observerAdded\", query: this, observer });\n }\n }\n removeObserver(observer) {\n if (this.observers.includes(observer)) {\n this.observers = this.observers.filter((x) => x !== observer);\n if (!this.observers.length) {\n if (this.#retryer) {\n if (this.#abortSignalConsumed) {\n this.#retryer.cancel({ revert: true });\n } else {\n this.#retryer.cancelRetry();\n }\n }\n this.scheduleGc();\n }\n this.#cache.notify({ type: \"observerRemoved\", query: this, observer });\n }\n }\n getObserversCount() {\n return this.observers.length;\n }\n invalidate() {\n if (!this.state.isInvalidated) {\n this.#dispatch({ type: \"invalidate\" });\n }\n }\n async fetch(options, fetchOptions) {\n if (this.state.fetchStatus !== \"idle\" && // If the promise in the retryer is already rejected, we have to definitely\n // re-start the fetch; there is a chance that the query is still in a\n // pending state when that happens\n this.#retryer?.status() !== \"rejected\") {\n if (this.state.data !== void 0 && fetchOptions?.cancelRefetch) {\n this.cancel({ silent: true });\n } else if (this.#retryer) {\n this.#retryer.continueRetry();\n return this.#retryer.promise;\n }\n }\n if (options) {\n this.setOptions(options);\n }\n if (!this.options.queryFn) {\n const observer = this.observers.find((x) => x.options.queryFn);\n if (observer) {\n this.setOptions(observer.options);\n }\n }\n if (process.env.NODE_ENV !== \"production\") {\n if (!Array.isArray(this.options.queryKey)) {\n console.error(\n `As of v4, queryKey needs to be an Array. If you are using a string like 'repoData', please change it to an Array, e.g. ['repoData']`\n );\n }\n }\n const abortController = new AbortController();\n const addSignalProperty = (object) => {\n Object.defineProperty(object, \"signal\", {\n enumerable: true,\n get: () => {\n this.#abortSignalConsumed = true;\n return abortController.signal;\n }\n });\n };\n const fetchFn = () => {\n const queryFn = ensureQueryFn(this.options, fetchOptions);\n const createQueryFnContext = () => {\n const queryFnContext2 = {\n client: this.#client,\n queryKey: this.queryKey,\n meta: this.meta\n };\n addSignalProperty(queryFnContext2);\n return queryFnContext2;\n };\n const queryFnContext = createQueryFnContext();\n this.#abortSignalConsumed = false;\n if (this.options.persister) {\n return this.options.persister(\n queryFn,\n queryFnContext,\n this\n );\n }\n return queryFn(queryFnContext);\n };\n const createFetchContext = () => {\n const context2 = {\n fetchOptions,\n options: this.options,\n queryKey: this.queryKey,\n client: this.#client,\n state: this.state,\n fetchFn\n };\n addSignalProperty(context2);\n return context2;\n };\n const context = createFetchContext();\n this.options.behavior?.onFetch(context, this);\n this.#revertState = this.state;\n if (this.state.fetchStatus === \"idle\" || this.state.fetchMeta !== context.fetchOptions?.meta) {\n this.#dispatch({ type: \"fetch\", meta: context.fetchOptions?.meta });\n }\n this.#retryer = createRetryer({\n initialPromise: fetchOptions?.initialPromise,\n fn: context.fetchFn,\n onCancel: (error) => {\n if (error instanceof CancelledError && error.revert) {\n this.setState({\n ...this.#revertState,\n fetchStatus: \"idle\"\n });\n }\n abortController.abort();\n },\n onFail: (failureCount, error) => {\n this.#dispatch({ type: \"failed\", failureCount, error });\n },\n onPause: () => {\n this.#dispatch({ type: \"pause\" });\n },\n onContinue: () => {\n this.#dispatch({ type: \"continue\" });\n },\n retry: context.options.retry,\n retryDelay: context.options.retryDelay,\n networkMode: context.options.networkMode,\n canRun: () => true\n });\n try {\n const data = await this.#retryer.start();\n if (data === void 0) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(\n `Query data cannot be undefined. Please make sure to return a value other than undefined from your query function. Affected query key: ${this.queryHash}`\n );\n }\n throw new Error(`${this.queryHash} data is undefined`);\n }\n this.setData(data);\n this.#cache.config.onSuccess?.(data, this);\n this.#cache.config.onSettled?.(\n data,\n this.state.error,\n this\n );\n return data;\n } catch (error) {\n if (error instanceof CancelledError) {\n if (error.silent) {\n return this.#retryer.promise;\n } else if (error.revert) {\n if (this.state.data === void 0) {\n throw error;\n }\n return this.state.data;\n }\n }\n this.#dispatch({\n type: \"error\",\n error\n });\n this.#cache.config.onError?.(\n error,\n this\n );\n this.#cache.config.onSettled?.(\n this.state.data,\n error,\n this\n );\n throw error;\n } finally {\n this.scheduleGc();\n }\n }\n #dispatch(action) {\n const reducer = (state) => {\n switch (action.type) {\n case \"failed\":\n return {\n ...state,\n fetchFailureCount: action.failureCount,\n fetchFailureReason: action.error\n };\n case \"pause\":\n return {\n ...state,\n fetchStatus: \"paused\"\n };\n case \"continue\":\n return {\n ...state,\n fetchStatus: \"fetching\"\n };\n case \"fetch\":\n return {\n ...state,\n ...fetchState(state.data, this.options),\n fetchMeta: action.meta ?? null\n };\n case \"success\":\n const newState = {\n ...state,\n ...successState(action.data, action.dataUpdatedAt),\n dataUpdateCount: state.dataUpdateCount + 1,\n ...!action.manual && {\n fetchStatus: \"idle\",\n fetchFailureCount: 0,\n fetchFailureReason: null\n }\n };\n this.#revertState = action.manual ? newState : void 0;\n return newState;\n case \"error\":\n const error = action.error;\n return {\n ...state,\n error,\n errorUpdateCount: state.errorUpdateCount + 1,\n errorUpdatedAt: Date.now(),\n fetchFailureCount: state.fetchFailureCount + 1,\n fetchFailureReason: error,\n fetchStatus: \"idle\",\n status: \"error\",\n // flag existing data as invalidated if we get a background error\n // note that \"no data\" always means stale so we can set unconditionally here\n isInvalidated: true\n };\n case \"invalidate\":\n return {\n ...state,\n isInvalidated: true\n };\n case \"setState\":\n return {\n ...state,\n ...action.state\n };\n }\n };\n this.state = reducer(this.state);\n notifyManager.batch(() => {\n this.observers.forEach((observer) => {\n observer.onQueryUpdate();\n });\n this.#cache.notify({ query: this, type: \"updated\", action });\n });\n }\n};\nfunction fetchState(data, options) {\n return {\n fetchFailureCount: 0,\n fetchFailureReason: null,\n fetchStatus: canFetch(options.networkMode) ? \"fetching\" : \"paused\",\n ...data === void 0 && {\n error: null,\n status: \"pending\"\n }\n };\n}\nfunction successState(data, dataUpdatedAt) {\n return {\n data,\n dataUpdatedAt: dataUpdatedAt ?? Date.now(),\n error: null,\n isInvalidated: false,\n status: \"success\"\n };\n}\nfunction getDefaultState(options) {\n const data = typeof options.initialData === \"function\" ? options.initialData() : options.initialData;\n const hasData = data !== void 0;\n const initialDataUpdatedAt = hasData ? typeof options.initialDataUpdatedAt === \"function\" ? options.initialDataUpdatedAt() : options.initialDataUpdatedAt : 0;\n return {\n data,\n dataUpdateCount: 0,\n dataUpdatedAt: hasData ? initialDataUpdatedAt ?? Date.now() : 0,\n error: null,\n errorUpdateCount: 0,\n errorUpdatedAt: 0,\n fetchFailureCount: 0,\n fetchFailureReason: null,\n fetchMeta: null,\n isInvalidated: false,\n status: hasData ? \"success\" : \"pending\",\n fetchStatus: \"idle\"\n };\n}\nexport {\n Query,\n fetchState\n};\n//# sourceMappingURL=query.js.map","// src/queryObserver.ts\nimport { focusManager } from \"./focusManager.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { fetchState } from \"./query.js\";\nimport { Subscribable } from \"./subscribable.js\";\nimport { pendingThenable } from \"./thenable.js\";\nimport {\n isServer,\n isValidTimeout,\n noop,\n replaceData,\n resolveEnabled,\n resolveStaleTime,\n shallowEqualObjects,\n timeUntilStale\n} from \"./utils.js\";\nimport { timeoutManager } from \"./timeoutManager.js\";\nvar QueryObserver = class extends Subscribable {\n constructor(client, options) {\n super();\n this.options = options;\n this.#client = client;\n this.#selectError = null;\n this.#currentThenable = pendingThenable();\n this.bindMethods();\n this.setOptions(options);\n }\n #client;\n #currentQuery = void 0;\n #currentQueryInitialState = void 0;\n #currentResult = void 0;\n #currentResultState;\n #currentResultOptions;\n #currentThenable;\n #selectError;\n #selectFn;\n #selectResult;\n // This property keeps track of the last query with defined data.\n // It will be used to pass the previous data and query to the placeholder function between renders.\n #lastQueryWithDefinedData;\n #staleTimeoutId;\n #refetchIntervalId;\n #currentRefetchInterval;\n #trackedProps = /* @__PURE__ */ new Set();\n bindMethods() {\n this.refetch = this.refetch.bind(this);\n }\n onSubscribe() {\n if (this.listeners.size === 1) {\n this.#currentQuery.addObserver(this);\n if (shouldFetchOnMount(this.#currentQuery, this.options)) {\n this.#executeFetch();\n } else {\n this.updateResult();\n }\n this.#updateTimers();\n }\n }\n onUnsubscribe() {\n if (!this.hasListeners()) {\n this.destroy();\n }\n }\n shouldFetchOnReconnect() {\n return shouldFetchOn(\n this.#currentQuery,\n this.options,\n this.options.refetchOnReconnect\n );\n }\n shouldFetchOnWindowFocus() {\n return shouldFetchOn(\n this.#currentQuery,\n this.options,\n this.options.refetchOnWindowFocus\n );\n }\n destroy() {\n this.listeners = /* @__PURE__ */ new Set();\n this.#clearStaleTimeout();\n this.#clearRefetchInterval();\n this.#currentQuery.removeObserver(this);\n }\n setOptions(options) {\n const prevOptions = this.options;\n const prevQuery = this.#currentQuery;\n this.options = this.#client.defaultQueryOptions(options);\n if (this.options.enabled !== void 0 && typeof this.options.enabled !== \"boolean\" && typeof this.options.enabled !== \"function\" && typeof resolveEnabled(this.options.enabled, this.#currentQuery) !== \"boolean\") {\n throw new Error(\n \"Expected enabled to be a boolean or a callback that returns a boolean\"\n );\n }\n this.#updateQuery();\n this.#currentQuery.setOptions(this.options);\n if (prevOptions._defaulted && !shallowEqualObjects(this.options, prevOptions)) {\n this.#client.getQueryCache().notify({\n type: \"observerOptionsUpdated\",\n query: this.#currentQuery,\n observer: this\n });\n }\n const mounted = this.hasListeners();\n if (mounted && shouldFetchOptionally(\n this.#currentQuery,\n prevQuery,\n this.options,\n prevOptions\n )) {\n this.#executeFetch();\n }\n this.updateResult();\n if (mounted && (this.#currentQuery !== prevQuery || resolveEnabled(this.options.enabled, this.#currentQuery) !== resolveEnabled(prevOptions.enabled, this.#currentQuery) || resolveStaleTime(this.options.staleTime, this.#currentQuery) !== resolveStaleTime(prevOptions.staleTime, this.#currentQuery))) {\n this.#updateStaleTimeout();\n }\n const nextRefetchInterval = this.#computeRefetchInterval();\n if (mounted && (this.#currentQuery !== prevQuery || resolveEnabled(this.options.enabled, this.#currentQuery) !== resolveEnabled(prevOptions.enabled, this.#currentQuery) || nextRefetchInterval !== this.#currentRefetchInterval)) {\n this.#updateRefetchInterval(nextRefetchInterval);\n }\n }\n getOptimisticResult(options) {\n const query = this.#client.getQueryCache().build(this.#client, options);\n const result = this.createResult(query, options);\n if (shouldAssignObserverCurrentProperties(this, result)) {\n this.#currentResult = result;\n this.#currentResultOptions = this.options;\n this.#currentResultState = this.#currentQuery.state;\n }\n return result;\n }\n getCurrentResult() {\n return this.#currentResult;\n }\n trackResult(result, onPropTracked) {\n return new Proxy(result, {\n get: (target, key) => {\n this.trackProp(key);\n onPropTracked?.(key);\n if (key === \"promise\") {\n this.trackProp(\"data\");\n if (!this.options.experimental_prefetchInRender && this.#currentThenable.status === \"pending\") {\n this.#currentThenable.reject(\n new Error(\n \"experimental_prefetchInRender feature flag is not enabled\"\n )\n );\n }\n }\n return Reflect.get(target, key);\n }\n });\n }\n trackProp(key) {\n this.#trackedProps.add(key);\n }\n getCurrentQuery() {\n return this.#currentQuery;\n }\n refetch({ ...options } = {}) {\n return this.fetch({\n ...options\n });\n }\n fetchOptimistic(options) {\n const defaultedOptions = this.#client.defaultQueryOptions(options);\n const query = this.#client.getQueryCache().build(this.#client, defaultedOptions);\n return query.fetch().then(() => this.createResult(query, defaultedOptions));\n }\n fetch(fetchOptions) {\n return this.#executeFetch({\n ...fetchOptions,\n cancelRefetch: fetchOptions.cancelRefetch ?? true\n }).then(() => {\n this.updateResult();\n return this.#currentResult;\n });\n }\n #executeFetch(fetchOptions) {\n this.#updateQuery();\n let promise = this.#currentQuery.fetch(\n this.options,\n fetchOptions\n );\n if (!fetchOptions?.throwOnError) {\n promise = promise.catch(noop);\n }\n return promise;\n }\n #updateStaleTimeout() {\n this.#clearStaleTimeout();\n const staleTime = resolveStaleTime(\n this.options.staleTime,\n this.#currentQuery\n );\n if (isServer || this.#currentResult.isStale || !isValidTimeout(staleTime)) {\n return;\n }\n const time = timeUntilStale(this.#currentResult.dataUpdatedAt, staleTime);\n const timeout = time + 1;\n this.#staleTimeoutId = timeoutManager.setTimeout(() => {\n if (!this.#currentResult.isStale) {\n this.updateResult();\n }\n }, timeout);\n }\n #computeRefetchInterval() {\n return (typeof this.options.refetchInterval === \"function\" ? this.options.refetchInterval(this.#currentQuery) : this.options.refetchInterval) ?? false;\n }\n #updateRefetchInterval(nextInterval) {\n this.#clearRefetchInterval();\n this.#currentRefetchInterval = nextInterval;\n if (isServer || resolveEnabled(this.options.enabled, this.#currentQuery) === false || !isValidTimeout(this.#currentRefetchInterval) || this.#currentRefetchInterval === 0) {\n return;\n }\n this.#refetchIntervalId = timeoutManager.setInterval(() => {\n if (this.options.refetchIntervalInBackground || focusManager.isFocused()) {\n this.#executeFetch();\n }\n }, this.#currentRefetchInterval);\n }\n #updateTimers() {\n this.#updateStaleTimeout();\n this.#updateRefetchInterval(this.#computeRefetchInterval());\n }\n #clearStaleTimeout() {\n if (this.#staleTimeoutId) {\n timeoutManager.clearTimeout(this.#staleTimeoutId);\n this.#staleTimeoutId = void 0;\n }\n }\n #clearRefetchInterval() {\n if (this.#refetchIntervalId) {\n timeoutManager.clearInterval(this.#refetchIntervalId);\n this.#refetchIntervalId = void 0;\n }\n }\n createResult(query, options) {\n const prevQuery = this.#currentQuery;\n const prevOptions = this.options;\n const prevResult = this.#currentResult;\n const prevResultState = this.#currentResultState;\n const prevResultOptions = this.#currentResultOptions;\n const queryChange = query !== prevQuery;\n const queryInitialState = queryChange ? query.state : this.#currentQueryInitialState;\n const { state } = query;\n let newState = { ...state };\n let isPlaceholderData = false;\n let data;\n if (options._optimisticResults) {\n const mounted = this.hasListeners();\n const fetchOnMount = !mounted && shouldFetchOnMount(query, options);\n const fetchOptionally = mounted && shouldFetchOptionally(query, prevQuery, options, prevOptions);\n if (fetchOnMount || fetchOptionally) {\n newState = {\n ...newState,\n ...fetchState(state.data, query.options)\n };\n }\n if (options._optimisticResults === \"isRestoring\") {\n newState.fetchStatus = \"idle\";\n }\n }\n let { error, errorUpdatedAt, status } = newState;\n data = newState.data;\n let skipSelect = false;\n if (options.placeholderData !== void 0 && data === void 0 && status === \"pending\") {\n let placeholderData;\n if (prevResult?.isPlaceholderData && options.placeholderData === prevResultOptions?.placeholderData) {\n placeholderData = prevResult.data;\n skipSelect = true;\n } else {\n placeholderData = typeof options.placeholderData === \"function\" ? options.placeholderData(\n this.#lastQueryWithDefinedData?.state.data,\n this.#lastQueryWithDefinedData\n ) : options.placeholderData;\n }\n if (placeholderData !== void 0) {\n status = \"success\";\n data = replaceData(\n prevResult?.data,\n placeholderData,\n options\n );\n isPlaceholderData = true;\n }\n }\n if (options.select && data !== void 0 && !skipSelect) {\n if (prevResult && data === prevResultState?.data && options.select === this.#selectFn) {\n data = this.#selectResult;\n } else {\n try {\n this.#selectFn = options.select;\n data = options.select(data);\n data = replaceData(prevResult?.data, data, options);\n this.#selectResult = data;\n this.#selectError = null;\n } catch (selectError) {\n this.#selectError = selectError;\n }\n }\n }\n if (this.#selectError) {\n error = this.#selectError;\n data = this.#selectResult;\n errorUpdatedAt = Date.now();\n status = \"error\";\n }\n const isFetching = newState.fetchStatus === \"fetching\";\n const isPending = status === \"pending\";\n const isError = status === \"error\";\n const isLoading = isPending && isFetching;\n const hasData = data !== void 0;\n const result = {\n status,\n fetchStatus: newState.fetchStatus,\n isPending,\n isSuccess: status === \"success\",\n isError,\n isInitialLoading: isLoading,\n isLoading,\n data,\n dataUpdatedAt: newState.dataUpdatedAt,\n error,\n errorUpdatedAt,\n failureCount: newState.fetchFailureCount,\n failureReason: newState.fetchFailureReason,\n errorUpdateCount: newState.errorUpdateCount,\n isFetched: newState.dataUpdateCount > 0 || newState.errorUpdateCount > 0,\n isFetchedAfterMount: newState.dataUpdateCount > queryInitialState.dataUpdateCount || newState.errorUpdateCount > queryInitialState.errorUpdateCount,\n isFetching,\n isRefetching: isFetching && !isPending,\n isLoadingError: isError && !hasData,\n isPaused: newState.fetchStatus === \"paused\",\n isPlaceholderData,\n isRefetchError: isError && hasData,\n isStale: isStale(query, options),\n refetch: this.refetch,\n promise: this.#currentThenable,\n isEnabled: resolveEnabled(options.enabled, query) !== false\n };\n const nextResult = result;\n if (this.options.experimental_prefetchInRender) {\n const hasResultData = nextResult.data !== void 0;\n const isErrorWithoutData = nextResult.status === \"error\" && !hasResultData;\n const finalizeThenableIfPossible = (thenable) => {\n if (isErrorWithoutData) {\n thenable.reject(nextResult.error);\n } else if (hasResultData) {\n thenable.resolve(nextResult.data);\n }\n };\n const recreateThenable = () => {\n const pending = this.#currentThenable = nextResult.promise = pendingThenable();\n finalizeThenableIfPossible(pending);\n };\n const prevThenable = this.#currentThenable;\n switch (prevThenable.status) {\n case \"pending\":\n if (query.queryHash === prevQuery.queryHash) {\n finalizeThenableIfPossible(prevThenable);\n }\n break;\n case \"fulfilled\":\n if (isErrorWithoutData || nextResult.data !== prevThenable.value) {\n recreateThenable();\n }\n break;\n case \"rejected\":\n if (!isErrorWithoutData || nextResult.error !== prevThenable.reason) {\n recreateThenable();\n }\n break;\n }\n }\n return nextResult;\n }\n updateResult() {\n const prevResult = this.#currentResult;\n const nextResult = this.createResult(this.#currentQuery, this.options);\n this.#currentResultState = this.#currentQuery.state;\n this.#currentResultOptions = this.options;\n if (this.#currentResultState.data !== void 0) {\n this.#lastQueryWithDefinedData = this.#currentQuery;\n }\n if (shallowEqualObjects(nextResult, prevResult)) {\n return;\n }\n this.#currentResult = nextResult;\n const shouldNotifyListeners = () => {\n if (!prevResult) {\n return true;\n }\n const { notifyOnChangeProps } = this.options;\n const notifyOnChangePropsValue = typeof notifyOnChangeProps === \"function\" ? notifyOnChangeProps() : notifyOnChangeProps;\n if (notifyOnChangePropsValue === \"all\" || !notifyOnChangePropsValue && !this.#trackedProps.size) {\n return true;\n }\n const includedProps = new Set(\n notifyOnChangePropsValue ?? this.#trackedProps\n );\n if (this.options.throwOnError) {\n includedProps.add(\"error\");\n }\n return Object.keys(this.#currentResult).some((key) => {\n const typedKey = key;\n const changed = this.#currentResult[typedKey] !== prevResult[typedKey];\n return changed && includedProps.has(typedKey);\n });\n };\n this.#notify({ listeners: shouldNotifyListeners() });\n }\n #updateQuery() {\n const query = this.#client.getQueryCache().build(this.#client, this.options);\n if (query === this.#currentQuery) {\n return;\n }\n const prevQuery = this.#currentQuery;\n this.#currentQuery = query;\n this.#currentQueryInitialState = query.state;\n if (this.hasListeners()) {\n prevQuery?.removeObserver(this);\n query.addObserver(this);\n }\n }\n onQueryUpdate() {\n this.updateResult();\n if (this.hasListeners()) {\n this.#updateTimers();\n }\n }\n #notify(notifyOptions) {\n notifyManager.batch(() => {\n if (notifyOptions.listeners) {\n this.listeners.forEach((listener) => {\n listener(this.#currentResult);\n });\n }\n this.#client.getQueryCache().notify({\n query: this.#currentQuery,\n type: \"observerResultsUpdated\"\n });\n });\n }\n};\nfunction shouldLoadOnMount(query, options) {\n return resolveEnabled(options.enabled, query) !== false && query.state.data === void 0 && !(query.state.status === \"error\" && options.retryOnMount === false);\n}\nfunction shouldFetchOnMount(query, options) {\n return shouldLoadOnMount(query, options) || query.state.data !== void 0 && shouldFetchOn(query, options, options.refetchOnMount);\n}\nfunction shouldFetchOn(query, options, field) {\n if (resolveEnabled(options.enabled, query) !== false && resolveStaleTime(options.staleTime, query) !== \"static\") {\n const value = typeof field === \"function\" ? field(query) : field;\n return value === \"always\" || value !== false && isStale(query, options);\n }\n return false;\n}\nfunction shouldFetchOptionally(query, prevQuery, options, prevOptions) {\n return (query !== prevQuery || resolveEnabled(prevOptions.enabled, query) === false) && (!options.suspense || query.state.status !== \"error\") && isStale(query, options);\n}\nfunction isStale(query, options) {\n return resolveEnabled(options.enabled, query) !== false && query.isStaleByTime(resolveStaleTime(options.staleTime, query));\n}\nfunction shouldAssignObserverCurrentProperties(observer, optimisticResult) {\n if (!shallowEqualObjects(observer.getCurrentResult(), optimisticResult)) {\n return true;\n }\n return false;\n}\nexport {\n QueryObserver\n};\n//# sourceMappingURL=queryObserver.js.map","// src/infiniteQueryBehavior.ts\nimport {\n addConsumeAwareSignal,\n addToEnd,\n addToStart,\n ensureQueryFn\n} from \"./utils.js\";\nfunction infiniteQueryBehavior(pages) {\n return {\n onFetch: (context, query) => {\n const options = context.options;\n const direction = context.fetchOptions?.meta?.fetchMore?.direction;\n const oldPages = context.state.data?.pages || [];\n const oldPageParams = context.state.data?.pageParams || [];\n let result = { pages: [], pageParams: [] };\n let currentPage = 0;\n const fetchFn = async () => {\n let cancelled = false;\n const addSignalProperty = (object) => {\n addConsumeAwareSignal(\n object,\n () => context.signal,\n () => cancelled = true\n );\n };\n const queryFn = ensureQueryFn(context.options, context.fetchOptions);\n const fetchPage = async (data, param, previous) => {\n if (cancelled) {\n return Promise.reject();\n }\n if (param == null && data.pages.length) {\n return Promise.resolve(data);\n }\n const createQueryFnContext = () => {\n const queryFnContext2 = {\n client: context.client,\n queryKey: context.queryKey,\n pageParam: param,\n direction: previous ? \"backward\" : \"forward\",\n meta: context.options.meta\n };\n addSignalProperty(queryFnContext2);\n return queryFnContext2;\n };\n const queryFnContext = createQueryFnContext();\n const page = await queryFn(queryFnContext);\n const { maxPages } = context.options;\n const addTo = previous ? addToStart : addToEnd;\n return {\n pages: addTo(data.pages, page, maxPages),\n pageParams: addTo(data.pageParams, param, maxPages)\n };\n };\n if (direction && oldPages.length) {\n const previous = direction === \"backward\";\n const pageParamFn = previous ? getPreviousPageParam : getNextPageParam;\n const oldData = {\n pages: oldPages,\n pageParams: oldPageParams\n };\n const param = pageParamFn(options, oldData);\n result = await fetchPage(oldData, param, previous);\n } else {\n const remainingPages = pages ?? oldPages.length;\n do {\n const param = currentPage === 0 ? oldPageParams[0] ?? options.initialPageParam : getNextPageParam(options, result);\n if (currentPage > 0 && param == null) {\n break;\n }\n result = await fetchPage(result, param);\n currentPage++;\n } while (currentPage < remainingPages);\n }\n return result;\n };\n if (context.options.persister) {\n context.fetchFn = () => {\n return context.options.persister?.(\n fetchFn,\n {\n client: context.client,\n queryKey: context.queryKey,\n meta: context.options.meta,\n signal: context.signal\n },\n query\n );\n };\n } else {\n context.fetchFn = fetchFn;\n }\n }\n };\n}\nfunction getNextPageParam(options, { pages, pageParams }) {\n const lastIndex = pages.length - 1;\n return pages.length > 0 ? options.getNextPageParam(\n pages[lastIndex],\n pages,\n pageParams[lastIndex],\n pageParams\n ) : void 0;\n}\nfunction getPreviousPageParam(options, { pages, pageParams }) {\n return pages.length > 0 ? options.getPreviousPageParam?.(pages[0], pages, pageParams[0], pageParams) : void 0;\n}\nfunction hasNextPage(options, data) {\n if (!data) return false;\n return getNextPageParam(options, data) != null;\n}\nfunction hasPreviousPage(options, data) {\n if (!data || !options.getPreviousPageParam) return false;\n return getPreviousPageParam(options, data) != null;\n}\nexport {\n hasNextPage,\n hasPreviousPage,\n infiniteQueryBehavior\n};\n//# sourceMappingURL=infiniteQueryBehavior.js.map","// src/mutation.ts\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Removable } from \"./removable.js\";\nimport { createRetryer } from \"./retryer.js\";\nvar Mutation = class extends Removable {\n #client;\n #observers;\n #mutationCache;\n #retryer;\n constructor(config) {\n super();\n this.#client = config.client;\n this.mutationId = config.mutationId;\n this.#mutationCache = config.mutationCache;\n this.#observers = [];\n this.state = config.state || getDefaultState();\n this.setOptions(config.options);\n this.scheduleGc();\n }\n setOptions(options) {\n this.options = options;\n this.updateGcTime(this.options.gcTime);\n }\n get meta() {\n return this.options.meta;\n }\n addObserver(observer) {\n if (!this.#observers.includes(observer)) {\n this.#observers.push(observer);\n this.clearGcTimeout();\n this.#mutationCache.notify({\n type: \"observerAdded\",\n mutation: this,\n observer\n });\n }\n }\n removeObserver(observer) {\n this.#observers = this.#observers.filter((x) => x !== observer);\n this.scheduleGc();\n this.#mutationCache.notify({\n type: \"observerRemoved\",\n mutation: this,\n observer\n });\n }\n optionalRemove() {\n if (!this.#observers.length) {\n if (this.state.status === \"pending\") {\n this.scheduleGc();\n } else {\n this.#mutationCache.remove(this);\n }\n }\n }\n continue() {\n return this.#retryer?.continue() ?? // continuing a mutation assumes that variables are set, mutation must have been dehydrated before\n this.execute(this.state.variables);\n }\n async execute(variables) {\n const onContinue = () => {\n this.#dispatch({ type: \"continue\" });\n };\n const mutationFnContext = {\n client: this.#client,\n meta: this.options.meta,\n mutationKey: this.options.mutationKey\n };\n this.#retryer = createRetryer({\n fn: () => {\n if (!this.options.mutationFn) {\n return Promise.reject(new Error(\"No mutationFn found\"));\n }\n return this.options.mutationFn(variables, mutationFnContext);\n },\n onFail: (failureCount, error) => {\n this.#dispatch({ type: \"failed\", failureCount, error });\n },\n onPause: () => {\n this.#dispatch({ type: \"pause\" });\n },\n onContinue,\n retry: this.options.retry ?? 0,\n retryDelay: this.options.retryDelay,\n networkMode: this.options.networkMode,\n canRun: () => this.#mutationCache.canRun(this)\n });\n const restored = this.state.status === \"pending\";\n const isPaused = !this.#retryer.canStart();\n try {\n if (restored) {\n onContinue();\n } else {\n this.#dispatch({ type: \"pending\", variables, isPaused });\n if (this.#mutationCache.config.onMutate) {\n await this.#mutationCache.config.onMutate(\n variables,\n this,\n mutationFnContext\n );\n }\n const context = await this.options.onMutate?.(\n variables,\n mutationFnContext\n );\n if (context !== this.state.context) {\n this.#dispatch({\n type: \"pending\",\n context,\n variables,\n isPaused\n });\n }\n }\n const data = await this.#retryer.start();\n await this.#mutationCache.config.onSuccess?.(\n data,\n variables,\n this.state.context,\n this,\n mutationFnContext\n );\n await this.options.onSuccess?.(\n data,\n variables,\n this.state.context,\n mutationFnContext\n );\n await this.#mutationCache.config.onSettled?.(\n data,\n null,\n this.state.variables,\n this.state.context,\n this,\n mutationFnContext\n );\n await this.options.onSettled?.(\n data,\n null,\n variables,\n this.state.context,\n mutationFnContext\n );\n this.#dispatch({ type: \"success\", data });\n return data;\n } catch (error) {\n try {\n await this.#mutationCache.config.onError?.(\n error,\n variables,\n this.state.context,\n this,\n mutationFnContext\n );\n } catch (e) {\n void Promise.reject(e);\n }\n try {\n await this.options.onError?.(\n error,\n variables,\n this.state.context,\n mutationFnContext\n );\n } catch (e) {\n void Promise.reject(e);\n }\n try {\n await this.#mutationCache.config.onSettled?.(\n void 0,\n error,\n this.state.variables,\n this.state.context,\n this,\n mutationFnContext\n );\n } catch (e) {\n void Promise.reject(e);\n }\n try {\n await this.options.onSettled?.(\n void 0,\n error,\n variables,\n this.state.context,\n mutationFnContext\n );\n } catch (e) {\n void Promise.reject(e);\n }\n this.#dispatch({ type: \"error\", error });\n throw error;\n } finally {\n this.#mutationCache.runNext(this);\n }\n }\n #dispatch(action) {\n const reducer = (state) => {\n switch (action.type) {\n case \"failed\":\n return {\n ...state,\n failureCount: action.failureCount,\n failureReason: action.error\n };\n case \"pause\":\n return {\n ...state,\n isPaused: true\n };\n case \"continue\":\n return {\n ...state,\n isPaused: false\n };\n case \"pending\":\n return {\n ...state,\n context: action.context,\n data: void 0,\n failureCount: 0,\n failureReason: null,\n error: null,\n isPaused: action.isPaused,\n status: \"pending\",\n variables: action.variables,\n submittedAt: Date.now()\n };\n case \"success\":\n return {\n ...state,\n data: action.data,\n failureCount: 0,\n failureReason: null,\n error: null,\n status: \"success\",\n isPaused: false\n };\n case \"error\":\n return {\n ...state,\n data: void 0,\n error: action.error,\n failureCount: state.failureCount + 1,\n failureReason: action.error,\n isPaused: false,\n status: \"error\"\n };\n }\n };\n this.state = reducer(this.state);\n notifyManager.batch(() => {\n this.#observers.forEach((observer) => {\n observer.onMutationUpdate(action);\n });\n this.#mutationCache.notify({\n mutation: this,\n type: \"updated\",\n action\n });\n });\n }\n};\nfunction getDefaultState() {\n return {\n context: void 0,\n data: void 0,\n error: null,\n failureCount: 0,\n failureReason: null,\n isPaused: false,\n status: \"idle\",\n variables: void 0,\n submittedAt: 0\n };\n}\nexport {\n Mutation,\n getDefaultState\n};\n//# sourceMappingURL=mutation.js.map","// src/mutationCache.ts\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Mutation } from \"./mutation.js\";\nimport { matchMutation, noop } from \"./utils.js\";\nimport { Subscribable } from \"./subscribable.js\";\nvar MutationCache = class extends Subscribable {\n constructor(config = {}) {\n super();\n this.config = config;\n this.#mutations = /* @__PURE__ */ new Set();\n this.#scopes = /* @__PURE__ */ new Map();\n this.#mutationId = 0;\n }\n #mutations;\n #scopes;\n #mutationId;\n build(client, options, state) {\n const mutation = new Mutation({\n client,\n mutationCache: this,\n mutationId: ++this.#mutationId,\n options: client.defaultMutationOptions(options),\n state\n });\n this.add(mutation);\n return mutation;\n }\n add(mutation) {\n this.#mutations.add(mutation);\n const scope = scopeFor(mutation);\n if (typeof scope === \"string\") {\n const scopedMutations = this.#scopes.get(scope);\n if (scopedMutations) {\n scopedMutations.push(mutation);\n } else {\n this.#scopes.set(scope, [mutation]);\n }\n }\n this.notify({ type: \"added\", mutation });\n }\n remove(mutation) {\n if (this.#mutations.delete(mutation)) {\n const scope = scopeFor(mutation);\n if (typeof scope === \"string\") {\n const scopedMutations = this.#scopes.get(scope);\n if (scopedMutations) {\n if (scopedMutations.length > 1) {\n const index = scopedMutations.indexOf(mutation);\n if (index !== -1) {\n scopedMutations.splice(index, 1);\n }\n } else if (scopedMutations[0] === mutation) {\n this.#scopes.delete(scope);\n }\n }\n }\n }\n this.notify({ type: \"removed\", mutation });\n }\n canRun(mutation) {\n const scope = scopeFor(mutation);\n if (typeof scope === \"string\") {\n const mutationsWithSameScope = this.#scopes.get(scope);\n const firstPendingMutation = mutationsWithSameScope?.find(\n (m) => m.state.status === \"pending\"\n );\n return !firstPendingMutation || firstPendingMutation === mutation;\n } else {\n return true;\n }\n }\n runNext(mutation) {\n const scope = scopeFor(mutation);\n if (typeof scope === \"string\") {\n const foundMutation = this.#scopes.get(scope)?.find((m) => m !== mutation && m.state.isPaused);\n return foundMutation?.continue() ?? Promise.resolve();\n } else {\n return Promise.resolve();\n }\n }\n clear() {\n notifyManager.batch(() => {\n this.#mutations.forEach((mutation) => {\n this.notify({ type: \"removed\", mutation });\n });\n this.#mutations.clear();\n this.#scopes.clear();\n });\n }\n getAll() {\n return Array.from(this.#mutations);\n }\n find(filters) {\n const defaultedFilters = { exact: true, ...filters };\n return this.getAll().find(\n (mutation) => matchMutation(defaultedFilters, mutation)\n );\n }\n findAll(filters = {}) {\n return this.getAll().filter((mutation) => matchMutation(filters, mutation));\n }\n notify(event) {\n notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(event);\n });\n });\n }\n resumePausedMutations() {\n const pausedMutations = this.getAll().filter((x) => x.state.isPaused);\n return notifyManager.batch(\n () => Promise.all(\n pausedMutations.map((mutation) => mutation.continue().catch(noop))\n )\n );\n }\n};\nfunction scopeFor(mutation) {\n return mutation.options.scope?.id;\n}\nexport {\n MutationCache\n};\n//# sourceMappingURL=mutationCache.js.map","// src/queryCache.ts\nimport { hashQueryKeyByOptions, matchQuery } from \"./utils.js\";\nimport { Query } from \"./query.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Subscribable } from \"./subscribable.js\";\nvar QueryCache = class extends Subscribable {\n constructor(config = {}) {\n super();\n this.config = config;\n this.#queries = /* @__PURE__ */ new Map();\n }\n #queries;\n build(client, options, state) {\n const queryKey = options.queryKey;\n const queryHash = options.queryHash ?? hashQueryKeyByOptions(queryKey, options);\n let query = this.get(queryHash);\n if (!query) {\n query = new Query({\n client,\n queryKey,\n queryHash,\n options: client.defaultQueryOptions(options),\n state,\n defaultOptions: client.getQueryDefaults(queryKey)\n });\n this.add(query);\n }\n return query;\n }\n add(query) {\n if (!this.#queries.has(query.queryHash)) {\n this.#queries.set(query.queryHash, query);\n this.notify({\n type: \"added\",\n query\n });\n }\n }\n remove(query) {\n const queryInMap = this.#queries.get(query.queryHash);\n if (queryInMap) {\n query.destroy();\n if (queryInMap === query) {\n this.#queries.delete(query.queryHash);\n }\n this.notify({ type: \"removed\", query });\n }\n }\n clear() {\n notifyManager.batch(() => {\n this.getAll().forEach((query) => {\n this.remove(query);\n });\n });\n }\n get(queryHash) {\n return this.#queries.get(queryHash);\n }\n getAll() {\n return [...this.#queries.values()];\n }\n find(filters) {\n const defaultedFilters = { exact: true, ...filters };\n return this.getAll().find(\n (query) => matchQuery(defaultedFilters, query)\n );\n }\n findAll(filters = {}) {\n const queries = this.getAll();\n return Object.keys(filters).length > 0 ? queries.filter((query) => matchQuery(filters, query)) : queries;\n }\n notify(event) {\n notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(event);\n });\n });\n }\n onFocus() {\n notifyManager.batch(() => {\n this.getAll().forEach((query) => {\n query.onFocus();\n });\n });\n }\n onOnline() {\n notifyManager.batch(() => {\n this.getAll().forEach((query) => {\n query.onOnline();\n });\n });\n }\n};\nexport {\n QueryCache\n};\n//# sourceMappingURL=queryCache.js.map","// src/queryClient.ts\nimport {\n functionalUpdate,\n hashKey,\n hashQueryKeyByOptions,\n noop,\n partialMatchKey,\n resolveStaleTime,\n skipToken\n} from \"./utils.js\";\nimport { QueryCache } from \"./queryCache.js\";\nimport { MutationCache } from \"./mutationCache.js\";\nimport { focusManager } from \"./focusManager.js\";\nimport { onlineManager } from \"./onlineManager.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { infiniteQueryBehavior } from \"./infiniteQueryBehavior.js\";\nvar QueryClient = class {\n #queryCache;\n #mutationCache;\n #defaultOptions;\n #queryDefaults;\n #mutationDefaults;\n #mountCount;\n #unsubscribeFocus;\n #unsubscribeOnline;\n constructor(config = {}) {\n this.#queryCache = config.queryCache || new QueryCache();\n this.#mutationCache = config.mutationCache || new MutationCache();\n this.#defaultOptions = config.defaultOptions || {};\n this.#queryDefaults = /* @__PURE__ */ new Map();\n this.#mutationDefaults = /* @__PURE__ */ new Map();\n this.#mountCount = 0;\n }\n mount() {\n this.#mountCount++;\n if (this.#mountCount !== 1) return;\n this.#unsubscribeFocus = focusManager.subscribe(async (focused) => {\n if (focused) {\n await this.resumePausedMutations();\n this.#queryCache.onFocus();\n }\n });\n this.#unsubscribeOnline = onlineManager.subscribe(async (online) => {\n if (online) {\n await this.resumePausedMutations();\n this.#queryCache.onOnline();\n }\n });\n }\n unmount() {\n this.#mountCount--;\n if (this.#mountCount !== 0) return;\n this.#unsubscribeFocus?.();\n this.#unsubscribeFocus = void 0;\n this.#unsubscribeOnline?.();\n this.#unsubscribeOnline = void 0;\n }\n isFetching(filters) {\n return this.#queryCache.findAll({ ...filters, fetchStatus: \"fetching\" }).length;\n }\n isMutating(filters) {\n return this.#mutationCache.findAll({ ...filters, status: \"pending\" }).length;\n }\n /**\n * Imperative (non-reactive) way to retrieve data for a QueryKey.\n * Should only be used in callbacks or functions where reading the latest data is necessary, e.g. for optimistic updates.\n *\n * Hint: Do not use this function inside a component, because it won't receive updates.\n * Use `useQuery` to create a `QueryObserver` that subscribes to changes.\n */\n getQueryData(queryKey) {\n const options = this.defaultQueryOptions({ queryKey });\n return this.#queryCache.get(options.queryHash)?.state.data;\n }\n ensureQueryData(options) {\n const defaultedOptions = this.defaultQueryOptions(options);\n const query = this.#queryCache.build(this, defaultedOptions);\n const cachedData = query.state.data;\n if (cachedData === void 0) {\n return this.fetchQuery(options);\n }\n if (options.revalidateIfStale && query.isStaleByTime(resolveStaleTime(defaultedOptions.staleTime, query))) {\n void this.prefetchQuery(defaultedOptions);\n }\n return Promise.resolve(cachedData);\n }\n getQueriesData(filters) {\n return this.#queryCache.findAll(filters).map(({ queryKey, state }) => {\n const data = state.data;\n return [queryKey, data];\n });\n }\n setQueryData(queryKey, updater, options) {\n const defaultedOptions = this.defaultQueryOptions({ queryKey });\n const query = this.#queryCache.get(\n defaultedOptions.queryHash\n );\n const prevData = query?.state.data;\n const data = functionalUpdate(updater, prevData);\n if (data === void 0) {\n return void 0;\n }\n return this.#queryCache.build(this, defaultedOptions).setData(data, { ...options, manual: true });\n }\n setQueriesData(filters, updater, options) {\n return notifyManager.batch(\n () => this.#queryCache.findAll(filters).map(({ queryKey }) => [\n queryKey,\n this.setQueryData(queryKey, updater, options)\n ])\n );\n }\n getQueryState(queryKey) {\n const options = this.defaultQueryOptions({ queryKey });\n return this.#queryCache.get(\n options.queryHash\n )?.state;\n }\n removeQueries(filters) {\n const queryCache = this.#queryCache;\n notifyManager.batch(() => {\n queryCache.findAll(filters).forEach((query) => {\n queryCache.remove(query);\n });\n });\n }\n resetQueries(filters, options) {\n const queryCache = this.#queryCache;\n return notifyManager.batch(() => {\n queryCache.findAll(filters).forEach((query) => {\n query.reset();\n });\n return this.refetchQueries(\n {\n type: \"active\",\n ...filters\n },\n options\n );\n });\n }\n cancelQueries(filters, cancelOptions = {}) {\n const defaultedCancelOptions = { revert: true, ...cancelOptions };\n const promises = notifyManager.batch(\n () => this.#queryCache.findAll(filters).map((query) => query.cancel(defaultedCancelOptions))\n );\n return Promise.all(promises).then(noop).catch(noop);\n }\n invalidateQueries(filters, options = {}) {\n return notifyManager.batch(() => {\n this.#queryCache.findAll(filters).forEach((query) => {\n query.invalidate();\n });\n if (filters?.refetchType === \"none\") {\n return Promise.resolve();\n }\n return this.refetchQueries(\n {\n ...filters,\n type: filters?.refetchType ?? filters?.type ?? \"active\"\n },\n options\n );\n });\n }\n refetchQueries(filters, options = {}) {\n const fetchOptions = {\n ...options,\n cancelRefetch: options.cancelRefetch ?? true\n };\n const promises = notifyManager.batch(\n () => this.#queryCache.findAll(filters).filter((query) => !query.isDisabled() && !query.isStatic()).map((query) => {\n let promise = query.fetch(void 0, fetchOptions);\n if (!fetchOptions.throwOnError) {\n promise = promise.catch(noop);\n }\n return query.state.fetchStatus === \"paused\" ? Promise.resolve() : promise;\n })\n );\n return Promise.all(promises).then(noop);\n }\n fetchQuery(options) {\n const defaultedOptions = this.defaultQueryOptions(options);\n if (defaultedOptions.retry === void 0) {\n defaultedOptions.retry = false;\n }\n const query = this.#queryCache.build(this, defaultedOptions);\n return query.isStaleByTime(\n resolveStaleTime(defaultedOptions.staleTime, query)\n ) ? query.fetch(defaultedOptions) : Promise.resolve(query.state.data);\n }\n prefetchQuery(options) {\n return this.fetchQuery(options).then(noop).catch(noop);\n }\n fetchInfiniteQuery(options) {\n options.behavior = infiniteQueryBehavior(options.pages);\n return this.fetchQuery(options);\n }\n prefetchInfiniteQuery(options) {\n return this.fetchInfiniteQuery(options).then(noop).catch(noop);\n }\n ensureInfiniteQueryData(options) {\n options.behavior = infiniteQueryBehavior(options.pages);\n return this.ensureQueryData(options);\n }\n resumePausedMutations() {\n if (onlineManager.isOnline()) {\n return this.#mutationCache.resumePausedMutations();\n }\n return Promise.resolve();\n }\n getQueryCache() {\n return this.#queryCache;\n }\n getMutationCache() {\n return this.#mutationCache;\n }\n getDefaultOptions() {\n return this.#defaultOptions;\n }\n setDefaultOptions(options) {\n this.#defaultOptions = options;\n }\n setQueryDefaults(queryKey, options) {\n this.#queryDefaults.set(hashKey(queryKey), {\n queryKey,\n defaultOptions: options\n });\n }\n getQueryDefaults(queryKey) {\n const defaults = [...this.#queryDefaults.values()];\n const result = {};\n defaults.forEach((queryDefault) => {\n if (partialMatchKey(queryKey, queryDefault.queryKey)) {\n Object.assign(result, queryDefault.defaultOptions);\n }\n });\n return result;\n }\n setMutationDefaults(mutationKey, options) {\n this.#mutationDefaults.set(hashKey(mutationKey), {\n mutationKey,\n defaultOptions: options\n });\n }\n getMutationDefaults(mutationKey) {\n const defaults = [...this.#mutationDefaults.values()];\n const result = {};\n defaults.forEach((queryDefault) => {\n if (partialMatchKey(mutationKey, queryDefault.mutationKey)) {\n Object.assign(result, queryDefault.defaultOptions);\n }\n });\n return result;\n }\n defaultQueryOptions(options) {\n if (options._defaulted) {\n return options;\n }\n const defaultedOptions = {\n ...this.#defaultOptions.queries,\n ...this.getQueryDefaults(options.queryKey),\n ...options,\n _defaulted: true\n };\n if (!defaultedOptions.queryHash) {\n defaultedOptions.queryHash = hashQueryKeyByOptions(\n defaultedOptions.queryKey,\n defaultedOptions\n );\n }\n if (defaultedOptions.refetchOnReconnect === void 0) {\n defaultedOptions.refetchOnReconnect = defaultedOptions.networkMode !== \"always\";\n }\n if (defaultedOptions.throwOnError === void 0) {\n defaultedOptions.throwOnError = !!defaultedOptions.suspense;\n }\n if (!defaultedOptions.networkMode && defaultedOptions.persister) {\n defaultedOptions.networkMode = \"offlineFirst\";\n }\n if (defaultedOptions.queryFn === skipToken) {\n defaultedOptions.enabled = false;\n }\n return defaultedOptions;\n }\n defaultMutationOptions(options) {\n if (options?._defaulted) {\n return options;\n }\n return {\n ...this.#defaultOptions.mutations,\n ...options?.mutationKey && this.getMutationDefaults(options.mutationKey),\n ...options,\n _defaulted: true\n };\n }\n clear() {\n this.#queryCache.clear();\n this.#mutationCache.clear();\n }\n};\nexport {\n QueryClient\n};\n//# sourceMappingURL=queryClient.js.map","\"use client\";\n\n// src/QueryClientProvider.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nvar QueryClientContext = React.createContext(\n void 0\n);\nvar useQueryClient = (queryClient) => {\n const client = React.useContext(QueryClientContext);\n if (queryClient) {\n return queryClient;\n }\n if (!client) {\n throw new Error(\"No QueryClient set, use QueryClientProvider to set one\");\n }\n return client;\n};\nvar QueryClientProvider = ({\n client,\n children\n}) => {\n React.useEffect(() => {\n client.mount();\n return () => {\n client.unmount();\n };\n }, [client]);\n return /* @__PURE__ */ jsx(QueryClientContext.Provider, { value: client, children });\n};\nexport {\n QueryClientContext,\n QueryClientProvider,\n useQueryClient\n};\n//# sourceMappingURL=QueryClientProvider.js.map","\"use client\";\n\n// src/IsRestoringProvider.ts\nimport * as React from \"react\";\nvar IsRestoringContext = React.createContext(false);\nvar useIsRestoring = () => React.useContext(IsRestoringContext);\nvar IsRestoringProvider = IsRestoringContext.Provider;\nexport {\n IsRestoringProvider,\n useIsRestoring\n};\n//# sourceMappingURL=IsRestoringProvider.js.map","\"use client\";\n\n// src/QueryErrorResetBoundary.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createValue() {\n let isReset = false;\n return {\n clearReset: () => {\n isReset = false;\n },\n reset: () => {\n isReset = true;\n },\n isReset: () => {\n return isReset;\n }\n };\n}\nvar QueryErrorResetBoundaryContext = React.createContext(createValue());\nvar useQueryErrorResetBoundary = () => React.useContext(QueryErrorResetBoundaryContext);\nvar QueryErrorResetBoundary = ({\n children\n}) => {\n const [value] = React.useState(() => createValue());\n return /* @__PURE__ */ jsx(QueryErrorResetBoundaryContext.Provider, { value, children: typeof children === \"function\" ? children(value) : children });\n};\nexport {\n QueryErrorResetBoundary,\n useQueryErrorResetBoundary\n};\n//# sourceMappingURL=QueryErrorResetBoundary.js.map","\"use client\";\n\n// src/errorBoundaryUtils.ts\nimport * as React from \"react\";\nimport { shouldThrowError } from \"@tanstack/query-core\";\nvar ensurePreventErrorBoundaryRetry = (options, errorResetBoundary, query) => {\n const throwOnError = query?.state.error && typeof options.throwOnError === \"function\" ? shouldThrowError(options.throwOnError, [query.state.error, query]) : options.throwOnError;\n if (options.suspense || options.experimental_prefetchInRender || throwOnError) {\n if (!errorResetBoundary.isReset()) {\n options.retryOnMount = false;\n }\n }\n};\nvar useClearResetErrorBoundary = (errorResetBoundary) => {\n React.useEffect(() => {\n errorResetBoundary.clearReset();\n }, [errorResetBoundary]);\n};\nvar getHasError = ({\n result,\n errorResetBoundary,\n throwOnError,\n query,\n suspense\n}) => {\n return result.isError && !errorResetBoundary.isReset() && !result.isFetching && query && (suspense && result.data === void 0 || shouldThrowError(throwOnError, [result.error, query]));\n};\nexport {\n ensurePreventErrorBoundaryRetry,\n getHasError,\n useClearResetErrorBoundary\n};\n//# sourceMappingURL=errorBoundaryUtils.js.map","// src/suspense.ts\nvar defaultThrowOnError = (_error, query) => query.state.data === void 0;\nvar ensureSuspenseTimers = (defaultedOptions) => {\n if (defaultedOptions.suspense) {\n const MIN_SUSPENSE_TIME_MS = 1e3;\n const clamp = (value) => value === \"static\" ? value : Math.max(value ?? MIN_SUSPENSE_TIME_MS, MIN_SUSPENSE_TIME_MS);\n const originalStaleTime = defaultedOptions.staleTime;\n defaultedOptions.staleTime = typeof originalStaleTime === \"function\" ? (...args) => clamp(originalStaleTime(...args)) : clamp(originalStaleTime);\n if (typeof defaultedOptions.gcTime === \"number\") {\n defaultedOptions.gcTime = Math.max(\n defaultedOptions.gcTime,\n MIN_SUSPENSE_TIME_MS\n );\n }\n }\n};\nvar willFetch = (result, isRestoring) => result.isLoading && result.isFetching && !isRestoring;\nvar shouldSuspend = (defaultedOptions, result) => defaultedOptions?.suspense && result.isPending;\nvar fetchOptimistic = (defaultedOptions, observer, errorResetBoundary) => observer.fetchOptimistic(defaultedOptions).catch(() => {\n errorResetBoundary.clearReset();\n});\nexport {\n defaultThrowOnError,\n ensureSuspenseTimers,\n fetchOptimistic,\n shouldSuspend,\n willFetch\n};\n//# sourceMappingURL=suspense.js.map","\"use client\";\n\n// src/useBaseQuery.ts\nimport * as React from \"react\";\nimport { isServer, noop, notifyManager } from \"@tanstack/query-core\";\nimport { useQueryClient } from \"./QueryClientProvider.js\";\nimport { useQueryErrorResetBoundary } from \"./QueryErrorResetBoundary.js\";\nimport {\n ensurePreventErrorBoundaryRetry,\n getHasError,\n useClearResetErrorBoundary\n} from \"./errorBoundaryUtils.js\";\nimport { useIsRestoring } from \"./IsRestoringProvider.js\";\nimport {\n ensureSuspenseTimers,\n fetchOptimistic,\n shouldSuspend,\n willFetch\n} from \"./suspense.js\";\nfunction useBaseQuery(options, Observer, queryClient) {\n if (process.env.NODE_ENV !== \"production\") {\n if (typeof options !== \"object\" || Array.isArray(options)) {\n throw new Error(\n 'Bad argument type. Starting with v5, only the \"Object\" form is allowed when calling query related functions. Please use the error stack to find the culprit call. More info here: https://tanstack.com/query/latest/docs/react/guides/migrating-to-v5#supports-a-single-signature-one-object'\n );\n }\n }\n const isRestoring = useIsRestoring();\n const errorResetBoundary = useQueryErrorResetBoundary();\n const client = useQueryClient(queryClient);\n const defaultedOptions = client.defaultQueryOptions(options);\n client.getDefaultOptions().queries?._experimental_beforeQuery?.(\n defaultedOptions\n );\n const query = client.getQueryCache().get(defaultedOptions.queryHash);\n if (process.env.NODE_ENV !== \"production\") {\n if (!defaultedOptions.queryFn) {\n console.error(\n `[${defaultedOptions.queryHash}]: No queryFn was passed as an option, and no default queryFn was found. The queryFn parameter is only optional when using a default queryFn. More info here: https://tanstack.com/query/latest/docs/framework/react/guides/default-query-function`\n );\n }\n }\n defaultedOptions._optimisticResults = isRestoring ? \"isRestoring\" : \"optimistic\";\n ensureSuspenseTimers(defaultedOptions);\n ensurePreventErrorBoundaryRetry(defaultedOptions, errorResetBoundary, query);\n useClearResetErrorBoundary(errorResetBoundary);\n const isNewCacheEntry = !client.getQueryCache().get(defaultedOptions.queryHash);\n const [observer] = React.useState(\n () => new Observer(\n client,\n defaultedOptions\n )\n );\n const result = observer.getOptimisticResult(defaultedOptions);\n const shouldSubscribe = !isRestoring && options.subscribed !== false;\n React.useSyncExternalStore(\n React.useCallback(\n (onStoreChange) => {\n const unsubscribe = shouldSubscribe ? observer.subscribe(notifyManager.batchCalls(onStoreChange)) : noop;\n observer.updateResult();\n return unsubscribe;\n },\n [observer, shouldSubscribe]\n ),\n () => observer.getCurrentResult(),\n () => observer.getCurrentResult()\n );\n React.useEffect(() => {\n observer.setOptions(defaultedOptions);\n }, [defaultedOptions, observer]);\n if (shouldSuspend(defaultedOptions, result)) {\n throw fetchOptimistic(defaultedOptions, observer, errorResetBoundary);\n }\n if (getHasError({\n result,\n errorResetBoundary,\n throwOnError: defaultedOptions.throwOnError,\n query,\n suspense: defaultedOptions.suspense\n })) {\n throw result.error;\n }\n ;\n client.getDefaultOptions().queries?._experimental_afterQuery?.(\n defaultedOptions,\n result\n );\n if (defaultedOptions.experimental_prefetchInRender && !isServer && willFetch(result, isRestoring)) {\n const promise = isNewCacheEntry ? (\n // Fetch immediately on render in order to ensure `.promise` is resolved even if the component is unmounted\n fetchOptimistic(defaultedOptions, observer, errorResetBoundary)\n ) : (\n // subscribe to the \"cache promise\" so that we can finalize the currentThenable once data comes in\n query?.promise\n );\n promise?.catch(noop).finally(() => {\n observer.updateResult();\n });\n }\n return !defaultedOptions.notifyOnChangeProps ? observer.trackResult(result) : result;\n}\nexport {\n useBaseQuery\n};\n//# sourceMappingURL=useBaseQuery.js.map","\"use client\";\n\n// src/useQuery.ts\nimport { QueryObserver } from \"@tanstack/query-core\";\nimport { useBaseQuery } from \"./useBaseQuery.js\";\nfunction useQuery(options, queryClient) {\n return useBaseQuery(options, QueryObserver, queryClient);\n}\nexport {\n useQuery\n};\n//# sourceMappingURL=useQuery.js.map","import { useEffect, useState } from 'react'\n\nexport type Theme = 'light' | 'dark' | 'system'\nexport type ResolvedTheme = 'light' | 'dark'\n\n/**\n * Hook to resolve the actual theme value, handling 'system' preference detection.\n * When theme is 'system', it listens to the user's OS/browser color scheme preference.\n *\n * @param theme - The theme setting: 'light', 'dark', or 'system'\n * @returns The resolved theme: 'light' or 'dark'\n */\nexport function useResolvedTheme(theme: Theme): ResolvedTheme {\n const [systemTheme, setSystemTheme] = useState<ResolvedTheme>(() => {\n // Check initial system preference (SSR-safe)\n if (typeof window === 'undefined') {\n return 'light'\n }\n return window.matchMedia('(prefers-color-scheme: dark)').matches\n ? 'dark'\n : 'light'\n })\n\n useEffect(() => {\n // Only listen to system changes if theme is 'system'\n if (theme !== 'system') {\n return\n }\n\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)')\n\n // Update state based on current value\n setSystemTheme(mediaQuery.matches ? 'dark' : 'light')\n\n // Listen for changes\n const handler = (e: MediaQueryListEvent): void => {\n setSystemTheme(e.matches ? 'dark' : 'light')\n }\n\n mediaQuery.addEventListener('change', handler)\n return (): void => mediaQuery.removeEventListener('change', handler)\n }, [theme])\n\n // Return explicit theme if not 'system', otherwise return detected system theme\n return theme === 'system' ? systemTheme : theme\n}\n","import {\n createContext,\n ReactNode,\n useCallback,\n useContext,\n useMemo,\n useRef,\n useState,\n} from 'react'\n\nimport type {\n MenuSlot,\n PluginDialog,\n PluginMenuItem,\n PluginPanel,\n PluginRenderContext,\n WalletUIPlugin,\n} from './types'\n\ninterface PluginContextType {\n /** All menu items grouped by slot, sorted by order */\n menuItemsBySlot: Record<MenuSlot, PluginMenuItem[]>\n /** All dialogs from all plugins */\n dialogs: PluginDialog[]\n /** Open a plugin dialog by key */\n openDialog: (key: string) => void\n /** Close a plugin dialog by key */\n closeDialog: (key: string) => void\n /** Currently open dialog keys */\n openDialogs: Set<string>\n /** All panels from all plugins, sorted by order */\n panels: PluginPanel[]\n /** All registered plugins */\n plugins: WalletUIPlugin[]\n /** Enriched render context with working openDialog/closeDialog */\n renderContext: PluginRenderContext\n}\n\nconst ALL_SLOTS: MenuSlot[] = [\n 'after-balance',\n 'after-accounts',\n 'after-wallet-info',\n 'before-actions',\n 'actions',\n]\n\nconst EMPTY_MENU_ITEMS: Record<MenuSlot, PluginMenuItem[]> = {\n 'after-balance': [],\n 'after-accounts': [],\n 'after-wallet-info': [],\n 'before-actions': [],\n actions: [],\n}\n\nconst EMPTY_RENDER_CONTEXT: PluginRenderContext = {\n activeAddress: null,\n activeWallet: null,\n theme: 'system',\n resolvedTheme: 'light',\n openDialog: () => {},\n closeDialog: () => {},\n}\n\nconst EMPTY_CONTEXT: PluginContextType = {\n menuItemsBySlot: EMPTY_MENU_ITEMS,\n dialogs: [],\n openDialog: () => {},\n closeDialog: () => {},\n openDialogs: new Set(),\n panels: [],\n plugins: [],\n renderContext: EMPTY_RENDER_CONTEXT,\n}\n\nconst PluginContext = createContext<PluginContextType | undefined>(undefined)\n\n/** Access the plugin context. Returns safe defaults when no plugins are registered. */\nexport function usePlugins(): PluginContextType {\n const ctx = useContext(PluginContext)\n if (!ctx) {\n return EMPTY_CONTEXT\n }\n return ctx\n}\n\n/**\n * Composes plugin Provider components around children.\n * First plugin's Provider wraps outermost, last wraps innermost.\n */\nfunction PluginProviderComposer({\n plugins,\n ctx,\n children,\n}: {\n plugins: WalletUIPlugin[]\n ctx: PluginRenderContext\n children: ReactNode\n}) {\n return plugins.reduceRight<ReactNode>((acc, plugin) => {\n if (plugin.Provider) {\n return <plugin.Provider ctx={ctx}>{acc}</plugin.Provider>\n }\n return acc\n }, children)\n}\n\n/**\n * Stabilizes the plugins array reference to prevent unnecessary re-renders.\n * Returns the same array reference as long as the set of plugin IDs hasn't changed.\n * This protects against the common pattern: `plugins={[myPlugin()]}` inline in JSX.\n */\nfunction useStablePlugins(plugins: WalletUIPlugin[]): WalletUIPlugin[] {\n const stableRef = useRef(plugins)\n\n const prevIds = stableRef.current.map((p) => p.id).join('\\0')\n const nextIds = plugins.map((p) => p.id).join('\\0')\n\n if (prevIds !== nextIds) {\n stableRef.current = plugins\n }\n\n return stableRef.current\n}\n\nexport function PluginContextProvider({\n plugins: rawPlugins,\n renderContext,\n children,\n}: {\n plugins: WalletUIPlugin[]\n renderContext: PluginRenderContext\n children: ReactNode\n}) {\n const plugins = useStablePlugins(rawPlugins)\n\n // Validate for duplicate plugin IDs, menu item keys, and dialog keys\n useMemo(() => {\n if (process.env.NODE_ENV === 'production') return\n\n const pluginIds = new Set<string>()\n const menuKeys = new Set<string>()\n const dialogKeys = new Set<string>()\n const panelKeys = new Set<string>()\n\n for (const plugin of plugins) {\n if (pluginIds.has(plugin.id)) {\n console.warn(`[WalletUI] Duplicate plugin ID: \"${plugin.id}\"`)\n }\n pluginIds.add(plugin.id)\n\n for (const item of plugin.menuItems ?? []) {\n if (menuKeys.has(item.key)) {\n console.warn(\n `[WalletUI] Duplicate menu item key: \"${item.key}\" (plugin: \"${plugin.id}\")`,\n )\n }\n menuKeys.add(item.key)\n }\n\n for (const dialog of plugin.dialogs ?? []) {\n if (dialogKeys.has(dialog.key)) {\n console.warn(\n `[WalletUI] Duplicate dialog key: \"${dialog.key}\" (plugin: \"${plugin.id}\")`,\n )\n }\n dialogKeys.add(dialog.key)\n }\n\n for (const panel of plugin.panels ?? []) {\n if (panelKeys.has(panel.key)) {\n console.warn(\n `[WalletUI] Duplicate panel key: \"${panel.key}\" (plugin: \"${plugin.id}\")`,\n )\n }\n panelKeys.add(panel.key)\n }\n }\n }, [plugins])\n\n const [openDialogs, setOpenDialogs] = useState<Set<string>>(new Set())\n\n const openDialog = useCallback((key: string) => {\n setOpenDialogs((prev) => {\n const next = new Set(prev)\n next.add(key)\n return next\n })\n }, [])\n\n const closeDialog = useCallback((key: string) => {\n setOpenDialogs((prev) => {\n const next = new Set(prev)\n next.delete(key)\n return next\n })\n }, [])\n\n // Group menu items by slot and sort by order\n const menuItemsBySlot = useMemo(() => {\n const result: Record<MenuSlot, PluginMenuItem[]> = {\n 'after-balance': [],\n 'after-accounts': [],\n 'after-wallet-info': [],\n 'before-actions': [],\n actions: [],\n }\n\n for (const plugin of plugins) {\n if (plugin.menuItems) {\n for (const item of plugin.menuItems) {\n if (ALL_SLOTS.includes(item.slot)) {\n result[item.slot].push(item)\n }\n }\n }\n }\n\n // Sort each slot by order\n for (const slot of ALL_SLOTS) {\n result[slot].sort((a, b) => (a.order ?? 100) - (b.order ?? 100))\n }\n\n return result\n }, [plugins])\n\n // Collect all dialogs\n const dialogs = useMemo(\n () => plugins.flatMap((p) => p.dialogs ?? []),\n [plugins],\n )\n\n // Collect all panels, sorted by order\n const panels = useMemo(\n () =>\n plugins\n .flatMap((p) => p.panels ?? [])\n .sort((a, b) => (a.order ?? 100) - (b.order ?? 100)),\n [plugins],\n )\n\n // Build a render context that includes dialog control\n const enrichedContext = useMemo(\n () => ({\n ...renderContext,\n openDialog,\n closeDialog,\n }),\n [renderContext, openDialog, closeDialog],\n )\n\n const contextValue = useMemo(\n () => ({\n menuItemsBySlot,\n dialogs,\n openDialog,\n closeDialog,\n openDialogs,\n panels,\n plugins,\n renderContext: enrichedContext,\n }),\n [\n menuItemsBySlot,\n dialogs,\n openDialog,\n closeDialog,\n openDialogs,\n panels,\n plugins,\n enrichedContext,\n ],\n )\n\n return (\n <PluginContext.Provider value={contextValue}>\n <PluginProviderComposer plugins={plugins} ctx={enrichedContext}>\n {children}\n </PluginProviderComposer>\n </PluginContext.Provider>\n )\n}\n","import { FloatingPortal } from '@floating-ui/react'\nimport { QueryClientProvider } from '@tanstack/react-query'\n\nimport { useWalletUI } from '../providers/WalletUIProvider'\n\nimport { usePlugins } from './PluginContext'\n\n/**\n * Renders all open plugin dialogs via FloatingPortal.\n * Centralizes the QueryClientProvider wrapping needed to fix\n * FloatingPortal context inheritance issues.\n *\n * Must be rendered inside PluginContextProvider to access the\n * enriched render context with working openDialog/closeDialog.\n */\nexport function PluginDialogRenderer() {\n const { dialogs, openDialogs, closeDialog, renderContext } = usePlugins()\n const { queryClient, theme } = useWalletUI()\n\n const dataTheme = theme === 'system' ? undefined : theme\n\n return (\n <>\n {dialogs.map((dialog) => {\n const isOpen = openDialogs.has(dialog.key)\n if (!isOpen) return null\n\n return (\n <FloatingPortal key={dialog.key} id={`wallet-plugin-${dialog.key}`}>\n <QueryClientProvider client={queryClient}>\n <div data-wallet-theme data-wallet-ui data-theme={dataTheme}>\n {dialog.render({\n isOpen,\n onClose: () => closeDialog(dialog.key),\n ctx: renderContext,\n })}\n </div>\n </QueryClientProvider>\n </FloatingPortal>\n )\n })}\n </>\n )\n}\n","import { useEffect, useRef } from 'react'\n\nimport { usePlugins } from './PluginContext'\n\nimport type { WalletUIPlugin } from './types'\n\n/**\n * Safely invoke a plugin lifecycle hook, catching both sync and async errors.\n */\nfunction safeInvoke(plugin: WalletUIPlugin, fn: () => void | Promise<void>) {\n try {\n const result = fn()\n if (result && typeof result.catch === 'function') {\n result.catch((err) => {\n console.error(\n `[WalletUI] Plugin \"${plugin.id}\" lifecycle hook error:`,\n err,\n )\n })\n }\n } catch (err) {\n console.error(\n `[WalletUI] Plugin \"${plugin.id}\" lifecycle hook error:`,\n err,\n )\n }\n}\n\n/**\n * Monitors wallet state changes and invokes plugin lifecycle hooks.\n * Detects connect, disconnect, and account change transitions.\n *\n * Must be rendered inside PluginContextProvider to access the\n * enriched render context with working openDialog/closeDialog.\n */\nexport function PluginLifecycleManager() {\n const { plugins, renderContext: ctx } = usePlugins()\n\n const prevAddressRef = useRef<string | null>(null)\n const prevWalletIdRef = useRef<string | null>(null)\n\n useEffect(() => {\n const prevAddress = prevAddressRef.current\n const prevWalletId = prevWalletIdRef.current\n const currentWalletId = ctx.activeWallet?.id ?? null\n\n // Detect connection (no wallet → has wallet)\n if (!prevWalletId && currentWalletId) {\n for (const plugin of plugins) {\n if (plugin.lifecycle?.onConnect) {\n safeInvoke(plugin, () => plugin.lifecycle!.onConnect!(ctx))\n }\n }\n }\n\n // Detect disconnection (had wallet → no wallet)\n if (prevWalletId && !currentWalletId) {\n for (const plugin of plugins) {\n if (plugin.lifecycle?.onDisconnect) {\n safeInvoke(plugin, () => plugin.lifecycle!.onDisconnect!())\n }\n }\n }\n\n // Detect account change (wallet still connected, address changed)\n if (\n currentWalletId &&\n prevAddress &&\n ctx.activeAddress &&\n prevAddress !== ctx.activeAddress\n ) {\n for (const plugin of plugins) {\n if (plugin.lifecycle?.onAccountChange) {\n plugin.lifecycle.onAccountChange(ctx.activeAddress, prevAddress, ctx)\n }\n }\n }\n\n prevAddressRef.current = ctx.activeAddress\n prevWalletIdRef.current = currentWalletId\n }, [ctx, plugins])\n\n return null\n}\n","import {\n QueryClient,\n QueryClientProvider,\n useQueryClient,\n} from '@tanstack/react-query'\nimport { useWallet, useNetwork } from '@txnlab/use-wallet-react'\nimport {\n createContext,\n ReactNode,\n useContext,\n useEffect,\n useMemo,\n useRef,\n} from 'react'\n\nimport {\n useResolvedTheme,\n type Theme,\n type ResolvedTheme,\n} from '../hooks/useResolvedTheme'\nimport { PluginContextProvider } from '../plugins/PluginContext'\nimport { PluginDialogRenderer } from '../plugins/PluginDialogRenderer'\nimport { PluginLifecycleManager } from '../plugins/PluginLifecycleManager'\n\nimport type { NfdLookupResponse, NfdView } from '../hooks/useNfd'\nimport type { PluginRenderContext, WalletUIPlugin } from '../plugins/types'\n\n// CSS custom properties for theming - injected via JavaScript to avoid requiring CSS imports\nconst THEME_STYLES_ID = 'wallet-ui-theme-styles'\n\nconst lightThemeVars = `\n --wui-color-primary: #2d2df1;\n --wui-color-primary-hover: #2929d9;\n --wui-color-primary-text: #ffffff;\n --wui-color-bg: #ffffff;\n --wui-color-bg-secondary: #f9fafb;\n --wui-color-bg-tertiary: #f3f4f6;\n --wui-color-bg-hover: #e9e9fd;\n --wui-color-text: #1f2937;\n --wui-color-text-secondary: #6b7280;\n --wui-color-text-tertiary: #9ca3af;\n --wui-color-border: #e5e7eb;\n --wui-color-link: rgba(45, 45, 241, 0.8);\n --wui-color-link-hover: #2d2df1;\n --wui-color-overlay: rgba(0, 0, 0, 0.3);\n --wui-color-danger-bg: #fee2e2;\n --wui-color-danger-bg-hover: #fecaca;\n --wui-color-danger-text: #b91c1c;\n --wui-color-avatar-bg: #e5e7eb;\n --wui-color-avatar-icon: #9ca3af;\n`\n\nconst darkThemeVars = `\n --wui-color-primary: #bfbff9;\n --wui-color-primary-hover: #d4d4fa;\n --wui-color-primary-text: #001324;\n --wui-color-bg: #001324;\n --wui-color-bg-secondary: #101b29;\n --wui-color-bg-tertiary: #192a39;\n --wui-color-bg-hover: #192a39;\n --wui-color-text: #e9e9fd;\n --wui-color-text-secondary: #99a1a7;\n --wui-color-text-tertiary: #6b7280;\n --wui-color-border: #192a39;\n --wui-color-link: #6c6cf1;\n --wui-color-link-hover: #8080f3;\n --wui-color-overlay: rgba(0, 0, 0, 0.5);\n --wui-color-danger-bg: rgba(127, 29, 29, 0.4);\n --wui-color-danger-bg-hover: rgba(127, 29, 29, 0.6);\n --wui-color-danger-text: #fca5a5;\n --wui-color-avatar-bg: #192a39;\n --wui-color-avatar-icon: #6b7280;\n`\n\nfunction injectThemeStyles() {\n // Only inject once\n if (document.getElementById(THEME_STYLES_ID)) {\n return\n }\n\n const styleElement = document.createElement('style')\n styleElement.id = THEME_STYLES_ID\n styleElement.textContent = `\n /* Light mode (default) */\n [data-wallet-theme] {\n ${lightThemeVars}\n }\n\n /* Dark mode via data-theme attribute (explicit) */\n [data-wallet-theme][data-theme='dark'] {\n ${darkThemeVars}\n }\n\n /* Dark mode via .dark class on ancestor (Tailwind convention) */\n .dark [data-wallet-theme]:not([data-theme='light']) {\n ${darkThemeVars}\n }\n\n /* Dark mode via system preference (when theme=\"system\" or no explicit theme) */\n @media (prefers-color-scheme: dark) {\n [data-wallet-theme]:not([data-theme='light']):not([data-theme='dark']) {\n ${darkThemeVars}\n }\n }\n `\n // Insert at the START of <head> so consumer CSS (loaded later) can override\n document.head.insertBefore(styleElement, document.head.firstChild)\n}\n\ninterface WalletUIContextType {\n queryClient: QueryClient\n theme: Theme\n resolvedTheme: ResolvedTheme\n}\n\ninterface WalletUIProviderProps {\n children: ReactNode\n queryClient?: QueryClient\n /**\n * Whether to automatically prefetch data for all accounts in connected wallets (defaults to true)\n */\n enablePrefetching?: boolean\n /**\n * NFD view type for prefetching (defaults to 'thumbnail')\n */\n prefetchNfdView?: NfdView\n /**\n * Theme setting for wallet UI components.\n * - 'light': Always use light mode\n * - 'dark': Always use dark mode\n * - 'system': Follow the user's OS/browser preference (default)\n *\n * The library also respects the `.dark` class on ancestor elements (Tailwind convention),\n * which will enable dark mode unless explicitly overridden with theme=\"light\".\n */\n theme?: Theme\n /**\n * Plugins to register. Each plugin can contribute menu items, dialogs,\n * lifecycle hooks, and context providers.\n */\n plugins?: WalletUIPlugin[]\n}\n\n// Default query client configuration for NFD queries\nconst createDefaultQueryClient = () =>\n new QueryClient({\n defaultOptions: {\n queries: {\n staleTime: 5 * 60 * 1000, // 5 minutes\n gcTime: 60 * 60 * 1000, // 1 hour\n refetchOnWindowFocus: true,\n refetchInterval: 10 * 60 * 1000, // Refetch every 10 minutes\n retry: (failureCount, error) => {\n // Don't retry for 404 errors (not found)\n if (error instanceof Error && error.message.includes('404')) {\n return false\n }\n // For other errors, retry up to 3 times\n return failureCount < 3\n },\n },\n },\n })\n\nconst WalletUIContext = createContext<WalletUIContextType | undefined>(\n undefined,\n)\n\n// Internal function to prefetch all account data when a wallet connects\nfunction WalletAccountsPrefetcher({\n enabled,\n nfdView,\n}: {\n enabled: boolean\n nfdView: NfdView\n}) {\n const queryClient = useQueryClient()\n const { activeAddress, activeWallet, algodClient } = useWallet()\n const { activeNetwork } = useNetwork()\n\n // Previous activeAddress value\n const prevActiveAddressRef = useRef<string | null>(null)\n\n useEffect(() => {\n // Skip if prefetching is disabled\n if (!enabled) {\n prevActiveAddressRef.current = activeAddress\n return\n }\n\n // Only prefetch when transitioning from disconnected to connected state\n // (when prevActiveAddress was null but activeAddress is now defined)\n const shouldPrefetch =\n prevActiveAddressRef.current === null &&\n activeAddress !== null &&\n activeWallet !== null &&\n activeWallet.accounts !== undefined &&\n activeWallet.accounts.length > 0 &&\n algodClient !== undefined\n\n // Always update the previous address ref\n prevActiveAddressRef.current = activeAddress\n\n // If we don't need to prefetch, exit early\n if (!shouldPrefetch) {\n return\n }\n\n console.log(\n `[WalletUI] Prefetching data for all accounts in wallet ${activeWallet!.id}`,\n )\n\n // Get all addresses from the wallet\n const addresses = activeWallet!.accounts.map((account) => account.address)\n\n // If we have addresses, fetch NFDs in batches of 20\n if (addresses.length > 0) {\n // Process addresses in batches of 20 (NFD API limit)\n const batchSize = 20\n const addressBatches = []\n\n for (let i = 0; i < addresses.length; i += batchSize) {\n addressBatches.push(addresses.slice(i, i + batchSize))\n }\n\n // Process each batch\n addressBatches.forEach(async (batch) => {\n // Determine the API endpoint based on the network\n const isTestnet = activeNetwork === 'testnet'\n const apiEndpoint = isTestnet\n ? 'https://api.testnet.nf.domains'\n : 'https://api.nf.domains'\n\n // Build the query URL with multiple address parameters\n const queryParams = new URLSearchParams()\n batch.forEach((address) => {\n queryParams.append('address', address)\n })\n queryParams.append('view', nfdView)\n\n try {\n // Make a single request for all addresses in the batch\n const response = await fetch(\n `${apiEndpoint}/nfd/lookup?${queryParams.toString()}`,\n {\n method: 'GET',\n headers: {\n Accept: 'application/json',\n },\n },\n )\n\n // Handle response\n if (!response.ok && response.status !== 404) {\n throw new Error(\n `NFD prefetch lookup failed: ${response.statusText}`,\n )\n }\n\n // If we get a 404 or success, process the response\n // For 404, we'll get an empty object\n const responseData: NfdLookupResponse =\n response.status === 404 ? {} : await response.json()\n\n // For each address in the batch, seed the query cache\n batch.forEach((address) => {\n const nfdData = responseData[address] || null\n\n // Seed the cache with this NFD data\n queryClient.setQueryData(\n ['nfd', address, activeNetwork, nfdView],\n nfdData,\n )\n })\n } catch (error) {\n console.error('Error prefetching NFD data:', error)\n }\n })\n }\n\n // For each account in the wallet, prefetch balance data\n addresses.forEach((address) => {\n // Prefetch balance data\n queryClient.prefetchQuery({\n queryKey: ['account-balance', address],\n queryFn: async () => {\n try {\n const accountInfo = await algodClient!\n .accountInformation(address)\n .do()\n return Number(accountInfo.amount)\n } catch (error) {\n throw new Error(`Error fetching account balance: ${error}`)\n }\n },\n })\n })\n }, [\n activeAddress,\n activeWallet,\n activeNetwork,\n nfdView,\n algodClient,\n queryClient,\n enabled,\n ])\n\n // Return null since this is a utility component with no UI\n return null\n}\n\n/**\n * Provider that enables wallet UI components to work with TanStack Query.\n * It can use an existing QueryClient from the parent application or create its own.\n * Also creates a QueryClientProvider if none exists in the parent tree.\n *\n * Automatically prefetches data for all accounts in connected wallets for smoother\n * account switching experience.\n *\n * Supports theme configuration via the `theme` prop:\n * - 'light': Always use light mode\n * - 'dark': Always use dark mode\n * - 'system': Follow the user's OS/browser preference (default)\n */\nexport function WalletUIProvider({\n children,\n queryClient: externalQueryClient,\n enablePrefetching = true,\n prefetchNfdView = 'thumbnail',\n theme = 'system',\n plugins = [],\n}: WalletUIProviderProps) {\n // Use provided query client or create a default one\n const queryClient = useMemo(\n () => externalQueryClient || createDefaultQueryClient(),\n [externalQueryClient],\n )\n\n // Resolve the theme (handles 'system' preference detection)\n const resolvedTheme = useResolvedTheme(theme)\n\n // Inject theme CSS variables on mount\n useEffect(() => {\n injectThemeStyles()\n }, [])\n\n const contextValue = useMemo(\n () => ({\n queryClient,\n theme,\n resolvedTheme,\n }),\n [queryClient, theme, resolvedTheme],\n )\n\n // Determine the data-theme attribute value\n // - For explicit 'light' or 'dark', set the attribute to enable CSS variable overrides\n // - For 'system', don't set the attribute so CSS media queries handle it\n const dataTheme = theme === 'system' ? undefined : theme\n\n const content = (\n <WalletUIContext.Provider value={contextValue}>\n <div data-wallet-theme data-theme={dataTheme}>\n {/* Internal prefetcher component that runs automatically */}\n <WalletAccountsPrefetcher\n enabled={enablePrefetching}\n nfdView={prefetchNfdView}\n />\n <PluginHost plugins={plugins}>{children}</PluginHost>\n </div>\n </WalletUIContext.Provider>\n )\n\n // If no external query client was provided, wrap with our own QueryClientProvider\n if (!externalQueryClient) {\n return (\n <QueryClientProvider client={queryClient}>{content}</QueryClientProvider>\n )\n }\n\n // Otherwise just return the context provider\n return content\n}\n\n/**\n * Internal component that sets up plugin infrastructure.\n * Separated so it can call useWallet() (which requires WalletProvider ancestor).\n */\nfunction PluginHost({\n plugins,\n children,\n}: {\n plugins: WalletUIPlugin[]\n children: ReactNode\n}) {\n const { activeAddress, activeWallet } = useWallet()\n const { theme, resolvedTheme } = useWalletUI()\n\n // Base render context — PluginContextProvider enriches it with\n // working openDialog/closeDialog before exposing via usePlugins()\n const baseRenderContext = useMemo<PluginRenderContext>(\n () => ({\n activeAddress,\n activeWallet,\n theme,\n resolvedTheme,\n openDialog: () => {},\n closeDialog: () => {},\n }),\n [activeAddress, activeWallet, theme, resolvedTheme],\n )\n\n if (plugins.length === 0) {\n return <>{children}</>\n }\n\n return (\n <PluginContextProvider plugins={plugins} renderContext={baseRenderContext}>\n <PluginLifecycleManager />\n <PluginDialogRenderer />\n {children}\n </PluginContextProvider>\n )\n}\n\n/**\n * Hook to access the WalletUI context\n * @throws Error if used outside of WalletUIProvider\n */\nexport function useWalletUI(): WalletUIContextType {\n const context = useContext(WalletUIContext)\n if (context === undefined) {\n throw new Error('useWalletUI must be used within a WalletUIProvider')\n }\n return context\n}\n","import type { Wallet } from '@txnlab/use-wallet-react'\n\nexport interface WalletListProps {\n wallets: Wallet[]\n handleWalletClick: (wallet: Wallet) => Promise<void>\n}\n\nexport function WalletList({ wallets, handleWalletClick }: WalletListProps) {\n return (\n <ul className=\"space-y-1.5\">\n {wallets.map((wallet) => (\n <li key={wallet.id}>\n <button\n onClick={() => handleWalletClick(wallet)}\n className=\"flex w-full items-center gap-3 py-1.5 px-1.5 text-left text-[var(--wui-color-text)] transition-colors hover:bg-[var(--wui-color-bg-hover)] rounded-xl\"\n >\n <div className=\"shrink-0 h-8 w-8 rounded-md overflow-hidden bg-[var(--wui-color-bg-secondary)] flex items-center justify-center\">\n <img\n src={wallet.metadata.icon}\n alt={`${wallet.metadata.name} icon`}\n className=\"h-8 w-8 object-contain rounded-md\"\n />\n </div>\n <span className=\"text-lg font-bold wallet-custom-font\">\n {wallet.metadata.name}\n </span>\n </button>\n </li>\n ))}\n {wallets.length === 0 && (\n <p className=\"text-center text-[var(--wui-color-text-secondary)]\">\n No wallets found.\n </p>\n )}\n </ul>\n )\n}\n","import {\n useFloating,\n useClick,\n useDismiss,\n useRole,\n useInteractions,\n FloatingFocusManager,\n FloatingOverlay,\n FloatingPortal,\n useMergeRefs,\n useId,\n} from '@floating-ui/react'\nimport { useWallet } from '@txnlab/use-wallet-react'\nimport React, { ReactElement, RefObject, useState } from 'react'\n\nimport { useWalletUI } from '../providers/WalletUIProvider'\n\nimport { ConnectWalletButton } from './ConnectWalletButton'\nimport { WalletList } from './WalletList'\n\nimport type { Wallet } from '@txnlab/use-wallet-react'\n\n// A more specific type for the children that includes ref\ntype RefableElement = ReactElement & {\n ref?: RefObject<HTMLElement> | ((instance: HTMLElement | null) => void)\n}\n\nexport interface ConnectWalletMenuProps {\n children?: RefableElement\n}\n\nexport function ConnectWalletMenu({ children }: ConnectWalletMenuProps) {\n const [isOpen, setIsOpen] = useState(false)\n const [animationState, setAnimationState] = useState<\n 'starting' | 'entered' | 'exiting' | null\n >(null)\n\n const { wallets, activeAddress } = useWallet()\n const { theme } = useWalletUI()\n\n // Determine the data-theme attribute for the portal\n // Only set explicit themes, let 'system' use media query fallback\n const dataTheme = theme === 'system' ? undefined : theme\n\n const { refs, context } = useFloating({\n open: isOpen,\n onOpenChange: (open) => {\n // Don't open dialog if already connected\n if (open && activeAddress) return\n\n if (open) {\n setIsOpen(true)\n setAnimationState('starting')\n\n // Start entry animation\n requestAnimationFrame(() => {\n setAnimationState('entered')\n })\n } else {\n // Start exit animation\n setAnimationState('exiting')\n\n // Remove component after animation completes\n setTimeout(() => {\n setIsOpen(false)\n setAnimationState(null)\n }, 150)\n }\n },\n })\n\n // Interaction hooks\n const click = useClick(context)\n const dismiss = useDismiss(context, { outsidePressEvent: 'mousedown' })\n const role = useRole(context, { role: 'dialog' })\n\n // Merge interaction props\n const { getReferenceProps, getFloatingProps } = useInteractions([\n click,\n dismiss,\n role,\n ])\n\n // Accessibility IDs\n const labelId = useId()\n const descriptionId = useId()\n\n const handleWalletClick = async (wallet: Wallet) => {\n try {\n await wallet.connect()\n context.onOpenChange(false)\n } catch (error) {\n console.error(`Error connecting to ${wallet.metadata.name}:`, error)\n context.onOpenChange(false)\n }\n }\n\n // Always add click handler to trigger, but make it a no-op if connected\n const handleTriggerClick = (_e: React.MouseEvent) => {\n if (activeAddress) {\n // Do nothing if connected - let the event bubble up to potential parent handlers\n return\n }\n // Otherwise open the dialog directly\n context.onOpenChange(true)\n }\n\n // If no children are provided, create a default connect button\n const triggerElement = children || <ConnectWalletButton />\n\n const triggerRef = useMergeRefs([\n refs.setReference,\n (triggerElement as RefableElement).ref || null,\n ])\n\n const referenceProps = {\n ...getReferenceProps(),\n ref: triggerRef,\n onClick: handleTriggerClick,\n }\n\n // Clone the trigger element with the reference props\n const trigger = React.cloneElement(triggerElement, referenceProps)\n\n return (\n <>\n {trigger}\n <FloatingPortal id=\"wallet-dialog-portal\">\n {isOpen && (\n <div data-wallet-theme data-wallet-ui data-theme={dataTheme}>\n <FloatingOverlay\n className=\"grid place-items-center px-4 z-50 transition-opacity duration-150 ease-in-out bg-[var(--wui-color-overlay)] data-[state=starting]:opacity-0 data-[state=exiting]:opacity-0 data-[state=entered]:opacity-100\"\n data-state={animationState}\n lockScroll\n >\n <FloatingFocusManager context={context} modal={true}>\n <div\n ref={refs.setFloating}\n {...getFloatingProps({\n 'aria-labelledby': labelId,\n 'aria-describedby': descriptionId,\n })}\n role=\"dialog\"\n data-state={animationState}\n className=\"w-full max-w-sm rounded-3xl bg-[var(--wui-color-bg)] shadow-xl transform transition-all duration-150 ease-in-out data-[state=starting]:opacity-0 data-[state=starting]:scale-90 data-[state=exiting]:opacity-0 data-[state=exiting]:scale-90 data-[state=entered]:opacity-100 data-[state=entered]:scale-100\"\n style={{\n marginTop: '-0.5rem',\n }}\n >\n {/* Header */}\n <div className=\"relative flex items-center px-6 pt-5 pb-4\">\n <h2\n id={labelId}\n className=\"text-xl font-bold text-[var(--wui-color-text)] wallet-custom-font\"\n >\n Connect a Wallet\n </h2>\n {/* Close button */}\n <button\n onClick={() => context.onOpenChange(false)}\n className=\"absolute right-4 rounded-full bg-[var(--wui-color-bg-tertiary)] p-2 text-[var(--wui-color-text-secondary)] hover:brightness-90 transition-all\"\n aria-label=\"Close dialog\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"h-5 w-5\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </button>\n </div>\n\n {/* Wallet list */}\n <div className=\"px-4 pb-3\">\n <WalletList\n wallets={wallets}\n handleWalletClick={handleWalletClick}\n />\n </div>\n\n {/* Footer section */}\n <div className=\"px-6 py-5 border-t border-[var(--wui-color-border)] flex items-center justify-between\">\n <span className=\"text-[var(--wui-color-text-secondary)] text-sm\">\n Need an Algorand wallet?\n </span>\n <a\n href=\"https://algorand.co/wallets\"\n className=\"text-[var(--wui-color-link)] font-medium text-sm hover:text-[var(--wui-color-link-hover)]\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n Start here →\n </a>\n </div>\n </div>\n </FloatingFocusManager>\n </FloatingOverlay>\n </div>\n )}\n </FloatingPortal>\n </>\n )\n}\n","var Ue = Object.defineProperty;\nvar Oe = (w, a, g) => a in w ? Ue(w, a, { enumerable: !0, configurable: !0, writable: !0, value: g }) : w[a] = g;\nvar he = (w, a, g) => Oe(w, typeof a != \"symbol\" ? a + \"\" : a, g);\nvar _e = /^-?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?$/i, de = Math.ceil, H = Math.floor, F = \"[BigNumber Error] \", ge = F + \"Number primitive has more than 15 significant digits: \", X = 1e14, E = 14, pe = 9007199254740991, me = [1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13], ee = 1e7, G = 1e9;\nfunction Ie(w) {\n var a, g, U, d = m.prototype = { constructor: m, toString: null, valueOf: null }, v = new m(1), I = 20, A = 4, M = -7, T = 21, R = -1e7, y = 1e7, j = !1, Y = 1, k = 0, te = {\n prefix: \"\",\n groupSize: 3,\n secondaryGroupSize: 0,\n groupSeparator: \",\",\n decimalSeparator: \".\",\n fractionGroupSize: 0,\n fractionGroupSeparator: \" \",\n // non-breaking space\n suffix: \"\"\n }, b = \"0123456789abcdefghijklmnopqrstuvwxyz\", fe = !0;\n function m(e, i) {\n var t, c, n, o, u, r, s, l, f = this;\n if (!(f instanceof m)) return new m(e, i);\n if (i == null) {\n if (e && e._isBigNumber === !0) {\n f.s = e.s, !e.c || e.e > y ? f.c = f.e = null : e.e < R ? f.c = [f.e = 0] : (f.e = e.e, f.c = e.c.slice());\n return;\n }\n if ((r = typeof e == \"number\") && e * 0 == 0) {\n if (f.s = 1 / e < 0 ? (e = -e, -1) : 1, e === ~~e) {\n for (o = 0, u = e; u >= 10; u /= 10, o++) ;\n o > y ? f.c = f.e = null : (f.e = o, f.c = [e]);\n return;\n }\n l = String(e);\n } else {\n if (!_e.test(l = String(e))) return U(f, l, r);\n f.s = l.charCodeAt(0) == 45 ? (l = l.slice(1), -1) : 1;\n }\n (o = l.indexOf(\".\")) > -1 && (l = l.replace(\".\", \"\")), (u = l.search(/e/i)) > 0 ? (o < 0 && (o = u), o += +l.slice(u + 1), l = l.substring(0, u)) : o < 0 && (o = l.length);\n } else {\n if (S(i, 2, b.length, \"Base\"), i == 10 && fe)\n return f = new m(e), q(f, I + f.e + 1, A);\n if (l = String(e), r = typeof e == \"number\") {\n if (e * 0 != 0) return U(f, l, r, i);\n if (f.s = 1 / e < 0 ? (l = l.slice(1), -1) : 1, m.DEBUG && l.replace(/^0\\.0*|\\./, \"\").length > 15)\n throw Error(ge + e);\n } else\n f.s = l.charCodeAt(0) === 45 ? (l = l.slice(1), -1) : 1;\n for (t = b.slice(0, i), o = u = 0, s = l.length; u < s; u++)\n if (t.indexOf(c = l.charAt(u)) < 0) {\n if (c == \".\") {\n if (u > o) {\n o = s;\n continue;\n }\n } else if (!n && (l == l.toUpperCase() && (l = l.toLowerCase()) || l == l.toLowerCase() && (l = l.toUpperCase()))) {\n n = !0, u = -1, o = 0;\n continue;\n }\n return U(f, String(e), r, i);\n }\n r = !1, l = g(l, i, 10, f.s), (o = l.indexOf(\".\")) > -1 ? l = l.replace(\".\", \"\") : o = l.length;\n }\n for (u = 0; l.charCodeAt(u) === 48; u++) ;\n for (s = l.length; l.charCodeAt(--s) === 48; ) ;\n if (l = l.slice(u, ++s)) {\n if (s -= u, r && m.DEBUG && s > 15 && (e > pe || e !== H(e)))\n throw Error(ge + f.s * e);\n if ((o = o - u - 1) > y)\n f.c = f.e = null;\n else if (o < R)\n f.c = [f.e = 0];\n else {\n if (f.e = o, f.c = [], u = (o + 1) % E, o < 0 && (u += E), u < s) {\n for (u && f.c.push(+l.slice(0, u)), s -= E; u < s; )\n f.c.push(+l.slice(u, u += E));\n u = E - (l = l.slice(u)).length;\n } else\n u -= s;\n for (; u--; l += \"0\") ;\n f.c.push(+l);\n }\n } else\n f.c = [f.e = 0];\n }\n m.clone = Ie, m.ROUND_UP = 0, m.ROUND_DOWN = 1, m.ROUND_CEIL = 2, m.ROUND_FLOOR = 3, m.ROUND_HALF_UP = 4, m.ROUND_HALF_DOWN = 5, m.ROUND_HALF_EVEN = 6, m.ROUND_HALF_CEIL = 7, m.ROUND_HALF_FLOOR = 8, m.EUCLID = 9, m.config = m.set = function(e) {\n var i, t;\n if (e != null)\n if (typeof e == \"object\") {\n if (e.hasOwnProperty(i = \"DECIMAL_PLACES\") && (t = e[i], S(t, 0, G, i), I = t), e.hasOwnProperty(i = \"ROUNDING_MODE\") && (t = e[i], S(t, 0, 8, i), A = t), e.hasOwnProperty(i = \"EXPONENTIAL_AT\") && (t = e[i], t && t.pop ? (S(t[0], -1e9, 0, i), S(t[1], 0, G, i), M = t[0], T = t[1]) : (S(t, -1e9, G, i), M = -(T = t < 0 ? -t : t))), e.hasOwnProperty(i = \"RANGE\"))\n if (t = e[i], t && t.pop)\n S(t[0], -1e9, -1, i), S(t[1], 1, G, i), R = t[0], y = t[1];\n else if (S(t, -1e9, G, i), t)\n R = -(y = t < 0 ? -t : t);\n else\n throw Error(F + i + \" cannot be zero: \" + t);\n if (e.hasOwnProperty(i = \"CRYPTO\"))\n if (t = e[i], t === !!t)\n if (t)\n if (typeof crypto < \"u\" && crypto && (crypto.getRandomValues || crypto.randomBytes))\n j = t;\n else\n throw j = !t, Error(F + \"crypto unavailable\");\n else\n j = t;\n else\n throw Error(F + i + \" not true or false: \" + t);\n if (e.hasOwnProperty(i = \"MODULO_MODE\") && (t = e[i], S(t, 0, 9, i), Y = t), e.hasOwnProperty(i = \"POW_PRECISION\") && (t = e[i], S(t, 0, G, i), k = t), e.hasOwnProperty(i = \"FORMAT\"))\n if (t = e[i], typeof t == \"object\") te = t;\n else throw Error(F + i + \" not an object: \" + t);\n if (e.hasOwnProperty(i = \"ALPHABET\"))\n if (t = e[i], typeof t == \"string\" && !/^.?$|[+\\-.\\s]|(.).*\\1/.test(t))\n fe = t.slice(0, 10) == \"0123456789\", b = t;\n else\n throw Error(F + i + \" invalid: \" + t);\n } else\n throw Error(F + \"Object expected: \" + e);\n return {\n DECIMAL_PLACES: I,\n ROUNDING_MODE: A,\n EXPONENTIAL_AT: [M, T],\n RANGE: [R, y],\n CRYPTO: j,\n MODULO_MODE: Y,\n POW_PRECISION: k,\n FORMAT: te,\n ALPHABET: b\n };\n }, m.isBigNumber = function(e) {\n if (!e || e._isBigNumber !== !0) return !1;\n if (!m.DEBUG) return !0;\n var i, t, c = e.c, n = e.e, o = e.s;\n e: if ({}.toString.call(c) == \"[object Array]\") {\n if ((o === 1 || o === -1) && n >= -1e9 && n <= G && n === H(n)) {\n if (c[0] === 0) {\n if (n === 0 && c.length === 1) return !0;\n break e;\n }\n if (i = (n + 1) % E, i < 1 && (i += E), String(c[0]).length == i) {\n for (i = 0; i < c.length; i++)\n if (t = c[i], t < 0 || t >= X || t !== H(t)) break e;\n if (t !== 0) return !0;\n }\n }\n } else if (c === null && n === null && (o === null || o === 1 || o === -1))\n return !0;\n throw Error(F + \"Invalid BigNumber: \" + e);\n }, m.maximum = m.max = function() {\n return we(arguments, -1);\n }, m.minimum = m.min = function() {\n return we(arguments, 1);\n }, m.random = function() {\n var e = 9007199254740992, i = Math.random() * e & 2097151 ? function() {\n return H(Math.random() * e);\n } : function() {\n return (Math.random() * 1073741824 | 0) * 8388608 + (Math.random() * 8388608 | 0);\n };\n return function(t) {\n var c, n, o, u, r, s = 0, l = [], f = new m(v);\n if (t == null ? t = I : S(t, 0, G), u = de(t / E), j)\n if (crypto.getRandomValues) {\n for (c = crypto.getRandomValues(new Uint32Array(u *= 2)); s < u; )\n r = c[s] * 131072 + (c[s + 1] >>> 11), r >= 9e15 ? (n = crypto.getRandomValues(new Uint32Array(2)), c[s] = n[0], c[s + 1] = n[1]) : (l.push(r % 1e14), s += 2);\n s = u / 2;\n } else if (crypto.randomBytes) {\n for (c = crypto.randomBytes(u *= 7); s < u; )\n r = (c[s] & 31) * 281474976710656 + c[s + 1] * 1099511627776 + c[s + 2] * 4294967296 + c[s + 3] * 16777216 + (c[s + 4] << 16) + (c[s + 5] << 8) + c[s + 6], r >= 9e15 ? crypto.randomBytes(7).copy(c, s) : (l.push(r % 1e14), s += 7);\n s = u / 7;\n } else\n throw j = !1, Error(F + \"crypto unavailable\");\n if (!j)\n for (; s < u; )\n r = i(), r < 9e15 && (l[s++] = r % 1e14);\n for (u = l[--s], t %= E, u && t && (r = me[E - t], l[s] = H(u / r) * r); l[s] === 0; l.pop(), s--) ;\n if (s < 0)\n l = [o = 0];\n else {\n for (o = -1; l[0] === 0; l.splice(0, 1), o -= E) ;\n for (s = 1, r = l[0]; r >= 10; r /= 10, s++) ;\n s < E && (o -= E - s);\n }\n return f.e = o, f.c = l, f;\n };\n }(), m.sum = function() {\n for (var e = 1, i = arguments, t = new m(i[0]); e < i.length; ) t = t.plus(i[e++]);\n return t;\n }, g = /* @__PURE__ */ function() {\n var e = \"0123456789\";\n function i(t, c, n, o) {\n for (var u, r = [0], s, l = 0, f = t.length; l < f; ) {\n for (s = r.length; s--; r[s] *= c) ;\n for (r[0] += o.indexOf(t.charAt(l++)), u = 0; u < r.length; u++)\n r[u] > n - 1 && (r[u + 1] == null && (r[u + 1] = 0), r[u + 1] += r[u] / n | 0, r[u] %= n);\n }\n return r.reverse();\n }\n return function(t, c, n, o, u) {\n var r, s, l, f, h, p, N, _, x = t.indexOf(\".\"), C = I, O = A;\n for (x >= 0 && (f = k, k = 0, t = t.replace(\".\", \"\"), _ = new m(c), p = _.pow(t.length - x), k = f, _.c = i(\n Q(z(p.c), p.e, \"0\"),\n 10,\n n,\n e\n ), _.e = _.c.length), N = i(t, c, n, u ? (r = b, e) : (r = e, b)), l = f = N.length; N[--f] == 0; N.pop()) ;\n if (!N[0]) return r.charAt(0);\n if (x < 0 ? --l : (p.c = N, p.e = l, p.s = o, p = a(p, _, C, O, n), N = p.c, h = p.r, l = p.e), s = l + C + 1, x = N[s], f = n / 2, h = h || s < 0 || N[s + 1] != null, h = O < 4 ? (x != null || h) && (O == 0 || O == (p.s < 0 ? 3 : 2)) : x > f || x == f && (O == 4 || h || O == 6 && N[s - 1] & 1 || O == (p.s < 0 ? 8 : 7)), s < 1 || !N[0])\n t = h ? Q(r.charAt(1), -C, r.charAt(0)) : r.charAt(0);\n else {\n if (N.length = s, h)\n for (--n; ++N[--s] > n; )\n N[s] = 0, s || (++l, N = [1].concat(N));\n for (f = N.length; !N[--f]; ) ;\n for (x = 0, t = \"\"; x <= f; t += r.charAt(N[x++])) ;\n t = Q(t, l, r.charAt(0));\n }\n return t;\n };\n }(), a = /* @__PURE__ */ function() {\n function e(c, n, o) {\n var u, r, s, l, f = 0, h = c.length, p = n % ee, N = n / ee | 0;\n for (c = c.slice(); h--; )\n s = c[h] % ee, l = c[h] / ee | 0, u = N * s + l * p, r = p * s + u % ee * ee + f, f = (r / o | 0) + (u / ee | 0) + N * l, c[h] = r % o;\n return f && (c = [f].concat(c)), c;\n }\n function i(c, n, o, u) {\n var r, s;\n if (o != u)\n s = o > u ? 1 : -1;\n else\n for (r = s = 0; r < o; r++)\n if (c[r] != n[r]) {\n s = c[r] > n[r] ? 1 : -1;\n break;\n }\n return s;\n }\n function t(c, n, o, u) {\n for (var r = 0; o--; )\n c[o] -= r, r = c[o] < n[o] ? 1 : 0, c[o] = r * u + c[o] - n[o];\n for (; !c[0] && c.length > 1; c.splice(0, 1)) ;\n }\n return function(c, n, o, u, r) {\n var s, l, f, h, p, N, _, x, C, O, D, P, ne, ue, ae, J, re, V = c.s == n.s ? 1 : -1, L = c.c, B = n.c;\n if (!L || !L[0] || !B || !B[0])\n return new m(\n // Return NaN if either NaN, or both Infinity or 0.\n !c.s || !n.s || (L ? B && L[0] == B[0] : !B) ? NaN : (\n // Return ±0 if x is ±0 or y is ±Infinity, or return ±Infinity as y is ±0.\n L && L[0] == 0 || !B ? V * 0 : V / 0\n )\n );\n for (x = new m(V), C = x.c = [], l = c.e - n.e, V = o + l + 1, r || (r = X, l = W(c.e / E) - W(n.e / E), V = V / E | 0), f = 0; B[f] == (L[f] || 0); f++) ;\n if (B[f] > (L[f] || 0) && l--, V < 0)\n C.push(1), h = !0;\n else {\n for (ue = L.length, J = B.length, f = 0, V += 2, p = H(r / (B[0] + 1)), p > 1 && (B = e(B, p, r), L = e(L, p, r), J = B.length, ue = L.length), ne = J, O = L.slice(0, J), D = O.length; D < J; O[D++] = 0) ;\n re = B.slice(), re = [0].concat(re), ae = B[0], B[1] >= r / 2 && ae++;\n do {\n if (p = 0, s = i(B, O, J, D), s < 0) {\n if (P = O[0], J != D && (P = P * r + (O[1] || 0)), p = H(P / ae), p > 1)\n for (p >= r && (p = r - 1), N = e(B, p, r), _ = N.length, D = O.length; i(N, O, _, D) == 1; )\n p--, t(N, J < _ ? re : B, _, r), _ = N.length, s = 1;\n else\n p == 0 && (s = p = 1), N = B.slice(), _ = N.length;\n if (_ < D && (N = [0].concat(N)), t(O, N, D, r), D = O.length, s == -1)\n for (; i(B, O, J, D) < 1; )\n p++, t(O, J < D ? re : B, D, r), D = O.length;\n } else s === 0 && (p++, O = [0]);\n C[f++] = p, O[0] ? O[D++] = L[ne] || 0 : (O = [L[ne]], D = 1);\n } while ((ne++ < ue || O[0] != null) && V--);\n h = O[0] != null, C[0] || C.splice(0, 1);\n }\n if (r == X) {\n for (f = 1, V = C[0]; V >= 10; V /= 10, f++) ;\n q(x, o + (x.e = f + l * E - 1) + 1, u, h);\n } else\n x.e = l, x.r = +h;\n return x;\n };\n }();\n function ce(e, i, t, c) {\n var n, o, u, r, s;\n if (t == null ? t = A : S(t, 0, 8), !e.c) return e.toString();\n if (n = e.c[0], u = e.e, i == null)\n s = z(e.c), s = c == 1 || c == 2 && (u <= M || u >= T) ? oe(s, u) : Q(s, u, \"0\");\n else if (e = q(new m(e), i, t), o = e.e, s = z(e.c), r = s.length, c == 1 || c == 2 && (i <= o || o <= M)) {\n for (; r < i; s += \"0\", r++) ;\n s = oe(s, o);\n } else if (i -= u, s = Q(s, o, \"0\"), o + 1 > r) {\n if (--i > 0) for (s += \".\"; i--; s += \"0\") ;\n } else if (i += o - r, i > 0)\n for (o + 1 == r && (s += \".\"); i--; s += \"0\") ;\n return e.s < 0 && n ? \"-\" + s : s;\n }\n function we(e, i) {\n for (var t, c, n = 1, o = new m(e[0]); n < e.length; n++)\n c = new m(e[n]), (!c.s || (t = ie(o, c)) === i || t === 0 && o.s === i) && (o = c);\n return o;\n }\n function le(e, i, t) {\n for (var c = 1, n = i.length; !i[--n]; i.pop()) ;\n for (n = i[0]; n >= 10; n /= 10, c++) ;\n return (t = c + t * E - 1) > y ? e.c = e.e = null : t < R ? e.c = [e.e = 0] : (e.e = t, e.c = i), e;\n }\n U = /* @__PURE__ */ function() {\n var e = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i, i = /^([^.]+)\\.$/, t = /^\\.([^.]+)$/, c = /^-?(Infinity|NaN)$/, n = /^\\s*\\+(?=[\\w.])|^\\s+|\\s+$/g;\n return function(o, u, r, s) {\n var l, f = r ? u : u.replace(n, \"\");\n if (c.test(f))\n o.s = isNaN(f) ? null : f < 0 ? -1 : 1;\n else {\n if (!r && (f = f.replace(e, function(h, p, N) {\n return l = (N = N.toLowerCase()) == \"x\" ? 16 : N == \"b\" ? 2 : 8, !s || s == l ? p : h;\n }), s && (l = s, f = f.replace(i, \"$1\").replace(t, \"0.$1\")), u != f))\n return new m(f, l);\n if (m.DEBUG)\n throw Error(F + \"Not a\" + (s ? \" base \" + s : \"\") + \" number: \" + u);\n o.s = null;\n }\n o.c = o.e = null;\n };\n }();\n function q(e, i, t, c) {\n var n, o, u, r, s, l, f, h = e.c, p = me;\n if (h) {\n e: {\n for (n = 1, r = h[0]; r >= 10; r /= 10, n++) ;\n if (o = i - n, o < 0)\n o += E, u = i, s = h[l = 0], f = H(s / p[n - u - 1] % 10);\n else if (l = de((o + 1) / E), l >= h.length)\n if (c) {\n for (; h.length <= l; h.push(0)) ;\n s = f = 0, n = 1, o %= E, u = o - E + 1;\n } else\n break e;\n else {\n for (s = r = h[l], n = 1; r >= 10; r /= 10, n++) ;\n o %= E, u = o - E + n, f = u < 0 ? 0 : H(s / p[n - u - 1] % 10);\n }\n if (c = c || i < 0 || // Are there any non-zero digits after the rounding digit?\n // The expression n % pows10[d - j - 1] returns all digits of n to the right\n // of the digit at j, e.g. if n is 908714 and j is 2, the expression gives 714.\n h[l + 1] != null || (u < 0 ? s : s % p[n - u - 1]), c = t < 4 ? (f || c) && (t == 0 || t == (e.s < 0 ? 3 : 2)) : f > 5 || f == 5 && (t == 4 || c || t == 6 && // Check whether the digit to the left of the rounding digit is odd.\n (o > 0 ? u > 0 ? s / p[n - u] : 0 : h[l - 1]) % 10 & 1 || t == (e.s < 0 ? 8 : 7)), i < 1 || !h[0])\n return h.length = 0, c ? (i -= e.e + 1, h[0] = p[(E - i % E) % E], e.e = -i || 0) : h[0] = e.e = 0, e;\n if (o == 0 ? (h.length = l, r = 1, l--) : (h.length = l + 1, r = p[E - o], h[l] = u > 0 ? H(s / p[n - u] % p[u]) * r : 0), c)\n for (; ; )\n if (l == 0) {\n for (o = 1, u = h[0]; u >= 10; u /= 10, o++) ;\n for (u = h[0] += r, r = 1; u >= 10; u /= 10, r++) ;\n o != r && (e.e++, h[0] == X && (h[0] = 1));\n break;\n } else {\n if (h[l] += r, h[l] != X) break;\n h[l--] = 0, r = 1;\n }\n for (o = h.length; h[--o] === 0; h.pop()) ;\n }\n e.e > y ? e.c = e.e = null : e.e < R && (e.c = [e.e = 0]);\n }\n return e;\n }\n function K(e) {\n var i, t = e.e;\n return t === null ? e.toString() : (i = z(e.c), i = t <= M || t >= T ? oe(i, t) : Q(i, t, \"0\"), e.s < 0 ? \"-\" + i : i);\n }\n return d.absoluteValue = d.abs = function() {\n var e = new m(this);\n return e.s < 0 && (e.s = 1), e;\n }, d.comparedTo = function(e, i) {\n return ie(this, new m(e, i));\n }, d.decimalPlaces = d.dp = function(e, i) {\n var t, c, n, o = this;\n if (e != null)\n return S(e, 0, G), i == null ? i = A : S(i, 0, 8), q(new m(o), e + o.e + 1, i);\n if (!(t = o.c)) return null;\n if (c = ((n = t.length - 1) - W(this.e / E)) * E, n = t[n]) for (; n % 10 == 0; n /= 10, c--) ;\n return c < 0 && (c = 0), c;\n }, d.dividedBy = d.div = function(e, i) {\n return a(this, new m(e, i), I, A);\n }, d.dividedToIntegerBy = d.idiv = function(e, i) {\n return a(this, new m(e, i), 0, 1);\n }, d.exponentiatedBy = d.pow = function(e, i) {\n var t, c, n, o, u, r, s, l, f, h = this;\n if (e = new m(e), e.c && !e.isInteger())\n throw Error(F + \"Exponent not an integer: \" + K(e));\n if (i != null && (i = new m(i)), r = e.e > 14, !h.c || !h.c[0] || h.c[0] == 1 && !h.e && h.c.length == 1 || !e.c || !e.c[0])\n return f = new m(Math.pow(+K(h), r ? e.s * (2 - se(e)) : +K(e))), i ? f.mod(i) : f;\n if (s = e.s < 0, i) {\n if (i.c ? !i.c[0] : !i.s) return new m(NaN);\n c = !s && h.isInteger() && i.isInteger(), c && (h = h.mod(i));\n } else {\n if (e.e > 9 && (h.e > 0 || h.e < -1 || (h.e == 0 ? h.c[0] > 1 || r && h.c[1] >= 24e7 : h.c[0] < 8e13 || r && h.c[0] <= 9999975e7)))\n return o = h.s < 0 && se(e) ? -0 : 0, h.e > -1 && (o = 1 / o), new m(s ? 1 / o : o);\n k && (o = de(k / E + 2));\n }\n for (r ? (t = new m(0.5), s && (e.s = 1), l = se(e)) : (n = Math.abs(+K(e)), l = n % 2), f = new m(v); ; ) {\n if (l) {\n if (f = f.times(h), !f.c) break;\n o ? f.c.length > o && (f.c.length = o) : c && (f = f.mod(i));\n }\n if (n) {\n if (n = H(n / 2), n === 0) break;\n l = n % 2;\n } else if (e = e.times(t), q(e, e.e + 1, 1), e.e > 14)\n l = se(e);\n else {\n if (n = +K(e), n === 0) break;\n l = n % 2;\n }\n h = h.times(h), o ? h.c && h.c.length > o && (h.c.length = o) : c && (h = h.mod(i));\n }\n return c ? f : (s && (f = v.div(f)), i ? f.mod(i) : o ? q(f, k, A, u) : f);\n }, d.integerValue = function(e) {\n var i = new m(this);\n return e == null ? e = A : S(e, 0, 8), q(i, i.e + 1, e);\n }, d.isEqualTo = d.eq = function(e, i) {\n return ie(this, new m(e, i)) === 0;\n }, d.isFinite = function() {\n return !!this.c;\n }, d.isGreaterThan = d.gt = function(e, i) {\n return ie(this, new m(e, i)) > 0;\n }, d.isGreaterThanOrEqualTo = d.gte = function(e, i) {\n return (i = ie(this, new m(e, i))) === 1 || i === 0;\n }, d.isInteger = function() {\n return !!this.c && W(this.e / E) > this.c.length - 2;\n }, d.isLessThan = d.lt = function(e, i) {\n return ie(this, new m(e, i)) < 0;\n }, d.isLessThanOrEqualTo = d.lte = function(e, i) {\n return (i = ie(this, new m(e, i))) === -1 || i === 0;\n }, d.isNaN = function() {\n return !this.s;\n }, d.isNegative = function() {\n return this.s < 0;\n }, d.isPositive = function() {\n return this.s > 0;\n }, d.isZero = function() {\n return !!this.c && this.c[0] == 0;\n }, d.minus = function(e, i) {\n var t, c, n, o, u = this, r = u.s;\n if (e = new m(e, i), i = e.s, !r || !i) return new m(NaN);\n if (r != i)\n return e.s = -i, u.plus(e);\n var s = u.e / E, l = e.e / E, f = u.c, h = e.c;\n if (!s || !l) {\n if (!f || !h) return f ? (e.s = -i, e) : new m(h ? u : NaN);\n if (!f[0] || !h[0])\n return h[0] ? (e.s = -i, e) : new m(f[0] ? u : (\n // IEEE 754 (2008) 6.3: n - n = -0 when rounding to -Infinity\n A == 3 ? -0 : 0\n ));\n }\n if (s = W(s), l = W(l), f = f.slice(), r = s - l) {\n for ((o = r < 0) ? (r = -r, n = f) : (l = s, n = h), n.reverse(), i = r; i--; n.push(0)) ;\n n.reverse();\n } else\n for (c = (o = (r = f.length) < (i = h.length)) ? r : i, r = i = 0; i < c; i++)\n if (f[i] != h[i]) {\n o = f[i] < h[i];\n break;\n }\n if (o && (n = f, f = h, h = n, e.s = -e.s), i = (c = h.length) - (t = f.length), i > 0) for (; i--; f[t++] = 0) ;\n for (i = X - 1; c > r; ) {\n if (f[--c] < h[c]) {\n for (t = c; t && !f[--t]; f[t] = i) ;\n --f[t], f[c] += X;\n }\n f[c] -= h[c];\n }\n for (; f[0] == 0; f.splice(0, 1), --l) ;\n return f[0] ? le(e, f, l) : (e.s = A == 3 ? -1 : 1, e.c = [e.e = 0], e);\n }, d.modulo = d.mod = function(e, i) {\n var t, c, n = this;\n return e = new m(e, i), !n.c || !e.s || e.c && !e.c[0] ? new m(NaN) : !e.c || n.c && !n.c[0] ? new m(n) : (Y == 9 ? (c = e.s, e.s = 1, t = a(n, e, 0, 3), e.s = c, t.s *= c) : t = a(n, e, 0, Y), e = n.minus(t.times(e)), !e.c[0] && Y == 1 && (e.s = n.s), e);\n }, d.multipliedBy = d.times = function(e, i) {\n var t, c, n, o, u, r, s, l, f, h, p, N, _, x, C, O = this, D = O.c, P = (e = new m(e, i)).c;\n if (!D || !P || !D[0] || !P[0])\n return !O.s || !e.s || D && !D[0] && !P || P && !P[0] && !D ? e.c = e.e = e.s = null : (e.s *= O.s, !D || !P ? e.c = e.e = null : (e.c = [0], e.e = 0)), e;\n for (c = W(O.e / E) + W(e.e / E), e.s *= O.s, s = D.length, h = P.length, s < h && (_ = D, D = P, P = _, n = s, s = h, h = n), n = s + h, _ = []; n--; _.push(0)) ;\n for (x = X, C = ee, n = h; --n >= 0; ) {\n for (t = 0, p = P[n] % C, N = P[n] / C | 0, u = s, o = n + u; o > n; )\n l = D[--u] % C, f = D[u] / C | 0, r = N * l + f * p, l = p * l + r % C * C + _[o] + t, t = (l / x | 0) + (r / C | 0) + N * f, _[o--] = l % x;\n _[o] = t;\n }\n return t ? ++c : _.splice(0, 1), le(e, _, c);\n }, d.negated = function() {\n var e = new m(this);\n return e.s = -e.s || null, e;\n }, d.plus = function(e, i) {\n var t, c = this, n = c.s;\n if (e = new m(e, i), i = e.s, !n || !i) return new m(NaN);\n if (n != i)\n return e.s = -i, c.minus(e);\n var o = c.e / E, u = e.e / E, r = c.c, s = e.c;\n if (!o || !u) {\n if (!r || !s) return new m(n / 0);\n if (!r[0] || !s[0]) return s[0] ? e : new m(r[0] ? c : n * 0);\n }\n if (o = W(o), u = W(u), r = r.slice(), n = o - u) {\n for (n > 0 ? (u = o, t = s) : (n = -n, t = r), t.reverse(); n--; t.push(0)) ;\n t.reverse();\n }\n for (n = r.length, i = s.length, n - i < 0 && (t = s, s = r, r = t, i = n), n = 0; i; )\n n = (r[--i] = r[i] + s[i] + n) / X | 0, r[i] = X === r[i] ? 0 : r[i] % X;\n return n && (r = [n].concat(r), ++u), le(e, r, u);\n }, d.precision = d.sd = function(e, i) {\n var t, c, n, o = this;\n if (e != null && e !== !!e)\n return S(e, 1, G), i == null ? i = A : S(i, 0, 8), q(new m(o), e, i);\n if (!(t = o.c)) return null;\n if (n = t.length - 1, c = n * E + 1, n = t[n]) {\n for (; n % 10 == 0; n /= 10, c--) ;\n for (n = t[0]; n >= 10; n /= 10, c++) ;\n }\n return e && o.e + 1 > c && (c = o.e + 1), c;\n }, d.shiftedBy = function(e) {\n return S(e, -9007199254740991, pe), this.times(\"1e\" + e);\n }, d.squareRoot = d.sqrt = function() {\n var e, i, t, c, n, o = this, u = o.c, r = o.s, s = o.e, l = I + 4, f = new m(\"0.5\");\n if (r !== 1 || !u || !u[0])\n return new m(!r || r < 0 && (!u || u[0]) ? NaN : u ? o : 1 / 0);\n if (r = Math.sqrt(+K(o)), r == 0 || r == 1 / 0 ? (i = z(u), (i.length + s) % 2 == 0 && (i += \"0\"), r = Math.sqrt(+i), s = W((s + 1) / 2) - (s < 0 || s % 2), r == 1 / 0 ? i = \"5e\" + s : (i = r.toExponential(), i = i.slice(0, i.indexOf(\"e\") + 1) + s), t = new m(i)) : t = new m(r + \"\"), t.c[0]) {\n for (s = t.e, r = s + l, r < 3 && (r = 0); ; )\n if (n = t, t = f.times(n.plus(a(o, n, l, 1))), z(n.c).slice(0, r) === (i = z(t.c)).slice(0, r))\n if (t.e < s && --r, i = i.slice(r - 3, r + 1), i == \"9999\" || !c && i == \"4999\") {\n if (!c && (q(n, n.e + I + 2, 0), n.times(n).eq(o))) {\n t = n;\n break;\n }\n l += 4, r += 4, c = 1;\n } else {\n (!+i || !+i.slice(1) && i.charAt(0) == \"5\") && (q(t, t.e + I + 2, 1), e = !t.times(t).eq(o));\n break;\n }\n }\n return q(t, t.e + I + 1, A, e);\n }, d.toExponential = function(e, i) {\n return e != null && (S(e, 0, G), e++), ce(this, e, i, 1);\n }, d.toFixed = function(e, i) {\n return e != null && (S(e, 0, G), e = e + this.e + 1), ce(this, e, i);\n }, d.toFormat = function(e, i, t) {\n var c, n = this;\n if (t == null)\n e != null && i && typeof i == \"object\" ? (t = i, i = null) : e && typeof e == \"object\" ? (t = e, e = i = null) : t = te;\n else if (typeof t != \"object\")\n throw Error(F + \"Argument not an object: \" + t);\n if (c = n.toFixed(e, i), n.c) {\n var o, u = c.split(\".\"), r = +t.groupSize, s = +t.secondaryGroupSize, l = t.groupSeparator || \"\", f = u[0], h = u[1], p = n.s < 0, N = p ? f.slice(1) : f, _ = N.length;\n if (s && (o = r, r = s, s = o, _ -= o), r > 0 && _ > 0) {\n for (o = _ % r || r, f = N.substr(0, o); o < _; o += r) f += l + N.substr(o, r);\n s > 0 && (f += l + N.slice(o)), p && (f = \"-\" + f);\n }\n c = h ? f + (t.decimalSeparator || \"\") + ((s = +t.fractionGroupSize) ? h.replace(\n new RegExp(\"\\\\d{\" + s + \"}\\\\B\", \"g\"),\n \"$&\" + (t.fractionGroupSeparator || \"\")\n ) : h) : f;\n }\n return (t.prefix || \"\") + c + (t.suffix || \"\");\n }, d.toFraction = function(e) {\n var i, t, c, n, o, u, r, s, l, f, h, p, N = this, _ = N.c;\n if (e != null && (r = new m(e), !r.isInteger() && (r.c || r.s !== 1) || r.lt(v)))\n throw Error(F + \"Argument \" + (r.isInteger() ? \"out of range: \" : \"not an integer: \") + K(r));\n if (!_) return new m(N);\n for (i = new m(v), l = t = new m(v), c = s = new m(v), p = z(_), o = i.e = p.length - N.e - 1, i.c[0] = me[(u = o % E) < 0 ? E + u : u], e = !e || r.comparedTo(i) > 0 ? o > 0 ? i : l : r, u = y, y = 1 / 0, r = new m(p), s.c[0] = 0; f = a(r, i, 0, 1), n = t.plus(f.times(c)), n.comparedTo(e) != 1; )\n t = c, c = n, l = s.plus(f.times(n = l)), s = n, i = r.minus(f.times(n = i)), r = n;\n return n = a(e.minus(t), c, 0, 1), s = s.plus(n.times(l)), t = t.plus(n.times(c)), s.s = l.s = N.s, o = o * 2, h = a(l, c, o, A).minus(N).abs().comparedTo(\n a(s, t, o, A).minus(N).abs()\n ) < 1 ? [l, c] : [s, t], y = u, h;\n }, d.toNumber = function() {\n return +K(this);\n }, d.toPrecision = function(e, i) {\n return e != null && S(e, 1, G), ce(this, e, i, 2);\n }, d.toString = function(e) {\n var i, t = this, c = t.s, n = t.e;\n return n === null ? c ? (i = \"Infinity\", c < 0 && (i = \"-\" + i)) : i = \"NaN\" : (e == null ? i = n <= M || n >= T ? oe(z(t.c), n) : Q(z(t.c), n, \"0\") : e === 10 && fe ? (t = q(new m(t), I + n + 1, A), i = Q(z(t.c), t.e, \"0\")) : (S(e, 2, b.length, \"Base\"), i = g(Q(z(t.c), n, \"0\"), 10, e, c, !0)), c < 0 && t.c[0] && (i = \"-\" + i)), i;\n }, d.valueOf = d.toJSON = function() {\n return K(this);\n }, d._isBigNumber = !0, d[Symbol.toStringTag] = \"BigNumber\", d[Symbol.for(\"nodejs.util.inspect.custom\")] = d.valueOf, w != null && m.set(w), m;\n}\nfunction W(w) {\n var a = w | 0;\n return w > 0 || w === a ? a : a - 1;\n}\nfunction z(w) {\n for (var a, g, U = 1, d = w.length, v = w[0] + \"\"; U < d; ) {\n for (a = w[U++] + \"\", g = E - a.length; g--; a = \"0\" + a) ;\n v += a;\n }\n for (d = v.length; v.charCodeAt(--d) === 48; ) ;\n return v.slice(0, d + 1 || 1);\n}\nfunction ie(w, a) {\n var g, U, d = w.c, v = a.c, I = w.s, A = a.s, M = w.e, T = a.e;\n if (!I || !A) return null;\n if (g = d && !d[0], U = v && !v[0], g || U) return g ? U ? 0 : -A : I;\n if (I != A) return I;\n if (g = I < 0, U = M == T, !d || !v) return U ? 0 : !d ^ g ? 1 : -1;\n if (!U) return M > T ^ g ? 1 : -1;\n for (A = (M = d.length) < (T = v.length) ? M : T, I = 0; I < A; I++) if (d[I] != v[I]) return d[I] > v[I] ^ g ? 1 : -1;\n return M == T ? 0 : M > T ^ g ? 1 : -1;\n}\nfunction S(w, a, g, U) {\n if (w < a || w > g || w !== H(w))\n throw Error(F + (U || \"Argument\") + (typeof w == \"number\" ? w < a || w > g ? \" out of range: \" : \" not an integer: \" : \" not a primitive number: \") + String(w));\n}\nfunction se(w) {\n var a = w.c.length - 1;\n return W(w.e / E) == a && w.c[a] % 2 != 0;\n}\nfunction oe(w, a) {\n return (w.length > 1 ? w.charAt(0) + \".\" + w.slice(1) : w) + (a < 0 ? \"e\" : \"e+\") + a;\n}\nfunction Q(w, a, g) {\n var U, d;\n if (a < 0) {\n for (d = g + \".\"; ++a; d += g) ;\n w = d + w;\n } else if (U = w.length, ++a > U) {\n for (d = g, a -= U; --a; d += g) ;\n w += d;\n } else a < U && (w = w.slice(0, a) + \".\" + w.slice(a));\n return w;\n}\nvar $ = Ie();\nconst Ae = 100000n, Ne = (w, a = {}) => {\n const {\n style: g = \"decimal\",\n compact: U = !1,\n fractionDigits: d,\n adaptiveDecimals: v = !1\n } = a, I = typeof w == \"string\" ? Number(w) : w, A = typeof I == \"bigint\" ? I < 0n ? -I : I : Math.abs(I), M = U === \"auto\" ? A >= Ae : U, T = typeof I == \"bigint\" ? Number(I) : I, R = v && T !== 0 && Math.abs(T) < Math.pow(10, -(d ?? 2)), y = new Intl.NumberFormat(\"en-US\", {\n style: g,\n ...g === \"currency\" && { currency: \"USD\" },\n maximumFractionDigits: R ? 20 : d ?? 2,\n minimumFractionDigits: R ? 0 : d ?? 2\n });\n if (!M)\n return R ? y.format(Ee(T)) : y.format(I);\n const Y = [\n { threshold: 1e12, suffix: \"T\", divisor: 1e12 },\n { threshold: 1e9, suffix: \"B\", divisor: 1e9 },\n { threshold: 1e6, suffix: \"M\", divisor: 1e6 },\n { threshold: 1e3, suffix: \"K\", divisor: 1e3 }\n ].find((k) => A >= k.threshold);\n if (Y) {\n const k = new Intl.NumberFormat(\"en-US\", {\n style: g,\n ...g === \"currency\" && { currency: \"USD\" },\n maximumFractionDigits: d ?? 1,\n minimumFractionDigits: d ?? 1\n }), te = Number(I) / Y.divisor;\n return k.format(te) + Y.suffix;\n }\n return R ? y.format(Ee(T)) : y.format(I);\n};\nfunction Ee(w) {\n if (w === 0) return 0;\n const a = w.toExponential().split(\"e\"), g = parseInt(a[1]), U = Math.abs(g);\n return Number(w.toFixed(U));\n}\nfunction De(w, a = 5, g = 5) {\n return w ? w.length <= a + g ? w : `${w.slice(0, a)}...${w.slice(-g)}` : \"\";\n}\nclass Z {\n /**\n * Create a new AssetAmount instance\n *\n * @param assetInfo - Information about the asset\n * @param params - An object specifying the amount in standard or microunits\n * @param params.standardUnits - The amount in standard units\n * @param params.microUnits - The amount in microunits (base units)\n * @returns A new instance of AssetAmount representing the specified amount\n *\n * @example\n * ```typescript\n * // Create 5.5 units of an asset with ID 123 and 6 decimals\n * const amount = new AssetAmount(\n * { id: 123, decimals: 6, unitName: \"XYZ\" },\n * { standardUnits: 5.5 }\n * )\n *\n * // Create from microunits\n * const amount = new AssetAmount(\n * { id: 123, decimals: 6, unitName: \"XYZ\" },\n * { microUnits: 5500000n }\n * )\n * ```\n */\n constructor(a, g) {\n he(this, \"_microUnits\");\n he(this, \"_assetInfo\");\n if (this._assetInfo = a, \"standardUnits\" in g) {\n const U = new $(g.standardUnits);\n this._microUnits = U.multipliedBy(new $(10).pow(this.decimals)).integerValue($.ROUND_DOWN);\n } else\n this._microUnits = new $(g.microUnits.toString());\n }\n /**\n * Return the amount in microunits (base units)\n */\n get microUnits() {\n return BigInt(\n this._microUnits.integerValue($.ROUND_DOWN).toString()\n );\n }\n /**\n * Return the amount as a BigNumber in microunits (preserving precision)\n */\n get microBigNum() {\n return this._microUnits;\n }\n /**\n * Return the amount in standard units\n */\n get standardUnits() {\n return this._microUnits.dividedBy(new $(10).pow(this.decimals)).toNumber();\n }\n /**\n * Return the amount in standard units as a BigNumber (preserving precision)\n */\n get standardBigNum() {\n return this._microUnits.dividedBy(new $(10).pow(this.decimals));\n }\n /**\n * Return the number of decimal places for the asset\n */\n get decimals() {\n return this._assetInfo.decimals;\n }\n /**\n * Return the asset ID\n */\n get assetId() {\n return this._assetInfo.id;\n }\n /**\n * Return the asset information\n */\n get assetInfo() {\n return this._assetInfo;\n }\n /**\n * Returns a string representation of the asset amount\n *\n * @example\n * ```typescript\n * const amount = AssetAmount.StandardUnits({ id: 123, decimals: 6, unitName: \"XYZ\" }, 5.5)\n * console.log(amount.toString()) // \"5.5 XYZ (5500000 microunits)\"\n */\n toString() {\n const a = this._assetInfo.unitName ? ` ${this._assetInfo.unitName}` : \"\";\n return `${this.standardBigNum.toFormat()}${a} (${this._microUnits.toFormat(0)} microunits)`;\n }\n /**\n * Format the amount for display with options\n *\n * @param options - Formatting options\n * @param options.showSymbol - Whether to include the asset symbol\n * @param options.symbol - The asset symbol to display (defaults to asset's unitName if available)\n * @param options.decimalPlaces - Number of decimal places to show\n * @param options.trimZeroes - Whether to trim trailing zeros (default: true)\n * @param options.showMicrounits - Whether to include microunits in parentheses\n *\n * @example\n * ```typescript\n * const amount = AssetAmount.MicroUnits({ id: 123, decimals: 6, unitName: \"XYZ\" }, 5500000n)\n * console.log(amount.format()) // \"5.5\"\n * console.log(amount.format({ showSymbol: true })) // \"5.5 XYZ\"\n * console.log(amount.format({ showMicrounits: true })) // \"5.5 (5500000 microunits)\"\n * console.log(amount.format({ trimZeroes: false })) // \"5.500000\"\n * ```\n */\n format(a = {}) {\n const {\n showSymbol: g = !1,\n symbol: U,\n decimalPlaces: d = this.decimals,\n showMicrounits: v = !1,\n trimZeroes: I = !0\n } = a, A = Ne(this.standardUnits, {\n fractionDigits: d,\n adaptiveDecimals: I\n });\n let M = A;\n I && A.includes(\".\") && (M = A.replace(/\\.?0+$/, \"\"));\n let T = M;\n if (g) {\n const R = U || this._assetInfo.unitName || \"\";\n T = R ? `${M} ${R}` : M;\n }\n if (v) {\n const R = Ne(this.microUnits, {\n fractionDigits: 0,\n adaptiveDecimals: !0\n });\n T += ` (${R} microunits)`;\n }\n return T;\n }\n /**\n * Allows using AssetAmount in comparison operations\n * Not recommended for conversion to number, use standardUnits or microUnits explicitly\n *\n * @example\n * ```typescript\n * const amount = AssetAmount.MicroUnits({ id: 123, decimals: 6, unitName: \"XYZ\" }, 5500000n)\n * console.log(amount.valueOf()) // 5500000\n * ```\n */\n valueOf() {\n return this._microUnits.toNumber();\n }\n /**\n * Create an AssetAmount object representing the given number of standard units\n *\n * @param assetInfo - Information about the asset\n * @param amount - The amount in standard units\n *\n * @example\n * ```typescript\n * const amount = AssetAmount.StandardUnits({ id: 123, decimals: 6, unitName: \"XYZ\" }, 5.5)\n * console.log(amount.microUnits) // 5500000n\n * ```\n */\n static StandardUnits(a, g) {\n return new Z(a, { standardUnits: g });\n }\n /**\n * Create an AssetAmount object representing the given number of microunits (base units)\n *\n * @param assetInfo - Information about the asset\n * @param amount - The amount in microunits\n *\n * @example\n * ```typescript\n * const amount = AssetAmount.MicroUnits({ id: 123, decimals: 6, unitName: \"XYZ\" }, 5500000n)\n * console.log(amount.standardUnits) // 5.5\n * ```\n */\n static MicroUnits(a, g) {\n return new Z(a, { microUnits: g });\n }\n /**\n * Create a zero AssetAmount for the specified asset\n *\n * @param assetInfo - Information about the asset\n *\n * @example\n * ```typescript\n * const amount = AssetAmount.zero({ id: 123, decimals: 6, unitName: \"XYZ\" })\n * console.log(amount.standardUnits) // 0\n * ```\n */\n static zero(a) {\n return new Z(a, { microUnits: 0 });\n }\n /**\n * Create an AssetAmount from a currency value and asset price\n *\n * @param assetInfo - Information about the asset\n * @param currencyAmount - The amount in the currency, e.g. 100 USD\n * @param assetPrice - The price of one unit of the asset in the currency, e.g. 10 USD\n *\n * @example\n * ```typescript\n * // Using USD as currency\n * const amount = AssetAmount.fromCurrency({ id: 123, decimals: 6, unitName: \"XYZ\" }, 100, 10)\n * console.log(amount.standardUnits) // 10\n * ```\n */\n static fromCurrency(a, g, U) {\n const d = new $(g), v = new $(U);\n if (v.isZero())\n throw new Error(\"Asset price cannot be zero\");\n const I = d.dividedBy(v);\n return Z.StandardUnits(a, I);\n }\n /**\n * Add another AssetAmount to this one.\n * Both amounts must be in the same asset (same assetId and decimals).\n *\n * @example\n * ```typescript\n * const amount1 = AssetAmount.StandardUnits({ id: 123, decimals: 6, unitName: \"XYZ\" }, 5.5)\n * const amount2 = AssetAmount.StandardUnits({ id: 123, decimals: 6, unitName: \"XYZ\" }, 10)\n * const result = amount1.add(amount2)\n * console.log(result.standardUnits) // 15.5\n * console.log(result.microUnits) // 15500000n\n * ```\n */\n add(a) {\n if (this.assetId !== a.assetId)\n throw new Error(\n `Cannot add AssetAmounts with different asset IDs (${this.assetId} and ${a.assetId})`\n );\n if (this.decimals !== a.decimals)\n throw new Error(\"Cannot add AssetAmounts with different decimals\");\n return Z.MicroUnits(\n this._assetInfo,\n this._microUnits.plus(a.microUnits.toString())\n );\n }\n /**\n * Subtract another AssetAmount from this one.\n * Both amounts must be in the same asset (same assetId and decimals).\n *\n * @example\n * ```typescript\n * const amount1 = AssetAmount.StandardUnits({ id: 123, decimals: 6, unitName: \"XYZ\" }, 10)\n * const amount2 = AssetAmount.StandardUnits({ id: 123, decimals: 6, unitName: \"XYZ\" }, 5.5)\n * const result = amount1.subtract(amount2)\n * console.log(result.standardUnits) // 4.5\n * console.log(result.microUnits) // 4500000n\n * ```\n */\n subtract(a) {\n if (this.assetId !== a.assetId)\n throw new Error(\n `Cannot subtract AssetAmounts with different asset IDs (${this.assetId} and ${a.assetId})`\n );\n if (this.decimals !== a.decimals)\n throw new Error(\"Cannot subtract AssetAmounts with different decimals\");\n return Z.MicroUnits(\n this._assetInfo,\n this._microUnits.minus(a.microUnits.toString())\n );\n }\n /**\n * Multiply this amount by a scalar value\n *\n * @example\n * ```typescript\n * const amount = AssetAmount.StandardUnits({ id: 123, decimals: 6, unitName: \"XYZ\" }, 5.5)\n * const result = amount.multiply(2)\n * console.log(result.standardUnits) // 11\n * console.log(result.microUnits) // 11000000n\n * ```\n */\n multiply(a) {\n const g = new $(a);\n return Z.MicroUnits(\n this._assetInfo,\n this._microUnits.multipliedBy(g).integerValue($.ROUND_DOWN)\n );\n }\n /**\n * Divide this amount by a scalar value\n *\n * @example\n * ```typescript\n * const amount = AssetAmount.StandardUnits({ id: 123, decimals: 6, unitName: \"XYZ\" }, 11)\n * const result = amount.divide(2)\n * console.log(result.standardUnits) // 5.5\n * console.log(result.microUnits) // 5500000n\n */\n divide(a) {\n const g = new $(a);\n if (g.isZero())\n throw new Error(\"Division by zero\");\n return Z.MicroUnits(\n this._assetInfo,\n this._microUnits.dividedBy(g).integerValue($.ROUND_DOWN)\n );\n }\n /**\n * Round this amount to a specific number of decimal places\n *\n * @param decimalPlaces - Number of decimal places to round to\n * @param roundingMode - Rounding mode to use (default: ROUND_HALF_UP)\n * @returns A new AssetAmount with the rounded value\n *\n * @example\n * ```typescript\n * const amount = AssetAmount.StandardUnits({ id: 123, decimals: 6, unitName: \"XYZ\" }, 11)\n * const result = amount.round(2)\n * console.log(result.standardUnits) // 11.00\n */\n round(a = 0, g = $.ROUND_HALF_UP) {\n if (a >= this.decimals)\n return this;\n const U = this.decimals - a, d = new $(10).pow(U), v = this._microUnits.dividedBy(d).integerValue(g).multipliedBy(d);\n return Z.MicroUnits(this._assetInfo, v);\n }\n /**\n * Get this amount as a percentage of another amount.\n * Returns a number between 0 and 100.\n * Both amounts must be in the same asset (same assetId and decimals).\n *\n * @example\n * ```typescript\n * const amount1 = AssetAmount.StandardUnits({ id: 123, decimals: 6, unitName: \"XYZ\" }, 25)\n * const amount2 = AssetAmount.StandardUnits({ id: 123, decimals: 6, unitName: \"XYZ\" }, 100)\n * const result = amount1.percentageOf(amount2)\n * console.log(result) // 25\n * ```\n */\n percentageOf(a) {\n if (this.assetId !== a.assetId)\n throw new Error(\n `Cannot compare AssetAmounts with different asset IDs (${this.assetId} and ${a.assetId})`\n );\n if (this.decimals !== a.decimals)\n throw new Error(\"Cannot compare AssetAmounts with different decimals\");\n if (a.isZero())\n throw new Error(\"Cannot calculate percentage of zero\");\n return this._microUnits.dividedBy(a.microUnits.toString()).multipliedBy(100).toNumber();\n }\n /**\n * Check if this amount is zero\n *\n * @example\n * ```typescript\n * const amount = AssetAmount.StandardUnits({ id: 123, decimals: 6, unitName: \"XYZ\" }, 0)\n * console.log(amount.isZero()) // true\n * ```\n */\n isZero() {\n return this._microUnits.isZero();\n }\n /**\n * Check if this amount is greater than zero\n *\n * @example\n * ```typescript\n * const amount = AssetAmount.StandardUnits({ id: 123, decimals: 6, unitName: \"XYZ\" }, 10)\n * console.log(amount.isPositive()) // true\n * ```\n */\n isPositive() {\n return this._microUnits.isPositive();\n }\n /**\n * Check if this amount is less than zero\n *\n * @example\n * ```typescript\n * const amount = AssetAmount.StandardUnits({ id: 123, decimals: 6, unitName: \"XYZ\" }, -10)\n * console.log(amount.isNegative()) // true\n * ```\n */\n isNegative() {\n return this._microUnits.isNegative();\n }\n /**\n * Check if this amount is greater than another AssetAmount.\n * Both amounts must be in the same asset (same assetId and decimals).\n *\n * @example\n * ```typescript\n * const amount1 = AssetAmount.StandardUnits({ id: 123, decimals: 6, unitName: \"XYZ\" }, 10)\n * const amount2 = AssetAmount.StandardUnits({ id: 123, decimals: 6, unitName: \"XYZ\" }, 5)\n * console.log(amount1.isGreaterThan(amount2)) // true\n * ```\n */\n isGreaterThan(a) {\n if (this.assetId !== a.assetId)\n throw new Error(\n `Cannot compare AssetAmounts with different asset IDs (${this.assetId} and ${a.assetId})`\n );\n if (this.decimals !== a.decimals)\n throw new Error(\"Cannot compare AssetAmounts with different decimals\");\n return this._microUnits.isGreaterThan(a.microUnits.toString());\n }\n /**\n * Check if this amount is less than another AssetAmount.\n * Both amounts must be in the same asset (same assetId and decimals).\n *\n * @example\n * ```typescript\n * const amount1 = AssetAmount.StandardUnits({ id: 123, decimals: 6, unitName: \"XYZ\" }, 5)\n * const amount2 = AssetAmount.StandardUnits({ id: 123, decimals: 6, unitName: \"XYZ\" }, 10)\n * console.log(amount1.isLessThan(amount2)) // true\n * ```\n */\n isLessThan(a) {\n if (this.assetId !== a.assetId)\n throw new Error(\n `Cannot compare AssetAmounts with different asset IDs (${this.assetId} and ${a.assetId})`\n );\n if (this.decimals !== a.decimals)\n throw new Error(\"Cannot compare AssetAmounts with different decimals\");\n return this._microUnits.isLessThan(a.microUnits.toString());\n }\n /**\n * Check if this amount is greater than or equal to another AssetAmount.\n * Both amounts must be in the same asset (same assetId and decimals).\n *\n * @example\n * ```typescript\n * const amount1 = AssetAmount.StandardUnits({ id: 123, decimals: 6, unitName: \"XYZ\" }, 10)\n * const amount2 = AssetAmount.StandardUnits({ id: 123, decimals: 6, unitName: \"XYZ\" }, 5)\n * console.log(amount1.isGreaterThanOrEqualTo(amount2)) // true\n * ```\n */\n isGreaterThanOrEqualTo(a) {\n if (this.assetId !== a.assetId)\n throw new Error(\n `Cannot compare AssetAmounts with different asset IDs (${this.assetId} and ${a.assetId})`\n );\n if (this.decimals !== a.decimals)\n throw new Error(\"Cannot compare AssetAmounts with different decimals\");\n return this._microUnits.isGreaterThanOrEqualTo(a.microUnits.toString());\n }\n /**\n * Check if this amount is less than or equal to another AssetAmount.\n * Both amounts must be in the same asset (same assetId and decimals).\n *\n * @example\n * ```typescript\n * const amount1 = AssetAmount.StandardUnits({ id: 123, decimals: 6, unitName: \"XYZ\" }, 5)\n * const amount2 = AssetAmount.StandardUnits({ id: 123, decimals: 6, unitName: \"XYZ\" }, 10)\n * console.log(amount1.isLessThanOrEqualTo(amount2)) // true\n * ```\n */\n isLessThanOrEqualTo(a) {\n if (this.assetId !== a.assetId)\n throw new Error(\n `Cannot compare AssetAmounts with different asset IDs (${this.assetId} and ${a.assetId})`\n );\n if (this.decimals !== a.decimals)\n throw new Error(\"Cannot compare AssetAmounts with different decimals\");\n return this._microUnits.isLessThanOrEqualTo(a.microUnits.toString());\n }\n /**\n * Check if this amount is exactly the same as another AssetAmount.\n * Both amounts must be in the same asset (same assetId and decimals).\n *\n * @example\n * ```typescript\n * const amount1 = AssetAmount.StandardUnits({ id: 123, decimals: 6, unitName: \"XYZ\" }, 10)\n * const amount2 = AssetAmount.StandardUnits({ id: 123, decimals: 6, unitName: \"XYZ\" }, 10)\n * console.log(amount1.equals(amount2)) // true\n * ```\n */\n equals(a) {\n return this.assetId === a.assetId && this.decimals === a.decimals && this._microUnits.isEqualTo(a.microUnits.toString());\n }\n /**\n * Convert the asset amount to a JSON-compatible representation\n *\n * @example\n * ```typescript\n * const amount = AssetAmount.StandardUnits({ id: 123, decimals: 6, unitName: \"XYZ\" }, 10)\n * console.log(amount.toJSON()) // { assetInfo: { id: 123, decimals: 6, unitName: \"XYZ\" }, microUnits: \"10\" }\n * ```\n */\n toJSON() {\n return {\n assetInfo: this._assetInfo,\n microUnits: this._microUnits.toString()\n };\n }\n /**\n * Create an AssetAmount from a JSON representation\n *\n * @example\n * ```typescript\n * const json = { assetInfo: { id: 123, decimals: 6, unitName: \"XYZ\" }, microUnits: \"10\" }\n * const amount = AssetAmount.fromJSON(json)\n * console.log(amount.standardUnits) // 10\n * ```\n */\n static fromJSON(a) {\n return Z.MicroUnits(a.assetInfo, a.microUnits);\n }\n}\nexport {\n Z as AssetAmount,\n Ne as formatNumber,\n De as formatShortAddress,\n Ee as roundToFirstNonZeroDecimal\n};\n//# sourceMappingURL=index.js.map\n","import { useQuery, UseQueryResult } from '@tanstack/react-query'\nimport { useWallet, useNetwork } from '@txnlab/use-wallet-react'\n\n// NFD types\nexport type NfdRecord = {\n name: string\n properties: {\n verified: {\n [key: string]: string\n }\n userDefined: {\n [key: string]: string\n }\n }\n image?: string\n avatar?: {\n url?: string\n }\n}\n\nexport type NfdLookupResponse = {\n [address: string]: NfdRecord | null\n}\n\nexport type NfdView = 'tiny' | 'thumbnail' | 'brief' | 'full'\n\n/**\n * Custom hook to fetch NFD data for an Algorand address\n *\n * @param options.enabled Whether to enable the NFD lookup (defaults to true)\n * @param options.view The view type for the NFD lookup ('tiny', 'thumbnail', 'brief', 'full') (defaults to 'thumbnail')\n * @returns NFD data query result\n */\nexport function useNfd(\n options: { enabled?: boolean; view?: NfdView } = {},\n): UseQueryResult<NfdRecord | null> {\n const { activeAddress } = useWallet()\n const { activeNetwork } = useNetwork()\n const { enabled = true, view = 'thumbnail' } = options\n\n return useQuery({\n queryKey: ['nfd', activeAddress, activeNetwork, view],\n queryFn: async ({ signal }) => {\n if (!activeAddress) return null\n\n // Determine the API endpoint based on the network\n // Only check for TestNet, otherwise use MainNet\n const isTestnet = activeNetwork === 'testnet'\n const apiEndpoint = isTestnet\n ? 'https://api.testnet.nf.domains'\n : 'https://api.nf.domains'\n\n const response = await fetch(\n `${apiEndpoint}/nfd/lookup?address=${encodeURIComponent(activeAddress)}&view=${view}`,\n {\n method: 'GET',\n headers: {\n Accept: 'application/json',\n },\n signal,\n },\n )\n\n // If we get a 404, it means the address doesn't have an NFD\n // We should return null and not retry\n if (response.status === 404) {\n return null\n }\n\n if (!response.ok) {\n throw new Error(`NFD lookup failed: ${response.statusText}`)\n }\n\n const data: NfdLookupResponse = await response.json()\n return data[activeAddress]\n },\n enabled: enabled && !!activeAddress,\n retry: (failureCount, error) => {\n // If the error is a 404 (not found), don't retry\n if (error instanceof Error && error.message.includes('404')) {\n return false\n }\n\n // For other errors, retry up to 3 times\n return failureCount < 3\n },\n refetchOnWindowFocus: true,\n })\n}\n","// Default IPFS gateway to use as fallback\nconst IPFS_GATEWAY_URL = 'https://ipfs.algonode.dev'\n\n/**\n * Check availability of an IPFS resource and return appropriate URL\n * Tries images.nf.domains first, falls back to IPFS gateway\n * Only returns URLs for image content types\n *\n * @param url - IPFS URL to check\n * @returns URL to use (either images.nf.domains or fallback gateway)\n */\nexport const checkIpfsAvailability = async (url: string): Promise<string> => {\n if (!url.startsWith('ipfs://')) {\n return url\n }\n\n const cid = url.replace('ipfs://', '')\n const nfdUrl = `https://images.nf.domains/ipfs/${cid}`\n const gatewayUrl = `${IPFS_GATEWAY_URL}/ipfs/${cid}`\n\n // Helper to check if content type is an image\n const isImageContentType = (contentType: string): boolean => {\n return contentType.startsWith('image/')\n }\n\n // Try images.nf.domains first\n try {\n const response = await fetch(nfdUrl, { method: 'HEAD' })\n if (response.ok) {\n const contentType = response.headers.get('content-type')\n if (contentType && isImageContentType(contentType)) {\n return nfdUrl\n }\n }\n } catch {\n console.info(\n `CID ${cid} is not cached on images.nf.domains, trying IPFS gateway...`,\n )\n }\n\n // Try IPFS gateway\n try {\n const response = await fetch(gatewayUrl, { method: 'HEAD' })\n if (response.ok) {\n const contentType = response.headers.get('content-type')\n\n // If it's an image, return the gateway URL\n if (contentType && isImageContentType(contentType)) {\n return gatewayUrl\n }\n\n // If it's JSON, try to get image URL from metadata\n if (contentType === 'application/json') {\n try {\n const jsonResponse = await fetch(gatewayUrl)\n const metadata = await jsonResponse.json()\n\n // Get image URL from metadata\n const imageUrl = metadata.image\n if (imageUrl) {\n // If it's an IPFS URL, process it recursively\n if (imageUrl.startsWith('ipfs://')) {\n const imageCid = imageUrl.replace('ipfs://', '')\n const imageGatewayUrl = `${IPFS_GATEWAY_URL}/ipfs/${imageCid}`\n\n // Verify it's an image\n const imageResponse = await fetch(imageGatewayUrl, {\n method: 'HEAD',\n })\n if (imageResponse.ok) {\n const imageContentType =\n imageResponse.headers.get('content-type')\n if (imageContentType && isImageContentType(imageContentType)) {\n return imageGatewayUrl\n }\n }\n }\n // If it's already an HTTP URL and it's an image, return it\n else if (imageUrl.startsWith('http')) {\n try {\n const imageResponse = await fetch(imageUrl, { method: 'HEAD' })\n if (imageResponse.ok) {\n const imageContentType =\n imageResponse.headers.get('content-type')\n if (\n imageContentType &&\n isImageContentType(imageContentType)\n ) {\n return imageUrl\n }\n }\n } catch {\n console.error('Error checking HTTP image URL')\n }\n }\n }\n } catch {\n console.error('Error processing JSON metadata')\n }\n }\n }\n } catch {\n console.error(`Error checking gateway for CID ${cid}`)\n }\n\n // Fallback to IPFS gateway without guarantee it's an image\n return gatewayUrl\n}\n","import { useQuery } from '@tanstack/react-query'\nimport React from 'react'\n\nimport { cn } from '../utils/cn'\nimport { checkIpfsAvailability } from '../utils/ipfs'\n\nimport type { NfdRecord } from '../hooks/useNfd'\n\nexport interface NfdAvatarProps {\n /** NFD record containing avatar data */\n nfd: NfdRecord | null | undefined\n /** Optional alt text for the image (defaults to NFD name or 'NFD Avatar') */\n alt?: string\n /** Optional className for styling the image */\n className?: string\n /** Optional size in pixels (defaults to 40px) */\n size?: number\n /** Optional fallback element to show when no avatar is available */\n fallback?: React.ReactNode\n /** Optional flag to show light only avatar */\n lightOnly?: boolean\n}\n\n/**\n * Component for displaying NFD avatar images with automatic IPFS handling\n * - Handles IPFS URLs by converting them to HTTPS\n * - Checks availability on images.nf.domains and falls back to IPFS gateway if needed\n * - Caches results using TanStack Query\n */\nexport function NfdAvatar({\n nfd,\n alt,\n className,\n size = 40,\n fallback,\n lightOnly = false,\n}: NfdAvatarProps) {\n // Extract the potential avatar URL from the NFD data\n const rawAvatarUrl =\n nfd?.properties?.userDefined?.avatar ||\n nfd?.properties?.verified?.avatar ||\n null\n\n // Use a sensible alt text if not provided\n const imgAlt = alt || nfd?.name || 'NFD Avatar'\n\n // Use Tanstack Query to handle the availability check and cache the result\n const { data: avatarUrl, isLoading } = useQuery({\n queryKey: ['nfd-avatar', rawAvatarUrl],\n queryFn: async () => {\n if (!rawAvatarUrl) return null\n\n // If it's already an HTTPS URL and not IPFS-related, use as is\n if (\n rawAvatarUrl.startsWith('https://') &&\n !rawAvatarUrl.includes('/ipfs/')\n ) {\n return rawAvatarUrl\n }\n\n // For IPFS URLs, check availability and use the best option\n if (\n rawAvatarUrl.startsWith('ipfs://') ||\n rawAvatarUrl.includes('/ipfs/')\n ) {\n return await checkIpfsAvailability(rawAvatarUrl)\n }\n\n // For any other type of URL, just return it as is\n return rawAvatarUrl\n },\n enabled: !!rawAvatarUrl,\n staleTime: 60 * 60 * 1000, // 1 hour\n gcTime: 24 * 60 * 60 * 1000, // 24 hours\n })\n\n // Render loading state or fallback if no avatar available\n if (isLoading || !avatarUrl) {\n if (fallback) {\n return <>{fallback}</>\n }\n\n // Default fallback is a rounded placeholder with light/dark mode variants\n return (\n <div\n data-wallet-ui\n className={cn('flex items-center justify-center rounded-full', className)}\n style={{\n width: `${size}px`,\n height: `${size}px`,\n backgroundColor: lightOnly ? '#e5e7eb' : 'var(--wui-color-avatar-bg)',\n }}\n aria-label={imgAlt}\n role=\"img\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n style={{\n width: `${Math.max(size / 2, 12)}px`,\n height: `${Math.max(size / 2, 12)}px`,\n color: lightOnly ? '#9ca3af' : 'var(--wui-color-avatar-icon)',\n }}\n >\n <path\n fillRule=\"evenodd\"\n d=\"M7.5 6a4.5 4.5 0 119 0 4.5 4.5 0 01-9 0zM3.751 20.105a8.25 8.25 0 0116.498 0 .75.75 0 01-.437.695A18.683 18.683 0 0112 22.5c-2.786 0-5.433-.608-7.812-1.7a.75.75 0 01-.437-.695z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </div>\n )\n }\n\n // Render the avatar image\n return (\n <img\n src={avatarUrl}\n alt={imgAlt}\n className={cn('rounded-full', className)}\n style={{\n width: `${size}px`,\n height: `${size}px`,\n objectFit: 'cover',\n }}\n loading=\"lazy\"\n />\n )\n}\n","import { useWallet } from '@txnlab/use-wallet-react'\nimport { formatShortAddress } from '@txnlab/utils-ts'\nimport React from 'react'\n\nimport { useNfd } from '../hooks/useNfd'\nimport { cn } from '../utils'\n\nimport { NfdAvatar } from './NfdAvatar'\n\nimport type { ButtonSize } from './ConnectWalletButton'\n\nconst sizeClasses: Record<ButtonSize, string> = {\n sm: 'py-1.5 pl-2 md:pl-2.5 pr-2 text-sm rounded-lg',\n md: 'py-2.5 pl-3 md:pl-3.5 pr-3 text-base rounded-xl',\n lg: 'py-3 pl-3.5 md:pl-4 pr-3.5 text-lg rounded-xl',\n}\n\nconst avatarSizes: Record<ButtonSize, number> = {\n sm: 20,\n md: 24,\n lg: 28,\n}\n\nconst avatarContainerClasses: Record<ButtonSize, string> = {\n sm: 'mr-1 md:mr-1.5 h-5 w-5',\n md: 'mr-1 md:mr-2 h-6 w-6',\n lg: 'mr-1.5 md:mr-2.5 h-7 w-7',\n}\n\nconst chevronSizes: Record<ButtonSize, { width: number; height: number }> = {\n sm: { width: 14, height: 14 },\n md: { width: 18, height: 18 },\n lg: { width: 20, height: 20 },\n}\n\nexport interface ConnectedWalletButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n /** Size variant for the button */\n size?: ButtonSize\n style?: React.CSSProperties\n}\n\nexport const ConnectedWalletButton = React.forwardRef<\n HTMLButtonElement,\n ConnectedWalletButtonProps\n>(({ className = '', children, style, size = 'md', ...props }, ref) => {\n const { activeAddress } = useWallet()\n\n // NFD for the active address\n const nfdQuery = useNfd({ enabled: !!activeAddress })\n const nfdName = nfdQuery.data?.name ?? null\n\n // Base styles using CSS custom properties for theming\n const baseStyles =\n 'flex items-center bg-[var(--wui-color-primary)] transition-colors hover:bg-[var(--wui-color-primary-hover)] text-[var(--wui-color-primary-text)] cursor-pointer font-bold'\n\n return (\n <button\n ref={ref}\n data-wallet-ui\n data-wallet-button\n className={cn(baseStyles, sizeClasses[size], className)}\n style={style}\n disabled={false}\n {...props}\n type=\"button\"\n >\n {children || (\n <div className=\"flex items-center\">\n {/* Avatar */}\n {activeAddress && (\n <div className={cn('overflow-hidden', avatarContainerClasses[size])}>\n <NfdAvatar\n nfd={nfdQuery.data}\n alt={`${nfdName || activeAddress} avatar`}\n size={avatarSizes[size]}\n lightOnly\n />\n </div>\n )}\n\n <span className=\"hidden md:block max-w-[160px] truncate\">\n {nfdName ||\n (activeAddress\n ? formatShortAddress(activeAddress, 6, 4)\n : 'Connect')}\n </span>\n\n {/* Chevron icon */}\n {activeAddress && (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={chevronSizes[size].width}\n height={chevronSizes[size].height}\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n className=\"ml-1.5 mt-0.5\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M4 6L8 10L12 6\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )}\n </div>\n )}\n </button>\n )\n})\n\nConnectedWalletButton.displayName = 'ConnectedWalletButton'\n","import $HgANd$react from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \nconst $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c = typeof document !== 'undefined' ? (0, $HgANd$react).useLayoutEffect : ()=>{};\n\n\nexport {$f0a04ccd8dbdd83b$export$e5c5a5f917a5871c as useLayoutEffect};\n//# sourceMappingURL=useLayoutEffect.module.js.map\n","import {useLayoutEffect as $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c} from \"./useLayoutEffect.mjs\";\nimport {useRef as $lmaYr$useRef, useCallback as $lmaYr$useCallback} from \"react\";\n\n/*\n * Copyright 2023 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\nfunction $8ae05eaa5c114e9c$export$7f54fc3180508a52(fn) {\n const ref = (0, $lmaYr$useRef)(null);\n (0, $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c)(()=>{\n ref.current = fn;\n }, [\n fn\n ]);\n // @ts-ignore\n return (0, $lmaYr$useCallback)((...args)=>{\n const f = ref.current;\n return f === null || f === void 0 ? void 0 : f(...args);\n }, []);\n}\n\n\nexport {$8ae05eaa5c114e9c$export$7f54fc3180508a52 as useEffectEvent};\n//# sourceMappingURL=useEffectEvent.module.js.map\n","const $431fbd86ca7dc216$export$b204af158042fbac = (el)=>{\n var _el_ownerDocument;\n return (_el_ownerDocument = el === null || el === void 0 ? void 0 : el.ownerDocument) !== null && _el_ownerDocument !== void 0 ? _el_ownerDocument : document;\n};\nconst $431fbd86ca7dc216$export$f21a1ffae260145a = (el)=>{\n if (el && 'window' in el && el.window === el) return el;\n const doc = $431fbd86ca7dc216$export$b204af158042fbac(el);\n return doc.defaultView || window;\n};\n/**\n * Type guard that checks if a value is a Node. Verifies the presence and type of the nodeType property.\n */ function $431fbd86ca7dc216$var$isNode(value) {\n return value !== null && typeof value === 'object' && 'nodeType' in value && typeof value.nodeType === 'number';\n}\nfunction $431fbd86ca7dc216$export$af51f0f06c0f328a(node) {\n return $431fbd86ca7dc216$var$isNode(node) && node.nodeType === Node.DOCUMENT_FRAGMENT_NODE && 'host' in node;\n}\n\n\nexport {$431fbd86ca7dc216$export$b204af158042fbac as getOwnerDocument, $431fbd86ca7dc216$export$f21a1ffae260145a as getOwnerWindow, $431fbd86ca7dc216$export$af51f0f06c0f328a as isShadowRoot};\n//# sourceMappingURL=domHelpers.module.js.map\n","/*\n * Copyright 2023 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ let $f4e2df6bd15f8569$var$_tableNestedRows = false;\nlet $f4e2df6bd15f8569$var$_shadowDOM = false;\nfunction $f4e2df6bd15f8569$export$d9d8a0f82de49530() {\n $f4e2df6bd15f8569$var$_tableNestedRows = true;\n}\nfunction $f4e2df6bd15f8569$export$1b00cb14a96194e6() {\n return $f4e2df6bd15f8569$var$_tableNestedRows;\n}\nfunction $f4e2df6bd15f8569$export$12b151d9882e9985() {\n $f4e2df6bd15f8569$var$_shadowDOM = true;\n}\nfunction $f4e2df6bd15f8569$export$98658e8c59125e6a() {\n return $f4e2df6bd15f8569$var$_shadowDOM;\n}\n\n\nexport {$f4e2df6bd15f8569$export$d9d8a0f82de49530 as enableTableNestedRows, $f4e2df6bd15f8569$export$1b00cb14a96194e6 as tableNestedRows, $f4e2df6bd15f8569$export$12b151d9882e9985 as enableShadowDOM, $f4e2df6bd15f8569$export$98658e8c59125e6a as shadowDOM};\n//# sourceMappingURL=module.js.map\n","import {isShadowRoot as $431fbd86ca7dc216$export$af51f0f06c0f328a} from \"./domHelpers.mjs\";\nimport {shadowDOM as $lcSu5$shadowDOM} from \"@react-stately/flags\";\n\n// Source: https://github.com/microsoft/tabster/blob/a89fc5d7e332d48f68d03b1ca6e344489d1c3898/src/Shadowdomize/DOMFunctions.ts#L16\n\n\nfunction $d4ee10de306f2510$export$4282f70798064fe0(node, otherNode) {\n if (!(0, $lcSu5$shadowDOM)()) return otherNode && node ? node.contains(otherNode) : false;\n if (!node || !otherNode) return false;\n let currentNode = otherNode;\n while(currentNode !== null){\n if (currentNode === node) return true;\n if (currentNode.tagName === 'SLOT' && currentNode.assignedSlot) // Element is slotted\n currentNode = currentNode.assignedSlot.parentNode;\n else if ((0, $431fbd86ca7dc216$export$af51f0f06c0f328a)(currentNode)) // Element is in shadow root\n currentNode = currentNode.host;\n else currentNode = currentNode.parentNode;\n }\n return false;\n}\nconst $d4ee10de306f2510$export$cd4e5573fbe2b576 = (doc = document)=>{\n var _activeElement_shadowRoot;\n if (!(0, $lcSu5$shadowDOM)()) return doc.activeElement;\n let activeElement = doc.activeElement;\n while(activeElement && 'shadowRoot' in activeElement && ((_activeElement_shadowRoot = activeElement.shadowRoot) === null || _activeElement_shadowRoot === void 0 ? void 0 : _activeElement_shadowRoot.activeElement))activeElement = activeElement.shadowRoot.activeElement;\n return activeElement;\n};\nfunction $d4ee10de306f2510$export$e58f029f0fbfdb29(event) {\n if ((0, $lcSu5$shadowDOM)() && event.target.shadowRoot) {\n if (event.composedPath) return event.composedPath()[0];\n }\n return event.target;\n}\n\n\nexport {$d4ee10de306f2510$export$4282f70798064fe0 as nodeContains, $d4ee10de306f2510$export$cd4e5573fbe2b576 as getActiveElement, $d4ee10de306f2510$export$e58f029f0fbfdb29 as getEventTarget};\n//# sourceMappingURL=DOMFunctions.module.js.map\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ function $c87311424ea30a05$var$testUserAgent(re) {\n var _window_navigator_userAgentData;\n if (typeof window === 'undefined' || window.navigator == null) return false;\n return ((_window_navigator_userAgentData = window.navigator['userAgentData']) === null || _window_navigator_userAgentData === void 0 ? void 0 : _window_navigator_userAgentData.brands.some((brand)=>re.test(brand.brand))) || re.test(window.navigator.userAgent);\n}\nfunction $c87311424ea30a05$var$testPlatform(re) {\n var _window_navigator_userAgentData;\n return typeof window !== 'undefined' && window.navigator != null ? re.test(((_window_navigator_userAgentData = window.navigator['userAgentData']) === null || _window_navigator_userAgentData === void 0 ? void 0 : _window_navigator_userAgentData.platform) || window.navigator.platform) : false;\n}\nfunction $c87311424ea30a05$var$cached(fn) {\n if (process.env.NODE_ENV === 'test') return fn;\n let res = null;\n return ()=>{\n if (res == null) res = fn();\n return res;\n };\n}\nconst $c87311424ea30a05$export$9ac100e40613ea10 = $c87311424ea30a05$var$cached(function() {\n return $c87311424ea30a05$var$testPlatform(/^Mac/i);\n});\nconst $c87311424ea30a05$export$186c6964ca17d99 = $c87311424ea30a05$var$cached(function() {\n return $c87311424ea30a05$var$testPlatform(/^iPhone/i);\n});\nconst $c87311424ea30a05$export$7bef049ce92e4224 = $c87311424ea30a05$var$cached(function() {\n return $c87311424ea30a05$var$testPlatform(/^iPad/i) || // iPadOS 13 lies and says it's a Mac, but we can distinguish by detecting touch support.\n $c87311424ea30a05$export$9ac100e40613ea10() && navigator.maxTouchPoints > 1;\n});\nconst $c87311424ea30a05$export$fedb369cb70207f1 = $c87311424ea30a05$var$cached(function() {\n return $c87311424ea30a05$export$186c6964ca17d99() || $c87311424ea30a05$export$7bef049ce92e4224();\n});\nconst $c87311424ea30a05$export$e1865c3bedcd822b = $c87311424ea30a05$var$cached(function() {\n return $c87311424ea30a05$export$9ac100e40613ea10() || $c87311424ea30a05$export$fedb369cb70207f1();\n});\nconst $c87311424ea30a05$export$78551043582a6a98 = $c87311424ea30a05$var$cached(function() {\n return $c87311424ea30a05$var$testUserAgent(/AppleWebKit/i) && !$c87311424ea30a05$export$6446a186d09e379e();\n});\nconst $c87311424ea30a05$export$6446a186d09e379e = $c87311424ea30a05$var$cached(function() {\n return $c87311424ea30a05$var$testUserAgent(/Chrome/i);\n});\nconst $c87311424ea30a05$export$a11b0059900ceec8 = $c87311424ea30a05$var$cached(function() {\n return $c87311424ea30a05$var$testUserAgent(/Android/i);\n});\nconst $c87311424ea30a05$export$b7d78993b74f766d = $c87311424ea30a05$var$cached(function() {\n return $c87311424ea30a05$var$testUserAgent(/Firefox/i);\n});\n\n\nexport {$c87311424ea30a05$export$9ac100e40613ea10 as isMac, $c87311424ea30a05$export$186c6964ca17d99 as isIPhone, $c87311424ea30a05$export$7bef049ce92e4224 as isIPad, $c87311424ea30a05$export$fedb369cb70207f1 as isIOS, $c87311424ea30a05$export$e1865c3bedcd822b as isAppleDevice, $c87311424ea30a05$export$78551043582a6a98 as isWebKit, $c87311424ea30a05$export$6446a186d09e379e as isChrome, $c87311424ea30a05$export$a11b0059900ceec8 as isAndroid, $c87311424ea30a05$export$b7d78993b74f766d as isFirefox};\n//# sourceMappingURL=platform.module.js.map\n","import {useRef as $lPAwt$useRef, useCallback as $lPAwt$useCallback, useEffect as $lPAwt$useEffect} from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \nfunction $03deb23ff14920c4$export$4eaf04e54aa8eed6() {\n let globalListeners = (0, $lPAwt$useRef)(new Map());\n let addGlobalListener = (0, $lPAwt$useCallback)((eventTarget, type, listener, options)=>{\n // Make sure we remove the listener after it is called with the `once` option.\n let fn = (options === null || options === void 0 ? void 0 : options.once) ? (...args)=>{\n globalListeners.current.delete(listener);\n listener(...args);\n } : listener;\n globalListeners.current.set(listener, {\n type: type,\n eventTarget: eventTarget,\n fn: fn,\n options: options\n });\n eventTarget.addEventListener(type, fn, options);\n }, []);\n let removeGlobalListener = (0, $lPAwt$useCallback)((eventTarget, type, listener, options)=>{\n var _globalListeners_current_get;\n let fn = ((_globalListeners_current_get = globalListeners.current.get(listener)) === null || _globalListeners_current_get === void 0 ? void 0 : _globalListeners_current_get.fn) || listener;\n eventTarget.removeEventListener(type, fn, options);\n globalListeners.current.delete(listener);\n }, []);\n let removeAllGlobalListeners = (0, $lPAwt$useCallback)(()=>{\n globalListeners.current.forEach((value, key)=>{\n removeGlobalListener(value.eventTarget, value.type, key, value.options);\n });\n }, [\n removeGlobalListener\n ]);\n (0, $lPAwt$useEffect)(()=>{\n return removeAllGlobalListeners;\n }, [\n removeAllGlobalListeners\n ]);\n return {\n addGlobalListener: addGlobalListener,\n removeGlobalListener: removeGlobalListener,\n removeAllGlobalListeners: removeAllGlobalListeners\n };\n}\n\n\nexport {$03deb23ff14920c4$export$4eaf04e54aa8eed6 as useGlobalListeners};\n//# sourceMappingURL=useGlobalListeners.module.js.map\n","import {isAndroid as $c87311424ea30a05$export$a11b0059900ceec8} from \"./platform.mjs\";\n\n/*\n * Copyright 2022 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \nfunction $6a7db85432448f7f$export$60278871457622de(event) {\n // JAWS/NVDA with Firefox.\n if (event.mozInputSource === 0 && event.isTrusted) return true;\n // Android TalkBack's detail value varies depending on the event listener providing the event so we have specific logic here instead\n // If pointerType is defined, event is from a click listener. For events from mousedown listener, detail === 0 is a sufficient check\n // to detect TalkBack virtual clicks.\n if ((0, $c87311424ea30a05$export$a11b0059900ceec8)() && event.pointerType) return event.type === 'click' && event.buttons === 1;\n return event.detail === 0 && !event.pointerType;\n}\nfunction $6a7db85432448f7f$export$29bf1b5f2c56cf63(event) {\n // If the pointer size is zero, then we assume it's from a screen reader.\n // Android TalkBack double tap will sometimes return a event with width and height of 1\n // and pointerType === 'mouse' so we need to check for a specific combination of event attributes.\n // Cannot use \"event.pressure === 0\" as the sole check due to Safari pointer events always returning pressure === 0\n // instead of .5, see https://bugs.webkit.org/show_bug.cgi?id=206216. event.pointerType === 'mouse' is to distingush\n // Talkback double tap from Windows Firefox touch screen press\n return !(0, $c87311424ea30a05$export$a11b0059900ceec8)() && event.width === 0 && event.height === 0 || event.width === 1 && event.height === 1 && event.pressure === 0 && event.detail === 0 && event.pointerType === 'mouse';\n}\n\n\nexport {$6a7db85432448f7f$export$60278871457622de as isVirtualClick, $6a7db85432448f7f$export$29bf1b5f2c56cf63 as isVirtualPointerEvent};\n//# sourceMappingURL=isVirtualEvent.module.js.map\n","import {useLayoutEffect as $6dfIe$useLayoutEffect, useEffectEvent as $6dfIe$useEffectEvent, isFocusable as $6dfIe$isFocusable, getOwnerWindow as $6dfIe$getOwnerWindow, focusWithoutScrolling as $6dfIe$focusWithoutScrolling} from \"@react-aria/utils\";\nimport {useRef as $6dfIe$useRef, useCallback as $6dfIe$useCallback} from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\nfunction $8a9cb279dc87e130$export$525bc4921d56d4a(nativeEvent) {\n let event = nativeEvent;\n event.nativeEvent = nativeEvent;\n event.isDefaultPrevented = ()=>event.defaultPrevented;\n // cancelBubble is technically deprecated in the spec, but still supported in all browsers.\n event.isPropagationStopped = ()=>event.cancelBubble;\n event.persist = ()=>{};\n return event;\n}\nfunction $8a9cb279dc87e130$export$c2b7abe5d61ec696(event, target) {\n Object.defineProperty(event, 'target', {\n value: target\n });\n Object.defineProperty(event, 'currentTarget', {\n value: target\n });\n}\nfunction $8a9cb279dc87e130$export$715c682d09d639cc(onBlur) {\n let stateRef = (0, $6dfIe$useRef)({\n isFocused: false,\n observer: null\n });\n // Clean up MutationObserver on unmount. See below.\n (0, $6dfIe$useLayoutEffect)(()=>{\n const state = stateRef.current;\n return ()=>{\n if (state.observer) {\n state.observer.disconnect();\n state.observer = null;\n }\n };\n }, []);\n let dispatchBlur = (0, $6dfIe$useEffectEvent)((e)=>{\n onBlur === null || onBlur === void 0 ? void 0 : onBlur(e);\n });\n // This function is called during a React onFocus event.\n return (0, $6dfIe$useCallback)((e)=>{\n // React does not fire onBlur when an element is disabled. https://github.com/facebook/react/issues/9142\n // Most browsers fire a native focusout event in this case, except for Firefox. In that case, we use a\n // MutationObserver to watch for the disabled attribute, and dispatch these events ourselves.\n // For browsers that do, focusout fires before the MutationObserver, so onBlur should not fire twice.\n if (e.target instanceof HTMLButtonElement || e.target instanceof HTMLInputElement || e.target instanceof HTMLTextAreaElement || e.target instanceof HTMLSelectElement) {\n stateRef.current.isFocused = true;\n let target = e.target;\n let onBlurHandler = (e)=>{\n stateRef.current.isFocused = false;\n if (target.disabled) {\n // For backward compatibility, dispatch a (fake) React synthetic event.\n let event = $8a9cb279dc87e130$export$525bc4921d56d4a(e);\n dispatchBlur(event);\n }\n // We no longer need the MutationObserver once the target is blurred.\n if (stateRef.current.observer) {\n stateRef.current.observer.disconnect();\n stateRef.current.observer = null;\n }\n };\n target.addEventListener('focusout', onBlurHandler, {\n once: true\n });\n stateRef.current.observer = new MutationObserver(()=>{\n if (stateRef.current.isFocused && target.disabled) {\n var _stateRef_current_observer;\n (_stateRef_current_observer = stateRef.current.observer) === null || _stateRef_current_observer === void 0 ? void 0 : _stateRef_current_observer.disconnect();\n let relatedTargetEl = target === document.activeElement ? null : document.activeElement;\n target.dispatchEvent(new FocusEvent('blur', {\n relatedTarget: relatedTargetEl\n }));\n target.dispatchEvent(new FocusEvent('focusout', {\n bubbles: true,\n relatedTarget: relatedTargetEl\n }));\n }\n });\n stateRef.current.observer.observe(target, {\n attributes: true,\n attributeFilter: [\n 'disabled'\n ]\n });\n }\n }, [\n dispatchBlur\n ]);\n}\nlet $8a9cb279dc87e130$export$fda7da73ab5d4c48 = false;\nfunction $8a9cb279dc87e130$export$cabe61c495ee3649(target) {\n // The browser will focus the nearest focusable ancestor of our target.\n while(target && !(0, $6dfIe$isFocusable)(target))target = target.parentElement;\n let window = (0, $6dfIe$getOwnerWindow)(target);\n let activeElement = window.document.activeElement;\n if (!activeElement || activeElement === target) return;\n $8a9cb279dc87e130$export$fda7da73ab5d4c48 = true;\n let isRefocusing = false;\n let onBlur = (e)=>{\n if (e.target === activeElement || isRefocusing) e.stopImmediatePropagation();\n };\n let onFocusOut = (e)=>{\n if (e.target === activeElement || isRefocusing) {\n e.stopImmediatePropagation();\n // If there was no focusable ancestor, we don't expect a focus event.\n // Re-focus the original active element here.\n if (!target && !isRefocusing) {\n isRefocusing = true;\n (0, $6dfIe$focusWithoutScrolling)(activeElement);\n cleanup();\n }\n }\n };\n let onFocus = (e)=>{\n if (e.target === target || isRefocusing) e.stopImmediatePropagation();\n };\n let onFocusIn = (e)=>{\n if (e.target === target || isRefocusing) {\n e.stopImmediatePropagation();\n if (!isRefocusing) {\n isRefocusing = true;\n (0, $6dfIe$focusWithoutScrolling)(activeElement);\n cleanup();\n }\n }\n };\n window.addEventListener('blur', onBlur, true);\n window.addEventListener('focusout', onFocusOut, true);\n window.addEventListener('focusin', onFocusIn, true);\n window.addEventListener('focus', onFocus, true);\n let cleanup = ()=>{\n cancelAnimationFrame(raf);\n window.removeEventListener('blur', onBlur, true);\n window.removeEventListener('focusout', onFocusOut, true);\n window.removeEventListener('focusin', onFocusIn, true);\n window.removeEventListener('focus', onFocus, true);\n $8a9cb279dc87e130$export$fda7da73ab5d4c48 = false;\n isRefocusing = false;\n };\n let raf = requestAnimationFrame(cleanup);\n return cleanup;\n}\n\n\nexport {$8a9cb279dc87e130$export$525bc4921d56d4a as createSyntheticEvent, $8a9cb279dc87e130$export$c2b7abe5d61ec696 as setEventTarget, $8a9cb279dc87e130$export$715c682d09d639cc as useSyntheticBlurEvent, $8a9cb279dc87e130$export$fda7da73ab5d4c48 as ignoreFocusEvent, $8a9cb279dc87e130$export$cabe61c495ee3649 as preventFocus};\n//# sourceMappingURL=utils.module.js.map\n","import {ignoreFocusEvent as $8a9cb279dc87e130$export$fda7da73ab5d4c48} from \"./utils.mjs\";\nimport {isMac as $28AnR$isMac, isVirtualClick as $28AnR$isVirtualClick, getOwnerWindow as $28AnR$getOwnerWindow, getOwnerDocument as $28AnR$getOwnerDocument} from \"@react-aria/utils\";\nimport {useState as $28AnR$useState, useEffect as $28AnR$useEffect} from \"react\";\nimport {useIsSSR as $28AnR$useIsSSR} from \"@react-aria/ssr\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ // Portions of the code in this file are based on code from react.\n// Original licensing for the following can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/tree/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions\n\n\n\n\nlet $507fabe10e71c6fb$var$currentModality = null;\nlet $507fabe10e71c6fb$var$changeHandlers = new Set();\nlet $507fabe10e71c6fb$export$d90243b58daecda7 = new Map(); // We use a map here to support setting event listeners across multiple document objects.\nlet $507fabe10e71c6fb$var$hasEventBeforeFocus = false;\nlet $507fabe10e71c6fb$var$hasBlurredWindowRecently = false;\n// Only Tab or Esc keys will make focus visible on text input elements\nconst $507fabe10e71c6fb$var$FOCUS_VISIBLE_INPUT_KEYS = {\n Tab: true,\n Escape: true\n};\nfunction $507fabe10e71c6fb$var$triggerChangeHandlers(modality, e) {\n for (let handler of $507fabe10e71c6fb$var$changeHandlers)handler(modality, e);\n}\n/**\n * Helper function to determine if a KeyboardEvent is unmodified and could make keyboard focus styles visible.\n */ function $507fabe10e71c6fb$var$isValidKey(e) {\n // Control and Shift keys trigger when navigating back to the tab with keyboard.\n return !(e.metaKey || !(0, $28AnR$isMac)() && e.altKey || e.ctrlKey || e.key === 'Control' || e.key === 'Shift' || e.key === 'Meta');\n}\nfunction $507fabe10e71c6fb$var$handleKeyboardEvent(e) {\n $507fabe10e71c6fb$var$hasEventBeforeFocus = true;\n if ($507fabe10e71c6fb$var$isValidKey(e)) {\n $507fabe10e71c6fb$var$currentModality = 'keyboard';\n $507fabe10e71c6fb$var$triggerChangeHandlers('keyboard', e);\n }\n}\nfunction $507fabe10e71c6fb$var$handlePointerEvent(e) {\n $507fabe10e71c6fb$var$currentModality = 'pointer';\n if (e.type === 'mousedown' || e.type === 'pointerdown') {\n $507fabe10e71c6fb$var$hasEventBeforeFocus = true;\n $507fabe10e71c6fb$var$triggerChangeHandlers('pointer', e);\n }\n}\nfunction $507fabe10e71c6fb$var$handleClickEvent(e) {\n if ((0, $28AnR$isVirtualClick)(e)) {\n $507fabe10e71c6fb$var$hasEventBeforeFocus = true;\n $507fabe10e71c6fb$var$currentModality = 'virtual';\n }\n}\nfunction $507fabe10e71c6fb$var$handleFocusEvent(e) {\n // Firefox fires two extra focus events when the user first clicks into an iframe:\n // first on the window, then on the document. We ignore these events so they don't\n // cause keyboard focus rings to appear.\n if (e.target === window || e.target === document || (0, $8a9cb279dc87e130$export$fda7da73ab5d4c48) || !e.isTrusted) return;\n // If a focus event occurs without a preceding keyboard or pointer event, switch to virtual modality.\n // This occurs, for example, when navigating a form with the next/previous buttons on iOS.\n if (!$507fabe10e71c6fb$var$hasEventBeforeFocus && !$507fabe10e71c6fb$var$hasBlurredWindowRecently) {\n $507fabe10e71c6fb$var$currentModality = 'virtual';\n $507fabe10e71c6fb$var$triggerChangeHandlers('virtual', e);\n }\n $507fabe10e71c6fb$var$hasEventBeforeFocus = false;\n $507fabe10e71c6fb$var$hasBlurredWindowRecently = false;\n}\nfunction $507fabe10e71c6fb$var$handleWindowBlur() {\n if (0, $8a9cb279dc87e130$export$fda7da73ab5d4c48) return;\n // When the window is blurred, reset state. This is necessary when tabbing out of the window,\n // for example, since a subsequent focus event won't be fired.\n $507fabe10e71c6fb$var$hasEventBeforeFocus = false;\n $507fabe10e71c6fb$var$hasBlurredWindowRecently = true;\n}\n/**\n * Setup global event listeners to control when keyboard focus style should be visible.\n */ function $507fabe10e71c6fb$var$setupGlobalFocusEvents(element) {\n if (typeof window === 'undefined' || typeof document === 'undefined' || $507fabe10e71c6fb$export$d90243b58daecda7.get((0, $28AnR$getOwnerWindow)(element))) return;\n const windowObject = (0, $28AnR$getOwnerWindow)(element);\n const documentObject = (0, $28AnR$getOwnerDocument)(element);\n // Programmatic focus() calls shouldn't affect the current input modality.\n // However, we need to detect other cases when a focus event occurs without\n // a preceding user event (e.g. screen reader focus). Overriding the focus\n // method on HTMLElement.prototype is a bit hacky, but works.\n let focus = windowObject.HTMLElement.prototype.focus;\n windowObject.HTMLElement.prototype.focus = function() {\n $507fabe10e71c6fb$var$hasEventBeforeFocus = true;\n focus.apply(this, arguments);\n };\n documentObject.addEventListener('keydown', $507fabe10e71c6fb$var$handleKeyboardEvent, true);\n documentObject.addEventListener('keyup', $507fabe10e71c6fb$var$handleKeyboardEvent, true);\n documentObject.addEventListener('click', $507fabe10e71c6fb$var$handleClickEvent, true);\n // Register focus events on the window so they are sure to happen\n // before React's event listeners (registered on the document).\n windowObject.addEventListener('focus', $507fabe10e71c6fb$var$handleFocusEvent, true);\n windowObject.addEventListener('blur', $507fabe10e71c6fb$var$handleWindowBlur, false);\n if (typeof PointerEvent !== 'undefined') {\n documentObject.addEventListener('pointerdown', $507fabe10e71c6fb$var$handlePointerEvent, true);\n documentObject.addEventListener('pointermove', $507fabe10e71c6fb$var$handlePointerEvent, true);\n documentObject.addEventListener('pointerup', $507fabe10e71c6fb$var$handlePointerEvent, true);\n } else if (process.env.NODE_ENV === 'test') {\n documentObject.addEventListener('mousedown', $507fabe10e71c6fb$var$handlePointerEvent, true);\n documentObject.addEventListener('mousemove', $507fabe10e71c6fb$var$handlePointerEvent, true);\n documentObject.addEventListener('mouseup', $507fabe10e71c6fb$var$handlePointerEvent, true);\n }\n // Add unmount handler\n windowObject.addEventListener('beforeunload', ()=>{\n $507fabe10e71c6fb$var$tearDownWindowFocusTracking(element);\n }, {\n once: true\n });\n $507fabe10e71c6fb$export$d90243b58daecda7.set(windowObject, {\n focus: focus\n });\n}\nconst $507fabe10e71c6fb$var$tearDownWindowFocusTracking = (element, loadListener)=>{\n const windowObject = (0, $28AnR$getOwnerWindow)(element);\n const documentObject = (0, $28AnR$getOwnerDocument)(element);\n if (loadListener) documentObject.removeEventListener('DOMContentLoaded', loadListener);\n if (!$507fabe10e71c6fb$export$d90243b58daecda7.has(windowObject)) return;\n windowObject.HTMLElement.prototype.focus = $507fabe10e71c6fb$export$d90243b58daecda7.get(windowObject).focus;\n documentObject.removeEventListener('keydown', $507fabe10e71c6fb$var$handleKeyboardEvent, true);\n documentObject.removeEventListener('keyup', $507fabe10e71c6fb$var$handleKeyboardEvent, true);\n documentObject.removeEventListener('click', $507fabe10e71c6fb$var$handleClickEvent, true);\n windowObject.removeEventListener('focus', $507fabe10e71c6fb$var$handleFocusEvent, true);\n windowObject.removeEventListener('blur', $507fabe10e71c6fb$var$handleWindowBlur, false);\n if (typeof PointerEvent !== 'undefined') {\n documentObject.removeEventListener('pointerdown', $507fabe10e71c6fb$var$handlePointerEvent, true);\n documentObject.removeEventListener('pointermove', $507fabe10e71c6fb$var$handlePointerEvent, true);\n documentObject.removeEventListener('pointerup', $507fabe10e71c6fb$var$handlePointerEvent, true);\n } else if (process.env.NODE_ENV === 'test') {\n documentObject.removeEventListener('mousedown', $507fabe10e71c6fb$var$handlePointerEvent, true);\n documentObject.removeEventListener('mousemove', $507fabe10e71c6fb$var$handlePointerEvent, true);\n documentObject.removeEventListener('mouseup', $507fabe10e71c6fb$var$handlePointerEvent, true);\n }\n $507fabe10e71c6fb$export$d90243b58daecda7.delete(windowObject);\n};\nfunction $507fabe10e71c6fb$export$2f1888112f558a7d(element) {\n const documentObject = (0, $28AnR$getOwnerDocument)(element);\n let loadListener;\n if (documentObject.readyState !== 'loading') $507fabe10e71c6fb$var$setupGlobalFocusEvents(element);\n else {\n loadListener = ()=>{\n $507fabe10e71c6fb$var$setupGlobalFocusEvents(element);\n };\n documentObject.addEventListener('DOMContentLoaded', loadListener);\n }\n return ()=>$507fabe10e71c6fb$var$tearDownWindowFocusTracking(element, loadListener);\n}\n// Server-side rendering does not have the document object defined\n// eslint-disable-next-line no-restricted-globals\nif (typeof document !== 'undefined') $507fabe10e71c6fb$export$2f1888112f558a7d();\nfunction $507fabe10e71c6fb$export$b9b3dfddab17db27() {\n return $507fabe10e71c6fb$var$currentModality !== 'pointer';\n}\nfunction $507fabe10e71c6fb$export$630ff653c5ada6a9() {\n return $507fabe10e71c6fb$var$currentModality;\n}\nfunction $507fabe10e71c6fb$export$8397ddfc504fdb9a(modality) {\n $507fabe10e71c6fb$var$currentModality = modality;\n $507fabe10e71c6fb$var$triggerChangeHandlers(modality, null);\n}\nfunction $507fabe10e71c6fb$export$98e20ec92f614cfe() {\n $507fabe10e71c6fb$var$setupGlobalFocusEvents();\n let [modality, setModality] = (0, $28AnR$useState)($507fabe10e71c6fb$var$currentModality);\n (0, $28AnR$useEffect)(()=>{\n let handler = ()=>{\n setModality($507fabe10e71c6fb$var$currentModality);\n };\n $507fabe10e71c6fb$var$changeHandlers.add(handler);\n return ()=>{\n $507fabe10e71c6fb$var$changeHandlers.delete(handler);\n };\n }, []);\n return (0, $28AnR$useIsSSR)() ? null : modality;\n}\nconst $507fabe10e71c6fb$var$nonTextInputTypes = new Set([\n 'checkbox',\n 'radio',\n 'range',\n 'color',\n 'file',\n 'image',\n 'button',\n 'submit',\n 'reset'\n]);\n/**\n * If this is attached to text input component, return if the event is a focus event (Tab/Escape keys pressed) so that\n * focus visible style can be properly set.\n */ function $507fabe10e71c6fb$var$isKeyboardFocusEvent(isTextInput, modality, e) {\n let document1 = (0, $28AnR$getOwnerDocument)(e === null || e === void 0 ? void 0 : e.target);\n const IHTMLInputElement = typeof window !== 'undefined' ? (0, $28AnR$getOwnerWindow)(e === null || e === void 0 ? void 0 : e.target).HTMLInputElement : HTMLInputElement;\n const IHTMLTextAreaElement = typeof window !== 'undefined' ? (0, $28AnR$getOwnerWindow)(e === null || e === void 0 ? void 0 : e.target).HTMLTextAreaElement : HTMLTextAreaElement;\n const IHTMLElement = typeof window !== 'undefined' ? (0, $28AnR$getOwnerWindow)(e === null || e === void 0 ? void 0 : e.target).HTMLElement : HTMLElement;\n const IKeyboardEvent = typeof window !== 'undefined' ? (0, $28AnR$getOwnerWindow)(e === null || e === void 0 ? void 0 : e.target).KeyboardEvent : KeyboardEvent;\n // For keyboard events that occur on a non-input element that will move focus into input element (aka ArrowLeft going from Datepicker button to the main input group)\n // we need to rely on the user passing isTextInput into here. This way we can skip toggling focus visiblity for said input element\n isTextInput = isTextInput || document1.activeElement instanceof IHTMLInputElement && !$507fabe10e71c6fb$var$nonTextInputTypes.has(document1.activeElement.type) || document1.activeElement instanceof IHTMLTextAreaElement || document1.activeElement instanceof IHTMLElement && document1.activeElement.isContentEditable;\n return !(isTextInput && modality === 'keyboard' && e instanceof IKeyboardEvent && !$507fabe10e71c6fb$var$FOCUS_VISIBLE_INPUT_KEYS[e.key]);\n}\nfunction $507fabe10e71c6fb$export$ffd9e5021c1fb2d6(props = {}) {\n let { isTextInput: isTextInput, autoFocus: autoFocus } = props;\n let [isFocusVisibleState, setFocusVisible] = (0, $28AnR$useState)(autoFocus || $507fabe10e71c6fb$export$b9b3dfddab17db27());\n $507fabe10e71c6fb$export$ec71b4b83ac08ec3((isFocusVisible)=>{\n setFocusVisible(isFocusVisible);\n }, [\n isTextInput\n ], {\n isTextInput: isTextInput\n });\n return {\n isFocusVisible: isFocusVisibleState\n };\n}\nfunction $507fabe10e71c6fb$export$ec71b4b83ac08ec3(fn, deps, opts) {\n $507fabe10e71c6fb$var$setupGlobalFocusEvents();\n (0, $28AnR$useEffect)(()=>{\n let handler = (modality, e)=>{\n // We want to early return for any keyboard events that occur inside text inputs EXCEPT for Tab and Escape\n if (!$507fabe10e71c6fb$var$isKeyboardFocusEvent(!!(opts === null || opts === void 0 ? void 0 : opts.isTextInput), modality, e)) return;\n fn($507fabe10e71c6fb$export$b9b3dfddab17db27());\n };\n $507fabe10e71c6fb$var$changeHandlers.add(handler);\n return ()=>{\n $507fabe10e71c6fb$var$changeHandlers.delete(handler);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps);\n}\n\n\nexport {$507fabe10e71c6fb$export$d90243b58daecda7 as hasSetupGlobalListeners, $507fabe10e71c6fb$export$2f1888112f558a7d as addWindowFocusTracking, $507fabe10e71c6fb$export$b9b3dfddab17db27 as isFocusVisible, $507fabe10e71c6fb$export$630ff653c5ada6a9 as getInteractionModality, $507fabe10e71c6fb$export$8397ddfc504fdb9a as setInteractionModality, $507fabe10e71c6fb$export$98e20ec92f614cfe as useInteractionModality, $507fabe10e71c6fb$export$ffd9e5021c1fb2d6 as useFocusVisible, $507fabe10e71c6fb$export$ec71b4b83ac08ec3 as useFocusVisibleListener};\n//# sourceMappingURL=useFocusVisible.module.js.map\n","import {useSyntheticBlurEvent as $8a9cb279dc87e130$export$715c682d09d639cc} from \"./utils.mjs\";\nimport {useCallback as $hf0lj$useCallback} from \"react\";\nimport {getOwnerDocument as $hf0lj$getOwnerDocument, getActiveElement as $hf0lj$getActiveElement, getEventTarget as $hf0lj$getEventTarget} from \"@react-aria/utils\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ // Portions of the code in this file are based on code from react.\n// Original licensing for the following can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/tree/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions\n\n\n\nfunction $a1ea59d68270f0dd$export$f8168d8dd8fd66e6(props) {\n let { isDisabled: isDisabled, onFocus: onFocusProp, onBlur: onBlurProp, onFocusChange: onFocusChange } = props;\n const onBlur = (0, $hf0lj$useCallback)((e)=>{\n if (e.target === e.currentTarget) {\n if (onBlurProp) onBlurProp(e);\n if (onFocusChange) onFocusChange(false);\n return true;\n }\n }, [\n onBlurProp,\n onFocusChange\n ]);\n const onSyntheticFocus = (0, $8a9cb279dc87e130$export$715c682d09d639cc)(onBlur);\n const onFocus = (0, $hf0lj$useCallback)((e)=>{\n // Double check that document.activeElement actually matches e.target in case a previously chained\n // focus handler already moved focus somewhere else.\n const ownerDocument = (0, $hf0lj$getOwnerDocument)(e.target);\n const activeElement = ownerDocument ? (0, $hf0lj$getActiveElement)(ownerDocument) : (0, $hf0lj$getActiveElement)();\n if (e.target === e.currentTarget && activeElement === (0, $hf0lj$getEventTarget)(e.nativeEvent)) {\n if (onFocusProp) onFocusProp(e);\n if (onFocusChange) onFocusChange(true);\n onSyntheticFocus(e);\n }\n }, [\n onFocusChange,\n onFocusProp,\n onSyntheticFocus\n ]);\n return {\n focusProps: {\n onFocus: !isDisabled && (onFocusProp || onFocusChange || onBlurProp) ? onFocus : undefined,\n onBlur: !isDisabled && (onBlurProp || onFocusChange) ? onBlur : undefined\n }\n };\n}\n\n\nexport {$a1ea59d68270f0dd$export$f8168d8dd8fd66e6 as useFocus};\n//# sourceMappingURL=useFocus.module.js.map\n","import {createSyntheticEvent as $8a9cb279dc87e130$export$525bc4921d56d4a, setEventTarget as $8a9cb279dc87e130$export$c2b7abe5d61ec696, useSyntheticBlurEvent as $8a9cb279dc87e130$export$715c682d09d639cc} from \"./utils.mjs\";\nimport {useRef as $3b9Q0$useRef, useCallback as $3b9Q0$useCallback} from \"react\";\nimport {useGlobalListeners as $3b9Q0$useGlobalListeners, getOwnerDocument as $3b9Q0$getOwnerDocument, getActiveElement as $3b9Q0$getActiveElement, getEventTarget as $3b9Q0$getEventTarget, nodeContains as $3b9Q0$nodeContains} from \"@react-aria/utils\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ // Portions of the code in this file are based on code from react.\n// Original licensing for the following can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/tree/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions\n\n\n\nfunction $9ab94262bd0047c7$export$420e68273165f4ec(props) {\n let { isDisabled: isDisabled, onBlurWithin: onBlurWithin, onFocusWithin: onFocusWithin, onFocusWithinChange: onFocusWithinChange } = props;\n let state = (0, $3b9Q0$useRef)({\n isFocusWithin: false\n });\n let { addGlobalListener: addGlobalListener, removeAllGlobalListeners: removeAllGlobalListeners } = (0, $3b9Q0$useGlobalListeners)();\n let onBlur = (0, $3b9Q0$useCallback)((e)=>{\n // Ignore events bubbling through portals.\n if (!e.currentTarget.contains(e.target)) return;\n // We don't want to trigger onBlurWithin and then immediately onFocusWithin again\n // when moving focus inside the element. Only trigger if the currentTarget doesn't\n // include the relatedTarget (where focus is moving).\n if (state.current.isFocusWithin && !e.currentTarget.contains(e.relatedTarget)) {\n state.current.isFocusWithin = false;\n removeAllGlobalListeners();\n if (onBlurWithin) onBlurWithin(e);\n if (onFocusWithinChange) onFocusWithinChange(false);\n }\n }, [\n onBlurWithin,\n onFocusWithinChange,\n state,\n removeAllGlobalListeners\n ]);\n let onSyntheticFocus = (0, $8a9cb279dc87e130$export$715c682d09d639cc)(onBlur);\n let onFocus = (0, $3b9Q0$useCallback)((e)=>{\n // Ignore events bubbling through portals.\n if (!e.currentTarget.contains(e.target)) return;\n // Double check that document.activeElement actually matches e.target in case a previously chained\n // focus handler already moved focus somewhere else.\n const ownerDocument = (0, $3b9Q0$getOwnerDocument)(e.target);\n const activeElement = (0, $3b9Q0$getActiveElement)(ownerDocument);\n if (!state.current.isFocusWithin && activeElement === (0, $3b9Q0$getEventTarget)(e.nativeEvent)) {\n if (onFocusWithin) onFocusWithin(e);\n if (onFocusWithinChange) onFocusWithinChange(true);\n state.current.isFocusWithin = true;\n onSyntheticFocus(e);\n // Browsers don't fire blur events when elements are removed from the DOM.\n // However, if a focus event occurs outside the element we're tracking, we\n // can manually fire onBlur.\n let currentTarget = e.currentTarget;\n addGlobalListener(ownerDocument, 'focus', (e)=>{\n if (state.current.isFocusWithin && !(0, $3b9Q0$nodeContains)(currentTarget, e.target)) {\n let nativeEvent = new ownerDocument.defaultView.FocusEvent('blur', {\n relatedTarget: e.target\n });\n (0, $8a9cb279dc87e130$export$c2b7abe5d61ec696)(nativeEvent, currentTarget);\n let event = (0, $8a9cb279dc87e130$export$525bc4921d56d4a)(nativeEvent);\n onBlur(event);\n }\n }, {\n capture: true\n });\n }\n }, [\n onFocusWithin,\n onFocusWithinChange,\n onSyntheticFocus,\n addGlobalListener,\n onBlur\n ]);\n if (isDisabled) return {\n focusWithinProps: {\n // These cannot be null, that would conflict in mergeProps\n onFocus: undefined,\n onBlur: undefined\n }\n };\n return {\n focusWithinProps: {\n onFocus: onFocus,\n onBlur: onBlur\n }\n };\n}\n\n\nexport {$9ab94262bd0047c7$export$420e68273165f4ec as useFocusWithin};\n//# sourceMappingURL=useFocusWithin.module.js.map\n","import {useGlobalListeners as $AWxnT$useGlobalListeners, getOwnerDocument as $AWxnT$getOwnerDocument, nodeContains as $AWxnT$nodeContains} from \"@react-aria/utils\";\nimport {useState as $AWxnT$useState, useRef as $AWxnT$useRef, useEffect as $AWxnT$useEffect, useMemo as $AWxnT$useMemo} from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ // Portions of the code in this file are based on code from react.\n// Original licensing for the following can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/tree/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions\n\n\n// iOS fires onPointerEnter twice: once with pointerType=\"touch\" and again with pointerType=\"mouse\".\n// We want to ignore these emulated events so they do not trigger hover behavior.\n// See https://bugs.webkit.org/show_bug.cgi?id=214609.\nlet $6179b936705e76d3$var$globalIgnoreEmulatedMouseEvents = false;\nlet $6179b936705e76d3$var$hoverCount = 0;\nfunction $6179b936705e76d3$var$setGlobalIgnoreEmulatedMouseEvents() {\n $6179b936705e76d3$var$globalIgnoreEmulatedMouseEvents = true;\n // Clear globalIgnoreEmulatedMouseEvents after a short timeout. iOS fires onPointerEnter\n // with pointerType=\"mouse\" immediately after onPointerUp and before onFocus. On other\n // devices that don't have this quirk, we don't want to ignore a mouse hover sometime in\n // the distant future because a user previously touched the element.\n setTimeout(()=>{\n $6179b936705e76d3$var$globalIgnoreEmulatedMouseEvents = false;\n }, 50);\n}\nfunction $6179b936705e76d3$var$handleGlobalPointerEvent(e) {\n if (e.pointerType === 'touch') $6179b936705e76d3$var$setGlobalIgnoreEmulatedMouseEvents();\n}\nfunction $6179b936705e76d3$var$setupGlobalTouchEvents() {\n if (typeof document === 'undefined') return;\n if (typeof PointerEvent !== 'undefined') document.addEventListener('pointerup', $6179b936705e76d3$var$handleGlobalPointerEvent);\n else if (process.env.NODE_ENV === 'test') document.addEventListener('touchend', $6179b936705e76d3$var$setGlobalIgnoreEmulatedMouseEvents);\n $6179b936705e76d3$var$hoverCount++;\n return ()=>{\n $6179b936705e76d3$var$hoverCount--;\n if ($6179b936705e76d3$var$hoverCount > 0) return;\n if (typeof PointerEvent !== 'undefined') document.removeEventListener('pointerup', $6179b936705e76d3$var$handleGlobalPointerEvent);\n else if (process.env.NODE_ENV === 'test') document.removeEventListener('touchend', $6179b936705e76d3$var$setGlobalIgnoreEmulatedMouseEvents);\n };\n}\nfunction $6179b936705e76d3$export$ae780daf29e6d456(props) {\n let { onHoverStart: onHoverStart, onHoverChange: onHoverChange, onHoverEnd: onHoverEnd, isDisabled: isDisabled } = props;\n let [isHovered, setHovered] = (0, $AWxnT$useState)(false);\n let state = (0, $AWxnT$useRef)({\n isHovered: false,\n ignoreEmulatedMouseEvents: false,\n pointerType: '',\n target: null\n }).current;\n (0, $AWxnT$useEffect)($6179b936705e76d3$var$setupGlobalTouchEvents, []);\n let { addGlobalListener: addGlobalListener, removeAllGlobalListeners: removeAllGlobalListeners } = (0, $AWxnT$useGlobalListeners)();\n let { hoverProps: hoverProps, triggerHoverEnd: triggerHoverEnd } = (0, $AWxnT$useMemo)(()=>{\n let triggerHoverStart = (event, pointerType)=>{\n state.pointerType = pointerType;\n if (isDisabled || pointerType === 'touch' || state.isHovered || !event.currentTarget.contains(event.target)) return;\n state.isHovered = true;\n let target = event.currentTarget;\n state.target = target;\n // When an element that is hovered over is removed, no pointerleave event is fired by the browser,\n // even though the originally hovered target may have shrunk in size so it is no longer hovered.\n // However, a pointerover event will be fired on the new target the mouse is over.\n // In Chrome this happens immediately. In Safari and Firefox, it happens upon moving the mouse one pixel.\n addGlobalListener((0, $AWxnT$getOwnerDocument)(event.target), 'pointerover', (e)=>{\n if (state.isHovered && state.target && !(0, $AWxnT$nodeContains)(state.target, e.target)) triggerHoverEnd(e, e.pointerType);\n }, {\n capture: true\n });\n if (onHoverStart) onHoverStart({\n type: 'hoverstart',\n target: target,\n pointerType: pointerType\n });\n if (onHoverChange) onHoverChange(true);\n setHovered(true);\n };\n let triggerHoverEnd = (event, pointerType)=>{\n let target = state.target;\n state.pointerType = '';\n state.target = null;\n if (pointerType === 'touch' || !state.isHovered || !target) return;\n state.isHovered = false;\n removeAllGlobalListeners();\n if (onHoverEnd) onHoverEnd({\n type: 'hoverend',\n target: target,\n pointerType: pointerType\n });\n if (onHoverChange) onHoverChange(false);\n setHovered(false);\n };\n let hoverProps = {};\n if (typeof PointerEvent !== 'undefined') {\n hoverProps.onPointerEnter = (e)=>{\n if ($6179b936705e76d3$var$globalIgnoreEmulatedMouseEvents && e.pointerType === 'mouse') return;\n triggerHoverStart(e, e.pointerType);\n };\n hoverProps.onPointerLeave = (e)=>{\n if (!isDisabled && e.currentTarget.contains(e.target)) triggerHoverEnd(e, e.pointerType);\n };\n } else if (process.env.NODE_ENV === 'test') {\n hoverProps.onTouchStart = ()=>{\n state.ignoreEmulatedMouseEvents = true;\n };\n hoverProps.onMouseEnter = (e)=>{\n if (!state.ignoreEmulatedMouseEvents && !$6179b936705e76d3$var$globalIgnoreEmulatedMouseEvents) triggerHoverStart(e, 'mouse');\n state.ignoreEmulatedMouseEvents = false;\n };\n hoverProps.onMouseLeave = (e)=>{\n if (!isDisabled && e.currentTarget.contains(e.target)) triggerHoverEnd(e, 'mouse');\n };\n }\n return {\n hoverProps: hoverProps,\n triggerHoverEnd: triggerHoverEnd\n };\n }, [\n onHoverStart,\n onHoverChange,\n onHoverEnd,\n isDisabled,\n state,\n addGlobalListener,\n removeAllGlobalListeners\n ]);\n (0, $AWxnT$useEffect)(()=>{\n // Call the triggerHoverEnd as soon as isDisabled changes to true\n // Safe to call triggerHoverEnd, it will early return if we aren't currently hovering\n if (isDisabled) triggerHoverEnd({\n currentTarget: state.target\n }, state.pointerType);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n isDisabled\n ]);\n return {\n hoverProps: hoverProps,\n isHovered: isHovered\n };\n}\n\n\nexport {$6179b936705e76d3$export$ae780daf29e6d456 as useHover};\n//# sourceMappingURL=useHover.module.js.map\n","import {isFocusVisible as $isWE5$isFocusVisible, useFocusVisibleListener as $isWE5$useFocusVisibleListener, useFocus as $isWE5$useFocus, useFocusWithin as $isWE5$useFocusWithin} from \"@react-aria/interactions\";\nimport {useRef as $isWE5$useRef, useState as $isWE5$useState, useCallback as $isWE5$useCallback} from \"react\";\n\n\n\nfunction $f7dceffc5ad7768b$export$4e328f61c538687f(props = {}) {\n let { autoFocus: autoFocus = false, isTextInput: isTextInput, within: within } = props;\n let state = (0, $isWE5$useRef)({\n isFocused: false,\n isFocusVisible: autoFocus || (0, $isWE5$isFocusVisible)()\n });\n let [isFocused, setFocused] = (0, $isWE5$useState)(false);\n let [isFocusVisibleState, setFocusVisible] = (0, $isWE5$useState)(()=>state.current.isFocused && state.current.isFocusVisible);\n let updateState = (0, $isWE5$useCallback)(()=>setFocusVisible(state.current.isFocused && state.current.isFocusVisible), []);\n let onFocusChange = (0, $isWE5$useCallback)((isFocused)=>{\n state.current.isFocused = isFocused;\n setFocused(isFocused);\n updateState();\n }, [\n updateState\n ]);\n (0, $isWE5$useFocusVisibleListener)((isFocusVisible)=>{\n state.current.isFocusVisible = isFocusVisible;\n updateState();\n }, [], {\n isTextInput: isTextInput\n });\n let { focusProps: focusProps } = (0, $isWE5$useFocus)({\n isDisabled: within,\n onFocusChange: onFocusChange\n });\n let { focusWithinProps: focusWithinProps } = (0, $isWE5$useFocusWithin)({\n isDisabled: !within,\n onFocusWithinChange: onFocusChange\n });\n return {\n isFocused: isFocused,\n isFocusVisible: isFocusVisibleState,\n focusProps: within ? focusWithinProps : focusProps\n };\n}\n\n\nexport {$f7dceffc5ad7768b$export$4e328f61c538687f as useFocusRing};\n//# sourceMappingURL=useFocusRing.module.js.map\n","var i=Object.defineProperty;var d=(t,e,n)=>e in t?i(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var r=(t,e,n)=>(d(t,typeof e!=\"symbol\"?e+\"\":e,n),n);class o{constructor(){r(this,\"current\",this.detect());r(this,\"handoffState\",\"pending\");r(this,\"currentId\",0)}set(e){this.current!==e&&(this.handoffState=\"pending\",this.currentId=0,this.current=e)}reset(){this.set(this.detect())}nextId(){return++this.currentId}get isServer(){return this.current===\"server\"}get isClient(){return this.current===\"client\"}detect(){return typeof window==\"undefined\"||typeof document==\"undefined\"?\"server\":\"client\"}handoff(){this.handoffState===\"pending\"&&(this.handoffState=\"complete\")}get isHandoffComplete(){return this.handoffState===\"complete\"}}let s=new o;export{s as env};\n","import{env as t}from'./env.js';function l(n){var u;return t.isServer?null:n==null?document:(u=n==null?void 0:n.ownerDocument)!=null?u:document}function r(n){var u,o;return t.isServer?null:n==null?document:(o=(u=n==null?void 0:n.getRootNode)==null?void 0:u.call(n))!=null?o:document}function e(n){var u,o;return(o=(u=r(n))==null?void 0:u.activeElement)!=null?o:null}function d(n){return e(n)===n}export{e as getActiveElement,l as getOwnerDocument,r as getRootNode,d as isActiveElement};\n","function t(e){typeof queueMicrotask==\"function\"?queueMicrotask(e):Promise.resolve().then(e).catch(o=>setTimeout(()=>{throw o}))}export{t as microTask};\n","import{microTask as a}from'./micro-task.js';function o(){let s=[],r={addEventListener(e,t,n,i){return e.addEventListener(t,n,i),r.add(()=>e.removeEventListener(t,n,i))},requestAnimationFrame(...e){let t=requestAnimationFrame(...e);return r.add(()=>cancelAnimationFrame(t))},nextFrame(...e){return r.requestAnimationFrame(()=>r.requestAnimationFrame(...e))},setTimeout(...e){let t=setTimeout(...e);return r.add(()=>clearTimeout(t))},microTask(...e){let t={current:!0};return a(()=>{t.current&&e[0]()}),r.add(()=>{t.current=!1})},style(e,t,n){let i=e.style.getPropertyValue(t);return Object.assign(e.style,{[t]:n}),this.add(()=>{Object.assign(e.style,{[t]:i})})},group(e){let t=o();return e(t),this.add(()=>t.dispose())},add(e){return s.includes(e)||s.push(e),()=>{let t=s.indexOf(e);if(t>=0)for(let n of s.splice(t,1))n()}},dispose(){for(let e of s.splice(0))e()}};return r}export{o as disposables};\n","import{useEffect as s,useState as o}from\"react\";import{disposables as t}from'../utils/disposables.js';function p(){let[e]=o(t);return s(()=>()=>e.dispose(),[e]),e}export{p as useDisposables};\n","import{useEffect as f,useLayoutEffect as c}from\"react\";import{env as i}from'../utils/env.js';let n=(e,t)=>{i.isServer?f(e,t):c(e,t)};export{n as useIsoMorphicEffect};\n","import{useRef as t}from\"react\";import{useIsoMorphicEffect as o}from'./use-iso-morphic-effect.js';function s(e){let r=t(e);return o(()=>{r.current=e},[e]),r}export{s as useLatestValue};\n","import a from\"react\";import{useLatestValue as n}from'./use-latest-value.js';let o=function(t){let e=n(t);return a.useCallback((...r)=>e.current(...r),[e])};export{o as useEvent};\n","import{useRef as a,useState as m}from\"react\";import{getOwnerDocument as d}from'../utils/owner.js';import{useDisposables as g}from'./use-disposables.js';import{useEvent as u}from'./use-event.js';function E(e){let t=e.width/2,n=e.height/2;return{top:e.clientY-n,right:e.clientX+t,bottom:e.clientY+n,left:e.clientX-t}}function P(e,t){return!(!e||!t||e.right<t.left||e.left>t.right||e.bottom<t.top||e.top>t.bottom)}function w({disabled:e=!1}={}){let t=a(null),[n,l]=m(!1),r=g(),o=u(()=>{t.current=null,l(!1),r.dispose()}),f=u(s=>{if(r.dispose(),t.current===null){t.current=s.currentTarget,l(!0);{let i=d(s.currentTarget);r.addEventListener(i,\"pointerup\",o,!1),r.addEventListener(i,\"pointermove\",c=>{if(t.current){let p=E(c);l(P(p,t.current.getBoundingClientRect()))}},!1),r.addEventListener(i,\"pointercancel\",o,!1)}}});return{pressed:n,pressProps:e?{}:{onPointerDown:f,onPointerUp:o,onClick:o}}}export{w as useActivePress};\n","import{useMemo as t}from\"react\";function n(e){return t(()=>e,Object.values(e))}export{n as useSlot};\n","import n,{createContext as r,useContext as i}from\"react\";let e=r(void 0);function a(){return i(e)}function l({value:t,children:o}){return n.createElement(e.Provider,{value:t},o)}export{l as DisabledProvider,a as useDisabled};\n","function t(...r){return Array.from(new Set(r.flatMap(n=>typeof n==\"string\"?n.split(\" \"):[]))).filter(Boolean).join(\" \")}export{t as classNames};\n","function u(r,n,...a){if(r in n){let e=n[r];return typeof e==\"function\"?e(...a):e}let t=new Error(`Tried to handle \"${r}\" but there is no handler defined. Only defined handlers are: ${Object.keys(n).map(e=>`\"${e}\"`).join(\", \")}.`);throw Error.captureStackTrace&&Error.captureStackTrace(t,u),t}export{u as match};\n","import E,{Fragment as j,cloneElement as v,createElement as S,forwardRef as w,isValidElement as k,useCallback as x,useRef as M}from\"react\";import{classNames as N}from'./class-names.js';import{match as O}from'./match.js';var A=(a=>(a[a.None=0]=\"None\",a[a.RenderStrategy=1]=\"RenderStrategy\",a[a.Static=2]=\"Static\",a))(A||{}),C=(e=>(e[e.Unmount=0]=\"Unmount\",e[e.Hidden=1]=\"Hidden\",e))(C||{});function K(){let n=$();return x(r=>U({mergeRefs:n,...r}),[n])}function U({ourProps:n,theirProps:r,slot:e,defaultTag:a,features:s,visible:t=!0,name:l,mergeRefs:i}){i=i!=null?i:I;let o=P(r,n);if(t)return F(o,e,a,l,i);let y=s!=null?s:0;if(y&2){let{static:f=!1,...u}=o;if(f)return F(u,e,a,l,i)}if(y&1){let{unmount:f=!0,...u}=o;return O(f?0:1,{[0](){return null},[1](){return F({...u,hidden:!0,style:{display:\"none\"}},e,a,l,i)}})}return F(o,e,a,l,i)}function F(n,r={},e,a,s){let{as:t=e,children:l,refName:i=\"ref\",...o}=h(n,[\"unmount\",\"static\"]),y=n.ref!==void 0?{[i]:n.ref}:{},f=typeof l==\"function\"?l(r):l;\"className\"in o&&o.className&&typeof o.className==\"function\"&&(o.className=o.className(r)),o[\"aria-labelledby\"]&&o[\"aria-labelledby\"]===o.id&&(o[\"aria-labelledby\"]=void 0);let u={};if(r){let d=!1,p=[];for(let[c,T]of Object.entries(r))typeof T==\"boolean\"&&(d=!0),T===!0&&p.push(c.replace(/([A-Z])/g,g=>`-${g.toLowerCase()}`));if(d){u[\"data-headlessui-state\"]=p.join(\" \");for(let c of p)u[`data-${c}`]=\"\"}}if(b(t)&&(Object.keys(m(o)).length>0||Object.keys(m(u)).length>0))if(!k(f)||Array.isArray(f)&&f.length>1||D(f)){if(Object.keys(m(o)).length>0)throw new Error(['Passing props on \"Fragment\"!',\"\",`The current component <${a} /> is rendering a \"Fragment\".`,\"However we need to passthrough the following props:\",Object.keys(m(o)).concat(Object.keys(m(u))).map(d=>` - ${d}`).join(`\n`),\"\",\"You can apply a few solutions:\",['Add an `as=\"...\"` prop, to ensure that we render an actual element instead of a \"Fragment\".',\"Render a single element as the child so that we can forward the props onto that element.\"].map(d=>` - ${d}`).join(`\n`)].join(`\n`))}else{let d=f.props,p=d==null?void 0:d.className,c=typeof p==\"function\"?(...R)=>N(p(...R),o.className):N(p,o.className),T=c?{className:c}:{},g=P(f.props,m(h(o,[\"ref\"])));for(let R in u)R in g&&delete u[R];return v(f,Object.assign({},g,u,y,{ref:s(H(f),y.ref)},T))}return S(t,Object.assign({},h(o,[\"ref\"]),!b(t)&&y,!b(t)&&u),f)}function $(){let n=M([]),r=x(e=>{for(let a of n.current)a!=null&&(typeof a==\"function\"?a(e):a.current=e)},[]);return(...e)=>{if(!e.every(a=>a==null))return n.current=e,r}}function I(...n){return n.every(r=>r==null)?void 0:r=>{for(let e of n)e!=null&&(typeof e==\"function\"?e(r):e.current=r)}}function P(...n){var a;if(n.length===0)return{};if(n.length===1)return n[0];let r={},e={};for(let s of n)for(let t in s)t.startsWith(\"on\")&&typeof s[t]==\"function\"?((a=e[t])!=null||(e[t]=[]),e[t].push(s[t])):r[t]=s[t];if(r.disabled||r[\"aria-disabled\"])for(let s in e)/^(on(?:Click|Pointer|Mouse|Key)(?:Down|Up|Press)?)$/.test(s)&&(e[s]=[t=>{var l;return(l=t==null?void 0:t.preventDefault)==null?void 0:l.call(t)}]);for(let s in e)Object.assign(r,{[s](t,...l){let i=e[s];for(let o of i){if((t instanceof Event||(t==null?void 0:t.nativeEvent)instanceof Event)&&t.defaultPrevented)return;o(t,...l)}}});return r}function V(...n){var a;if(n.length===0)return{};if(n.length===1)return n[0];let r={},e={};for(let s of n)for(let t in s)t.startsWith(\"on\")&&typeof s[t]==\"function\"?((a=e[t])!=null||(e[t]=[]),e[t].push(s[t])):r[t]=s[t];for(let s in e)Object.assign(r,{[s](...t){let l=e[s];for(let i of l)i==null||i(...t)}});return r}function Y(n){var r;return Object.assign(w(n),{displayName:(r=n.displayName)!=null?r:n.name})}function m(n){let r=Object.assign({},n);for(let e in r)r[e]===void 0&&delete r[e];return r}function h(n,r=[]){let e=Object.assign({},n);for(let a of r)a in e&&delete e[a];return e}function H(n){return E.version.split(\".\")[0]>=\"19\"?n.props.ref:n.ref}function b(n){return n===j||n===Symbol.for(\"react.fragment\")}function D(n){return b(n.type)}export{A as RenderFeatures,C as RenderStrategy,m as compact,Y as forwardRefWithAs,b as isFragment,D as isFragmentInstance,V as mergeProps,K as useRender};\n","import{useRef as o,useState as f}from\"react\";import{flushSync as a}from\"react-dom\";import{useEvent as m}from'./use-event.js';function b(l,r,c){let[i,s]=f(c),e=l!==void 0,t=o(e),u=o(!1),d=o(!1);return e&&!t.current&&!u.current?(u.current=!0,t.current=e,console.error(\"A component is changing from uncontrolled to controlled. This may be caused by the value changing from undefined to a defined value, which should not happen.\")):!e&&t.current&&!d.current&&(d.current=!0,t.current=e,console.error(\"A component is changing from controlled to uncontrolled. This may be caused by the value changing from a defined value to undefined, which should not happen.\")),[e?l:i,m(n=>(e||a(()=>s(n)),r==null?void 0:r(n)))]}export{b as useControllable};\n","import{useState as u}from\"react\";function l(e){let[t]=u(e);return t}export{l as useDefaultValue};\n","import{isValidElement as f}from\"react\";function p(t={},i=null,n=[]){for(let[e,o]of Object.entries(t))s(n,r(i,e),o);return n}function r(t,i){return t?t+\"[\"+i+\"]\":i}function s(t,i,n){if(Array.isArray(n))for(let[e,o]of n.entries())s(t,r(i,e.toString()),o);else n instanceof Date?t.push([i,n.toISOString()]):typeof n==\"boolean\"?t.push([i,n?\"1\":\"0\"]):typeof n==\"string\"?t.push([i,n]):typeof n==\"number\"?t.push([i,`${n}`]):n==null?t.push([i,\"\"]):c(n)&&!f(n)&&p(n,i,t)}function g(t){var n,e;let i=(n=t==null?void 0:t.form)!=null?n:t.closest(\"form\");if(i){for(let o of i.elements)if(o!==t&&(o.tagName===\"INPUT\"&&o.type===\"submit\"||o.tagName===\"BUTTON\"&&o.type===\"submit\"||o.nodeName===\"INPUT\"&&o.type===\"image\")){o.click();return}(e=i.requestSubmit)==null||e.call(i)}}function c(t){if(Object.prototype.toString.call(t)!==\"[object Object]\")return!1;let i=Object.getPrototypeOf(t);return i===null||Object.getPrototypeOf(i)===null}export{g as attemptSubmit,p as objectToFormEntries};\n","import{forwardRefWithAs as i,useRender as p}from'../utils/render.js';let a=\"span\";var s=(e=>(e[e.None=1]=\"None\",e[e.Focusable=2]=\"Focusable\",e[e.Hidden=4]=\"Hidden\",e))(s||{});function l(t,r){var n;let{features:d=1,...e}=t,o={ref:r,\"aria-hidden\":(d&2)===2?!0:(n=e[\"aria-hidden\"])!=null?n:void 0,hidden:(d&4)===4?!0:void 0,style:{position:\"fixed\",top:1,left:1,width:1,height:0,padding:0,margin:-1,overflow:\"hidden\",clip:\"rect(0, 0, 0, 0)\",whiteSpace:\"nowrap\",borderWidth:\"0\",...(d&4)===4&&(d&2)!==2&&{display:\"none\"}}};return p()({ourProps:o,theirProps:e,slot:{},defaultTag:a,name:\"Hidden\"})}let f=i(l);export{f as Hidden,s as HiddenFeatures};\n","import o,{createContext as H,useContext as E,useEffect as m,useState as u}from\"react\";import{createPortal as g}from\"react-dom\";import{useDisposables as h}from'../hooks/use-disposables.js';import{objectToFormEntries as x}from'../utils/form.js';import{compact as y}from'../utils/render.js';import{Hidden as l,HiddenFeatures as d}from'./hidden.js';let f=H(null);function W(t){let[e,r]=u(null);return o.createElement(f.Provider,{value:{target:e}},t.children,o.createElement(l,{features:d.Hidden,ref:r}))}function c({children:t}){let e=E(f);if(!e)return o.createElement(o.Fragment,null,t);let{target:r}=e;return r?g(o.createElement(o.Fragment,null,t),r):null}function j({data:t,form:e,disabled:r,onReset:n,overrides:F}){let[i,a]=u(null),p=h();return m(()=>{if(n&&i)return p.addEventListener(i,\"reset\",n)},[i,e,n]),o.createElement(c,null,o.createElement(C,{setForm:a,formId:e}),x(t).map(([s,v])=>o.createElement(l,{features:d.Hidden,...y({key:s,as:\"input\",type:\"hidden\",hidden:!0,readOnly:!0,form:e,disabled:r,name:s,value:v,...F})})))}function C({setForm:t,formId:e}){return m(()=>{if(e){let r=document.getElementById(e);r&&t(r)}},[t,e]),e?null:o.createElement(l,{features:d.Hidden,as:\"input\",type:\"hidden\",hidden:!0,readOnly:!0,ref:r=>{if(!r)return;let n=r.closest(\"form\");n&&t(n)}})}export{j as FormFields,W as FormFieldsProvider,c as HoistFormFields};\n","import n,{createContext as d,useContext as i}from\"react\";let e=d(void 0);function u(){return i(e)}function f({id:t,children:r}){return n.createElement(e.Provider,{value:t},r)}export{f as IdProvider,u as useProvidedId};\n","function o(e){return typeof e!=\"object\"||e===null?!1:\"nodeType\"in e}function t(e){return o(e)&&\"tagName\"in e}function n(e){return t(e)&&\"accessKey\"in e}function i(e){return t(e)&&\"tabIndex\"in e}function r(e){return t(e)&&\"style\"in e}function u(e){return n(e)&&e.nodeName===\"IFRAME\"}function l(e){return n(e)&&e.nodeName===\"INPUT\"}function s(e){return n(e)&&e.nodeName===\"TEXTAREA\"}function m(e){return n(e)&&e.nodeName===\"LABEL\"}function a(e){return n(e)&&e.nodeName===\"FIELDSET\"}function E(e){return n(e)&&e.nodeName===\"LEGEND\"}function L(e){return t(e)?e.matches('a[href],audio[controls],button,details,embed,iframe,img[usemap],input:not([type=\"hidden\"]),label,select,textarea,video[controls]'):!1}export{r as hasInlineStyle,t as isElement,n as isHTMLElement,a as isHTMLFieldSetElement,u as isHTMLIframeElement,l as isHTMLInputElement,m as isHTMLLabelElement,E as isHTMLLegendElement,s as isHTMLTextAreaElement,i as isHTMLorSVGElement,L as isInteractiveElement,o as isNode};\n","import*as n from'./dom.js';function s(l){let e=l.parentElement,t=null;for(;e&&!n.isHTMLFieldSetElement(e);)n.isHTMLLegendElement(e)&&(t=e),e=e.parentElement;let i=(e==null?void 0:e.getAttribute(\"disabled\"))===\"\";return i&&r(t)?!1:i}function r(l){if(!l)return!1;let e=l.previousElementSibling;for(;e!==null;){if(n.isHTMLLegendElement(e))return!1;e=e.previousElementSibling}return!0}export{s as isDisabledReactIssue7711};\n","import{useEffect as l,useRef as i}from\"react\";import{useEvent as r}from'./use-event.js';let u=Symbol();function T(t,n=!0){return Object.assign(t,{[u]:n})}function y(...t){let n=i(t);l(()=>{n.current=t},[t]);let c=r(e=>{for(let o of n.current)o!=null&&(typeof o==\"function\"?o(e):o.current=e)});return t.every(e=>e==null||(e==null?void 0:e[u]))?void 0:c}export{T as optionalRef,y as useSyncRefs};\n","\"use client\";import m,{createContext as D,useContext as d,useMemo as u,useState as T}from\"react\";import{useEvent as P}from'../../hooks/use-event.js';import{useId as g}from'../../hooks/use-id.js';import{useIsoMorphicEffect as x}from'../../hooks/use-iso-morphic-effect.js';import{useSlot as y}from'../../hooks/use-slot.js';import{useSyncRefs as E}from'../../hooks/use-sync-refs.js';import{useDisabled as v}from'../../internal/disabled.js';import{forwardRefWithAs as R,useRender as S}from'../../utils/render.js';let a=D(null);a.displayName=\"DescriptionContext\";function f(){let r=d(a);if(r===null){let e=new Error(\"You used a <Description /> component, but it is not inside a relevant parent.\");throw Error.captureStackTrace&&Error.captureStackTrace(e,f),e}return r}function w(){var r,e;return(e=(r=d(a))==null?void 0:r.value)!=null?e:void 0}function H(){let[r,e]=T([]);return[r.length>0?r.join(\" \"):void 0,u(()=>function(t){let i=P(n=>(e(o=>[...o,n]),()=>e(o=>{let s=o.slice(),p=s.indexOf(n);return p!==-1&&s.splice(p,1),s}))),l=u(()=>({register:i,slot:t.slot,name:t.name,props:t.props,value:t.value}),[i,t.slot,t.name,t.props,t.value]);return m.createElement(a.Provider,{value:l},t.children)},[e])]}let I=\"p\";function C(r,e){let c=g(),t=v(),{id:i=`headlessui-description-${c}`,...l}=r,n=f(),o=E(e);x(()=>n.register(i),[i,n.register]);let s=y({...n.slot,disabled:t||!1}),p={ref:o,...n.props,id:i};return S()({ourProps:p,theirProps:l,slot:s,defaultTag:I,name:n.name||\"Description\"})}let _=R(C),M=Object.assign(_,{});export{M as Description,w as useDescribedBy,H as useDescriptions};\n","var o=(r=>(r.Space=\" \",r.Enter=\"Enter\",r.Escape=\"Escape\",r.Backspace=\"Backspace\",r.Delete=\"Delete\",r.ArrowLeft=\"ArrowLeft\",r.ArrowUp=\"ArrowUp\",r.ArrowRight=\"ArrowRight\",r.ArrowDown=\"ArrowDown\",r.Home=\"Home\",r.End=\"End\",r.PageUp=\"PageUp\",r.PageDown=\"PageDown\",r.Tab=\"Tab\",r))(o||{});export{o as Keys};\n","\"use client\";import R,{createContext as D,useContext as h,useMemo as v,useState as k}from\"react\";import{useEvent as P}from'../../hooks/use-event.js';import{useId as _}from'../../hooks/use-id.js';import{useIsoMorphicEffect as S}from'../../hooks/use-iso-morphic-effect.js';import{useSlot as A}from'../../hooks/use-slot.js';import{useSyncRefs as B}from'../../hooks/use-sync-refs.js';import{useDisabled as F}from'../../internal/disabled.js';import{useProvidedId as M}from'../../internal/id.js';import*as m from'../../utils/dom.js';import{forwardRefWithAs as I,useRender as H}from'../../utils/render.js';let L=D(null);L.displayName=\"LabelContext\";function C(){let n=h(L);if(n===null){let l=new Error(\"You used a <Label /> component, but it is not inside a relevant parent.\");throw Error.captureStackTrace&&Error.captureStackTrace(l,C),l}return n}function N(n){var a,e,o;let l=(e=(a=h(L))==null?void 0:a.value)!=null?e:void 0;return((o=n==null?void 0:n.length)!=null?o:0)>0?[l,...n].filter(Boolean).join(\" \"):l}function V({inherit:n=!1}={}){let l=N(),[a,e]=k([]),o=n?[l,...a].filter(Boolean):a;return[o.length>0?o.join(\" \"):void 0,v(()=>function(t){let p=P(i=>(e(u=>[...u,i]),()=>e(u=>{let d=u.slice(),f=d.indexOf(i);return f!==-1&&d.splice(f,1),d}))),b=v(()=>({register:p,slot:t.slot,name:t.name,props:t.props,value:t.value}),[p,t.slot,t.name,t.props,t.value]);return R.createElement(L.Provider,{value:b},t.children)},[e])]}let G=\"label\";function U(n,l){var y;let a=_(),e=C(),o=M(),T=F(),{id:t=`headlessui-label-${a}`,htmlFor:p=o!=null?o:(y=e.props)==null?void 0:y.htmlFor,passive:b=!1,...i}=n,u=B(l);S(()=>e.register(t),[t,e.register]);let d=P(s=>{let g=s.currentTarget;if(!(s.target!==s.currentTarget&&m.isInteractiveElement(s.target))&&(m.isHTMLLabelElement(g)&&s.preventDefault(),e.props&&\"onClick\"in e.props&&typeof e.props.onClick==\"function\"&&e.props.onClick(s),m.isHTMLLabelElement(g))){let r=document.getElementById(g.htmlFor);if(r){let E=r.getAttribute(\"disabled\");if(E===\"true\"||E===\"\")return;let x=r.getAttribute(\"aria-disabled\");if(x===\"true\"||x===\"\")return;(m.isHTMLInputElement(r)&&(r.type===\"file\"||r.type===\"radio\"||r.type===\"checkbox\")||r.role===\"radio\"||r.role===\"checkbox\"||r.role===\"switch\")&&r.click(),r.focus({preventScroll:!0})}}}),f=A({...e.slot,disabled:T||!1}),c={ref:u,...e.props,id:t,htmlFor:p,onClick:d};return b&&(\"onClick\"in c&&(delete c.htmlFor,delete c.onClick),\"onClick\"in i&&delete i.onClick),H()({ourProps:c,theirProps:i,slot:f,defaultTag:p?G:\"div\",name:e.name||\"Label\"})}let j=I(U),Z=Object.assign(j,{});export{Z as Label,C as useLabelContext,N as useLabelledBy,V as useLabels};\n","import{useCallback as n}from\"react\";function l(e,r){return e!==null&&r!==null&&typeof e==\"object\"&&typeof r==\"object\"&&\"id\"in e&&\"id\"in r?e.id===r.id:e===r}function u(e=l){return n((r,t)=>{if(typeof e==\"string\"){let o=e;return(r==null?void 0:r[o])===(t==null?void 0:t[o])}return e(r,t)},[e])}export{u as useByComparator};\n","import{useState as l}from\"react\";import{disposables as m}from'../utils/disposables.js';import{useIsoMorphicEffect as p}from'./use-iso-morphic-effect.js';function h(i){if(i===null)return{width:0,height:0};let{width:t,height:e}=i.getBoundingClientRect();return{width:t,height:e}}function w(i,t,e=!1){let[r,f]=l(()=>h(t));return p(()=>{if(!t||!i)return;let n=m();return n.requestAnimationFrame(function s(){n.requestAnimationFrame(s),f(u=>{let o=h(t);return o.width===u.width&&o.height===u.height?u:o})}),()=>{n.dispose()}},[t,i]),e?{width:`${r.width}px`,height:`${r.height}px`}:r}export{w as useElementSize};\n","var g=(f=>(f[f.Left=0]=\"Left\",f[f.Right=2]=\"Right\",f))(g||{});export{g as MouseButton};\n","import{useRef as l}from\"react\";import{MouseButton as f}from'../components/mouse.js';import{isDisabledReactIssue7711 as n}from'../utils/bugs.js';import{useEvent as o}from'./use-event.js';function s(t){let r=l(null),u=o(e=>{r.current=e.pointerType,!n(e.currentTarget)&&e.pointerType===\"mouse\"&&e.button===f.Left&&(e.preventDefault(),t(e))}),i=o(e=>{r.current!==\"mouse\"&&(n(e.currentTarget)||t(e))});return{onPointerDown:u,onClick:i}}export{s as useHandleToggle};\n","class a extends Map{constructor(t){super();this.factory=t}get(t){let e=super.get(t);return e===void 0&&(e=this.factory(t),this.set(t,e)),e}}export{a as DefaultMap};\n","var h=Object.defineProperty;var v=(t,e,r)=>e in t?h(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var S=(t,e,r)=>(v(t,typeof e!=\"symbol\"?e+\"\":e,r),r),b=(t,e,r)=>{if(!e.has(t))throw TypeError(\"Cannot \"+r)};var i=(t,e,r)=>(b(t,e,\"read from private field\"),r?r.call(t):e.get(t)),c=(t,e,r)=>{if(e.has(t))throw TypeError(\"Cannot add the same private member more than once\");e instanceof WeakSet?e.add(t):e.set(t,r)},u=(t,e,r,s)=>(b(t,e,\"write to private field\"),s?s.call(t,r):e.set(t,r),r);var n,a,o;import{DefaultMap as m}from'./utils/default-map.js';import{disposables as y}from'./utils/disposables.js';import{env as d}from'./utils/env.js';class T{constructor(e){c(this,n,{});c(this,a,new m(()=>new Set));c(this,o,new Set);S(this,\"disposables\",y());u(this,n,e),d.isServer&&this.disposables.microTask(()=>{this.dispose()})}dispose(){this.disposables.dispose()}get state(){return i(this,n)}subscribe(e,r){if(d.isServer)return()=>{};let s={selector:e,callback:r,current:e(i(this,n))};return i(this,o).add(s),this.disposables.add(()=>{i(this,o).delete(s)})}on(e,r){return d.isServer?()=>{}:(i(this,a).get(e).add(r),this.disposables.add(()=>{i(this,a).get(e).delete(r)}))}send(e){let r=this.reduce(i(this,n),e);if(r!==i(this,n)){u(this,n,r);for(let s of i(this,o)){let l=s.selector(i(this,n));j(s.current,l)||(s.current=l,s.callback(l))}for(let s of i(this,a).get(e.type))s(i(this,n),e)}}}n=new WeakMap,a=new WeakMap,o=new WeakMap;function j(t,e){return Object.is(t,e)?!0:typeof t!=\"object\"||t===null||typeof e!=\"object\"||e===null?!1:Array.isArray(t)&&Array.isArray(e)?t.length!==e.length?!1:f(t[Symbol.iterator](),e[Symbol.iterator]()):t instanceof Map&&e instanceof Map||t instanceof Set&&e instanceof Set?t.size!==e.size?!1:f(t.entries(),e.entries()):p(t)&&p(e)?f(Object.entries(t)[Symbol.iterator](),Object.entries(e)[Symbol.iterator]()):!1}function f(t,e){do{let r=t.next(),s=e.next();if(r.done&&s.done)return!0;if(r.done||s.done||!Object.is(r.value,s.value))return!1}while(!0)}function p(t){if(Object.prototype.toString.call(t)!==\"[object Object]\")return!1;let e=Object.getPrototypeOf(t);return e===null||Object.getPrototypeOf(e)===null}function k(t){let[e,r]=t(),s=y();return(...l)=>{e(...l),s.dispose(),s.microTask(r)}}export{T as Machine,k as batch,j as shallowEqual};\n","var a=Object.defineProperty;var r=(e,c,t)=>c in e?a(e,c,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[c]=t;var p=(e,c,t)=>(r(e,typeof c!=\"symbol\"?c+\"\":c,t),t);import{Machine as d}from'../machine.js';import{DefaultMap as l}from'../utils/default-map.js';import{match as u}from'../utils/match.js';var k=(t=>(t[t.Push=0]=\"Push\",t[t.Pop=1]=\"Pop\",t))(k||{});let y={[0](e,c){let t=c.id,s=e.stack,i=e.stack.indexOf(t);if(i!==-1){let n=e.stack.slice();return n.splice(i,1),n.push(t),s=n,{...e,stack:s}}return{...e,stack:[...e.stack,t]}},[1](e,c){let t=c.id,s=e.stack.indexOf(t);if(s===-1)return e;let i=e.stack.slice();return i.splice(s,1),{...e,stack:i}}};class o extends d{constructor(){super(...arguments);p(this,\"actions\",{push:t=>this.send({type:0,id:t}),pop:t=>this.send({type:1,id:t})});p(this,\"selectors\",{isTop:(t,s)=>t.stack[t.stack.length-1]===s,inStack:(t,s)=>t.stack.includes(s)})}static new(){return new o({stack:[]})}reduce(t,s){return u(s.type,y,t,s)}}const x=new l(()=>o.new());export{k as ActionTypes,x as stackMachines};\n","/**\n * @license React\n * use-sync-external-store-with-selector.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\");\nfunction is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useSyncExternalStore = React.useSyncExternalStore,\n useRef = React.useRef,\n useEffect = React.useEffect,\n useMemo = React.useMemo,\n useDebugValue = React.useDebugValue;\nexports.useSyncExternalStoreWithSelector = function (\n subscribe,\n getSnapshot,\n getServerSnapshot,\n selector,\n isEqual\n) {\n var instRef = useRef(null);\n if (null === instRef.current) {\n var inst = { hasValue: !1, value: null };\n instRef.current = inst;\n } else inst = instRef.current;\n instRef = useMemo(\n function () {\n function memoizedSelector(nextSnapshot) {\n if (!hasMemo) {\n hasMemo = !0;\n memoizedSnapshot = nextSnapshot;\n nextSnapshot = selector(nextSnapshot);\n if (void 0 !== isEqual && inst.hasValue) {\n var currentSelection = inst.value;\n if (isEqual(currentSelection, nextSnapshot))\n return (memoizedSelection = currentSelection);\n }\n return (memoizedSelection = nextSnapshot);\n }\n currentSelection = memoizedSelection;\n if (objectIs(memoizedSnapshot, nextSnapshot)) return currentSelection;\n var nextSelection = selector(nextSnapshot);\n if (void 0 !== isEqual && isEqual(currentSelection, nextSelection))\n return (memoizedSnapshot = nextSnapshot), currentSelection;\n memoizedSnapshot = nextSnapshot;\n return (memoizedSelection = nextSelection);\n }\n var hasMemo = !1,\n memoizedSnapshot,\n memoizedSelection,\n maybeGetServerSnapshot =\n void 0 === getServerSnapshot ? null : getServerSnapshot;\n return [\n function () {\n return memoizedSelector(getSnapshot());\n },\n null === maybeGetServerSnapshot\n ? void 0\n : function () {\n return memoizedSelector(maybeGetServerSnapshot());\n }\n ];\n },\n [getSnapshot, getServerSnapshot, selector, isEqual]\n );\n var value = useSyncExternalStore(subscribe, instRef[0], instRef[1]);\n useEffect(\n function () {\n inst.hasValue = !0;\n inst.value = value;\n },\n [value]\n );\n useDebugValue(value);\n return value;\n};\n","/**\n * @license React\n * use-sync-external-store-with-selector.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n }\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());\n var React = require(\"react\"),\n objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useSyncExternalStore = React.useSyncExternalStore,\n useRef = React.useRef,\n useEffect = React.useEffect,\n useMemo = React.useMemo,\n useDebugValue = React.useDebugValue;\n exports.useSyncExternalStoreWithSelector = function (\n subscribe,\n getSnapshot,\n getServerSnapshot,\n selector,\n isEqual\n ) {\n var instRef = useRef(null);\n if (null === instRef.current) {\n var inst = { hasValue: !1, value: null };\n instRef.current = inst;\n } else inst = instRef.current;\n instRef = useMemo(\n function () {\n function memoizedSelector(nextSnapshot) {\n if (!hasMemo) {\n hasMemo = !0;\n memoizedSnapshot = nextSnapshot;\n nextSnapshot = selector(nextSnapshot);\n if (void 0 !== isEqual && inst.hasValue) {\n var currentSelection = inst.value;\n if (isEqual(currentSelection, nextSnapshot))\n return (memoizedSelection = currentSelection);\n }\n return (memoizedSelection = nextSnapshot);\n }\n currentSelection = memoizedSelection;\n if (objectIs(memoizedSnapshot, nextSnapshot))\n return currentSelection;\n var nextSelection = selector(nextSnapshot);\n if (void 0 !== isEqual && isEqual(currentSelection, nextSelection))\n return (memoizedSnapshot = nextSnapshot), currentSelection;\n memoizedSnapshot = nextSnapshot;\n return (memoizedSelection = nextSelection);\n }\n var hasMemo = !1,\n memoizedSnapshot,\n memoizedSelection,\n maybeGetServerSnapshot =\n void 0 === getServerSnapshot ? null : getServerSnapshot;\n return [\n function () {\n return memoizedSelector(getSnapshot());\n },\n null === maybeGetServerSnapshot\n ? void 0\n : function () {\n return memoizedSelector(maybeGetServerSnapshot());\n }\n ];\n },\n [getSnapshot, getServerSnapshot, selector, isEqual]\n );\n var value = useSyncExternalStore(subscribe, instRef[0], instRef[1]);\n useEffect(\n function () {\n inst.hasValue = !0;\n inst.value = value;\n },\n [value]\n );\n useDebugValue(value);\n return value;\n };\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());\n })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/use-sync-external-store-with-selector.production.js');\n} else {\n module.exports = require('./cjs/use-sync-external-store-with-selector.development.js');\n}\n","import{useSyncExternalStoreWithSelector as a}from\"use-sync-external-store/with-selector\";import{useEvent as t}from'./hooks/use-event.js';import{shallowEqual as o}from'./machine.js';function S(e,n,r=o){return a(t(i=>e.subscribe(s,i)),t(()=>e.state),t(()=>e.state),t(n),r)}function s(e){return e}export{S as useSlice};\n","import{useCallback as n,useId as u}from\"react\";import{stackMachines as p}from'../machines/stack-machine.js';import{useSlice as f}from'../react-glue.js';import{useIsoMorphicEffect as a}from'./use-iso-morphic-effect.js';function I(o,s){let t=u(),r=p.get(s),[i,c]=f(r,n(e=>[r.selectors.isTop(e,t),r.selectors.inStack(e,t)],[r,t]));return a(()=>{if(o)return r.actions.push(t),()=>r.actions.pop(t)},[r,o,t]),o?c?i:!0:!1}export{I as useIsTopLayer};\n","import{disposables as M}from'../utils/disposables.js';import{getOwnerDocument as b}from'../utils/owner.js';import{useIsTopLayer as L}from'./use-is-top-layer.js';import{useIsoMorphicEffect as T}from'./use-iso-morphic-effect.js';let f=new Map,u=new Map;function h(t){var e;let r=(e=u.get(t))!=null?e:0;return u.set(t,r+1),r!==0?()=>m(t):(f.set(t,{\"aria-hidden\":t.getAttribute(\"aria-hidden\"),inert:t.inert}),t.setAttribute(\"aria-hidden\",\"true\"),t.inert=!0,()=>m(t))}function m(t){var i;let r=(i=u.get(t))!=null?i:1;if(r===1?u.delete(t):u.set(t,r-1),r!==1)return;let e=f.get(t);e&&(e[\"aria-hidden\"]===null?t.removeAttribute(\"aria-hidden\"):t.setAttribute(\"aria-hidden\",e[\"aria-hidden\"]),t.inert=e.inert,f.delete(t))}function y(t,{allowed:r,disallowed:e}={}){let i=L(t,\"inert-others\");T(()=>{var d,c;if(!i)return;let a=M();for(let n of(d=e==null?void 0:e())!=null?d:[])n&&a.add(h(n));let s=(c=r==null?void 0:r())!=null?c:[];for(let n of s){if(!n)continue;let l=b(n);if(!l)continue;let o=n.parentElement;for(;o&&o!==l.body;){for(let p of o.children)s.some(E=>p.contains(E))||a.add(h(p));o=o.parentElement}}return a.dispose},[i,r,e])}export{y as useInertOthers};\n","import{useEffect as l}from\"react\";import{disposables as u}from'../utils/disposables.js';import*as c from'../utils/dom.js';import{useLatestValue as d}from'./use-latest-value.js';function p(s,n,o){let i=d(t=>{let e=t.getBoundingClientRect();e.x===0&&e.y===0&&e.width===0&&e.height===0&&o()});l(()=>{if(!s)return;let t=n===null?null:c.isHTMLElement(n)?n:n.current;if(!t)return;let e=u();if(typeof ResizeObserver!=\"undefined\"){let r=new ResizeObserver(()=>i.current(t));r.observe(t),e.add(()=>r.disconnect())}if(typeof IntersectionObserver!=\"undefined\"){let r=new IntersectionObserver(()=>i.current(t));r.observe(t),e.add(()=>r.disconnect())}return()=>e.dispose()},[n,i,s])}export{p as useOnDisappear};\n","import{disposables as p}from'./disposables.js';import*as y from'./dom.js';import{match as L}from'./match.js';import{getActiveElement as b,getOwnerDocument as F,getRootNode as f}from'./owner.js';let E=[\"[contentEditable=true]\",\"[tabindex]\",\"a[href]\",\"area[href]\",\"button:not([disabled])\",\"iframe\",\"input:not([disabled])\",\"select:not([disabled])\",\"details>summary\",\"textarea:not([disabled])\"].map(e=>`${e}:not([tabindex='-1'])`).join(\",\"),S=[\"[data-autofocus]\"].map(e=>`${e}:not([tabindex='-1'])`).join(\",\");var T=(o=>(o[o.First=1]=\"First\",o[o.Previous=2]=\"Previous\",o[o.Next=4]=\"Next\",o[o.Last=8]=\"Last\",o[o.WrapAround=16]=\"WrapAround\",o[o.NoScroll=32]=\"NoScroll\",o[o.AutoFocus=64]=\"AutoFocus\",o))(T||{}),A=(n=>(n[n.Error=0]=\"Error\",n[n.Overflow=1]=\"Overflow\",n[n.Success=2]=\"Success\",n[n.Underflow=3]=\"Underflow\",n))(A||{}),O=(t=>(t[t.Previous=-1]=\"Previous\",t[t.Next=1]=\"Next\",t))(O||{});function x(e=document.body){return e==null?[]:Array.from(e.querySelectorAll(E)).sort((r,t)=>Math.sign((r.tabIndex||Number.MAX_SAFE_INTEGER)-(t.tabIndex||Number.MAX_SAFE_INTEGER)))}function h(e=document.body){return e==null?[]:Array.from(e.querySelectorAll(S)).sort((r,t)=>Math.sign((r.tabIndex||Number.MAX_SAFE_INTEGER)-(t.tabIndex||Number.MAX_SAFE_INTEGER)))}var I=(t=>(t[t.Strict=0]=\"Strict\",t[t.Loose=1]=\"Loose\",t))(I||{});function H(e,r=0){var t;return e===((t=F(e))==null?void 0:t.body)?!1:L(r,{[0](){return e.matches(E)},[1](){let l=e;for(;l!==null;){if(l.matches(E))return!0;l=l.parentElement}return!1}})}function K(e){p().nextFrame(()=>{let r=b(e);r&&y.isHTMLorSVGElement(r)&&!H(r,0)&&w(e)})}var g=(t=>(t[t.Keyboard=0]=\"Keyboard\",t[t.Mouse=1]=\"Mouse\",t))(g||{});typeof window!=\"undefined\"&&typeof document!=\"undefined\"&&(document.addEventListener(\"keydown\",e=>{e.metaKey||e.altKey||e.ctrlKey||(document.documentElement.dataset.headlessuiFocusVisible=\"\")},!0),document.addEventListener(\"click\",e=>{e.detail===1?delete document.documentElement.dataset.headlessuiFocusVisible:e.detail===0&&(document.documentElement.dataset.headlessuiFocusVisible=\"\")},!0));function w(e){e==null||e.focus({preventScroll:!0})}let _=[\"textarea\",\"input\"].join(\",\");function P(e){var r,t;return(t=(r=e==null?void 0:e.matches)==null?void 0:r.call(e,_))!=null?t:!1}function G(e,r=t=>t){return e.slice().sort((t,l)=>{let n=r(t),a=r(l);if(n===null||a===null)return 0;let u=n.compareDocumentPosition(a);return u&Node.DOCUMENT_POSITION_FOLLOWING?-1:u&Node.DOCUMENT_POSITION_PRECEDING?1:0})}function R(e,r,t=e===null?document.body:f(e)){return v(x(t),r,{relativeTo:e})}function v(e,r,{sorted:t=!0,relativeTo:l=null,skipElements:n=[]}={}){let a=Array.isArray(e)?e.length>0?f(e[0]):document:f(e),u=Array.isArray(e)?t?G(e):e:r&64?h(e):x(e);n.length>0&&u.length>1&&(u=u.filter(i=>!n.some(d=>d!=null&&\"current\"in d?(d==null?void 0:d.current)===i:d===i))),l=l!=null?l:a==null?void 0:a.activeElement;let o=(()=>{if(r&5)return 1;if(r&10)return-1;throw new Error(\"Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last\")})(),M=(()=>{if(r&1)return 0;if(r&2)return Math.max(0,u.indexOf(l))-1;if(r&4)return Math.max(0,u.indexOf(l))+1;if(r&8)return u.length-1;throw new Error(\"Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last\")})(),N=r&32?{preventScroll:!0}:{},m=0,c=u.length,s;do{if(m>=c||m+c<=0)return 0;let i=M+m;if(r&16)i=(i+c)%c;else{if(i<0)return 3;if(i>=c)return 1}s=u[i],s==null||s.focus(N),m+=o}while(s!==b(s));return r&6&&P(s)&&s.select(),2}export{T as Focus,A as FocusResult,I as FocusableMode,w as focusElement,R as focusFrom,v as focusIn,E as focusableSelector,h as getAutoFocusableElements,x as getFocusableElements,H as isFocusableElement,K as restoreFocusIfNecessary,G as sortByDomNode};\n","function t(){return/iPhone/gi.test(window.navigator.platform)||/Mac/gi.test(window.navigator.platform)&&window.navigator.maxTouchPoints>0}function i(){return/Android/gi.test(window.navigator.userAgent)}function n(){return t()||i()}export{i as isAndroid,t as isIOS,n as isMobile};\n","import{useEffect as c}from\"react\";import{useLatestValue as a}from'./use-latest-value.js';function i(t,e,o,n){let u=a(o);c(()=>{if(!t)return;function r(m){u.current(m)}return document.addEventListener(e,r,n),()=>document.removeEventListener(e,r,n)},[t,e,n])}export{i as useDocumentEvent};\n","import{useEffect as a}from\"react\";import{useLatestValue as f}from'./use-latest-value.js';function s(t,e,o,n){let i=f(o);a(()=>{if(!t)return;function r(d){i.current(d)}return window.addEventListener(e,r,n),()=>window.removeEventListener(e,r,n)},[t,e,n])}export{s as useWindowEvent};\n","import{useCallback as T,useRef as E}from\"react\";import*as d from'../utils/dom.js';import{FocusableMode as g,isFocusableElement as y}from'../utils/focus-management.js';import{isMobile as p}from'../utils/platform.js';import{useDocumentEvent as a}from'./use-document-event.js';import{useLatestValue as L}from'./use-latest-value.js';import{useWindowEvent as x}from'./use-window-event.js';const C=30;function k(o,f,h){let m=L(h),s=T(function(e,c){if(e.defaultPrevented)return;let r=c(e);if(r===null||!r.getRootNode().contains(r)||!r.isConnected)return;let M=function u(n){return typeof n==\"function\"?u(n()):Array.isArray(n)||n instanceof Set?n:[n]}(f);for(let u of M)if(u!==null&&(u.contains(r)||e.composed&&e.composedPath().includes(u)))return;return!y(r,g.Loose)&&r.tabIndex!==-1&&e.preventDefault(),m.current(e,r)},[m,f]),i=E(null);a(o,\"pointerdown\",t=>{var e,c;p()||(i.current=((c=(e=t.composedPath)==null?void 0:e.call(t))==null?void 0:c[0])||t.target)},!0),a(o,\"pointerup\",t=>{if(p()||!i.current)return;let e=i.current;return i.current=null,s(t,()=>e)},!0);let l=E({x:0,y:0});a(o,\"touchstart\",t=>{l.current.x=t.touches[0].clientX,l.current.y=t.touches[0].clientY},!0),a(o,\"touchend\",t=>{let e={x:t.changedTouches[0].clientX,y:t.changedTouches[0].clientY};if(!(Math.abs(e.x-l.current.x)>=C||Math.abs(e.y-l.current.y)>=C))return s(t,()=>d.isHTMLorSVGElement(t.target)?t.target:null)},!0),x(o,\"blur\",t=>s(t,()=>d.isHTMLIframeElement(window.document.activeElement)?window.document.activeElement:null),!0)}export{k as useOutsideClick};\n","import{useMemo as o}from\"react\";import{getOwnerDocument as t,getRootNode as r}from'../utils/owner.js';function u(...e){return o(()=>t(...e),[...e])}function c(...e){return o(()=>r(...e),[...e])}export{u as useOwnerDocument,c as useRootDocument};\n","import{useRef as o}from\"react\";import*as E from'../utils/dom.js';import{useDocumentEvent as d}from'./use-document-event.js';var H=(e=>(e[e.Ignore=0]=\"Ignore\",e[e.Select=1]=\"Select\",e[e.Close=2]=\"Close\",e))(H||{});const S={Ignore:{kind:0},Select:r=>({kind:1,target:r}),Close:{kind:2}},M=200,f=5;function L(r,{trigger:n,action:T,close:e,select:p}){let l=o(null),i=o(null),u=o(null);d(r&&n!==null,\"pointerdown\",t=>{E.isNode(t==null?void 0:t.target)&&n!=null&&n.contains(t.target)&&(i.current=t.x,u.current=t.y,l.current=t.timeStamp)}),d(r&&n!==null,\"pointerup\",t=>{var s,m;let c=l.current;if(c===null||(l.current=null,!E.isHTMLorSVGElement(t.target))||Math.abs(t.x-((s=i.current)!=null?s:t.x))<f&&Math.abs(t.y-((m=u.current)!=null?m:t.y))<f)return;let a=T(t);switch(a.kind){case 0:return;case 1:{t.timeStamp-c>M&&(p(a.target),e());break}case 2:{e();break}}},{capture:!0})}export{S as Action,L as useQuickRelease};\n","import{useMemo as a}from\"react\";function e(t,u){return a(()=>{var n;if(t.type)return t.type;let r=(n=t.as)!=null?n:\"button\";if(typeof r==\"string\"&&r.toLowerCase()===\"button\"||(u==null?void 0:u.tagName)===\"BUTTON\"&&!u.hasAttribute(\"type\"))return\"button\"},[t.type,t.as,u])}export{e as useResolveButtonType};\n","import{useSyncExternalStore as e}from\"react\";function o(t){return e(t.subscribe,t.getSnapshot,t.getSnapshot)}export{o as useStore};\n","function a(o,r){let t=o(),n=new Set;return{getSnapshot(){return t},subscribe(e){return n.add(e),()=>n.delete(e)},dispatch(e,...s){let i=r[e].call(t,...s);i&&(t=i,n.forEach(c=>c()))}}}export{a as createStore};\n","function d(){let r;return{before({doc:e}){var l;let o=e.documentElement,t=(l=e.defaultView)!=null?l:window;r=Math.max(0,t.innerWidth-o.clientWidth)},after({doc:e,d:o}){let t=e.documentElement,l=Math.max(0,t.clientWidth-t.offsetWidth),n=Math.max(0,r-l);o.style(t,\"paddingRight\",`${n}px`)}}}export{d as adjustScrollbarPadding};\n","import{disposables as u}from'../../utils/disposables.js';import*as i from'../../utils/dom.js';import{isIOS as p}from'../../utils/platform.js';function w(){return p()?{before({doc:o,d:r,meta:m}){function a(s){for(let l of m().containers)for(let c of l())if(c.contains(s))return!0;return!1}r.microTask(()=>{var c;if(window.getComputedStyle(o.documentElement).scrollBehavior!==\"auto\"){let t=u();t.style(o.documentElement,\"scrollBehavior\",\"auto\"),r.add(()=>r.microTask(()=>t.dispose()))}let s=(c=window.scrollY)!=null?c:window.pageYOffset,l=null;r.addEventListener(o,\"click\",t=>{if(i.isHTMLorSVGElement(t.target))try{let e=t.target.closest(\"a\");if(!e)return;let{hash:n}=new URL(e.href),f=o.querySelector(n);i.isHTMLorSVGElement(f)&&!a(f)&&(l=f)}catch{}},!0),r.group(t=>{r.addEventListener(o,\"touchstart\",e=>{if(t.dispose(),i.isHTMLorSVGElement(e.target)&&i.hasInlineStyle(e.target))if(a(e.target)){let n=e.target;for(;n.parentElement&&a(n.parentElement);)n=n.parentElement;t.style(n,\"overscrollBehavior\",\"contain\")}else t.style(e.target,\"touchAction\",\"none\")})}),r.addEventListener(o,\"touchmove\",t=>{if(i.isHTMLorSVGElement(t.target)){if(i.isHTMLInputElement(t.target))return;if(a(t.target)){let e=t.target;for(;e.parentElement&&e.dataset.headlessuiPortal!==\"\"&&!(e.scrollHeight>e.clientHeight||e.scrollWidth>e.clientWidth);)e=e.parentElement;e.dataset.headlessuiPortal===\"\"&&t.preventDefault()}else t.preventDefault()}},{passive:!1}),r.add(()=>{var e;let t=(e=window.scrollY)!=null?e:window.pageYOffset;s!==t&&window.scrollTo(0,s),l&&l.isConnected&&(l.scrollIntoView({block:\"nearest\"}),l=null)})})}}:{}}export{w as handleIOSLocking};\n","function r(){return{before({doc:e,d:o}){o.style(e.documentElement,\"overflow\",\"hidden\")}}}export{r as preventScroll};\n","import{disposables as s}from'../../utils/disposables.js';import{createStore as d}from'../../utils/store.js';import{adjustScrollbarPadding as i}from'./adjust-scrollbar-padding.js';import{handleIOSLocking as l}from'./handle-ios-locking.js';import{preventScroll as p}from'./prevent-scroll.js';function r(e){let o={};for(let t of e)Object.assign(o,t(o));return o}let c=d(()=>new Map,{PUSH(e,o){var n;let t=(n=this.get(e))!=null?n:{doc:e,count:0,d:s(),meta:new Set,computedMeta:{}};return t.count++,t.meta.add(o),t.computedMeta=r(t.meta),this.set(e,t),this},POP(e,o){let t=this.get(e);return t&&(t.count--,t.meta.delete(o),t.computedMeta=r(t.meta)),this},SCROLL_PREVENT(e){let o={doc:e.doc,d:e.d,meta(){return e.computedMeta}},t=[l(),i(),p()];t.forEach(({before:n})=>n==null?void 0:n(o)),t.forEach(({after:n})=>n==null?void 0:n(o))},SCROLL_ALLOW({d:e}){e.dispose()},TEARDOWN({doc:e}){this.delete(e)}});c.subscribe(()=>{let e=c.getSnapshot(),o=new Map;for(let[t]of e)o.set(t,t.documentElement.style.overflow);for(let t of e.values()){let n=o.get(t.doc)===\"hidden\",a=t.count!==0;(a&&!n||!a&&n)&&c.dispatch(t.count>0?\"SCROLL_PREVENT\":\"SCROLL_ALLOW\",t),t.count===0&&c.dispatch(\"TEARDOWN\",t)}});export{c as overflows};\n","import{useStore as s}from'../../hooks/use-store.js';import{useIsoMorphicEffect as u}from'../use-iso-morphic-effect.js';import{overflows as t}from'./overflow-store.js';function a(r,e,n=()=>({containers:[]})){let f=s(t),o=e?f.get(e):void 0,i=o?o.count>0:!1;return u(()=>{if(!(!e||!r))return t.dispatch(\"PUSH\",e,n),()=>t.dispatch(\"POP\",e,n)},[r,e]),i}export{a as useDocumentOverflowLockedEffect};\n","import{useDocumentOverflowLockedEffect as l}from'./document-overflow/use-document-overflow.js';import{useIsTopLayer as m}from'./use-is-top-layer.js';function f(e,c,n=()=>[document.body]){let r=m(e,\"scroll-lock\");l(r,c,t=>{var o;return{containers:[...(o=t.containers)!=null?o:[],n]}})}export{f as useScrollLock};\n","import{useRef as o}from\"react\";function t(e){return[e.screenX,e.screenY]}function u(){let e=o([-1,-1]);return{wasMoved(r){let n=t(r);return e.current[0]===n[0]&&e.current[1]===n[1]?!1:(e.current=n,!0)},update(r){e.current=t(r)}}}export{u as useTrackedPointer};\n","import{useCallback as t,useState as b}from\"react\";function c(u=0){let[r,a]=b(u),g=t(e=>a(e),[]),s=t(e=>a(l=>l|e),[]),m=t(e=>(r&e)===e,[r]),n=t(e=>a(l=>l&~e),[]),F=t(e=>a(l=>l^e),[]);return{flags:r,setFlag:g,addFlag:s,hasFlag:m,removeFlag:n,toggleFlag:F}}export{c as useFlags};\n","var T,S;import{useRef as c,useState as b}from\"react\";import{disposables as m}from'../utils/disposables.js';import{useDisposables as g}from'./use-disposables.js';import{useFlags as y}from'./use-flags.js';import{useIsoMorphicEffect as L}from'./use-iso-morphic-effect.js';typeof process!=\"undefined\"&&typeof globalThis!=\"undefined\"&&typeof Element!=\"undefined\"&&((T=process==null?void 0:process.env)==null?void 0:T[\"NODE_ENV\"])===\"test\"&&typeof((S=Element==null?void 0:Element.prototype)==null?void 0:S.getAnimations)==\"undefined\"&&(Element.prototype.getAnimations=function(){return console.warn([\"Headless UI has polyfilled `Element.prototype.getAnimations` for your tests.\",\"Please install a proper polyfill e.g. `jsdom-testing-mocks`, to silence these warnings.\",\"\",\"Example usage:\",\"```js\",\"import { mockAnimationsApi } from 'jsdom-testing-mocks'\",\"mockAnimationsApi()\",\"```\"].join(`\n`)),[]});var A=(i=>(i[i.None=0]=\"None\",i[i.Closed=1]=\"Closed\",i[i.Enter=2]=\"Enter\",i[i.Leave=4]=\"Leave\",i))(A||{});function x(e){let r={};for(let t in e)e[t]===!0&&(r[`data-${t}`]=\"\");return r}function N(e,r,t,n){let[i,a]=b(t),{hasFlag:s,addFlag:o,removeFlag:l}=y(e&&i?3:0),u=c(!1),f=c(!1),E=g();return L(()=>{var d;if(e){if(t&&a(!0),!r){t&&o(3);return}return(d=n==null?void 0:n.start)==null||d.call(n,t),C(r,{inFlight:u,prepare(){f.current?f.current=!1:f.current=u.current,u.current=!0,!f.current&&(t?(o(3),l(4)):(o(4),l(2)))},run(){f.current?t?(l(3),o(4)):(l(4),o(3)):t?l(1):o(1)},done(){var p;f.current&&D(r)||(u.current=!1,l(7),t||a(!1),(p=n==null?void 0:n.end)==null||p.call(n,t))}})}},[e,t,r,E]),e?[i,{closed:s(1),enter:s(2),leave:s(4),transition:s(2)||s(4)}]:[t,{closed:void 0,enter:void 0,leave:void 0,transition:void 0}]}function C(e,{prepare:r,run:t,done:n,inFlight:i}){let a=m();return j(e,{prepare:r,inFlight:i}),a.nextFrame(()=>{t(),a.requestAnimationFrame(()=>{a.add(M(e,n))})}),a.dispose}function M(e,r){var a,s;let t=m();if(!e)return t.dispose;let n=!1;t.add(()=>{n=!0});let i=(s=(a=e.getAnimations)==null?void 0:a.call(e).filter(o=>o instanceof CSSTransition))!=null?s:[];return i.length===0?(r(),t.dispose):(Promise.allSettled(i.map(o=>o.finished)).then(()=>{n||r()}),t.dispose)}function j(e,{inFlight:r,prepare:t}){if(r!=null&&r.current){t();return}let n=e.style.transition;e.style.transition=\"none\",t(),e.offsetHeight,e.style.transition=n}function D(e){var t,n;return((n=(t=e.getAnimations)==null?void 0:t.call(e))!=null?n:[]).some(i=>i instanceof CSSTransition&&i.playState!==\"finished\")}export{x as transitionDataAttributes,N as useTransition};\n","import { isShadowRoot, isHTMLElement } from '@floating-ui/utils/dom';\n\nfunction activeElement(doc) {\n let activeElement = doc.activeElement;\n while (((_activeElement = activeElement) == null || (_activeElement = _activeElement.shadowRoot) == null ? void 0 : _activeElement.activeElement) != null) {\n var _activeElement;\n activeElement = activeElement.shadowRoot.activeElement;\n }\n return activeElement;\n}\nfunction contains(parent, child) {\n if (!parent || !child) {\n return false;\n }\n const rootNode = child.getRootNode == null ? void 0 : child.getRootNode();\n\n // First, attempt with faster native method\n if (parent.contains(child)) {\n return true;\n }\n\n // then fallback to custom implementation with Shadow DOM support\n if (rootNode && isShadowRoot(rootNode)) {\n let next = child;\n while (next) {\n if (parent === next) {\n return true;\n }\n // @ts-ignore\n next = next.parentNode || next.host;\n }\n }\n\n // Give up, the result is false\n return false;\n}\n// Avoid Chrome DevTools blue warning.\nfunction getPlatform() {\n const uaData = navigator.userAgentData;\n if (uaData != null && uaData.platform) {\n return uaData.platform;\n }\n return navigator.platform;\n}\nfunction getUserAgent() {\n const uaData = navigator.userAgentData;\n if (uaData && Array.isArray(uaData.brands)) {\n return uaData.brands.map(_ref => {\n let {\n brand,\n version\n } = _ref;\n return brand + \"/\" + version;\n }).join(' ');\n }\n return navigator.userAgent;\n}\n\n// License: https://github.com/adobe/react-spectrum/blob/b35d5c02fe900badccd0cf1a8f23bb593419f238/packages/@react-aria/utils/src/isVirtualEvent.ts\nfunction isVirtualClick(event) {\n // FIXME: Firefox is now emitting a deprecation warning for `mozInputSource`.\n // Try to find a workaround for this. `react-aria` source still has the check.\n if (event.mozInputSource === 0 && event.isTrusted) {\n return true;\n }\n if (isAndroid() && event.pointerType) {\n return event.type === 'click' && event.buttons === 1;\n }\n return event.detail === 0 && !event.pointerType;\n}\nfunction isVirtualPointerEvent(event) {\n if (isJSDOM()) return false;\n return !isAndroid() && event.width === 0 && event.height === 0 || isAndroid() && event.width === 1 && event.height === 1 && event.pressure === 0 && event.detail === 0 && event.pointerType === 'mouse' ||\n // iOS VoiceOver returns 0.333• for width/height.\n event.width < 1 && event.height < 1 && event.pressure === 0 && event.detail === 0 && event.pointerType === 'touch';\n}\nfunction isSafari() {\n // Chrome DevTools does not complain about navigator.vendor\n return /apple/i.test(navigator.vendor);\n}\nfunction isAndroid() {\n const re = /android/i;\n return re.test(getPlatform()) || re.test(getUserAgent());\n}\nfunction isMac() {\n return getPlatform().toLowerCase().startsWith('mac') && !navigator.maxTouchPoints;\n}\nfunction isJSDOM() {\n return getUserAgent().includes('jsdom/');\n}\nfunction isMouseLikePointerType(pointerType, strict) {\n // On some Linux machines with Chromium, mouse inputs return a `pointerType`\n // of \"pen\": https://github.com/floating-ui/floating-ui/issues/2015\n const values = ['mouse', 'pen'];\n if (!strict) {\n values.push('', undefined);\n }\n return values.includes(pointerType);\n}\nfunction isReactEvent(event) {\n return 'nativeEvent' in event;\n}\nfunction isRootElement(element) {\n return element.matches('html,body');\n}\nfunction getDocument(node) {\n return (node == null ? void 0 : node.ownerDocument) || document;\n}\nfunction isEventTargetWithin(event, node) {\n if (node == null) {\n return false;\n }\n if ('composedPath' in event) {\n return event.composedPath().includes(node);\n }\n\n // TS thinks `event` is of type never as it assumes all browsers support composedPath, but browsers without shadow dom don't\n const e = event;\n return e.target != null && node.contains(e.target);\n}\nfunction getTarget(event) {\n if ('composedPath' in event) {\n return event.composedPath()[0];\n }\n\n // TS thinks `event` is of type never as it assumes all browsers support\n // `composedPath()`, but browsers without shadow DOM don't.\n return event.target;\n}\nconst TYPEABLE_SELECTOR = \"input:not([type='hidden']):not([disabled]),\" + \"[contenteditable]:not([contenteditable='false']),textarea:not([disabled])\";\nfunction isTypeableElement(element) {\n return isHTMLElement(element) && element.matches(TYPEABLE_SELECTOR);\n}\nfunction stopEvent(event) {\n event.preventDefault();\n event.stopPropagation();\n}\nfunction isTypeableCombobox(element) {\n if (!element) return false;\n return element.getAttribute('role') === 'combobox' && isTypeableElement(element);\n}\n\nexport { TYPEABLE_SELECTOR, activeElement, contains, getDocument, getPlatform, getTarget, getUserAgent, isAndroid, isEventTargetWithin, isJSDOM, isMac, isMouseLikePointerType, isReactEvent, isRootElement, isSafari, isTypeableCombobox, isTypeableElement, isVirtualClick, isVirtualPointerEvent, stopEvent };\n","import * as React from 'react';\nimport { useLayoutEffect, useEffect, useRef } from 'react';\nimport { stopEvent, getDocument, isMouseLikePointerType, contains, activeElement, isSafari, isTypeableCombobox, isVirtualClick, isVirtualPointerEvent, getTarget, getPlatform, isTypeableElement, isReactEvent, isRootElement, isEventTargetWithin, isMac, getUserAgent } from '@floating-ui/react/utils';\nimport { floor, evaluate, max, min, round } from '@floating-ui/utils';\nimport { getComputedStyle, isElement, getNodeName, isHTMLElement, getWindow, isLastTraversableNode, getParentNode, isWebKit } from '@floating-ui/utils/dom';\nimport { tabbable, isTabbable } from 'tabbable';\nimport * as ReactDOM from 'react-dom';\nimport { getOverflowAncestors, useFloating as useFloating$1, offset, detectOverflow } from '@floating-ui/react-dom';\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, getOverflowAncestors, hide, inline, limitShift, offset, platform, shift, size } from '@floating-ui/react-dom';\n\n/**\n * Merges an array of refs into a single memoized callback ref or `null`.\n * @see https://floating-ui.com/docs/react-utils#usemergerefs\n */\nfunction useMergeRefs(refs) {\n return React.useMemo(() => {\n if (refs.every(ref => ref == null)) {\n return null;\n }\n return value => {\n refs.forEach(ref => {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref != null) {\n ref.current = value;\n }\n });\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, refs);\n}\n\n// https://github.com/mui/material-ui/issues/41190#issuecomment-2040873379\nconst SafeReact = {\n ...React\n};\n\nconst useInsertionEffect = SafeReact.useInsertionEffect;\nconst useSafeInsertionEffect = useInsertionEffect || (fn => fn());\nfunction useEffectEvent(callback) {\n const ref = React.useRef(() => {\n if (process.env.NODE_ENV !== \"production\") {\n throw new Error('Cannot call an event handler while rendering.');\n }\n });\n useSafeInsertionEffect(() => {\n ref.current = callback;\n });\n return React.useCallback(function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return ref.current == null ? void 0 : ref.current(...args);\n }, []);\n}\n\nconst ARROW_UP = 'ArrowUp';\nconst ARROW_DOWN = 'ArrowDown';\nconst ARROW_LEFT = 'ArrowLeft';\nconst ARROW_RIGHT = 'ArrowRight';\nfunction isDifferentRow(index, cols, prevRow) {\n return Math.floor(index / cols) !== prevRow;\n}\nfunction isIndexOutOfBounds(listRef, index) {\n return index < 0 || index >= listRef.current.length;\n}\nfunction getMinIndex(listRef, disabledIndices) {\n return findNonDisabledIndex(listRef, {\n disabledIndices\n });\n}\nfunction getMaxIndex(listRef, disabledIndices) {\n return findNonDisabledIndex(listRef, {\n decrement: true,\n startingIndex: listRef.current.length,\n disabledIndices\n });\n}\nfunction findNonDisabledIndex(listRef, _temp) {\n let {\n startingIndex = -1,\n decrement = false,\n disabledIndices,\n amount = 1\n } = _temp === void 0 ? {} : _temp;\n const list = listRef.current;\n let index = startingIndex;\n do {\n index += decrement ? -amount : amount;\n } while (index >= 0 && index <= list.length - 1 && isDisabled(list, index, disabledIndices));\n return index;\n}\nfunction getGridNavigatedIndex(elementsRef, _ref) {\n let {\n event,\n orientation,\n loop,\n rtl,\n cols,\n disabledIndices,\n minIndex,\n maxIndex,\n prevIndex,\n stopEvent: stop = false\n } = _ref;\n let nextIndex = prevIndex;\n if (event.key === ARROW_UP) {\n stop && stopEvent(event);\n if (prevIndex === -1) {\n nextIndex = maxIndex;\n } else {\n nextIndex = findNonDisabledIndex(elementsRef, {\n startingIndex: nextIndex,\n amount: cols,\n decrement: true,\n disabledIndices\n });\n if (loop && (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 (isIndexOutOfBounds(elementsRef, nextIndex)) {\n nextIndex = prevIndex;\n }\n }\n if (event.key === ARROW_DOWN) {\n stop && stopEvent(event);\n if (prevIndex === -1) {\n nextIndex = minIndex;\n } else {\n nextIndex = findNonDisabledIndex(elementsRef, {\n startingIndex: prevIndex,\n amount: cols,\n disabledIndices\n });\n if (loop && prevIndex + cols > maxIndex) {\n nextIndex = findNonDisabledIndex(elementsRef, {\n startingIndex: prevIndex % cols - cols,\n amount: cols,\n disabledIndices\n });\n }\n }\n if (isIndexOutOfBounds(elementsRef, nextIndex)) {\n nextIndex = prevIndex;\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 stop && stopEvent(event);\n if (prevIndex % cols !== cols - 1) {\n nextIndex = findNonDisabledIndex(elementsRef, {\n startingIndex: prevIndex,\n disabledIndices\n });\n if (loop && isDifferentRow(nextIndex, cols, prevRow)) {\n nextIndex = findNonDisabledIndex(elementsRef, {\n startingIndex: prevIndex - prevIndex % cols - 1,\n disabledIndices\n });\n }\n } else if (loop) {\n nextIndex = findNonDisabledIndex(elementsRef, {\n startingIndex: prevIndex - prevIndex % cols - 1,\n disabledIndices\n });\n }\n if (isDifferentRow(nextIndex, cols, prevRow)) {\n nextIndex = prevIndex;\n }\n }\n if (event.key === (rtl ? ARROW_RIGHT : ARROW_LEFT)) {\n stop && stopEvent(event);\n if (prevIndex % cols !== 0) {\n nextIndex = findNonDisabledIndex(elementsRef, {\n startingIndex: prevIndex,\n decrement: true,\n disabledIndices\n });\n if (loop && isDifferentRow(nextIndex, cols, prevRow)) {\n nextIndex = findNonDisabledIndex(elementsRef, {\n startingIndex: prevIndex + (cols - prevIndex % cols),\n decrement: true,\n disabledIndices\n });\n }\n } else if (loop) {\n nextIndex = findNonDisabledIndex(elementsRef, {\n startingIndex: prevIndex + (cols - prevIndex % cols),\n decrement: true,\n disabledIndices\n });\n }\n if (isDifferentRow(nextIndex, cols, prevRow)) {\n nextIndex = prevIndex;\n }\n }\n const lastRow = floor(maxIndex / cols) === prevRow;\n if (isIndexOutOfBounds(elementsRef, nextIndex)) {\n if (loop && lastRow) {\n nextIndex = event.key === (rtl ? ARROW_RIGHT : ARROW_LEFT) ? maxIndex : findNonDisabledIndex(elementsRef, {\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 */\nfunction buildCellMap(sizes, cols, dense) {\n const cellMap = [];\n let startIndex = 0;\n sizes.forEach((_ref2, index) => {\n let {\n width,\n height\n } = _ref2;\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++) {\n for (let j = 0; j < height; j++) {\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++;\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. */\nfunction getCellIndexOfCorner(index, sizes, cellMap, cols, corner) {\n if (index === -1) return -1;\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 }\n}\n\n/** Gets all cell indices that correspond to the specified indices */\nfunction getCellIndices(indices, cellMap) {\n return cellMap.flatMap((index, cellIndex) => indices.includes(index) ? [cellIndex] : []);\n}\nfunction isDisabled(list, index, disabledIndices) {\n if (disabledIndices) {\n return disabledIndices.includes(index);\n }\n const element = list[index];\n return element == null || element.hasAttribute('disabled') || element.getAttribute('aria-disabled') === 'true';\n}\n\nvar index = typeof document !== 'undefined' ? useLayoutEffect : useEffect;\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 areMapsEqual(map1, map2) {\n if (map1.size !== map2.size) {\n return false;\n }\n for (const [key, value] of map1.entries()) {\n if (value !== map2.get(key)) {\n return false;\n }\n }\n return true;\n}\nconst FloatingListContext = /*#__PURE__*/React.createContext({\n register: () => {},\n unregister: () => {},\n map: /*#__PURE__*/new Map(),\n elementsRef: {\n current: []\n }\n});\n/**\n * Provides context for a list of items within the floating element.\n * @see https://floating-ui.com/docs/FloatingList\n */\nfunction FloatingList(props) {\n const {\n children,\n elementsRef,\n labelsRef\n } = props;\n const [map, setMap] = React.useState(() => new Map());\n const register = React.useCallback(node => {\n setMap(prevMap => new Map(prevMap).set(node, null));\n }, []);\n const unregister = React.useCallback(node => {\n setMap(prevMap => {\n const map = new Map(prevMap);\n map.delete(node);\n return map;\n });\n }, []);\n index(() => {\n const newMap = new Map(map);\n const nodes = Array.from(newMap.keys()).sort(sortByDocumentPosition);\n nodes.forEach((node, index) => {\n newMap.set(node, index);\n });\n if (!areMapsEqual(map, newMap)) {\n setMap(newMap);\n }\n }, [map]);\n return /*#__PURE__*/React.createElement(FloatingListContext.Provider, {\n value: React.useMemo(() => ({\n register,\n unregister,\n map,\n elementsRef,\n labelsRef\n }), [register, unregister, map, elementsRef, labelsRef])\n }, children);\n}\n/**\n * Used to register a list item and its index (DOM position) in the\n * `FloatingList`.\n * @see https://floating-ui.com/docs/FloatingList#uselistitem\n */\nfunction useListItem(props) {\n if (props === void 0) {\n props = {};\n }\n const {\n label\n } = props;\n const {\n register,\n unregister,\n map,\n elementsRef,\n labelsRef\n } = React.useContext(FloatingListContext);\n const [index$1, setIndex] = React.useState(null);\n const componentRef = React.useRef(null);\n const ref = React.useCallback(node => {\n componentRef.current = node;\n if (index$1 !== null) {\n elementsRef.current[index$1] = node;\n if (labelsRef) {\n var _node$textContent;\n const isLabelDefined = label !== undefined;\n labelsRef.current[index$1] = isLabelDefined ? label : (_node$textContent = node == null ? void 0 : node.textContent) != null ? _node$textContent : null;\n }\n }\n }, [index$1, elementsRef, labelsRef, label]);\n index(() => {\n const node = componentRef.current;\n if (node) {\n register(node);\n return () => {\n unregister(node);\n };\n }\n }, [register, unregister]);\n index(() => {\n const index = componentRef.current ? map.get(componentRef.current) : null;\n if (index != null) {\n setIndex(index);\n }\n }, [map]);\n return React.useMemo(() => ({\n ref,\n index: index$1 == null ? -1 : index$1\n }), [index$1, ref]);\n}\n\nfunction renderJsx(render, computedProps) {\n if (typeof render === 'function') {\n return render(computedProps);\n }\n if (render) {\n return /*#__PURE__*/React.cloneElement(render, computedProps);\n }\n return /*#__PURE__*/React.createElement(\"div\", computedProps);\n}\nconst CompositeContext = /*#__PURE__*/React.createContext({\n activeIndex: 0,\n onNavigate: () => {}\n});\nconst horizontalKeys = [ARROW_LEFT, ARROW_RIGHT];\nconst verticalKeys = [ARROW_UP, ARROW_DOWN];\nconst allKeys = [...horizontalKeys, ...verticalKeys];\n\n/**\n * Creates a single tab stop whose items are navigated by arrow keys, which\n * provides list navigation outside of floating element contexts.\n *\n * This is useful to enable navigation of a list of items that aren’t part of a\n * floating element. A menubar is an example of a composite, with each reference\n * element being an item.\n * @see https://floating-ui.com/docs/Composite\n */\nconst Composite = /*#__PURE__*/React.forwardRef(function Composite(props, forwardedRef) {\n const {\n render,\n orientation = 'both',\n loop = true,\n rtl = false,\n cols = 1,\n disabledIndices,\n activeIndex: externalActiveIndex,\n onNavigate: externalSetActiveIndex,\n itemSizes,\n dense = false,\n ...domProps\n } = props;\n const [internalActiveIndex, internalSetActiveIndex] = React.useState(0);\n const activeIndex = externalActiveIndex != null ? externalActiveIndex : internalActiveIndex;\n const onNavigate = useEffectEvent(externalSetActiveIndex != null ? externalSetActiveIndex : internalSetActiveIndex);\n const elementsRef = React.useRef([]);\n const renderElementProps = render && typeof render !== 'function' ? render.props : {};\n const contextValue = React.useMemo(() => ({\n activeIndex,\n onNavigate\n }), [activeIndex, onNavigate]);\n const isGrid = cols > 1;\n function handleKeyDown(event) {\n if (!allKeys.includes(event.key)) return;\n let nextIndex = activeIndex;\n const minIndex = getMinIndex(elementsRef, disabledIndices);\n const maxIndex = getMaxIndex(elementsRef, disabledIndices);\n const horizontalEndKey = rtl ? ARROW_LEFT : ARROW_RIGHT;\n const horizontalStartKey = rtl ? ARROW_RIGHT : ARROW_LEFT;\n if (isGrid) {\n const sizes = itemSizes || Array.from({\n length: elementsRef.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 = buildCellMap(sizes, cols, dense);\n const minGridIndex = cellMap.findIndex(index => index != null && !isDisabled(elementsRef.current, index, disabledIndices));\n // last enabled index\n const maxGridIndex = cellMap.reduce((foundIndex, index, cellIndex) => index != null && !isDisabled(elementsRef.current, index, disabledIndices) ? cellIndex : foundIndex, -1);\n const maybeNextIndex = cellMap[getGridNavigatedIndex({\n current: cellMap.map(itemIndex => itemIndex ? elementsRef.current[itemIndex] : null)\n }, {\n event,\n orientation,\n loop,\n rtl,\n cols,\n // treat undefined (empty grid spaces) as disabled indices so we\n // don't end up in them\n disabledIndices: getCellIndices([...(disabledIndices || elementsRef.current.map((_, index) => isDisabled(elementsRef.current, index) ? index : undefined)), undefined], cellMap),\n minIndex: minGridIndex,\n maxIndex: maxGridIndex,\n prevIndex: getCellIndexOfCorner(activeIndex > maxIndex ? minIndex : activeIndex, sizes, cellMap, cols,\n // use a corner matching the edge closest to the direction we're\n // moving in so we don't end up in the same item. Prefer\n // top/left over bottom/right.\n event.key === ARROW_DOWN ? 'bl' : event.key === horizontalEndKey ? 'tr' : 'tl')\n })];\n if (maybeNextIndex != null) {\n nextIndex = maybeNextIndex;\n }\n }\n const toEndKeys = {\n horizontal: [horizontalEndKey],\n vertical: [ARROW_DOWN],\n both: [horizontalEndKey, ARROW_DOWN]\n }[orientation];\n const toStartKeys = {\n horizontal: [horizontalStartKey],\n vertical: [ARROW_UP],\n both: [horizontalStartKey, ARROW_UP]\n }[orientation];\n const preventedKeys = isGrid ? allKeys : {\n horizontal: horizontalKeys,\n vertical: verticalKeys,\n both: allKeys\n }[orientation];\n if (nextIndex === activeIndex && [...toEndKeys, ...toStartKeys].includes(event.key)) {\n if (loop && nextIndex === maxIndex && toEndKeys.includes(event.key)) {\n nextIndex = minIndex;\n } else if (loop && nextIndex === minIndex && toStartKeys.includes(event.key)) {\n nextIndex = maxIndex;\n } else {\n nextIndex = findNonDisabledIndex(elementsRef, {\n startingIndex: nextIndex,\n decrement: toStartKeys.includes(event.key),\n disabledIndices\n });\n }\n }\n if (nextIndex !== activeIndex && !isIndexOutOfBounds(elementsRef, nextIndex)) {\n var _elementsRef$current$;\n event.stopPropagation();\n if (preventedKeys.includes(event.key)) {\n event.preventDefault();\n }\n onNavigate(nextIndex);\n (_elementsRef$current$ = elementsRef.current[nextIndex]) == null || _elementsRef$current$.focus();\n }\n }\n const computedProps = {\n ...domProps,\n ...renderElementProps,\n ref: forwardedRef,\n 'aria-orientation': orientation === 'both' ? undefined : orientation,\n onKeyDown(e) {\n domProps.onKeyDown == null || domProps.onKeyDown(e);\n renderElementProps.onKeyDown == null || renderElementProps.onKeyDown(e);\n handleKeyDown(e);\n }\n };\n return /*#__PURE__*/React.createElement(CompositeContext.Provider, {\n value: contextValue\n }, /*#__PURE__*/React.createElement(FloatingList, {\n elementsRef: elementsRef\n }, renderJsx(render, computedProps)));\n});\n/**\n * @see https://floating-ui.com/docs/Composite\n */\nconst CompositeItem = /*#__PURE__*/React.forwardRef(function CompositeItem(props, forwardedRef) {\n const {\n render,\n ...domProps\n } = props;\n const renderElementProps = render && typeof render !== 'function' ? render.props : {};\n const {\n activeIndex,\n onNavigate\n } = React.useContext(CompositeContext);\n const {\n ref,\n index\n } = useListItem();\n const mergedRef = useMergeRefs([ref, forwardedRef, renderElementProps.ref]);\n const isActive = activeIndex === index;\n const computedProps = {\n ...domProps,\n ...renderElementProps,\n ref: mergedRef,\n tabIndex: isActive ? 0 : -1,\n 'data-active': isActive ? '' : undefined,\n onFocus(e) {\n domProps.onFocus == null || domProps.onFocus(e);\n renderElementProps.onFocus == null || renderElementProps.onFocus(e);\n onNavigate(index);\n }\n };\n return renderJsx(render, computedProps);\n});\n\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\n\nlet serverHandoffComplete = false;\nlet count = 0;\nconst genId = () => // Ensure the id is unique with multiple independent versions of Floating UI\n// on <React 18\n\"floating-ui-\" + Math.random().toString(36).slice(2, 6) + count++;\nfunction useFloatingId() {\n const [id, setId] = React.useState(() => serverHandoffComplete ? genId() : undefined);\n index(() => {\n if (id == null) {\n setId(genId());\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n React.useEffect(() => {\n serverHandoffComplete = true;\n }, []);\n return id;\n}\nconst useReactId = SafeReact.useId;\n\n/**\n * Uses React 18's built-in `useId()` when available, or falls back to a\n * slightly less performant (requiring a double render) implementation for\n * earlier React versions.\n * @see https://floating-ui.com/docs/react-utils#useid\n */\nconst useId = useReactId || useFloatingId;\n\nlet devMessageSet;\nif (process.env.NODE_ENV !== \"production\") {\n devMessageSet = /*#__PURE__*/new Set();\n}\nfunction warn() {\n var _devMessageSet;\n for (var _len = arguments.length, messages = new Array(_len), _key = 0; _key < _len; _key++) {\n messages[_key] = arguments[_key];\n }\n const message = \"Floating UI: \" + messages.join(' ');\n if (!((_devMessageSet = devMessageSet) != null && _devMessageSet.has(message))) {\n var _devMessageSet2;\n (_devMessageSet2 = devMessageSet) == null || _devMessageSet2.add(message);\n console.warn(message);\n }\n}\nfunction error() {\n var _devMessageSet3;\n for (var _len2 = arguments.length, messages = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n messages[_key2] = arguments[_key2];\n }\n const message = \"Floating UI: \" + messages.join(' ');\n if (!((_devMessageSet3 = devMessageSet) != null && _devMessageSet3.has(message))) {\n var _devMessageSet4;\n (_devMessageSet4 = devMessageSet) == null || _devMessageSet4.add(message);\n console.error(message);\n }\n}\n\n/**\n * Renders a pointing arrow triangle.\n * @see https://floating-ui.com/docs/FloatingArrow\n */\nconst FloatingArrow = /*#__PURE__*/React.forwardRef(function FloatingArrow(props, ref) {\n const {\n context: {\n placement,\n elements: {\n floating\n },\n middlewareData: {\n arrow,\n shift\n }\n },\n width = 14,\n height = 7,\n tipRadius = 0,\n strokeWidth = 0,\n staticOffset,\n stroke,\n d,\n style: {\n transform,\n ...restStyle\n } = {},\n ...rest\n } = props;\n if (process.env.NODE_ENV !== \"production\") {\n if (!ref) {\n warn('The `ref` prop is required for `FloatingArrow`.');\n }\n }\n const clipPathId = useId();\n const [isRTL, setIsRTL] = React.useState(false);\n\n // https://github.com/floating-ui/floating-ui/issues/2932\n index(() => {\n if (!floating) return;\n const isRTL = getComputedStyle(floating).direction === 'rtl';\n if (isRTL) {\n setIsRTL(true);\n }\n }, [floating]);\n if (!floating) {\n return null;\n }\n const [side, alignment] = placement.split('-');\n const isVerticalSide = side === 'top' || side === 'bottom';\n let computedStaticOffset = staticOffset;\n if (isVerticalSide && shift != null && shift.x || !isVerticalSide && shift != null && shift.y) {\n computedStaticOffset = null;\n }\n\n // Strokes must be double the border width, this ensures the stroke's width\n // works as you'd expect.\n const computedStrokeWidth = strokeWidth * 2;\n const halfStrokeWidth = computedStrokeWidth / 2;\n const svgX = width / 2 * (tipRadius / -8 + 1);\n const svgY = height / 2 * tipRadius / 4;\n const isCustomShape = !!d;\n const yOffsetProp = computedStaticOffset && alignment === 'end' ? 'bottom' : 'top';\n let xOffsetProp = computedStaticOffset && alignment === 'end' ? 'right' : 'left';\n if (computedStaticOffset && isRTL) {\n xOffsetProp = alignment === 'end' ? 'left' : 'right';\n }\n const arrowX = (arrow == null ? void 0 : arrow.x) != null ? computedStaticOffset || arrow.x : '';\n const arrowY = (arrow == null ? void 0 : arrow.y) != null ? computedStaticOffset || arrow.y : '';\n const dValue = d || 'M0,0' + (\" H\" + width) + (\" L\" + (width - svgX) + \",\" + (height - svgY)) + (\" Q\" + width / 2 + \",\" + height + \" \" + svgX + \",\" + (height - svgY)) + ' Z';\n const rotation = {\n top: isCustomShape ? 'rotate(180deg)' : '',\n left: isCustomShape ? 'rotate(90deg)' : 'rotate(-90deg)',\n bottom: isCustomShape ? '' : 'rotate(180deg)',\n right: isCustomShape ? 'rotate(-90deg)' : 'rotate(90deg)'\n }[side];\n return /*#__PURE__*/React.createElement(\"svg\", _extends({}, rest, {\n \"aria-hidden\": true,\n ref: ref,\n width: isCustomShape ? width : width + computedStrokeWidth,\n height: width,\n viewBox: \"0 0 \" + width + \" \" + (height > width ? height : width),\n style: {\n position: 'absolute',\n pointerEvents: 'none',\n [xOffsetProp]: arrowX,\n [yOffsetProp]: arrowY,\n [side]: isVerticalSide || isCustomShape ? '100%' : \"calc(100% - \" + computedStrokeWidth / 2 + \"px)\",\n transform: [rotation, transform].filter(t => !!t).join(' '),\n ...restStyle\n }\n }), computedStrokeWidth > 0 && /*#__PURE__*/React.createElement(\"path\", {\n clipPath: \"url(#\" + clipPathId + \")\",\n fill: \"none\",\n stroke: stroke\n // Account for the stroke on the fill path rendered below.\n ,\n strokeWidth: computedStrokeWidth + (d ? 0 : 1),\n d: dValue\n }), /*#__PURE__*/React.createElement(\"path\", {\n stroke: computedStrokeWidth && !d ? rest.fill : 'none',\n d: dValue\n }), /*#__PURE__*/React.createElement(\"clipPath\", {\n id: clipPathId\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: -halfStrokeWidth,\n y: halfStrokeWidth * (isCustomShape ? -1 : 1),\n width: width + computedStrokeWidth,\n height: width\n })));\n});\n\nfunction createPubSub() {\n const map = new Map();\n return {\n emit(event, data) {\n var _map$get;\n (_map$get = map.get(event)) == null || _map$get.forEach(handler => handler(data));\n },\n on(event, listener) {\n map.set(event, [...(map.get(event) || []), listener]);\n },\n off(event, listener) {\n var _map$get2;\n map.set(event, ((_map$get2 = map.get(event)) == null ? void 0 : _map$get2.filter(l => l !== listener)) || []);\n }\n };\n}\n\nconst FloatingNodeContext = /*#__PURE__*/React.createContext(null);\nconst FloatingTreeContext = /*#__PURE__*/React.createContext(null);\n\n/**\n * Returns the parent node id for nested floating elements, if available.\n * Returns `null` for top-level floating elements.\n */\nconst useFloatingParentNodeId = () => {\n var _React$useContext;\n return ((_React$useContext = React.useContext(FloatingNodeContext)) == null ? void 0 : _React$useContext.id) || null;\n};\n\n/**\n * Returns the nearest floating tree context, if available.\n */\nconst useFloatingTree = () => React.useContext(FloatingTreeContext);\n\n/**\n * Registers a node into the `FloatingTree`, returning its id.\n * @see https://floating-ui.com/docs/FloatingTree\n */\nfunction useFloatingNodeId(customParentId) {\n const id = useId();\n const tree = useFloatingTree();\n const reactParentId = useFloatingParentNodeId();\n const parentId = customParentId || reactParentId;\n index(() => {\n const node = {\n id,\n parentId\n };\n tree == null || tree.addNode(node);\n return () => {\n tree == null || tree.removeNode(node);\n };\n }, [tree, id, parentId]);\n return id;\n}\n/**\n * Provides parent node context for nested floating elements.\n * @see https://floating-ui.com/docs/FloatingTree\n */\nfunction FloatingNode(props) {\n const {\n children,\n id\n } = props;\n const parentId = useFloatingParentNodeId();\n return /*#__PURE__*/React.createElement(FloatingNodeContext.Provider, {\n value: React.useMemo(() => ({\n id,\n parentId\n }), [id, parentId])\n }, children);\n}\n/**\n * Provides context for nested floating elements when they are not children of\n * each other on the DOM.\n * This is not necessary in all cases, except when there must be explicit communication between parent and child floating elements. It is necessary for:\n * - The `bubbles` option in the `useDismiss()` Hook\n * - Nested virtual list navigation\n * - Nested floating elements that each open on hover\n * - Custom communication between parent and child floating elements\n * @see https://floating-ui.com/docs/FloatingTree\n */\nfunction FloatingTree(props) {\n const {\n children\n } = props;\n const nodesRef = React.useRef([]);\n const addNode = React.useCallback(node => {\n nodesRef.current = [...nodesRef.current, node];\n }, []);\n const removeNode = React.useCallback(node => {\n nodesRef.current = nodesRef.current.filter(n => n !== node);\n }, []);\n const events = React.useState(() => createPubSub())[0];\n return /*#__PURE__*/React.createElement(FloatingTreeContext.Provider, {\n value: React.useMemo(() => ({\n nodesRef,\n addNode,\n removeNode,\n events\n }), [addNode, removeNode, events])\n }, children);\n}\n\nfunction createAttribute(name) {\n return \"data-floating-ui-\" + name;\n}\n\nfunction useLatestRef(value) {\n const ref = useRef(value);\n index(() => {\n ref.current = value;\n });\n return ref;\n}\n\nconst safePolygonIdentifier = /*#__PURE__*/createAttribute('safe-polygon');\nfunction getDelay(value, prop, pointerType) {\n if (pointerType && !isMouseLikePointerType(pointerType)) {\n return 0;\n }\n if (typeof value === 'number') {\n return value;\n }\n return value == null ? void 0 : value[prop];\n}\n/**\n * Opens the floating element while hovering over the reference element, like\n * CSS `:hover`.\n * @see https://floating-ui.com/docs/useHover\n */\nfunction useHover(context, props) {\n if (props === void 0) {\n props = {};\n }\n const {\n open,\n onOpenChange,\n dataRef,\n events,\n elements\n } = context;\n const {\n enabled = true,\n delay = 0,\n handleClose = null,\n mouseOnly = false,\n restMs = 0,\n move = true\n } = props;\n const tree = useFloatingTree();\n const parentId = useFloatingParentNodeId();\n const handleCloseRef = useLatestRef(handleClose);\n const delayRef = useLatestRef(delay);\n const openRef = useLatestRef(open);\n const pointerTypeRef = React.useRef();\n const timeoutRef = React.useRef(-1);\n const handlerRef = React.useRef();\n const restTimeoutRef = React.useRef(-1);\n const blockMouseMoveRef = React.useRef(true);\n const performedPointerEventsMutationRef = React.useRef(false);\n const unbindMouseMoveRef = React.useRef(() => {});\n const restTimeoutPendingRef = React.useRef(false);\n const isHoverOpen = React.useCallback(() => {\n var _dataRef$current$open;\n const type = (_dataRef$current$open = dataRef.current.openEvent) == null ? void 0 : _dataRef$current$open.type;\n return (type == null ? void 0 : type.includes('mouse')) && type !== 'mousedown';\n }, [dataRef]);\n\n // When closing before opening, clear the delay timeouts to cancel it\n // from showing.\n React.useEffect(() => {\n if (!enabled) return;\n function onOpenChange(_ref) {\n let {\n open\n } = _ref;\n if (!open) {\n clearTimeout(timeoutRef.current);\n clearTimeout(restTimeoutRef.current);\n blockMouseMoveRef.current = true;\n restTimeoutPendingRef.current = false;\n }\n }\n events.on('openchange', onOpenChange);\n return () => {\n events.off('openchange', onOpenChange);\n };\n }, [enabled, events]);\n React.useEffect(() => {\n if (!enabled) return;\n if (!handleCloseRef.current) return;\n if (!open) return;\n function onLeave(event) {\n if (isHoverOpen()) {\n onOpenChange(false, event, 'hover');\n }\n }\n const html = getDocument(elements.floating).documentElement;\n html.addEventListener('mouseleave', onLeave);\n return () => {\n html.removeEventListener('mouseleave', onLeave);\n };\n }, [elements.floating, open, onOpenChange, enabled, handleCloseRef, isHoverOpen]);\n const closeWithDelay = React.useCallback(function (event, runElseBranch, reason) {\n if (runElseBranch === void 0) {\n runElseBranch = true;\n }\n if (reason === void 0) {\n reason = 'hover';\n }\n const closeDelay = getDelay(delayRef.current, 'close', pointerTypeRef.current);\n if (closeDelay && !handlerRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = window.setTimeout(() => onOpenChange(false, event, reason), closeDelay);\n } else if (runElseBranch) {\n clearTimeout(timeoutRef.current);\n onOpenChange(false, event, reason);\n }\n }, [delayRef, onOpenChange]);\n const cleanupMouseMoveHandler = useEffectEvent(() => {\n unbindMouseMoveRef.current();\n handlerRef.current = undefined;\n });\n const clearPointerEvents = useEffectEvent(() => {\n if (performedPointerEventsMutationRef.current) {\n const body = getDocument(elements.floating).body;\n body.style.pointerEvents = '';\n body.removeAttribute(safePolygonIdentifier);\n performedPointerEventsMutationRef.current = false;\n }\n });\n const isClickLikeOpenEvent = useEffectEvent(() => {\n return dataRef.current.openEvent ? ['click', 'mousedown'].includes(dataRef.current.openEvent.type) : false;\n });\n\n // Registering the mouse events on the reference directly to bypass React's\n // delegation system. If the cursor was on a disabled element and then entered\n // the reference (no gap), `mouseenter` doesn't fire in the delegation system.\n React.useEffect(() => {\n if (!enabled) return;\n function onMouseEnter(event) {\n clearTimeout(timeoutRef.current);\n blockMouseMoveRef.current = false;\n if (mouseOnly && !isMouseLikePointerType(pointerTypeRef.current) || restMs > 0 && !getDelay(delayRef.current, 'open')) {\n return;\n }\n const openDelay = getDelay(delayRef.current, 'open', pointerTypeRef.current);\n if (openDelay) {\n timeoutRef.current = window.setTimeout(() => {\n if (!openRef.current) {\n onOpenChange(true, event, 'hover');\n }\n }, openDelay);\n } else if (!open) {\n onOpenChange(true, event, 'hover');\n }\n }\n function onMouseLeave(event) {\n if (isClickLikeOpenEvent()) return;\n unbindMouseMoveRef.current();\n const doc = getDocument(elements.floating);\n clearTimeout(restTimeoutRef.current);\n restTimeoutPendingRef.current = false;\n if (handleCloseRef.current && dataRef.current.floatingContext) {\n // Prevent clearing `onScrollMouseLeave` timeout.\n if (!open) {\n clearTimeout(timeoutRef.current);\n }\n handlerRef.current = handleCloseRef.current({\n ...dataRef.current.floatingContext,\n tree,\n x: event.clientX,\n y: event.clientY,\n onClose() {\n clearPointerEvents();\n cleanupMouseMoveHandler();\n if (!isClickLikeOpenEvent()) {\n closeWithDelay(event, true, 'safe-polygon');\n }\n }\n });\n const handler = handlerRef.current;\n doc.addEventListener('mousemove', handler);\n unbindMouseMoveRef.current = () => {\n doc.removeEventListener('mousemove', handler);\n };\n return;\n }\n\n // Allow interactivity without `safePolygon` on touch devices. With a\n // pointer, a short close delay is an alternative, so it should work\n // consistently.\n const shouldClose = pointerTypeRef.current === 'touch' ? !contains(elements.floating, event.relatedTarget) : true;\n if (shouldClose) {\n closeWithDelay(event);\n }\n }\n\n // Ensure the floating element closes after scrolling even if the pointer\n // did not move.\n // https://github.com/floating-ui/floating-ui/discussions/1692\n function onScrollMouseLeave(event) {\n if (isClickLikeOpenEvent()) return;\n if (!dataRef.current.floatingContext) return;\n handleCloseRef.current == null || handleCloseRef.current({\n ...dataRef.current.floatingContext,\n tree,\n x: event.clientX,\n y: event.clientY,\n onClose() {\n clearPointerEvents();\n cleanupMouseMoveHandler();\n if (!isClickLikeOpenEvent()) {\n closeWithDelay(event);\n }\n }\n })(event);\n }\n if (isElement(elements.domReference)) {\n var _elements$floating;\n const ref = elements.domReference;\n open && ref.addEventListener('mouseleave', onScrollMouseLeave);\n (_elements$floating = elements.floating) == null || _elements$floating.addEventListener('mouseleave', onScrollMouseLeave);\n move && ref.addEventListener('mousemove', onMouseEnter, {\n once: true\n });\n ref.addEventListener('mouseenter', onMouseEnter);\n ref.addEventListener('mouseleave', onMouseLeave);\n return () => {\n var _elements$floating2;\n open && ref.removeEventListener('mouseleave', onScrollMouseLeave);\n (_elements$floating2 = elements.floating) == null || _elements$floating2.removeEventListener('mouseleave', onScrollMouseLeave);\n move && ref.removeEventListener('mousemove', onMouseEnter);\n ref.removeEventListener('mouseenter', onMouseEnter);\n ref.removeEventListener('mouseleave', onMouseLeave);\n };\n }\n }, [elements, enabled, context, mouseOnly, restMs, move, closeWithDelay, cleanupMouseMoveHandler, clearPointerEvents, onOpenChange, open, openRef, tree, delayRef, handleCloseRef, dataRef, isClickLikeOpenEvent]);\n\n // Block pointer-events of every element other than the reference and floating\n // while the floating element is open and has a `handleClose` handler. Also\n // handles nested floating elements.\n // https://github.com/floating-ui/floating-ui/issues/1722\n index(() => {\n var _handleCloseRef$curre;\n if (!enabled) return;\n if (open && (_handleCloseRef$curre = handleCloseRef.current) != null && _handleCloseRef$curre.__options.blockPointerEvents && isHoverOpen()) {\n performedPointerEventsMutationRef.current = true;\n const floatingEl = elements.floating;\n if (isElement(elements.domReference) && floatingEl) {\n var _tree$nodesRef$curren;\n const body = getDocument(elements.floating).body;\n body.setAttribute(safePolygonIdentifier, '');\n const ref = elements.domReference;\n const parentFloating = tree == null || (_tree$nodesRef$curren = tree.nodesRef.current.find(node => node.id === parentId)) == null || (_tree$nodesRef$curren = _tree$nodesRef$curren.context) == null ? void 0 : _tree$nodesRef$curren.elements.floating;\n if (parentFloating) {\n parentFloating.style.pointerEvents = '';\n }\n body.style.pointerEvents = 'none';\n ref.style.pointerEvents = 'auto';\n floatingEl.style.pointerEvents = 'auto';\n return () => {\n body.style.pointerEvents = '';\n ref.style.pointerEvents = '';\n floatingEl.style.pointerEvents = '';\n };\n }\n }\n }, [enabled, open, parentId, elements, tree, handleCloseRef, isHoverOpen]);\n index(() => {\n if (!open) {\n pointerTypeRef.current = undefined;\n restTimeoutPendingRef.current = false;\n cleanupMouseMoveHandler();\n clearPointerEvents();\n }\n }, [open, cleanupMouseMoveHandler, clearPointerEvents]);\n React.useEffect(() => {\n return () => {\n cleanupMouseMoveHandler();\n clearTimeout(timeoutRef.current);\n clearTimeout(restTimeoutRef.current);\n clearPointerEvents();\n };\n }, [enabled, elements.domReference, cleanupMouseMoveHandler, clearPointerEvents]);\n const reference = React.useMemo(() => {\n function setPointerRef(event) {\n pointerTypeRef.current = event.pointerType;\n }\n return {\n onPointerDown: setPointerRef,\n onPointerEnter: setPointerRef,\n onMouseMove(event) {\n const {\n nativeEvent\n } = event;\n function handleMouseMove() {\n if (!blockMouseMoveRef.current && !openRef.current) {\n onOpenChange(true, nativeEvent, 'hover');\n }\n }\n if (mouseOnly && !isMouseLikePointerType(pointerTypeRef.current)) {\n return;\n }\n if (open || restMs === 0) {\n return;\n }\n\n // Ignore insignificant movements to account for tremors.\n if (restTimeoutPendingRef.current && event.movementX ** 2 + event.movementY ** 2 < 2) {\n return;\n }\n clearTimeout(restTimeoutRef.current);\n if (pointerTypeRef.current === 'touch') {\n handleMouseMove();\n } else {\n restTimeoutPendingRef.current = true;\n restTimeoutRef.current = window.setTimeout(handleMouseMove, restMs);\n }\n }\n };\n }, [mouseOnly, onOpenChange, open, openRef, restMs]);\n const floating = React.useMemo(() => ({\n onMouseEnter() {\n clearTimeout(timeoutRef.current);\n },\n onMouseLeave(event) {\n if (!isClickLikeOpenEvent()) {\n closeWithDelay(event.nativeEvent, false);\n }\n }\n }), [closeWithDelay, isClickLikeOpenEvent]);\n return React.useMemo(() => enabled ? {\n reference,\n floating\n } : {}, [enabled, reference, floating]);\n}\n\nconst NOOP = () => {};\nconst FloatingDelayGroupContext = /*#__PURE__*/React.createContext({\n delay: 0,\n initialDelay: 0,\n timeoutMs: 0,\n currentId: null,\n setCurrentId: NOOP,\n setState: NOOP,\n isInstantPhase: false\n});\n\n/**\n * @deprecated\n * Use the return value of `useDelayGroup()` instead.\n */\nconst useDelayGroupContext = () => React.useContext(FloatingDelayGroupContext);\n/**\n * Provides context for a group of floating elements that should share a\n * `delay`.\n * @see https://floating-ui.com/docs/FloatingDelayGroup\n */\nfunction FloatingDelayGroup(props) {\n const {\n children,\n delay,\n timeoutMs = 0\n } = props;\n const [state, setState] = React.useReducer((prev, next) => ({\n ...prev,\n ...next\n }), {\n delay,\n timeoutMs,\n initialDelay: delay,\n currentId: null,\n isInstantPhase: false\n });\n const initialCurrentIdRef = React.useRef(null);\n const setCurrentId = React.useCallback(currentId => {\n setState({\n currentId\n });\n }, []);\n index(() => {\n if (state.currentId) {\n if (initialCurrentIdRef.current === null) {\n initialCurrentIdRef.current = state.currentId;\n } else if (!state.isInstantPhase) {\n setState({\n isInstantPhase: true\n });\n }\n } else {\n if (state.isInstantPhase) {\n setState({\n isInstantPhase: false\n });\n }\n initialCurrentIdRef.current = null;\n }\n }, [state.currentId, state.isInstantPhase]);\n return /*#__PURE__*/React.createElement(FloatingDelayGroupContext.Provider, {\n value: React.useMemo(() => ({\n ...state,\n setState,\n setCurrentId\n }), [state, setCurrentId])\n }, children);\n}\n/**\n * Enables grouping when called inside a component that's a child of a\n * `FloatingDelayGroup`.\n * @see https://floating-ui.com/docs/FloatingDelayGroup\n */\nfunction useDelayGroup(context, options) {\n if (options === void 0) {\n options = {};\n }\n const {\n open,\n onOpenChange,\n floatingId\n } = context;\n const {\n id: optionId,\n enabled = true\n } = options;\n const id = optionId != null ? optionId : floatingId;\n const groupContext = useDelayGroupContext();\n const {\n currentId,\n setCurrentId,\n initialDelay,\n setState,\n timeoutMs\n } = groupContext;\n index(() => {\n if (!enabled) return;\n if (!currentId) return;\n setState({\n delay: {\n open: 1,\n close: getDelay(initialDelay, 'close')\n }\n });\n if (currentId !== id) {\n onOpenChange(false);\n }\n }, [enabled, id, onOpenChange, setState, currentId, initialDelay]);\n index(() => {\n function unset() {\n onOpenChange(false);\n setState({\n delay: initialDelay,\n currentId: null\n });\n }\n if (!enabled) return;\n if (!currentId) return;\n if (!open && currentId === id) {\n if (timeoutMs) {\n const timeout = window.setTimeout(unset, timeoutMs);\n return () => {\n clearTimeout(timeout);\n };\n }\n unset();\n }\n }, [enabled, open, setState, currentId, id, onOpenChange, initialDelay, timeoutMs]);\n index(() => {\n if (!enabled) return;\n if (setCurrentId === NOOP || !open) return;\n setCurrentId(id);\n }, [enabled, open, setCurrentId, id]);\n return groupContext;\n}\n\nlet rafId = 0;\nfunction enqueueFocus(el, options) {\n if (options === void 0) {\n options = {};\n }\n const {\n preventScroll = false,\n cancelPrevious = true,\n sync = false\n } = options;\n cancelPrevious && cancelAnimationFrame(rafId);\n const exec = () => el == null ? void 0 : el.focus({\n preventScroll\n });\n if (sync) {\n exec();\n } else {\n rafId = requestAnimationFrame(exec);\n }\n}\n\nfunction getAncestors(nodes, id) {\n var _nodes$find;\n let allAncestors = [];\n let currentParentId = (_nodes$find = nodes.find(node => node.id === id)) == null ? void 0 : _nodes$find.parentId;\n while (currentParentId) {\n const currentNode = nodes.find(node => node.id === currentParentId);\n currentParentId = currentNode == null ? void 0 : currentNode.parentId;\n if (currentNode) {\n allAncestors = allAncestors.concat(currentNode);\n }\n }\n return allAncestors;\n}\n\nfunction getChildren(nodes, id) {\n let allChildren = nodes.filter(node => {\n var _node$context;\n return node.parentId === id && ((_node$context = node.context) == null ? void 0 : _node$context.open);\n });\n let currentChildren = allChildren;\n while (currentChildren.length) {\n currentChildren = nodes.filter(node => {\n var _currentChildren;\n return (_currentChildren = currentChildren) == null ? void 0 : _currentChildren.some(n => {\n var _node$context2;\n return node.parentId === n.id && ((_node$context2 = node.context) == null ? void 0 : _node$context2.open);\n });\n });\n allChildren = allChildren.concat(currentChildren);\n }\n return allChildren;\n}\nfunction getDeepestNode(nodes, id) {\n let deepestNodeId;\n let maxDepth = -1;\n function findDeepest(nodeId, depth) {\n if (depth > maxDepth) {\n deepestNodeId = nodeId;\n maxDepth = depth;\n }\n const children = getChildren(nodes, nodeId);\n children.forEach(child => {\n findDeepest(child.id, depth + 1);\n });\n }\n findDeepest(id, 0);\n return nodes.find(node => node.id === deepestNodeId);\n}\n\n// Modified to add conditional `aria-hidden` support:\n// https://github.com/theKashey/aria-hidden/blob/9220c8f4a4fd35f63bee5510a9f41a37264382d4/src/index.ts\nlet counterMap = /*#__PURE__*/new WeakMap();\nlet uncontrolledElementsSet = /*#__PURE__*/new WeakSet();\nlet markerMap = {};\nlet lockCount$1 = 0;\nconst supportsInert = () => typeof HTMLElement !== 'undefined' && 'inert' in HTMLElement.prototype;\nconst unwrapHost = node => node && (node.host || unwrapHost(node.parentNode));\nconst correctElements = (parent, targets) => targets.map(target => {\n if (parent.contains(target)) {\n return target;\n }\n const correctedTarget = unwrapHost(target);\n if (parent.contains(correctedTarget)) {\n return correctedTarget;\n }\n return null;\n}).filter(x => x != null);\nfunction applyAttributeToOthers(uncorrectedAvoidElements, body, ariaHidden, inert) {\n const markerName = 'data-floating-ui-inert';\n const controlAttribute = inert ? 'inert' : ariaHidden ? 'aria-hidden' : null;\n const avoidElements = correctElements(body, uncorrectedAvoidElements);\n const elementsToKeep = new Set();\n const elementsToStop = new Set(avoidElements);\n const hiddenElements = [];\n if (!markerMap[markerName]) {\n markerMap[markerName] = new WeakMap();\n }\n const markerCounter = markerMap[markerName];\n avoidElements.forEach(keep);\n deep(body);\n elementsToKeep.clear();\n function keep(el) {\n if (!el || elementsToKeep.has(el)) {\n return;\n }\n elementsToKeep.add(el);\n el.parentNode && keep(el.parentNode);\n }\n function deep(parent) {\n if (!parent || elementsToStop.has(parent)) {\n return;\n }\n [].forEach.call(parent.children, node => {\n if (getNodeName(node) === 'script') return;\n if (elementsToKeep.has(node)) {\n deep(node);\n } else {\n const attr = controlAttribute ? node.getAttribute(controlAttribute) : null;\n const alreadyHidden = attr !== null && attr !== 'false';\n const counterValue = (counterMap.get(node) || 0) + 1;\n const markerValue = (markerCounter.get(node) || 0) + 1;\n counterMap.set(node, counterValue);\n markerCounter.set(node, markerValue);\n hiddenElements.push(node);\n if (counterValue === 1 && alreadyHidden) {\n uncontrolledElementsSet.add(node);\n }\n if (markerValue === 1) {\n node.setAttribute(markerName, '');\n }\n if (!alreadyHidden && controlAttribute) {\n node.setAttribute(controlAttribute, 'true');\n }\n }\n });\n }\n lockCount$1++;\n return () => {\n hiddenElements.forEach(element => {\n const counterValue = (counterMap.get(element) || 0) - 1;\n const markerValue = (markerCounter.get(element) || 0) - 1;\n counterMap.set(element, counterValue);\n markerCounter.set(element, markerValue);\n if (!counterValue) {\n if (!uncontrolledElementsSet.has(element) && controlAttribute) {\n element.removeAttribute(controlAttribute);\n }\n uncontrolledElementsSet.delete(element);\n }\n if (!markerValue) {\n element.removeAttribute(markerName);\n }\n });\n lockCount$1--;\n if (!lockCount$1) {\n counterMap = new WeakMap();\n counterMap = new WeakMap();\n uncontrolledElementsSet = new WeakSet();\n markerMap = {};\n }\n };\n}\nfunction markOthers(avoidElements, ariaHidden, inert) {\n if (ariaHidden === void 0) {\n ariaHidden = false;\n }\n if (inert === void 0) {\n inert = false;\n }\n const body = getDocument(avoidElements[0]).body;\n return applyAttributeToOthers(avoidElements.concat(Array.from(body.querySelectorAll('[aria-live]'))), body, ariaHidden, inert);\n}\n\nconst getTabbableOptions = () => ({\n getShadowRoot: true,\n displayCheck:\n // JSDOM does not support the `tabbable` library. To solve this we can\n // check if `ResizeObserver` is a real function (not polyfilled), which\n // determines if the current environment is JSDOM-like.\n typeof ResizeObserver === 'function' && ResizeObserver.toString().includes('[native code]') ? 'full' : 'none'\n});\nfunction getTabbableIn(container, direction) {\n const allTabbable = tabbable(container, getTabbableOptions());\n if (direction === 'prev') {\n allTabbable.reverse();\n }\n const activeIndex = allTabbable.indexOf(activeElement(getDocument(container)));\n const nextTabbableElements = allTabbable.slice(activeIndex + 1);\n return nextTabbableElements[0];\n}\nfunction getNextTabbable() {\n return getTabbableIn(document.body, 'next');\n}\nfunction getPreviousTabbable() {\n return getTabbableIn(document.body, 'prev');\n}\nfunction isOutsideEvent(event, container) {\n const containerElement = container || event.currentTarget;\n const relatedTarget = event.relatedTarget;\n return !relatedTarget || !contains(containerElement, relatedTarget);\n}\nfunction disableFocusInside(container) {\n const tabbableElements = tabbable(container, getTabbableOptions());\n tabbableElements.forEach(element => {\n element.dataset.tabindex = element.getAttribute('tabindex') || '';\n element.setAttribute('tabindex', '-1');\n });\n}\nfunction enableFocusInside(container) {\n const elements = container.querySelectorAll('[data-tabindex]');\n elements.forEach(element => {\n const tabindex = element.dataset.tabindex;\n delete element.dataset.tabindex;\n if (tabindex) {\n element.setAttribute('tabindex', tabindex);\n } else {\n element.removeAttribute('tabindex');\n }\n });\n}\n\n// See Diego Haz's Sandbox for making this logic work well on Safari/iOS:\n// https://codesandbox.io/s/tabbable-portal-f4tng?file=/src/FocusTrap.tsx\n\nconst HIDDEN_STYLES = {\n border: 0,\n clip: 'rect(0 0 0 0)',\n height: '1px',\n margin: '-1px',\n overflow: 'hidden',\n padding: 0,\n position: 'fixed',\n whiteSpace: 'nowrap',\n width: '1px',\n top: 0,\n left: 0\n};\nlet timeoutId;\nfunction setActiveElementOnTab(event) {\n if (event.key === 'Tab') {\n event.target;\n clearTimeout(timeoutId);\n }\n}\nconst FocusGuard = /*#__PURE__*/React.forwardRef(function FocusGuard(props, ref) {\n const [role, setRole] = React.useState();\n index(() => {\n if (isSafari()) {\n // Unlike other screen readers such as NVDA and JAWS, the virtual cursor\n // on VoiceOver does trigger the onFocus event, so we can use the focus\n // trap element. On Safari, only buttons trigger the onFocus event.\n // NB: \"group\" role in the Sandbox no longer appears to work, must be a\n // button role.\n setRole('button');\n }\n document.addEventListener('keydown', setActiveElementOnTab);\n return () => {\n document.removeEventListener('keydown', setActiveElementOnTab);\n };\n }, []);\n const restProps = {\n ref,\n tabIndex: 0,\n // Role is only for VoiceOver\n role,\n 'aria-hidden': role ? undefined : true,\n [createAttribute('focus-guard')]: '',\n style: HIDDEN_STYLES\n };\n return /*#__PURE__*/React.createElement(\"span\", _extends({}, props, restProps));\n});\n\nconst PortalContext = /*#__PURE__*/React.createContext(null);\nconst attr = /*#__PURE__*/createAttribute('portal');\n/**\n * @see https://floating-ui.com/docs/FloatingPortal#usefloatingportalnode\n */\nfunction useFloatingPortalNode(props) {\n if (props === void 0) {\n props = {};\n }\n const {\n id,\n root\n } = props;\n const uniqueId = useId();\n const portalContext = usePortalContext();\n const [portalNode, setPortalNode] = React.useState(null);\n const portalNodeRef = React.useRef(null);\n index(() => {\n return () => {\n portalNode == null || portalNode.remove();\n // Allow the subsequent layout effects to create a new node on updates.\n // The portal node will still be cleaned up on unmount.\n // https://github.com/floating-ui/floating-ui/issues/2454\n queueMicrotask(() => {\n portalNodeRef.current = null;\n });\n };\n }, [portalNode]);\n index(() => {\n // Wait for the uniqueId to be generated before creating the portal node in\n // React <18 (using `useFloatingId` instead of the native `useId`).\n // https://github.com/floating-ui/floating-ui/issues/2778\n if (!uniqueId) return;\n if (portalNodeRef.current) return;\n const existingIdRoot = id ? document.getElementById(id) : null;\n if (!existingIdRoot) return;\n const subRoot = document.createElement('div');\n subRoot.id = uniqueId;\n subRoot.setAttribute(attr, '');\n existingIdRoot.appendChild(subRoot);\n portalNodeRef.current = subRoot;\n setPortalNode(subRoot);\n }, [id, uniqueId]);\n index(() => {\n // Wait for the root to exist before creating the portal node. The root must\n // be stored in state, not a ref, for this to work reactively.\n if (root === null) return;\n if (!uniqueId) return;\n if (portalNodeRef.current) return;\n let container = root || (portalContext == null ? void 0 : portalContext.portalNode);\n if (container && !isElement(container)) container = container.current;\n container = container || document.body;\n let idWrapper = null;\n if (id) {\n idWrapper = document.createElement('div');\n idWrapper.id = id;\n container.appendChild(idWrapper);\n }\n const subRoot = document.createElement('div');\n subRoot.id = uniqueId;\n subRoot.setAttribute(attr, '');\n container = idWrapper || container;\n container.appendChild(subRoot);\n portalNodeRef.current = subRoot;\n setPortalNode(subRoot);\n }, [id, root, uniqueId, portalContext]);\n return portalNode;\n}\n/**\n * Portals the floating element into a given container element — by default,\n * outside of the app root and into the body.\n * This is necessary to ensure the floating element can appear outside any\n * potential parent containers that cause clipping (such as `overflow: hidden`),\n * while retaining its location in the React tree.\n * @see https://floating-ui.com/docs/FloatingPortal\n */\nfunction FloatingPortal(props) {\n const {\n children,\n id,\n root,\n preserveTabOrder = true\n } = props;\n const portalNode = useFloatingPortalNode({\n id,\n root\n });\n const [focusManagerState, setFocusManagerState] = React.useState(null);\n const beforeOutsideRef = React.useRef(null);\n const afterOutsideRef = React.useRef(null);\n const beforeInsideRef = React.useRef(null);\n const afterInsideRef = React.useRef(null);\n const modal = focusManagerState == null ? void 0 : focusManagerState.modal;\n const open = focusManagerState == null ? void 0 : focusManagerState.open;\n const shouldRenderGuards =\n // The FocusManager and therefore floating element are currently open/\n // rendered.\n !!focusManagerState &&\n // Guards are only for non-modal focus management.\n !focusManagerState.modal &&\n // Don't render if unmount is transitioning.\n focusManagerState.open && preserveTabOrder && !!(root || portalNode);\n\n // https://codesandbox.io/s/tabbable-portal-f4tng?file=/src/TabbablePortal.tsx\n React.useEffect(() => {\n if (!portalNode || !preserveTabOrder || modal) {\n return;\n }\n\n // Make sure elements inside the portal element are tabbable only when the\n // portal has already been focused, either by tabbing into a focus trap\n // element outside or using the mouse.\n function onFocus(event) {\n if (portalNode && isOutsideEvent(event)) {\n const focusing = event.type === 'focusin';\n const manageFocus = focusing ? enableFocusInside : disableFocusInside;\n manageFocus(portalNode);\n }\n }\n // Listen to the event on the capture phase so they run before the focus\n // trap elements onFocus prop is called.\n portalNode.addEventListener('focusin', onFocus, true);\n portalNode.addEventListener('focusout', onFocus, true);\n return () => {\n portalNode.removeEventListener('focusin', onFocus, true);\n portalNode.removeEventListener('focusout', onFocus, true);\n };\n }, [portalNode, preserveTabOrder, modal]);\n React.useEffect(() => {\n if (!portalNode) return;\n if (open) return;\n enableFocusInside(portalNode);\n }, [open, portalNode]);\n return /*#__PURE__*/React.createElement(PortalContext.Provider, {\n value: React.useMemo(() => ({\n preserveTabOrder,\n beforeOutsideRef,\n afterOutsideRef,\n beforeInsideRef,\n afterInsideRef,\n portalNode,\n setFocusManagerState\n }), [preserveTabOrder, portalNode])\n }, shouldRenderGuards && portalNode && /*#__PURE__*/React.createElement(FocusGuard, {\n \"data-type\": \"outside\",\n ref: beforeOutsideRef,\n onFocus: event => {\n if (isOutsideEvent(event, portalNode)) {\n var _beforeInsideRef$curr;\n (_beforeInsideRef$curr = beforeInsideRef.current) == null || _beforeInsideRef$curr.focus();\n } else {\n const prevTabbable = getPreviousTabbable() || (focusManagerState == null ? void 0 : focusManagerState.refs.domReference.current);\n prevTabbable == null || prevTabbable.focus();\n }\n }\n }), shouldRenderGuards && portalNode && /*#__PURE__*/React.createElement(\"span\", {\n \"aria-owns\": portalNode.id,\n style: HIDDEN_STYLES\n }), portalNode && /*#__PURE__*/ReactDOM.createPortal(children, portalNode), shouldRenderGuards && portalNode && /*#__PURE__*/React.createElement(FocusGuard, {\n \"data-type\": \"outside\",\n ref: afterOutsideRef,\n onFocus: event => {\n if (isOutsideEvent(event, portalNode)) {\n var _afterInsideRef$curre;\n (_afterInsideRef$curre = afterInsideRef.current) == null || _afterInsideRef$curre.focus();\n } else {\n const nextTabbable = getNextTabbable() || (focusManagerState == null ? void 0 : focusManagerState.refs.domReference.current);\n nextTabbable == null || nextTabbable.focus();\n (focusManagerState == null ? void 0 : focusManagerState.closeOnFocusOut) && (focusManagerState == null ? void 0 : focusManagerState.onOpenChange(false, event.nativeEvent, 'focus-out'));\n }\n }\n }));\n}\nconst usePortalContext = () => React.useContext(PortalContext);\n\nconst FOCUSABLE_ATTRIBUTE = 'data-floating-ui-focusable';\nfunction getFloatingFocusElement(floatingElement) {\n if (!floatingElement) {\n return null;\n }\n // Try to find the element that has `{...getFloatingProps()}` spread on it.\n // This indicates the floating element is acting as a positioning wrapper, and\n // so focus should be managed on the child element with the event handlers and\n // aria props.\n return floatingElement.hasAttribute(FOCUSABLE_ATTRIBUTE) ? floatingElement : floatingElement.querySelector(\"[\" + FOCUSABLE_ATTRIBUTE + \"]\") || floatingElement;\n}\n\nconst LIST_LIMIT = 20;\nlet previouslyFocusedElements = [];\nfunction addPreviouslyFocusedElement(element) {\n previouslyFocusedElements = previouslyFocusedElements.filter(el => el.isConnected);\n let tabbableEl = element;\n if (!tabbableEl || getNodeName(tabbableEl) === 'body') return;\n if (!isTabbable(tabbableEl, getTabbableOptions())) {\n const tabbableChild = tabbable(tabbableEl, getTabbableOptions())[0];\n if (tabbableChild) {\n tabbableEl = tabbableChild;\n }\n }\n previouslyFocusedElements.push(tabbableEl);\n if (previouslyFocusedElements.length > LIST_LIMIT) {\n previouslyFocusedElements = previouslyFocusedElements.slice(-LIST_LIMIT);\n }\n}\nfunction getPreviouslyFocusedElement() {\n return previouslyFocusedElements.slice().reverse().find(el => el.isConnected);\n}\nconst VisuallyHiddenDismiss = /*#__PURE__*/React.forwardRef(function VisuallyHiddenDismiss(props, ref) {\n return /*#__PURE__*/React.createElement(\"button\", _extends({}, props, {\n type: \"button\",\n ref: ref,\n tabIndex: -1,\n style: HIDDEN_STYLES\n }));\n});\n/**\n * Provides focus management for the floating element.\n * @see https://floating-ui.com/docs/FloatingFocusManager\n */\nfunction FloatingFocusManager(props) {\n const {\n context,\n children,\n disabled = false,\n order = ['content'],\n guards: _guards = true,\n initialFocus = 0,\n returnFocus = true,\n restoreFocus = false,\n modal = true,\n visuallyHiddenDismiss = false,\n closeOnFocusOut = true\n } = props;\n const {\n open,\n refs,\n nodeId,\n onOpenChange,\n events,\n dataRef,\n floatingId,\n elements: {\n domReference,\n floating\n }\n } = context;\n const ignoreInitialFocus = typeof initialFocus === 'number' && initialFocus < 0;\n // If the reference is a combobox and is typeable (e.g. input/textarea),\n // there are different focus semantics. The guards should not be rendered, but\n // aria-hidden should be applied to all nodes still. Further, the visually\n // hidden dismiss button should only appear at the end of the list, not the\n // start.\n const isUntrappedTypeableCombobox = isTypeableCombobox(domReference) && ignoreInitialFocus;\n\n // Force the guards to be rendered if the `inert` attribute is not supported.\n const guards = supportsInert() ? _guards : true;\n const orderRef = useLatestRef(order);\n const initialFocusRef = useLatestRef(initialFocus);\n const returnFocusRef = useLatestRef(returnFocus);\n const tree = useFloatingTree();\n const portalContext = usePortalContext();\n const startDismissButtonRef = React.useRef(null);\n const endDismissButtonRef = React.useRef(null);\n const preventReturnFocusRef = React.useRef(false);\n const isPointerDownRef = React.useRef(false);\n const tabbableIndexRef = React.useRef(-1);\n const isInsidePortal = portalContext != null;\n const floatingFocusElement = getFloatingFocusElement(floating);\n const getTabbableContent = useEffectEvent(function (container) {\n if (container === void 0) {\n container = floatingFocusElement;\n }\n return container ? tabbable(container, getTabbableOptions()) : [];\n });\n const getTabbableElements = useEffectEvent(container => {\n const content = getTabbableContent(container);\n return orderRef.current.map(type => {\n if (domReference && type === 'reference') {\n return domReference;\n }\n if (floatingFocusElement && type === 'floating') {\n return floatingFocusElement;\n }\n return content;\n }).filter(Boolean).flat();\n });\n React.useEffect(() => {\n if (disabled) return;\n if (!modal) return;\n function onKeyDown(event) {\n if (event.key === 'Tab') {\n // The focus guards have nothing to focus, so we need to stop the event.\n if (contains(floatingFocusElement, activeElement(getDocument(floatingFocusElement))) && getTabbableContent().length === 0 && !isUntrappedTypeableCombobox) {\n stopEvent(event);\n }\n const els = getTabbableElements();\n const target = getTarget(event);\n if (orderRef.current[0] === 'reference' && target === domReference) {\n stopEvent(event);\n if (event.shiftKey) {\n enqueueFocus(els[els.length - 1]);\n } else {\n enqueueFocus(els[1]);\n }\n }\n if (orderRef.current[1] === 'floating' && target === floatingFocusElement && event.shiftKey) {\n stopEvent(event);\n enqueueFocus(els[0]);\n }\n }\n }\n const doc = getDocument(floatingFocusElement);\n doc.addEventListener('keydown', onKeyDown);\n return () => {\n doc.removeEventListener('keydown', onKeyDown);\n };\n }, [disabled, domReference, floatingFocusElement, modal, orderRef, isUntrappedTypeableCombobox, getTabbableContent, getTabbableElements]);\n React.useEffect(() => {\n if (disabled) return;\n if (!floating) return;\n function handleFocusIn(event) {\n const target = getTarget(event);\n const tabbableContent = getTabbableContent();\n const tabbableIndex = tabbableContent.indexOf(target);\n if (tabbableIndex !== -1) {\n tabbableIndexRef.current = tabbableIndex;\n }\n }\n floating.addEventListener('focusin', handleFocusIn);\n return () => {\n floating.removeEventListener('focusin', handleFocusIn);\n };\n }, [disabled, floating, getTabbableContent]);\n React.useEffect(() => {\n if (disabled) return;\n if (!closeOnFocusOut) return;\n\n // In Safari, buttons lose focus when pressing them.\n function handlePointerDown() {\n isPointerDownRef.current = true;\n setTimeout(() => {\n isPointerDownRef.current = false;\n });\n }\n function handleFocusOutside(event) {\n const relatedTarget = event.relatedTarget;\n queueMicrotask(() => {\n const movedToUnrelatedNode = !(contains(domReference, relatedTarget) || contains(floating, relatedTarget) || contains(relatedTarget, floating) || contains(portalContext == null ? void 0 : portalContext.portalNode, relatedTarget) || relatedTarget != null && relatedTarget.hasAttribute(createAttribute('focus-guard')) || tree && (getChildren(tree.nodesRef.current, nodeId).find(node => {\n var _node$context, _node$context2;\n return contains((_node$context = node.context) == null ? void 0 : _node$context.elements.floating, relatedTarget) || contains((_node$context2 = node.context) == null ? void 0 : _node$context2.elements.domReference, relatedTarget);\n }) || getAncestors(tree.nodesRef.current, nodeId).find(node => {\n var _node$context3, _node$context4;\n return ((_node$context3 = node.context) == null ? void 0 : _node$context3.elements.floating) === relatedTarget || ((_node$context4 = node.context) == null ? void 0 : _node$context4.elements.domReference) === relatedTarget;\n })));\n\n // Restore focus to the previous tabbable element index to prevent\n // focus from being lost outside the floating tree.\n if (restoreFocus && movedToUnrelatedNode && activeElement(getDocument(floatingFocusElement)) === getDocument(floatingFocusElement).body) {\n // Let `FloatingPortal` effect knows that focus is still inside the\n // floating tree.\n if (isHTMLElement(floatingFocusElement)) {\n floatingFocusElement.focus();\n }\n const prevTabbableIndex = tabbableIndexRef.current;\n const tabbableContent = getTabbableContent();\n const nodeToFocus = tabbableContent[prevTabbableIndex] || tabbableContent[tabbableContent.length - 1] || floatingFocusElement;\n if (isHTMLElement(nodeToFocus)) {\n nodeToFocus.focus();\n }\n }\n\n // Focus did not move inside the floating tree, and there are no tabbable\n // portal guards to handle closing.\n if ((isUntrappedTypeableCombobox ? true : !modal) && relatedTarget && movedToUnrelatedNode && !isPointerDownRef.current &&\n // Fix React 18 Strict Mode returnFocus due to double rendering.\n relatedTarget !== getPreviouslyFocusedElement()) {\n preventReturnFocusRef.current = true;\n onOpenChange(false, event, 'focus-out');\n }\n });\n }\n if (floating && isHTMLElement(domReference)) {\n domReference.addEventListener('focusout', handleFocusOutside);\n domReference.addEventListener('pointerdown', handlePointerDown);\n floating.addEventListener('focusout', handleFocusOutside);\n return () => {\n domReference.removeEventListener('focusout', handleFocusOutside);\n domReference.removeEventListener('pointerdown', handlePointerDown);\n floating.removeEventListener('focusout', handleFocusOutside);\n };\n }\n }, [disabled, domReference, floating, floatingFocusElement, modal, nodeId, tree, portalContext, onOpenChange, closeOnFocusOut, restoreFocus, getTabbableContent, isUntrappedTypeableCombobox]);\n React.useEffect(() => {\n var _portalContext$portal;\n if (disabled) return;\n\n // Don't hide portals nested within the parent portal.\n const portalNodes = Array.from((portalContext == null || (_portalContext$portal = portalContext.portalNode) == null ? void 0 : _portalContext$portal.querySelectorAll(\"[\" + createAttribute('portal') + \"]\")) || []);\n if (floating) {\n const insideElements = [floating, ...portalNodes, startDismissButtonRef.current, endDismissButtonRef.current, orderRef.current.includes('reference') || isUntrappedTypeableCombobox ? domReference : null].filter(x => x != null);\n const cleanup = modal || isUntrappedTypeableCombobox ? markOthers(insideElements, guards, !guards) : markOthers(insideElements);\n return () => {\n cleanup();\n };\n }\n }, [disabled, domReference, floating, modal, orderRef, portalContext, isUntrappedTypeableCombobox, guards]);\n index(() => {\n if (disabled || !isHTMLElement(floatingFocusElement)) return;\n const doc = getDocument(floatingFocusElement);\n const previouslyFocusedElement = activeElement(doc);\n\n // Wait for any layout effect state setters to execute to set `tabIndex`.\n queueMicrotask(() => {\n const focusableElements = getTabbableElements(floatingFocusElement);\n const initialFocusValue = initialFocusRef.current;\n const elToFocus = (typeof initialFocusValue === 'number' ? focusableElements[initialFocusValue] : initialFocusValue.current) || floatingFocusElement;\n const focusAlreadyInsideFloatingEl = contains(floatingFocusElement, previouslyFocusedElement);\n if (!ignoreInitialFocus && !focusAlreadyInsideFloatingEl && open) {\n enqueueFocus(elToFocus, {\n preventScroll: elToFocus === floatingFocusElement\n });\n }\n });\n }, [disabled, open, floatingFocusElement, ignoreInitialFocus, getTabbableElements, initialFocusRef]);\n index(() => {\n if (disabled || !floatingFocusElement) return;\n let preventReturnFocusScroll = false;\n const doc = getDocument(floatingFocusElement);\n const previouslyFocusedElement = activeElement(doc);\n const contextData = dataRef.current;\n let openEvent = contextData.openEvent;\n addPreviouslyFocusedElement(previouslyFocusedElement);\n\n // Dismissing via outside press should always ignore `returnFocus` to\n // prevent unwanted scrolling.\n function onOpenChange(_ref) {\n let {\n open,\n reason,\n event,\n nested\n } = _ref;\n if (open) {\n openEvent = event;\n }\n if (reason === 'escape-key' && refs.domReference.current) {\n addPreviouslyFocusedElement(refs.domReference.current);\n }\n if (reason === 'hover' && event.type === 'mouseleave') {\n preventReturnFocusRef.current = true;\n }\n if (reason !== 'outside-press') return;\n if (nested) {\n preventReturnFocusRef.current = false;\n preventReturnFocusScroll = true;\n } else {\n preventReturnFocusRef.current = !(isVirtualClick(event) || isVirtualPointerEvent(event));\n }\n }\n events.on('openchange', onOpenChange);\n const fallbackEl = doc.createElement('span');\n fallbackEl.setAttribute('tabindex', '-1');\n fallbackEl.setAttribute('aria-hidden', 'true');\n Object.assign(fallbackEl.style, HIDDEN_STYLES);\n if (isInsidePortal && domReference) {\n domReference.insertAdjacentElement('afterend', fallbackEl);\n }\n function getReturnElement() {\n if (typeof returnFocusRef.current === 'boolean') {\n return getPreviouslyFocusedElement() || fallbackEl;\n }\n return returnFocusRef.current.current || fallbackEl;\n }\n return () => {\n events.off('openchange', onOpenChange);\n const activeEl = activeElement(doc);\n const isFocusInsideFloatingTree = contains(floating, activeEl) || tree && getChildren(tree.nodesRef.current, nodeId).some(node => {\n var _node$context5;\n return contains((_node$context5 = node.context) == null ? void 0 : _node$context5.elements.floating, activeEl);\n });\n const shouldFocusReference = isFocusInsideFloatingTree || openEvent && ['click', 'mousedown'].includes(openEvent.type);\n if (shouldFocusReference && refs.domReference.current) {\n addPreviouslyFocusedElement(refs.domReference.current);\n }\n const returnElement = getReturnElement();\n queueMicrotask(() => {\n if (\n // eslint-disable-next-line react-hooks/exhaustive-deps\n returnFocusRef.current && !preventReturnFocusRef.current && isHTMLElement(returnElement) && (\n // If the focus moved somewhere else after mount, avoid returning focus\n // since it likely entered a different element which should be\n // respected: https://github.com/floating-ui/floating-ui/issues/2607\n returnElement !== activeEl && activeEl !== doc.body ? isFocusInsideFloatingTree : true)) {\n returnElement.focus({\n preventScroll: preventReturnFocusScroll\n });\n }\n fallbackEl.remove();\n });\n };\n }, [disabled, floating, floatingFocusElement, returnFocusRef, dataRef, refs, events, tree, nodeId, isInsidePortal, domReference]);\n React.useEffect(() => {\n // The `returnFocus` cleanup behavior is inside a microtask; ensure we\n // wait for it to complete before resetting the flag.\n queueMicrotask(() => {\n preventReturnFocusRef.current = false;\n });\n }, [disabled]);\n\n // Synchronize the `context` & `modal` value to the FloatingPortal context.\n // It will decide whether or not it needs to render its own guards.\n index(() => {\n if (disabled) return;\n if (!portalContext) return;\n portalContext.setFocusManagerState({\n modal,\n closeOnFocusOut,\n open,\n onOpenChange,\n refs\n });\n return () => {\n portalContext.setFocusManagerState(null);\n };\n }, [disabled, portalContext, modal, open, onOpenChange, refs, closeOnFocusOut]);\n index(() => {\n if (disabled) return;\n if (!floatingFocusElement) return;\n if (typeof MutationObserver !== 'function') return;\n if (ignoreInitialFocus) return;\n const handleMutation = () => {\n const tabIndex = floatingFocusElement.getAttribute('tabindex');\n const tabbableContent = getTabbableContent();\n const activeEl = activeElement(getDocument(floating));\n const tabbableIndex = tabbableContent.indexOf(activeEl);\n if (tabbableIndex !== -1) {\n tabbableIndexRef.current = tabbableIndex;\n }\n if (orderRef.current.includes('floating') || activeEl !== refs.domReference.current && tabbableContent.length === 0) {\n if (tabIndex !== '0') {\n floatingFocusElement.setAttribute('tabindex', '0');\n }\n } else if (tabIndex !== '-1') {\n floatingFocusElement.setAttribute('tabindex', '-1');\n }\n };\n handleMutation();\n const observer = new MutationObserver(handleMutation);\n observer.observe(floatingFocusElement, {\n childList: true,\n subtree: true,\n attributes: true\n });\n return () => {\n observer.disconnect();\n };\n }, [disabled, floating, floatingFocusElement, refs, orderRef, getTabbableContent, ignoreInitialFocus]);\n function renderDismissButton(location) {\n if (disabled || !visuallyHiddenDismiss || !modal) {\n return null;\n }\n return /*#__PURE__*/React.createElement(VisuallyHiddenDismiss, {\n ref: location === 'start' ? startDismissButtonRef : endDismissButtonRef,\n onClick: event => onOpenChange(false, event.nativeEvent)\n }, typeof visuallyHiddenDismiss === 'string' ? visuallyHiddenDismiss : 'Dismiss');\n }\n const shouldRenderGuards = !disabled && guards && (modal ? !isUntrappedTypeableCombobox : true) && (isInsidePortal || modal);\n return /*#__PURE__*/React.createElement(React.Fragment, null, shouldRenderGuards && /*#__PURE__*/React.createElement(FocusGuard, {\n \"data-type\": \"inside\",\n ref: portalContext == null ? void 0 : portalContext.beforeInsideRef,\n onFocus: event => {\n if (modal) {\n const els = getTabbableElements();\n enqueueFocus(order[0] === 'reference' ? els[0] : els[els.length - 1]);\n } else if (portalContext != null && portalContext.preserveTabOrder && portalContext.portalNode) {\n preventReturnFocusRef.current = false;\n if (isOutsideEvent(event, portalContext.portalNode)) {\n const nextTabbable = getNextTabbable() || domReference;\n nextTabbable == null || nextTabbable.focus();\n } else {\n var _portalContext$before;\n (_portalContext$before = portalContext.beforeOutsideRef.current) == null || _portalContext$before.focus();\n }\n }\n }\n }), !isUntrappedTypeableCombobox && renderDismissButton('start'), children, renderDismissButton('end'), shouldRenderGuards && /*#__PURE__*/React.createElement(FocusGuard, {\n \"data-type\": \"inside\",\n ref: portalContext == null ? void 0 : portalContext.afterInsideRef,\n onFocus: event => {\n if (modal) {\n enqueueFocus(getTabbableElements()[0]);\n } else if (portalContext != null && portalContext.preserveTabOrder && portalContext.portalNode) {\n if (closeOnFocusOut) {\n preventReturnFocusRef.current = true;\n }\n if (isOutsideEvent(event, portalContext.portalNode)) {\n const prevTabbable = getPreviousTabbable() || domReference;\n prevTabbable == null || prevTabbable.focus();\n } else {\n var _portalContext$afterO;\n (_portalContext$afterO = portalContext.afterOutsideRef.current) == null || _portalContext$afterO.focus();\n }\n }\n }\n }));\n}\n\nlet lockCount = 0;\nfunction enableScrollLock() {\n const isIOS = /iP(hone|ad|od)|iOS/.test(getPlatform());\n const bodyStyle = document.body.style;\n // RTL <body> scrollbar\n const scrollbarX = Math.round(document.documentElement.getBoundingClientRect().left) + document.documentElement.scrollLeft;\n const paddingProp = scrollbarX ? 'paddingLeft' : 'paddingRight';\n const scrollbarWidth = window.innerWidth - document.documentElement.clientWidth;\n const scrollX = bodyStyle.left ? parseFloat(bodyStyle.left) : window.scrollX;\n const scrollY = bodyStyle.top ? parseFloat(bodyStyle.top) : window.scrollY;\n bodyStyle.overflow = 'hidden';\n if (scrollbarWidth) {\n bodyStyle[paddingProp] = scrollbarWidth + \"px\";\n }\n\n // Only iOS doesn't respect `overflow: hidden` on document.body, and this\n // technique has fewer side effects.\n if (isIOS) {\n var _window$visualViewpor, _window$visualViewpor2;\n // iOS 12 does not support `visualViewport`.\n const offsetLeft = ((_window$visualViewpor = window.visualViewport) == null ? void 0 : _window$visualViewpor.offsetLeft) || 0;\n const offsetTop = ((_window$visualViewpor2 = window.visualViewport) == null ? void 0 : _window$visualViewpor2.offsetTop) || 0;\n Object.assign(bodyStyle, {\n position: 'fixed',\n top: -(scrollY - Math.floor(offsetTop)) + \"px\",\n left: -(scrollX - Math.floor(offsetLeft)) + \"px\",\n right: '0'\n });\n }\n return () => {\n Object.assign(bodyStyle, {\n overflow: '',\n [paddingProp]: ''\n });\n if (isIOS) {\n Object.assign(bodyStyle, {\n position: '',\n top: '',\n left: '',\n right: ''\n });\n window.scrollTo(scrollX, scrollY);\n }\n };\n}\nlet cleanup = () => {};\n\n/**\n * Provides base styling for a fixed overlay element to dim content or block\n * pointer events behind a floating element.\n * It's a regular `<div>`, so it can be styled via any CSS solution you prefer.\n * @see https://floating-ui.com/docs/FloatingOverlay\n */\nconst FloatingOverlay = /*#__PURE__*/React.forwardRef(function FloatingOverlay(props, ref) {\n const {\n lockScroll = false,\n ...rest\n } = props;\n index(() => {\n if (!lockScroll) return;\n lockCount++;\n if (lockCount === 1) {\n cleanup = enableScrollLock();\n }\n return () => {\n lockCount--;\n if (lockCount === 0) {\n cleanup();\n }\n };\n }, [lockScroll]);\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: ref\n }, rest, {\n style: {\n position: 'fixed',\n overflow: 'auto',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...rest.style\n }\n }));\n});\n\nfunction isButtonTarget(event) {\n return isHTMLElement(event.target) && event.target.tagName === 'BUTTON';\n}\nfunction isSpaceIgnored(element) {\n return isTypeableElement(element);\n}\n/**\n * Opens or closes the floating element when clicking the reference element.\n * @see https://floating-ui.com/docs/useClick\n */\nfunction useClick(context, props) {\n if (props === void 0) {\n props = {};\n }\n const {\n open,\n onOpenChange,\n dataRef,\n elements: {\n domReference\n }\n } = context;\n const {\n enabled = true,\n event: eventOption = 'click',\n toggle = true,\n ignoreMouse = false,\n keyboardHandlers = true,\n stickIfOpen = true\n } = props;\n const pointerTypeRef = React.useRef();\n const didKeyDownRef = React.useRef(false);\n const reference = React.useMemo(() => ({\n onPointerDown(event) {\n pointerTypeRef.current = event.pointerType;\n },\n onMouseDown(event) {\n const pointerType = pointerTypeRef.current;\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) return;\n if (eventOption === 'click') return;\n if (isMouseLikePointerType(pointerType, true) && ignoreMouse) return;\n if (open && toggle && (dataRef.current.openEvent && stickIfOpen ? dataRef.current.openEvent.type === 'mousedown' : true)) {\n onOpenChange(false, event.nativeEvent, 'click');\n } else {\n // Prevent stealing focus from the floating element\n event.preventDefault();\n onOpenChange(true, event.nativeEvent, 'click');\n }\n },\n onClick(event) {\n const pointerType = pointerTypeRef.current;\n if (eventOption === 'mousedown' && pointerTypeRef.current) {\n pointerTypeRef.current = undefined;\n return;\n }\n if (isMouseLikePointerType(pointerType, true) && ignoreMouse) return;\n if (open && toggle && (dataRef.current.openEvent && stickIfOpen ? dataRef.current.openEvent.type === 'click' : true)) {\n onOpenChange(false, event.nativeEvent, 'click');\n } else {\n onOpenChange(true, event.nativeEvent, 'click');\n }\n },\n onKeyDown(event) {\n pointerTypeRef.current = undefined;\n if (event.defaultPrevented || !keyboardHandlers || isButtonTarget(event)) {\n return;\n }\n if (event.key === ' ' && !isSpaceIgnored(domReference)) {\n // Prevent scrolling\n event.preventDefault();\n didKeyDownRef.current = true;\n }\n if (event.key === 'Enter') {\n if (open && toggle) {\n onOpenChange(false, event.nativeEvent, 'click');\n } else {\n onOpenChange(true, event.nativeEvent, 'click');\n }\n }\n },\n onKeyUp(event) {\n if (event.defaultPrevented || !keyboardHandlers || isButtonTarget(event) || isSpaceIgnored(domReference)) {\n return;\n }\n if (event.key === ' ' && didKeyDownRef.current) {\n didKeyDownRef.current = false;\n if (open && toggle) {\n onOpenChange(false, event.nativeEvent, 'click');\n } else {\n onOpenChange(true, event.nativeEvent, 'click');\n }\n }\n }\n }), [dataRef, domReference, eventOption, ignoreMouse, keyboardHandlers, onOpenChange, open, stickIfOpen, toggle]);\n return React.useMemo(() => enabled ? {\n reference\n } : {}, [enabled, reference]);\n}\n\nfunction createVirtualElement(domElement, data) {\n let offsetX = null;\n let offsetY = null;\n let isAutoUpdateEvent = false;\n return {\n contextElement: domElement || undefined,\n getBoundingClientRect() {\n var _data$dataRef$current;\n const domRect = (domElement == null ? void 0 : domElement.getBoundingClientRect()) || {\n width: 0,\n height: 0,\n x: 0,\n y: 0\n };\n const isXAxis = data.axis === 'x' || data.axis === 'both';\n const isYAxis = data.axis === 'y' || data.axis === 'both';\n const canTrackCursorOnAutoUpdate = ['mouseenter', 'mousemove'].includes(((_data$dataRef$current = data.dataRef.current.openEvent) == null ? void 0 : _data$dataRef$current.type) || '') && data.pointerType !== 'touch';\n let width = domRect.width;\n let height = domRect.height;\n let x = domRect.x;\n let y = domRect.y;\n if (offsetX == null && data.x && isXAxis) {\n offsetX = domRect.x - data.x;\n }\n if (offsetY == null && data.y && isYAxis) {\n offsetY = domRect.y - data.y;\n }\n x -= offsetX || 0;\n y -= offsetY || 0;\n width = 0;\n height = 0;\n if (!isAutoUpdateEvent || canTrackCursorOnAutoUpdate) {\n width = data.axis === 'y' ? domRect.width : 0;\n height = data.axis === 'x' ? domRect.height : 0;\n x = isXAxis && data.x != null ? data.x : x;\n y = isYAxis && data.y != null ? data.y : y;\n } else if (isAutoUpdateEvent && !canTrackCursorOnAutoUpdate) {\n height = data.axis === 'x' ? domRect.height : height;\n width = data.axis === 'y' ? domRect.width : width;\n }\n isAutoUpdateEvent = true;\n return {\n width,\n height,\n x,\n y,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x\n };\n }\n };\n}\nfunction isMouseBasedEvent(event) {\n return event != null && event.clientX != null;\n}\n/**\n * Positions the floating element relative to a client point (in the viewport),\n * such as the mouse position. By default, it follows the mouse cursor.\n * @see https://floating-ui.com/docs/useClientPoint\n */\nfunction useClientPoint(context, props) {\n if (props === void 0) {\n props = {};\n }\n const {\n open,\n dataRef,\n elements: {\n floating,\n domReference\n },\n refs\n } = context;\n const {\n enabled = true,\n axis = 'both',\n x = null,\n y = null\n } = props;\n const initialRef = React.useRef(false);\n const cleanupListenerRef = React.useRef(null);\n const [pointerType, setPointerType] = React.useState();\n const [reactive, setReactive] = React.useState([]);\n const setReference = useEffectEvent((x, y) => {\n if (initialRef.current) return;\n\n // Prevent setting if the open event was not a mouse-like one\n // (e.g. focus to open, then hover over the reference element).\n // Only apply if the event exists.\n if (dataRef.current.openEvent && !isMouseBasedEvent(dataRef.current.openEvent)) {\n return;\n }\n refs.setPositionReference(createVirtualElement(domReference, {\n x,\n y,\n axis,\n dataRef,\n pointerType\n }));\n });\n const handleReferenceEnterOrMove = useEffectEvent(event => {\n if (x != null || y != null) return;\n if (!open) {\n setReference(event.clientX, event.clientY);\n } else if (!cleanupListenerRef.current) {\n // If there's no cleanup, there's no listener, but we want to ensure\n // we add the listener if the cursor landed on the floating element and\n // then back on the reference (i.e. it's interactive).\n setReactive([]);\n }\n });\n\n // If the pointer is a mouse-like pointer, we want to continue following the\n // mouse even if the floating element is transitioning out. On touch\n // devices, this is undesirable because the floating element will move to\n // the dismissal touch point.\n const openCheck = isMouseLikePointerType(pointerType) ? floating : open;\n const addListener = React.useCallback(() => {\n // Explicitly specified `x`/`y` coordinates shouldn't add a listener.\n if (!openCheck || !enabled || x != null || y != null) return;\n const win = getWindow(floating);\n function handleMouseMove(event) {\n const target = getTarget(event);\n if (!contains(floating, target)) {\n setReference(event.clientX, event.clientY);\n } else {\n win.removeEventListener('mousemove', handleMouseMove);\n cleanupListenerRef.current = null;\n }\n }\n if (!dataRef.current.openEvent || isMouseBasedEvent(dataRef.current.openEvent)) {\n win.addEventListener('mousemove', handleMouseMove);\n const cleanup = () => {\n win.removeEventListener('mousemove', handleMouseMove);\n cleanupListenerRef.current = null;\n };\n cleanupListenerRef.current = cleanup;\n return cleanup;\n }\n refs.setPositionReference(domReference);\n }, [openCheck, enabled, x, y, floating, dataRef, refs, domReference, setReference]);\n React.useEffect(() => {\n return addListener();\n }, [addListener, reactive]);\n React.useEffect(() => {\n if (enabled && !floating) {\n initialRef.current = false;\n }\n }, [enabled, floating]);\n React.useEffect(() => {\n if (!enabled && open) {\n initialRef.current = true;\n }\n }, [enabled, open]);\n index(() => {\n if (enabled && (x != null || y != null)) {\n initialRef.current = false;\n setReference(x, y);\n }\n }, [enabled, x, y, setReference]);\n const reference = React.useMemo(() => {\n function setPointerTypeRef(_ref) {\n let {\n pointerType\n } = _ref;\n setPointerType(pointerType);\n }\n return {\n onPointerDown: setPointerTypeRef,\n onPointerEnter: setPointerTypeRef,\n onMouseMove: handleReferenceEnterOrMove,\n onMouseEnter: handleReferenceEnterOrMove\n };\n }, [handleReferenceEnterOrMove]);\n return React.useMemo(() => enabled ? {\n reference\n } : {}, [enabled, reference]);\n}\n\nconst bubbleHandlerKeys = {\n pointerdown: 'onPointerDown',\n mousedown: 'onMouseDown',\n click: 'onClick'\n};\nconst captureHandlerKeys = {\n pointerdown: 'onPointerDownCapture',\n mousedown: 'onMouseDownCapture',\n click: 'onClickCapture'\n};\nconst normalizeProp = normalizable => {\n var _normalizable$escapeK, _normalizable$outside;\n return {\n escapeKey: typeof normalizable === 'boolean' ? normalizable : (_normalizable$escapeK = normalizable == null ? void 0 : normalizable.escapeKey) != null ? _normalizable$escapeK : false,\n outsidePress: typeof normalizable === 'boolean' ? normalizable : (_normalizable$outside = normalizable == null ? void 0 : normalizable.outsidePress) != null ? _normalizable$outside : true\n };\n};\n/**\n * Closes the floating element when a dismissal is requested — by default, when\n * the user presses the `escape` key or outside of the floating element.\n * @see https://floating-ui.com/docs/useDismiss\n */\nfunction useDismiss(context, props) {\n if (props === void 0) {\n props = {};\n }\n const {\n open,\n onOpenChange,\n elements,\n dataRef\n } = context;\n const {\n enabled = true,\n escapeKey = true,\n outsidePress: unstable_outsidePress = true,\n outsidePressEvent = 'pointerdown',\n referencePress = false,\n referencePressEvent = 'pointerdown',\n ancestorScroll = false,\n bubbles,\n capture\n } = props;\n const tree = useFloatingTree();\n const outsidePressFn = useEffectEvent(typeof unstable_outsidePress === 'function' ? unstable_outsidePress : () => false);\n const outsidePress = typeof unstable_outsidePress === 'function' ? outsidePressFn : unstable_outsidePress;\n const insideReactTreeRef = React.useRef(false);\n const endedOrStartedInsideRef = React.useRef(false);\n const {\n escapeKey: escapeKeyBubbles,\n outsidePress: outsidePressBubbles\n } = normalizeProp(bubbles);\n const {\n escapeKey: escapeKeyCapture,\n outsidePress: outsidePressCapture\n } = normalizeProp(capture);\n const isComposingRef = React.useRef(false);\n const closeOnEscapeKeyDown = useEffectEvent(event => {\n var _dataRef$current$floa;\n if (!open || !enabled || !escapeKey || event.key !== 'Escape') {\n return;\n }\n\n // Wait until IME is settled. Pressing `Escape` while composing should\n // close the compose menu, but not the floating element.\n if (isComposingRef.current) {\n return;\n }\n const nodeId = (_dataRef$current$floa = dataRef.current.floatingContext) == null ? void 0 : _dataRef$current$floa.nodeId;\n const children = tree ? getChildren(tree.nodesRef.current, nodeId) : [];\n if (!escapeKeyBubbles) {\n event.stopPropagation();\n if (children.length > 0) {\n let shouldDismiss = true;\n children.forEach(child => {\n var _child$context;\n if ((_child$context = child.context) != null && _child$context.open && !child.context.dataRef.current.__escapeKeyBubbles) {\n shouldDismiss = false;\n return;\n }\n });\n if (!shouldDismiss) {\n return;\n }\n }\n }\n onOpenChange(false, isReactEvent(event) ? event.nativeEvent : event, 'escape-key');\n });\n const closeOnEscapeKeyDownCapture = useEffectEvent(event => {\n var _getTarget2;\n const callback = () => {\n var _getTarget;\n closeOnEscapeKeyDown(event);\n (_getTarget = getTarget(event)) == null || _getTarget.removeEventListener('keydown', callback);\n };\n (_getTarget2 = getTarget(event)) == null || _getTarget2.addEventListener('keydown', callback);\n });\n const closeOnPressOutside = useEffectEvent(event => {\n var _dataRef$current$floa2;\n // Given developers can stop the propagation of the synthetic event,\n // we can only be confident with a positive value.\n const insideReactTree = insideReactTreeRef.current;\n insideReactTreeRef.current = false;\n\n // When click outside is lazy (`click` event), handle dragging.\n // Don't close if:\n // - The click started inside the floating element.\n // - The click ended inside the floating element.\n const endedOrStartedInside = endedOrStartedInsideRef.current;\n endedOrStartedInsideRef.current = false;\n if (outsidePressEvent === 'click' && endedOrStartedInside) {\n return;\n }\n if (insideReactTree) {\n return;\n }\n if (typeof outsidePress === 'function' && !outsidePress(event)) {\n return;\n }\n const target = getTarget(event);\n const inertSelector = \"[\" + createAttribute('inert') + \"]\";\n const markers = getDocument(elements.floating).querySelectorAll(inertSelector);\n let targetRootAncestor = isElement(target) ? target : null;\n while (targetRootAncestor && !isLastTraversableNode(targetRootAncestor)) {\n const nextParent = getParentNode(targetRootAncestor);\n if (isLastTraversableNode(nextParent) || !isElement(nextParent)) {\n break;\n }\n targetRootAncestor = nextParent;\n }\n\n // Check if the click occurred on a third-party element injected after the\n // floating element rendered.\n if (markers.length && isElement(target) && !isRootElement(target) &&\n // Clicked on a direct ancestor (e.g. FloatingOverlay).\n !contains(target, elements.floating) &&\n // If the target root element contains none of the markers, then the\n // element was injected after the floating element rendered.\n Array.from(markers).every(marker => !contains(targetRootAncestor, marker))) {\n return;\n }\n\n // Check if the click occurred on the scrollbar\n if (isHTMLElement(target) && floating) {\n // In Firefox, `target.scrollWidth > target.clientWidth` for inline\n // elements.\n const canScrollX = target.clientWidth > 0 && target.scrollWidth > target.clientWidth;\n const canScrollY = target.clientHeight > 0 && target.scrollHeight > target.clientHeight;\n let xCond = canScrollY && event.offsetX > target.clientWidth;\n\n // In some browsers it is possible to change the <body> (or window)\n // scrollbar to the left side, but is very rare and is difficult to\n // check for. Plus, for modal dialogs with backdrops, it is more\n // important that the backdrop is checked but not so much the window.\n if (canScrollY) {\n const isRTL = getComputedStyle(target).direction === 'rtl';\n if (isRTL) {\n xCond = event.offsetX <= target.offsetWidth - target.clientWidth;\n }\n }\n if (xCond || canScrollX && event.offsetY > target.clientHeight) {\n return;\n }\n }\n const nodeId = (_dataRef$current$floa2 = dataRef.current.floatingContext) == null ? void 0 : _dataRef$current$floa2.nodeId;\n const targetIsInsideChildren = tree && getChildren(tree.nodesRef.current, nodeId).some(node => {\n var _node$context;\n return isEventTargetWithin(event, (_node$context = node.context) == null ? void 0 : _node$context.elements.floating);\n });\n if (isEventTargetWithin(event, elements.floating) || isEventTargetWithin(event, elements.domReference) || targetIsInsideChildren) {\n return;\n }\n const children = tree ? getChildren(tree.nodesRef.current, nodeId) : [];\n if (children.length > 0) {\n let shouldDismiss = true;\n children.forEach(child => {\n var _child$context2;\n if ((_child$context2 = child.context) != null && _child$context2.open && !child.context.dataRef.current.__outsidePressBubbles) {\n shouldDismiss = false;\n return;\n }\n });\n if (!shouldDismiss) {\n return;\n }\n }\n onOpenChange(false, event, 'outside-press');\n });\n const closeOnPressOutsideCapture = useEffectEvent(event => {\n var _getTarget4;\n const callback = () => {\n var _getTarget3;\n closeOnPressOutside(event);\n (_getTarget3 = getTarget(event)) == null || _getTarget3.removeEventListener(outsidePressEvent, callback);\n };\n (_getTarget4 = getTarget(event)) == null || _getTarget4.addEventListener(outsidePressEvent, callback);\n });\n React.useEffect(() => {\n if (!open || !enabled) {\n return;\n }\n dataRef.current.__escapeKeyBubbles = escapeKeyBubbles;\n dataRef.current.__outsidePressBubbles = outsidePressBubbles;\n let compositionTimeout = -1;\n function onScroll(event) {\n onOpenChange(false, event, 'ancestor-scroll');\n }\n function handleCompositionStart() {\n window.clearTimeout(compositionTimeout);\n isComposingRef.current = true;\n }\n function handleCompositionEnd() {\n // Safari fires `compositionend` before `keydown`, so we need to wait\n // until the next tick to set `isComposing` to `false`.\n // https://bugs.webkit.org/show_bug.cgi?id=165004\n compositionTimeout = window.setTimeout(() => {\n isComposingRef.current = false;\n },\n // 0ms or 1ms don't work in Safari. 5ms appears to consistently work.\n // Only apply to WebKit for the test to remain 0ms.\n isWebKit() ? 5 : 0);\n }\n const doc = getDocument(elements.floating);\n if (escapeKey) {\n doc.addEventListener('keydown', escapeKeyCapture ? closeOnEscapeKeyDownCapture : closeOnEscapeKeyDown, escapeKeyCapture);\n doc.addEventListener('compositionstart', handleCompositionStart);\n doc.addEventListener('compositionend', handleCompositionEnd);\n }\n outsidePress && doc.addEventListener(outsidePressEvent, outsidePressCapture ? closeOnPressOutsideCapture : closeOnPressOutside, outsidePressCapture);\n let ancestors = [];\n if (ancestorScroll) {\n if (isElement(elements.domReference)) {\n ancestors = getOverflowAncestors(elements.domReference);\n }\n if (isElement(elements.floating)) {\n ancestors = ancestors.concat(getOverflowAncestors(elements.floating));\n }\n if (!isElement(elements.reference) && elements.reference && elements.reference.contextElement) {\n ancestors = ancestors.concat(getOverflowAncestors(elements.reference.contextElement));\n }\n }\n\n // Ignore the visual viewport for scrolling dismissal (allow pinch-zoom)\n ancestors = ancestors.filter(ancestor => {\n var _doc$defaultView;\n return ancestor !== ((_doc$defaultView = doc.defaultView) == null ? void 0 : _doc$defaultView.visualViewport);\n });\n ancestors.forEach(ancestor => {\n ancestor.addEventListener('scroll', onScroll, {\n passive: true\n });\n });\n return () => {\n if (escapeKey) {\n doc.removeEventListener('keydown', escapeKeyCapture ? closeOnEscapeKeyDownCapture : closeOnEscapeKeyDown, escapeKeyCapture);\n doc.removeEventListener('compositionstart', handleCompositionStart);\n doc.removeEventListener('compositionend', handleCompositionEnd);\n }\n outsidePress && doc.removeEventListener(outsidePressEvent, outsidePressCapture ? closeOnPressOutsideCapture : closeOnPressOutside, outsidePressCapture);\n ancestors.forEach(ancestor => {\n ancestor.removeEventListener('scroll', onScroll);\n });\n window.clearTimeout(compositionTimeout);\n };\n }, [dataRef, elements, escapeKey, outsidePress, outsidePressEvent, open, onOpenChange, ancestorScroll, enabled, escapeKeyBubbles, outsidePressBubbles, closeOnEscapeKeyDown, escapeKeyCapture, closeOnEscapeKeyDownCapture, closeOnPressOutside, outsidePressCapture, closeOnPressOutsideCapture]);\n React.useEffect(() => {\n insideReactTreeRef.current = false;\n }, [outsidePress, outsidePressEvent]);\n const reference = React.useMemo(() => ({\n onKeyDown: closeOnEscapeKeyDown,\n [bubbleHandlerKeys[referencePressEvent]]: event => {\n if (referencePress) {\n onOpenChange(false, event.nativeEvent, 'reference-press');\n }\n }\n }), [closeOnEscapeKeyDown, onOpenChange, referencePress, referencePressEvent]);\n const floating = React.useMemo(() => ({\n onKeyDown: closeOnEscapeKeyDown,\n onMouseDown() {\n endedOrStartedInsideRef.current = true;\n },\n onMouseUp() {\n endedOrStartedInsideRef.current = true;\n },\n [captureHandlerKeys[outsidePressEvent]]: () => {\n insideReactTreeRef.current = true;\n }\n }), [closeOnEscapeKeyDown, outsidePressEvent]);\n return React.useMemo(() => enabled ? {\n reference,\n floating\n } : {}, [enabled, reference, floating]);\n}\n\nfunction useFloatingRootContext(options) {\n const {\n open = false,\n onOpenChange: onOpenChangeProp,\n elements: elementsProp\n } = options;\n const floatingId = useId();\n const dataRef = React.useRef({});\n const [events] = React.useState(() => createPubSub());\n const nested = useFloatingParentNodeId() != null;\n if (process.env.NODE_ENV !== \"production\") {\n const optionDomReference = elementsProp.reference;\n if (optionDomReference && !isElement(optionDomReference)) {\n error('Cannot pass a virtual element to the `elements.reference` option,', 'as it must be a real DOM element. Use `refs.setPositionReference()`', 'instead.');\n }\n }\n const [positionReference, setPositionReference] = React.useState(elementsProp.reference);\n const onOpenChange = useEffectEvent((open, event, reason) => {\n dataRef.current.openEvent = open ? event : undefined;\n events.emit('openchange', {\n open,\n event,\n reason,\n nested\n });\n onOpenChangeProp == null || onOpenChangeProp(open, event, reason);\n });\n const refs = React.useMemo(() => ({\n setPositionReference\n }), []);\n const elements = React.useMemo(() => ({\n reference: positionReference || elementsProp.reference || null,\n floating: elementsProp.floating || null,\n domReference: elementsProp.reference\n }), [positionReference, elementsProp.reference, elementsProp.floating]);\n return React.useMemo(() => ({\n dataRef,\n open,\n onOpenChange,\n elements,\n events,\n floatingId,\n refs\n }), [open, onOpenChange, elements, events, floatingId, refs]);\n}\n\n/**\n * Provides data to position a floating element and context to add interactions.\n * @see https://floating-ui.com/docs/useFloating\n */\nfunction useFloating(options) {\n if (options === void 0) {\n options = {};\n }\n const {\n nodeId\n } = options;\n const internalRootContext = useFloatingRootContext({\n ...options,\n elements: {\n reference: null,\n floating: null,\n ...options.elements\n }\n });\n const rootContext = options.rootContext || internalRootContext;\n const computedElements = rootContext.elements;\n const [_domReference, setDomReference] = React.useState(null);\n const [positionReference, _setPositionReference] = React.useState(null);\n const optionDomReference = computedElements == null ? void 0 : computedElements.domReference;\n const domReference = optionDomReference || _domReference;\n const domReferenceRef = React.useRef(null);\n const tree = useFloatingTree();\n index(() => {\n if (domReference) {\n domReferenceRef.current = domReference;\n }\n }, [domReference]);\n const position = useFloating$1({\n ...options,\n elements: {\n ...computedElements,\n ...(positionReference && {\n reference: positionReference\n })\n }\n });\n const setPositionReference = React.useCallback(node => {\n const computedPositionReference = isElement(node) ? {\n getBoundingClientRect: () => node.getBoundingClientRect(),\n contextElement: node\n } : node;\n // Store the positionReference in state if the DOM reference is specified externally via the\n // `elements.reference` option. This ensures that it won't be overridden on future renders.\n _setPositionReference(computedPositionReference);\n position.refs.setReference(computedPositionReference);\n }, [position.refs]);\n const setReference = React.useCallback(node => {\n if (isElement(node) || node === null) {\n domReferenceRef.current = node;\n setDomReference(node);\n }\n\n // Backwards-compatibility for passing a virtual element to `reference`\n // after it has set the DOM reference.\n if (isElement(position.refs.reference.current) || position.refs.reference.current === null ||\n // Don't allow setting virtual elements using the old technique back to\n // `null` to support `positionReference` + an unstable `reference`\n // callback ref.\n node !== null && !isElement(node)) {\n position.refs.setReference(node);\n }\n }, [position.refs]);\n const refs = React.useMemo(() => ({\n ...position.refs,\n setReference,\n setPositionReference,\n domReference: domReferenceRef\n }), [position.refs, setReference, setPositionReference]);\n const elements = React.useMemo(() => ({\n ...position.elements,\n domReference: domReference\n }), [position.elements, domReference]);\n const context = React.useMemo(() => ({\n ...position,\n ...rootContext,\n refs,\n elements,\n nodeId\n }), [position, refs, elements, nodeId, rootContext]);\n index(() => {\n rootContext.dataRef.current.floatingContext = context;\n const node = tree == null ? void 0 : tree.nodesRef.current.find(node => node.id === nodeId);\n if (node) {\n node.context = context;\n }\n });\n return React.useMemo(() => ({\n ...position,\n context,\n refs,\n elements\n }), [position, refs, elements, context]);\n}\n\n/**\n * Opens the floating element while the reference element has focus, like CSS\n * `:focus`.\n * @see https://floating-ui.com/docs/useFocus\n */\nfunction useFocus(context, props) {\n if (props === void 0) {\n props = {};\n }\n const {\n open,\n onOpenChange,\n events,\n dataRef,\n elements\n } = context;\n const {\n enabled = true,\n visibleOnly = true\n } = props;\n const blockFocusRef = React.useRef(false);\n const timeoutRef = React.useRef();\n const keyboardModalityRef = React.useRef(true);\n React.useEffect(() => {\n if (!enabled) return;\n const win = getWindow(elements.domReference);\n\n // If the reference was focused and the user left the tab/window, and the\n // floating element was not open, the focus should be blocked when they\n // return to the tab/window.\n function onBlur() {\n if (!open && isHTMLElement(elements.domReference) && elements.domReference === activeElement(getDocument(elements.domReference))) {\n blockFocusRef.current = true;\n }\n }\n function onKeyDown() {\n keyboardModalityRef.current = true;\n }\n win.addEventListener('blur', onBlur);\n win.addEventListener('keydown', onKeyDown, true);\n return () => {\n win.removeEventListener('blur', onBlur);\n win.removeEventListener('keydown', onKeyDown, true);\n };\n }, [elements.domReference, open, enabled]);\n React.useEffect(() => {\n if (!enabled) return;\n function onOpenChange(_ref) {\n let {\n reason\n } = _ref;\n if (reason === 'reference-press' || reason === 'escape-key') {\n blockFocusRef.current = true;\n }\n }\n events.on('openchange', onOpenChange);\n return () => {\n events.off('openchange', onOpenChange);\n };\n }, [events, enabled]);\n React.useEffect(() => {\n return () => {\n clearTimeout(timeoutRef.current);\n };\n }, []);\n const reference = React.useMemo(() => ({\n onPointerDown(event) {\n if (isVirtualPointerEvent(event.nativeEvent)) return;\n keyboardModalityRef.current = false;\n },\n onMouseLeave() {\n blockFocusRef.current = false;\n },\n onFocus(event) {\n if (blockFocusRef.current) return;\n const target = getTarget(event.nativeEvent);\n if (visibleOnly && isElement(target)) {\n try {\n // Mac Safari unreliably matches `:focus-visible` on the reference\n // if focus was outside the page initially - use the fallback\n // instead.\n if (isSafari() && isMac()) throw Error();\n if (!target.matches(':focus-visible')) return;\n } catch (e) {\n // Old browsers will throw an error when using `:focus-visible`.\n if (!keyboardModalityRef.current && !isTypeableElement(target)) {\n return;\n }\n }\n }\n onOpenChange(true, event.nativeEvent, 'focus');\n },\n onBlur(event) {\n blockFocusRef.current = false;\n const relatedTarget = event.relatedTarget;\n const nativeEvent = event.nativeEvent;\n\n // Hit the non-modal focus management portal guard. Focus will be\n // moved into the floating element immediately after.\n const movedToFocusGuard = isElement(relatedTarget) && relatedTarget.hasAttribute(createAttribute('focus-guard')) && relatedTarget.getAttribute('data-type') === 'outside';\n\n // Wait for the window blur listener to fire.\n timeoutRef.current = window.setTimeout(() => {\n var _dataRef$current$floa;\n const activeEl = activeElement(elements.domReference ? elements.domReference.ownerDocument : document);\n\n // Focus left the page, keep it open.\n if (!relatedTarget && activeEl === elements.domReference) return;\n\n // When focusing the reference element (e.g. regular click), then\n // clicking into the floating element, prevent it from hiding.\n // Note: it must be focusable, e.g. `tabindex=\"-1\"`.\n // We can not rely on relatedTarget to point to the correct element\n // as it will only point to the shadow host of the newly focused element\n // and not the element that actually has received focus if it is located\n // inside a shadow root.\n if (contains((_dataRef$current$floa = dataRef.current.floatingContext) == null ? void 0 : _dataRef$current$floa.refs.floating.current, activeEl) || contains(elements.domReference, activeEl) || movedToFocusGuard) {\n return;\n }\n onOpenChange(false, nativeEvent, 'focus');\n });\n }\n }), [dataRef, elements.domReference, onOpenChange, visibleOnly]);\n return React.useMemo(() => enabled ? {\n reference\n } : {}, [enabled, reference]);\n}\n\nconst ACTIVE_KEY = 'active';\nconst SELECTED_KEY = 'selected';\nfunction mergeProps(userProps, propsList, elementKey) {\n const map = new Map();\n const isItem = elementKey === 'item';\n let domUserProps = userProps;\n if (isItem && userProps) {\n const {\n [ACTIVE_KEY]: _,\n [SELECTED_KEY]: __,\n ...validProps\n } = userProps;\n domUserProps = validProps;\n }\n return {\n ...(elementKey === 'floating' && {\n tabIndex: -1,\n [FOCUSABLE_ATTRIBUTE]: ''\n }),\n ...domUserProps,\n ...propsList.map(value => {\n const propsOrGetProps = value ? value[elementKey] : null;\n if (typeof propsOrGetProps === 'function') {\n return userProps ? propsOrGetProps(userProps) : null;\n }\n return propsOrGetProps;\n }).concat(userProps).reduce((acc, props) => {\n if (!props) {\n return acc;\n }\n Object.entries(props).forEach(_ref => {\n let [key, value] = _ref;\n if (isItem && [ACTIVE_KEY, SELECTED_KEY].includes(key)) {\n return;\n }\n if (key.indexOf('on') === 0) {\n if (!map.has(key)) {\n map.set(key, []);\n }\n if (typeof value === 'function') {\n var _map$get;\n (_map$get = map.get(key)) == null || _map$get.push(value);\n acc[key] = function () {\n var _map$get2;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return (_map$get2 = map.get(key)) == null ? void 0 : _map$get2.map(fn => fn(...args)).find(val => val !== undefined);\n };\n }\n } else {\n acc[key] = value;\n }\n });\n return acc;\n }, {})\n };\n}\n/**\n * Merges an array of interaction hooks' props into prop getters, allowing\n * event handler functions to be composed together without overwriting one\n * another.\n * @see https://floating-ui.com/docs/useInteractions\n */\nfunction useInteractions(propsList) {\n if (propsList === void 0) {\n propsList = [];\n }\n const referenceDeps = propsList.map(key => key == null ? void 0 : key.reference);\n const floatingDeps = propsList.map(key => key == null ? void 0 : key.floating);\n const itemDeps = propsList.map(key => key == null ? void 0 : key.item);\n const getReferenceProps = React.useCallback(userProps => mergeProps(userProps, propsList, 'reference'),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n referenceDeps);\n const getFloatingProps = React.useCallback(userProps => mergeProps(userProps, propsList, 'floating'),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n floatingDeps);\n const getItemProps = React.useCallback(userProps => mergeProps(userProps, propsList, 'item'),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n itemDeps);\n return React.useMemo(() => ({\n getReferenceProps,\n getFloatingProps,\n getItemProps\n }), [getReferenceProps, getFloatingProps, getItemProps]);\n}\n\nlet isPreventScrollSupported = false;\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) {\n const vertical = rtl ? key === ARROW_RIGHT : key === ARROW_LEFT;\n const horizontal = key === ARROW_UP;\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 */\nfunction useListNavigation(context, props) {\n const {\n open,\n onOpenChange,\n elements\n } = context;\n const {\n listRef,\n activeIndex,\n onNavigate: unstable_onNavigate = () => {},\n enabled = true,\n selectedIndex = null,\n allowEscape = false,\n loop = 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 cols = 1,\n scrollItemIntoView = true,\n virtualItemRef,\n itemSizes,\n dense = false\n } = props;\n if (process.env.NODE_ENV !== \"production\") {\n if (allowEscape) {\n if (!loop) {\n warn('`useListNavigation` looping must be enabled to allow escaping.');\n }\n if (!virtual) {\n warn('`useListNavigation` must be virtual to allow escaping.');\n }\n }\n if (orientation === 'vertical' && cols > 1) {\n warn('In grid list navigation mode (`cols` > 1), the `orientation` should', 'be either \"horizontal\" or \"both\".');\n }\n }\n const floatingFocusElement = getFloatingFocusElement(elements.floating);\n const floatingFocusElementRef = useLatestRef(floatingFocusElement);\n const parentId = useFloatingParentNodeId();\n const tree = useFloatingTree();\n const onNavigate = useEffectEvent(unstable_onNavigate);\n const typeableComboboxReference = isTypeableCombobox(elements.domReference);\n const focusItemOnOpenRef = React.useRef(focusItemOnOpen);\n const indexRef = React.useRef(selectedIndex != null ? selectedIndex : -1);\n const keyRef = React.useRef(null);\n const isPointerModalityRef = React.useRef(true);\n const previousOnNavigateRef = React.useRef(onNavigate);\n const previousMountedRef = React.useRef(!!elements.floating);\n const previousOpenRef = React.useRef(open);\n const forceSyncFocus = React.useRef(false);\n const forceScrollIntoViewRef = React.useRef(false);\n const disabledIndicesRef = useLatestRef(disabledIndices);\n const latestOpenRef = useLatestRef(open);\n const scrollItemIntoViewRef = useLatestRef(scrollItemIntoView);\n const selectedIndexRef = useLatestRef(selectedIndex);\n const [activeId, setActiveId] = React.useState();\n const [virtualId, setVirtualId] = React.useState();\n const focusItem = useEffectEvent(function (listRef, indexRef, forceScrollIntoView) {\n if (forceScrollIntoView === void 0) {\n forceScrollIntoView = false;\n }\n function runFocus(item) {\n if (virtual) {\n setActiveId(item.id);\n tree == null || tree.events.emit('virtualfocus', item);\n if (virtualItemRef) {\n virtualItemRef.current = item;\n }\n } else {\n enqueueFocus(item, {\n preventScroll: true,\n // Mac Safari does not move the virtual cursor unless the focus call\n // is sync. However, for the very first focus call, we need to wait\n // for the position to be ready in order to prevent unwanted\n // scrolling. This means the virtual cursor will not move to the first\n // item when first opening the floating element, but will on\n // subsequent calls. `preventScroll` is supported in modern Safari,\n // so we can use that instead.\n // iOS Safari must be async or the first item will not be focused.\n sync: isMac() && isSafari() ? isPreventScrollSupported || forceSyncFocus.current : false\n });\n }\n }\n const initialItem = listRef.current[indexRef.current];\n if (initialItem) {\n runFocus(initialItem);\n }\n requestAnimationFrame(() => {\n const waitedItem = listRef.current[indexRef.current] || initialItem;\n if (!waitedItem) return;\n if (!initialItem) {\n runFocus(waitedItem);\n }\n const scrollIntoViewOptions = scrollItemIntoViewRef.current;\n const shouldScrollIntoView = scrollIntoViewOptions && 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 == null || waitedItem.scrollIntoView(typeof scrollIntoViewOptions === 'boolean' ? {\n block: 'nearest',\n inline: 'nearest'\n } : scrollIntoViewOptions);\n }\n });\n });\n index(() => {\n document.createElement('div').focus({\n get preventScroll() {\n isPreventScrollSupported = true;\n return false;\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 index(() => {\n if (!enabled) return;\n if (open && elements.floating) {\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 indexRef.current = selectedIndex;\n onNavigate(selectedIndex);\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(null);\n }\n }, [enabled, open, elements.floating, selectedIndex, onNavigate]);\n\n // Sync `activeIndex` to be the focused item while the floating element is\n // open.\n index(() => {\n if (!enabled) return;\n if (open && elements.floating) {\n if (activeIndex == null) {\n forceSyncFocus.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(listRef, indexRef);\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++;\n } else {\n indexRef.current = keyRef.current == null || isMainOrientationToEndKey(keyRef.current, orientation, rtl) || nested ? getMinIndex(listRef, disabledIndicesRef.current) : getMaxIndex(listRef, disabledIndicesRef.current);\n keyRef.current = null;\n onNavigate(indexRef.current);\n }\n };\n waitForListPopulated();\n }\n } else if (!isIndexOutOfBounds(listRef, activeIndex)) {\n indexRef.current = activeIndex;\n focusItem(listRef, indexRef, forceScrollIntoViewRef.current);\n forceScrollIntoViewRef.current = false;\n }\n }\n }, [enabled, open, elements.floating, 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 index(() => {\n var _nodes$find;\n if (!enabled || elements.floating || !tree || virtual || !previousMountedRef.current) {\n return;\n }\n const nodes = tree.nodesRef.current;\n const parent = (_nodes$find = nodes.find(node => node.id === parentId)) == null || (_nodes$find = _nodes$find.context) == null ? void 0 : _nodes$find.elements.floating;\n const activeEl = activeElement(getDocument(elements.floating));\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, elements.floating, tree, parentId, virtual]);\n index(() => {\n if (!enabled) return;\n if (!tree) return;\n if (!virtual) return;\n if (parentId) return;\n function handleVirtualFocus(item) {\n setVirtualId(item.id);\n if (virtualItemRef) {\n virtualItemRef.current = item;\n }\n }\n tree.events.on('virtualfocus', handleVirtualFocus);\n return () => {\n tree.events.off('virtualfocus', handleVirtualFocus);\n };\n }, [enabled, tree, virtual, parentId, virtualItemRef]);\n index(() => {\n previousOnNavigateRef.current = onNavigate;\n previousMountedRef.current = !!elements.floating;\n });\n index(() => {\n if (!open) {\n keyRef.current = null;\n }\n }, [open]);\n index(() => {\n previousOpenRef.current = open;\n }, [open]);\n const hasActiveIndex = activeIndex != null;\n const item = React.useMemo(() => {\n function syncCurrentTarget(currentTarget) {\n if (!open) return;\n const index = listRef.current.indexOf(currentTarget);\n if (index !== -1) {\n onNavigate(index);\n }\n }\n const props = {\n onFocus(_ref) {\n let {\n currentTarget\n } = _ref;\n syncCurrentTarget(currentTarget);\n },\n onClick: _ref2 => {\n let {\n currentTarget\n } = _ref2;\n return currentTarget.focus({\n preventScroll: true\n });\n },\n // Safari\n ...(focusItemOnHover && {\n onMouseMove(_ref3) {\n let {\n currentTarget\n } = _ref3;\n syncCurrentTarget(currentTarget);\n },\n onPointerLeave(_ref4) {\n let {\n pointerType\n } = _ref4;\n if (!isPointerModalityRef.current || pointerType === 'touch') {\n return;\n }\n indexRef.current = -1;\n focusItem(listRef, indexRef);\n onNavigate(null);\n if (!virtual) {\n enqueueFocus(floatingFocusElementRef.current, {\n preventScroll: true\n });\n }\n }\n })\n };\n return props;\n }, [open, floatingFocusElementRef, focusItem, focusItemOnHover, listRef, onNavigate, virtual]);\n const commonOnKeyDown = useEffectEvent(event => {\n isPointerModalityRef.current = false;\n forceSyncFocus.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)) {\n stopEvent(event);\n onOpenChange(false, event.nativeEvent, 'list-navigation');\n if (isHTMLElement(elements.domReference)) {\n if (virtual) {\n tree == null || tree.events.emit('virtualfocus', elements.domReference);\n } else {\n elements.domReference.focus();\n }\n }\n return;\n }\n const currentIndex = indexRef.current;\n const minIndex = getMinIndex(listRef, disabledIndices);\n const maxIndex = getMaxIndex(listRef, disabledIndices);\n if (!typeableComboboxReference) {\n if (event.key === 'Home') {\n stopEvent(event);\n indexRef.current = minIndex;\n onNavigate(indexRef.current);\n }\n if (event.key === 'End') {\n stopEvent(event);\n indexRef.current = maxIndex;\n onNavigate(indexRef.current);\n }\n }\n\n // Grid navigation.\n if (cols > 1) {\n const sizes = itemSizes || 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 = buildCellMap(sizes, cols, dense);\n const minGridIndex = cellMap.findIndex(index => index != null && !isDisabled(listRef.current, index, disabledIndices));\n // last enabled index\n const maxGridIndex = cellMap.reduce((foundIndex, index, cellIndex) => index != null && !isDisabled(listRef.current, 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 loop,\n rtl,\n cols,\n // treat undefined (empty grid spaces) as disabled indices so we\n // don't end up in them\n disabledIndices: getCellIndices([...(disabledIndices || listRef.current.map((_, index) => isDisabled(listRef.current, index) ? index : undefined)), undefined], cellMap),\n minIndex: minGridIndex,\n maxIndex: maxGridIndex,\n prevIndex: getCellIndexOfCorner(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 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(indexRef.current);\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(indexRef.current);\n return;\n }\n if (isMainOrientationToEndKey(event.key, orientation, rtl)) {\n if (loop) {\n indexRef.current = currentIndex >= maxIndex ? allowEscape && currentIndex !== listRef.current.length ? -1 : minIndex : findNonDisabledIndex(listRef, {\n startingIndex: currentIndex,\n disabledIndices\n });\n } else {\n indexRef.current = Math.min(maxIndex, findNonDisabledIndex(listRef, {\n startingIndex: currentIndex,\n disabledIndices\n }));\n }\n } else {\n if (loop) {\n indexRef.current = currentIndex <= minIndex ? allowEscape && currentIndex !== -1 ? listRef.current.length : maxIndex : findNonDisabledIndex(listRef, {\n startingIndex: currentIndex,\n decrement: true,\n disabledIndices\n });\n } else {\n indexRef.current = Math.max(minIndex, findNonDisabledIndex(listRef, {\n startingIndex: currentIndex,\n decrement: true,\n disabledIndices\n }));\n }\n }\n if (isIndexOutOfBounds(listRef, indexRef.current)) {\n onNavigate(null);\n } else {\n onNavigate(indexRef.current);\n }\n }\n });\n const ariaActiveDescendantProp = React.useMemo(() => {\n return virtual && open && hasActiveIndex && {\n 'aria-activedescendant': virtualId || activeId\n };\n }, [virtual, open, hasActiveIndex, virtualId, activeId]);\n const floating = React.useMemo(() => {\n return {\n 'aria-orientation': orientation === 'both' ? undefined : orientation,\n ...(!isTypeableCombobox(elements.domReference) && ariaActiveDescendantProp),\n onKeyDown: commonOnKeyDown,\n onPointerMove() {\n isPointerModalityRef.current = true;\n }\n };\n }, [ariaActiveDescendantProp, commonOnKeyDown, elements.domReference, orientation]);\n const reference = React.useMemo(() => {\n function checkVirtualMouse(event) {\n if (focusItemOnOpen === 'auto' && isVirtualClick(event.nativeEvent)) {\n focusItemOnOpenRef.current = true;\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 ...ariaActiveDescendantProp,\n onKeyDown(event) {\n isPointerModalityRef.current = false;\n const isArrowKey = event.key.startsWith('Arrow');\n const isHomeOrEndKey = ['Home', 'End'].includes(event.key);\n const isMoveKey = isArrowKey || isHomeOrEndKey;\n const isCrossOpenKey = isCrossOrientationOpenKey(event.key, orientation, rtl);\n const isCrossCloseKey = isCrossOrientationCloseKey(event.key, orientation, rtl);\n const isMainKey = isMainOrientationKey(event.key, orientation);\n const isNavigationKey = (nested ? isCrossOpenKey : isMainKey) || event.key === 'Enter' || event.key.trim() === '';\n if (virtual && open) {\n const rootNode = tree == null ? void 0 : tree.nodesRef.current.find(node => node.parentId == null);\n const deepestNode = tree && rootNode ? getDeepestNode(tree.nodesRef.current, rootNode.id) : null;\n if (isMoveKey && deepestNode && virtualItemRef) {\n const eventObject = new KeyboardEvent('keydown', {\n key: event.key,\n bubbles: true\n });\n if (isCrossOpenKey || isCrossCloseKey) {\n var _deepestNode$context, _deepestNode$context2;\n const isCurrentTarget = ((_deepestNode$context = deepestNode.context) == null ? void 0 : _deepestNode$context.elements.domReference) === event.currentTarget;\n const dispatchItem = isCrossCloseKey && !isCurrentTarget ? (_deepestNode$context2 = deepestNode.context) == null ? void 0 : _deepestNode$context2.elements.domReference : isCrossOpenKey ? listRef.current.find(item => (item == null ? void 0 : item.id) === activeId) : null;\n if (dispatchItem) {\n stopEvent(event);\n dispatchItem.dispatchEvent(eventObject);\n setVirtualId(undefined);\n }\n }\n if ((isMainKey || isHomeOrEndKey) && deepestNode.context) {\n if (deepestNode.context.open && deepestNode.parentId && event.currentTarget !== deepestNode.context.elements.domReference) {\n var _deepestNode$context$;\n stopEvent(event);\n (_deepestNode$context$ = deepestNode.context.elements.domReference) == null || _deepestNode$context$.dispatchEvent(eventObject);\n return;\n }\n }\n }\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 (!open && !openOnArrowKeyDown && isArrowKey) {\n return;\n }\n if (isNavigationKey) {\n keyRef.current = nested && isMainKey ? null : event.key;\n }\n if (nested) {\n if (isCrossOpenKey) {\n stopEvent(event);\n if (open) {\n indexRef.current = getMinIndex(listRef, disabledIndicesRef.current);\n onNavigate(indexRef.current);\n } else {\n onOpenChange(true, event.nativeEvent, 'list-navigation');\n }\n }\n return;\n }\n if (isMainKey) {\n if (selectedIndex != null) {\n indexRef.current = selectedIndex;\n }\n stopEvent(event);\n if (!open && openOnArrowKeyDown) {\n onOpenChange(true, event.nativeEvent, 'list-navigation');\n } else {\n commonOnKeyDown(event);\n }\n if (open) {\n onNavigate(indexRef.current);\n }\n }\n },\n onFocus() {\n if (open && !virtual) {\n onNavigate(null);\n }\n },\n onPointerDown: checkVirtualPointer,\n onMouseDown: checkVirtualMouse,\n onClick: checkVirtualMouse\n };\n }, [activeId, ariaActiveDescendantProp, commonOnKeyDown, disabledIndicesRef, focusItemOnOpen, listRef, nested, onNavigate, onOpenChange, open, openOnArrowKeyDown, orientation, rtl, selectedIndex, tree, virtual, virtualItemRef]);\n return React.useMemo(() => enabled ? {\n reference,\n floating,\n item\n } : {}, [enabled, reference, floating, item]);\n}\n\nconst componentRoleToAriaRoleMap = /*#__PURE__*/new Map([['select', 'listbox'], ['combobox', 'listbox'], ['label', false]]);\n\n/**\n * Adds base screen reader props to the reference and floating elements for a\n * given floating element `role`.\n * @see https://floating-ui.com/docs/useRole\n */\nfunction useRole(context, props) {\n var _componentRoleToAriaR;\n if (props === void 0) {\n props = {};\n }\n const {\n open,\n floatingId\n } = context;\n const {\n enabled = true,\n role = 'dialog'\n } = props;\n const ariaRole = (_componentRoleToAriaR = componentRoleToAriaRoleMap.get(role)) != null ? _componentRoleToAriaR : role;\n const referenceId = useId();\n const parentId = useFloatingParentNodeId();\n const isNested = parentId != null;\n const reference = React.useMemo(() => {\n if (ariaRole === 'tooltip' || role === 'label') {\n return {\n [\"aria-\" + (role === 'label' ? 'labelledby' : 'describedby')]: open ? floatingId : undefined\n };\n }\n return {\n 'aria-expanded': open ? 'true' : 'false',\n 'aria-haspopup': ariaRole === 'alertdialog' ? 'dialog' : ariaRole,\n 'aria-controls': open ? floatingId : undefined,\n ...(ariaRole === 'listbox' && {\n role: 'combobox'\n }),\n ...(ariaRole === 'menu' && {\n id: referenceId\n }),\n ...(ariaRole === 'menu' && isNested && {\n role: 'menuitem'\n }),\n ...(role === 'select' && {\n 'aria-autocomplete': 'none'\n }),\n ...(role === 'combobox' && {\n 'aria-autocomplete': 'list'\n })\n };\n }, [ariaRole, floatingId, isNested, open, referenceId, role]);\n const floating = React.useMemo(() => {\n const floatingProps = {\n id: floatingId,\n ...(ariaRole && {\n role: ariaRole\n })\n };\n if (ariaRole === 'tooltip' || role === 'label') {\n return floatingProps;\n }\n return {\n ...floatingProps,\n ...(ariaRole === 'menu' && {\n 'aria-labelledby': referenceId\n })\n };\n }, [ariaRole, floatingId, referenceId, role]);\n const item = React.useCallback(_ref => {\n let {\n active,\n selected\n } = _ref;\n const commonProps = {\n role: 'option',\n ...(active && {\n id: floatingId + \"-option\"\n })\n };\n\n // For `menu`, we are unable to tell if the item is a `menuitemradio`\n // or `menuitemcheckbox`. For backwards-compatibility reasons, also\n // avoid defaulting to `menuitem` as it may overwrite custom role props.\n switch (role) {\n case 'select':\n return {\n ...commonProps,\n 'aria-selected': active && selected\n };\n case 'combobox':\n {\n return {\n ...commonProps,\n ...(active && {\n 'aria-selected': true\n })\n };\n }\n }\n return {};\n }, [floatingId, role]);\n return React.useMemo(() => enabled ? {\n reference,\n floating,\n item\n } : {}, [enabled, reference, floating, item]);\n}\n\n// Converts a JS style key like `backgroundColor` to a CSS transition-property\n// like `background-color`.\nconst camelCaseToKebabCase = str => str.replace(/[A-Z]+(?![a-z])|[A-Z]/g, ($, ofs) => (ofs ? '-' : '') + $.toLowerCase());\nfunction execWithArgsOrReturn(valueOrFn, args) {\n return typeof valueOrFn === 'function' ? valueOrFn(args) : valueOrFn;\n}\nfunction useDelayUnmount(open, durationMs) {\n const [isMounted, setIsMounted] = React.useState(open);\n if (open && !isMounted) {\n setIsMounted(true);\n }\n React.useEffect(() => {\n if (!open && isMounted) {\n const timeout = setTimeout(() => setIsMounted(false), durationMs);\n return () => clearTimeout(timeout);\n }\n }, [open, isMounted, durationMs]);\n return isMounted;\n}\n/**\n * Provides a status string to apply CSS transitions to a floating element,\n * correctly handling placement-aware transitions.\n * @see https://floating-ui.com/docs/useTransition#usetransitionstatus\n */\nfunction useTransitionStatus(context, props) {\n if (props === void 0) {\n props = {};\n }\n const {\n open,\n elements: {\n floating\n }\n } = context;\n const {\n duration = 250\n } = props;\n const isNumberDuration = typeof duration === 'number';\n const closeDuration = (isNumberDuration ? duration : duration.close) || 0;\n const [status, setStatus] = React.useState('unmounted');\n const isMounted = useDelayUnmount(open, closeDuration);\n if (!isMounted && status === 'close') {\n setStatus('unmounted');\n }\n index(() => {\n if (!floating) return;\n if (open) {\n setStatus('initial');\n const frame = requestAnimationFrame(() => {\n setStatus('open');\n });\n return () => {\n cancelAnimationFrame(frame);\n };\n }\n setStatus('close');\n }, [open, floating]);\n return {\n isMounted,\n status\n };\n}\n/**\n * Provides styles to apply CSS transitions to a floating element, correctly\n * handling placement-aware transitions. Wrapper around `useTransitionStatus`.\n * @see https://floating-ui.com/docs/useTransition#usetransitionstyles\n */\nfunction useTransitionStyles(context, props) {\n if (props === void 0) {\n props = {};\n }\n const {\n initial: unstable_initial = {\n opacity: 0\n },\n open: unstable_open,\n close: unstable_close,\n common: unstable_common,\n duration = 250\n } = props;\n const placement = context.placement;\n const side = placement.split('-')[0];\n const fnArgs = React.useMemo(() => ({\n side,\n placement\n }), [side, placement]);\n const isNumberDuration = typeof duration === 'number';\n const openDuration = (isNumberDuration ? duration : duration.open) || 0;\n const closeDuration = (isNumberDuration ? duration : duration.close) || 0;\n const [styles, setStyles] = React.useState(() => ({\n ...execWithArgsOrReturn(unstable_common, fnArgs),\n ...execWithArgsOrReturn(unstable_initial, fnArgs)\n }));\n const {\n isMounted,\n status\n } = useTransitionStatus(context, {\n duration\n });\n const initialRef = useLatestRef(unstable_initial);\n const openRef = useLatestRef(unstable_open);\n const closeRef = useLatestRef(unstable_close);\n const commonRef = useLatestRef(unstable_common);\n index(() => {\n const initialStyles = execWithArgsOrReturn(initialRef.current, fnArgs);\n const closeStyles = execWithArgsOrReturn(closeRef.current, fnArgs);\n const commonStyles = execWithArgsOrReturn(commonRef.current, fnArgs);\n const openStyles = execWithArgsOrReturn(openRef.current, fnArgs) || Object.keys(initialStyles).reduce((acc, key) => {\n acc[key] = '';\n return acc;\n }, {});\n if (status === 'initial') {\n setStyles(styles => ({\n transitionProperty: styles.transitionProperty,\n ...commonStyles,\n ...initialStyles\n }));\n }\n if (status === 'open') {\n setStyles({\n transitionProperty: Object.keys(openStyles).map(camelCaseToKebabCase).join(','),\n transitionDuration: openDuration + \"ms\",\n ...commonStyles,\n ...openStyles\n });\n }\n if (status === 'close') {\n const styles = closeStyles || initialStyles;\n setStyles({\n transitionProperty: Object.keys(styles).map(camelCaseToKebabCase).join(','),\n transitionDuration: closeDuration + \"ms\",\n ...commonStyles,\n ...styles\n });\n }\n }, [closeDuration, closeRef, initialRef, openRef, commonRef, openDuration, status, fnArgs]);\n return {\n isMounted,\n styles\n };\n}\n\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 */\nfunction useTypeahead(context, props) {\n var _ref;\n const {\n open,\n dataRef\n } = context;\n const {\n listRef,\n activeIndex,\n onMatch: unstable_onMatch,\n onTypingChange: unstable_onTypingChange,\n enabled = true,\n findMatch = null,\n resetMs = 750,\n ignoreKeys = [],\n selectedIndex = null\n } = props;\n const timeoutIdRef = React.useRef();\n const stringRef = React.useRef('');\n const prevIndexRef = React.useRef((_ref = selectedIndex != null ? selectedIndex : activeIndex) != null ? _ref : -1);\n const matchIndexRef = React.useRef(null);\n const onMatch = useEffectEvent(unstable_onMatch);\n const onTypingChange = useEffectEvent(unstable_onTypingChange);\n const findMatchRef = useLatestRef(findMatch);\n const ignoreKeysRef = useLatestRef(ignoreKeys);\n index(() => {\n if (open) {\n clearTimeout(timeoutIdRef.current);\n matchIndexRef.current = null;\n stringRef.current = '';\n }\n }, [open]);\n index(() => {\n // Sync arrow key navigation but not typeahead navigation.\n if (open && stringRef.current === '') {\n var _ref2;\n prevIndexRef.current = (_ref2 = selectedIndex != null ? selectedIndex : activeIndex) != null ? _ref2 : -1;\n }\n }, [open, selectedIndex, activeIndex]);\n const setTypingChange = useEffectEvent(value => {\n if (value) {\n if (!dataRef.current.typing) {\n dataRef.current.typing = value;\n onTypingChange(value);\n }\n } else {\n if (dataRef.current.typing) {\n dataRef.current.typing = value;\n onTypingChange(value);\n }\n }\n });\n const onKeyDown = useEffectEvent(event => {\n function getMatchingIndex(list, orderedList, string) {\n const str = findMatchRef.current ? findMatchRef.current(orderedList, string) : orderedList.find(text => (text == null ? void 0 : 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 || ignoreKeysRef.current.includes(event.key) ||\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 // 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 => {\n var _text$, _text$2;\n return text ? ((_text$ = text[0]) == null ? void 0 : _text$.toLocaleLowerCase()) !== ((_text$2 = text[1]) == null ? void 0 : _text$2.toLocaleLowerCase()) : true;\n });\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 clearTimeout(timeoutIdRef.current);\n timeoutIdRef.current = setTimeout(() => {\n stringRef.current = '';\n prevIndexRef.current = matchIndexRef.current;\n setTypingChange(false);\n }, resetMs);\n const prevIndex = 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 onMatch(index);\n matchIndexRef.current = index;\n } else if (event.key !== ' ') {\n stringRef.current = '';\n setTypingChange(false);\n }\n });\n const reference = React.useMemo(() => ({\n onKeyDown\n }), [onKeyDown]);\n const floating = React.useMemo(() => {\n return {\n onKeyDown,\n onKeyUp(event) {\n if (event.key === ' ') {\n setTypingChange(false);\n }\n }\n };\n }, [onKeyDown, setTypingChange]);\n return React.useMemo(() => enabled ? {\n reference,\n floating\n } : {}, [enabled, reference, floating]);\n}\n\nfunction getArgsWithCustomFloatingHeight(state, height) {\n return {\n ...state,\n rects: {\n ...state.rects,\n floating: {\n ...state.rects.floating,\n height\n }\n }\n };\n}\n/**\n * Positions the floating element such that an inner element inside of it is\n * anchored to the reference element.\n * @see https://floating-ui.com/docs/inner\n */\nconst inner = props => ({\n name: 'inner',\n options: props,\n async fn(state) {\n const {\n listRef,\n overflowRef,\n onFallbackChange,\n offset: innerOffset = 0,\n index = 0,\n minItemsVisible = 4,\n referenceOverflowThreshold = 0,\n scrollRef,\n ...detectOverflowOptions\n } = evaluate(props, state);\n const {\n rects,\n elements: {\n floating\n }\n } = state;\n const item = listRef.current[index];\n const scrollEl = (scrollRef == null ? void 0 : scrollRef.current) || floating;\n\n // Valid combinations:\n // 1. Floating element is the scrollRef and has a border (default)\n // 2. Floating element is not the scrollRef, floating element has a border\n // 3. Floating element is not the scrollRef, scrollRef has a border\n // Floating > {...getFloatingProps()} wrapper > scrollRef > items is not\n // allowed as VoiceOver doesn't work.\n const clientTop = floating.clientTop || scrollEl.clientTop;\n const floatingIsBordered = floating.clientTop !== 0;\n const scrollElIsBordered = scrollEl.clientTop !== 0;\n const floatingIsScrollEl = floating === scrollEl;\n if (process.env.NODE_ENV !== \"production\") {\n if (!state.placement.startsWith('bottom')) {\n warn('`placement` side must be \"bottom\" when using the `inner`', 'middleware.');\n }\n }\n if (!item) {\n return {};\n }\n const nextArgs = {\n ...state,\n ...(await offset(-item.offsetTop - floating.clientTop - rects.reference.height / 2 - item.offsetHeight / 2 - innerOffset).fn(state))\n };\n const overflow = await detectOverflow(getArgsWithCustomFloatingHeight(nextArgs, scrollEl.scrollHeight + clientTop + floating.clientTop), detectOverflowOptions);\n const refOverflow = await detectOverflow(nextArgs, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const diffY = max(0, overflow.top);\n const nextY = nextArgs.y + diffY;\n const isScrollable = scrollEl.scrollHeight > scrollEl.clientHeight;\n const rounder = isScrollable ? v => v : round;\n const maxHeight = rounder(max(0, scrollEl.scrollHeight + (floatingIsBordered && floatingIsScrollEl || scrollElIsBordered ? clientTop * 2 : 0) - diffY - max(0, overflow.bottom)));\n scrollEl.style.maxHeight = maxHeight + \"px\";\n scrollEl.scrollTop = diffY;\n\n // There is not enough space, fallback to standard anchored positioning\n if (onFallbackChange) {\n const shouldFallback = scrollEl.offsetHeight < item.offsetHeight * min(minItemsVisible, listRef.current.length) - 1 || refOverflow.top >= -referenceOverflowThreshold || refOverflow.bottom >= -referenceOverflowThreshold;\n ReactDOM.flushSync(() => onFallbackChange(shouldFallback));\n }\n if (overflowRef) {\n overflowRef.current = await detectOverflow(getArgsWithCustomFloatingHeight({\n ...nextArgs,\n y: nextY\n }, scrollEl.offsetHeight + clientTop + floating.clientTop), detectOverflowOptions);\n }\n return {\n y: nextY\n };\n }\n});\n/**\n * Changes the `inner` middleware's `offset` upon a `wheel` event to\n * expand the floating element's height, revealing more list items.\n * @see https://floating-ui.com/docs/inner\n */\nfunction useInnerOffset(context, props) {\n const {\n open,\n elements\n } = context;\n const {\n enabled = true,\n overflowRef,\n scrollRef,\n onChange: unstable_onChange\n } = props;\n const onChange = useEffectEvent(unstable_onChange);\n const controlledScrollingRef = React.useRef(false);\n const prevScrollTopRef = React.useRef(null);\n const initialOverflowRef = React.useRef(null);\n React.useEffect(() => {\n if (!enabled) return;\n function onWheel(e) {\n if (e.ctrlKey || !el || overflowRef.current == null) {\n return;\n }\n const dY = e.deltaY;\n const isAtTop = overflowRef.current.top >= -0.5;\n const isAtBottom = overflowRef.current.bottom >= -0.5;\n const remainingScroll = el.scrollHeight - el.clientHeight;\n const sign = dY < 0 ? -1 : 1;\n const method = dY < 0 ? 'max' : 'min';\n if (el.scrollHeight <= el.clientHeight) {\n return;\n }\n if (!isAtTop && dY > 0 || !isAtBottom && dY < 0) {\n e.preventDefault();\n ReactDOM.flushSync(() => {\n onChange(d => d + Math[method](dY, remainingScroll * sign));\n });\n } else if (/firefox/i.test(getUserAgent())) {\n // Needed to propagate scrolling during momentum scrolling phase once\n // it gets limited by the boundary. UX improvement, not critical.\n el.scrollTop += dY;\n }\n }\n const el = (scrollRef == null ? void 0 : scrollRef.current) || elements.floating;\n if (open && el) {\n el.addEventListener('wheel', onWheel);\n\n // Wait for the position to be ready.\n requestAnimationFrame(() => {\n prevScrollTopRef.current = el.scrollTop;\n if (overflowRef.current != null) {\n initialOverflowRef.current = {\n ...overflowRef.current\n };\n }\n });\n return () => {\n prevScrollTopRef.current = null;\n initialOverflowRef.current = null;\n el.removeEventListener('wheel', onWheel);\n };\n }\n }, [enabled, open, elements.floating, overflowRef, scrollRef, onChange]);\n const floating = React.useMemo(() => ({\n onKeyDown() {\n controlledScrollingRef.current = true;\n },\n onWheel() {\n controlledScrollingRef.current = false;\n },\n onPointerMove() {\n controlledScrollingRef.current = false;\n },\n onScroll() {\n const el = (scrollRef == null ? void 0 : scrollRef.current) || elements.floating;\n if (!overflowRef.current || !el || !controlledScrollingRef.current) {\n return;\n }\n if (prevScrollTopRef.current !== null) {\n const scrollDiff = el.scrollTop - prevScrollTopRef.current;\n if (overflowRef.current.bottom < -0.5 && scrollDiff < -1 || overflowRef.current.top < -0.5 && scrollDiff > 1) {\n ReactDOM.flushSync(() => onChange(d => d + scrollDiff));\n }\n }\n\n // [Firefox] Wait for the height change to have been applied.\n requestAnimationFrame(() => {\n prevScrollTopRef.current = el.scrollTop;\n });\n }\n }), [elements.floating, onChange, overflowRef, scrollRef]);\n return React.useMemo(() => enabled ? {\n floating\n } : {}, [enabled, floating]);\n}\n\nfunction isPointInPolygon(point, polygon) {\n const [x, y] = point;\n let isInside = false;\n const length = polygon.length;\n for (let i = 0, j = length - 1; i < length; j = i++) {\n const [xi, yi] = polygon[i] || [0, 0];\n const [xj, yj] = polygon[j] || [0, 0];\n const intersect = yi >= y !== yj >= y && x <= (xj - xi) * (y - yi) / (yj - yi) + xi;\n if (intersect) {\n isInside = !isInside;\n }\n }\n return isInside;\n}\nfunction isInside(point, rect) {\n return point[0] >= rect.x && point[0] <= rect.x + rect.width && point[1] >= rect.y && point[1] <= rect.y + rect.height;\n}\n/**\n * Generates a safe polygon area that the user can traverse without closing the\n * floating element once leaving the reference element.\n * @see https://floating-ui.com/docs/useHover#safepolygon\n */\nfunction safePolygon(options) {\n if (options === void 0) {\n options = {};\n }\n const {\n buffer = 0.5,\n blockPointerEvents = false,\n requireIntent = true\n } = options;\n let timeoutId;\n let hasLanded = false;\n let lastX = null;\n let lastY = null;\n let lastCursorTime = performance.now();\n function getCursorSpeed(x, y) {\n const currentTime = performance.now();\n const elapsedTime = currentTime - lastCursorTime;\n if (lastX === null || lastY === null || elapsedTime === 0) {\n lastX = x;\n lastY = y;\n lastCursorTime = currentTime;\n return null;\n }\n const deltaX = x - lastX;\n const deltaY = y - lastY;\n const distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n const speed = distance / elapsedTime; // px / ms\n\n lastX = x;\n lastY = y;\n lastCursorTime = currentTime;\n return speed;\n }\n const fn = _ref => {\n let {\n x,\n y,\n placement,\n elements,\n onClose,\n nodeId,\n tree\n } = _ref;\n return function onMouseMove(event) {\n function close() {\n clearTimeout(timeoutId);\n onClose();\n }\n clearTimeout(timeoutId);\n if (!elements.domReference || !elements.floating || placement == null || x == null || y == null) {\n return;\n }\n const {\n clientX,\n clientY\n } = event;\n const clientPoint = [clientX, clientY];\n const target = getTarget(event);\n const isLeave = event.type === 'mouseleave';\n const isOverFloatingEl = contains(elements.floating, target);\n const isOverReferenceEl = contains(elements.domReference, target);\n const refRect = elements.domReference.getBoundingClientRect();\n const rect = elements.floating.getBoundingClientRect();\n const side = placement.split('-')[0];\n const cursorLeaveFromRight = x > rect.right - rect.width / 2;\n const cursorLeaveFromBottom = y > rect.bottom - rect.height / 2;\n const isOverReferenceRect = isInside(clientPoint, refRect);\n const isFloatingWider = rect.width > refRect.width;\n const isFloatingTaller = rect.height > refRect.height;\n const left = (isFloatingWider ? refRect : rect).left;\n const right = (isFloatingWider ? refRect : rect).right;\n const top = (isFloatingTaller ? refRect : rect).top;\n const bottom = (isFloatingTaller ? refRect : rect).bottom;\n if (isOverFloatingEl) {\n hasLanded = true;\n if (!isLeave) {\n return;\n }\n }\n if (isOverReferenceEl) {\n hasLanded = false;\n }\n if (isOverReferenceEl && !isLeave) {\n hasLanded = true;\n return;\n }\n\n // Prevent overlapping floating element from being stuck in an open-close\n // loop: https://github.com/floating-ui/floating-ui/issues/1910\n if (isLeave && isElement(event.relatedTarget) && contains(elements.floating, event.relatedTarget)) {\n return;\n }\n\n // If any nested child is open, abort.\n if (tree && getChildren(tree.nodesRef.current, nodeId).some(_ref2 => {\n let {\n context\n } = _ref2;\n return context == null ? void 0 : context.open;\n })) {\n return;\n }\n\n // If the pointer is leaving from the opposite side, the \"buffer\" logic\n // creates a point where the floating element remains open, but should be\n // ignored.\n // A constant of 1 handles floating point rounding errors.\n if (side === 'top' && y >= refRect.bottom - 1 || side === 'bottom' && y <= refRect.top + 1 || side === 'left' && x >= refRect.right - 1 || side === 'right' && x <= refRect.left + 1) {\n return close();\n }\n\n // Ignore when the cursor is within the rectangular trough between the\n // two elements. Since the triangle is created from the cursor point,\n // which can start beyond the ref element's edge, traversing back and\n // forth from the ref to the floating element can cause it to close. This\n // ensures it always remains open in that case.\n let rectPoly = [];\n switch (side) {\n case 'top':\n rectPoly = [[left, refRect.top + 1], [left, rect.bottom - 1], [right, rect.bottom - 1], [right, refRect.top + 1]];\n break;\n case 'bottom':\n rectPoly = [[left, rect.top + 1], [left, refRect.bottom - 1], [right, refRect.bottom - 1], [right, rect.top + 1]];\n break;\n case 'left':\n rectPoly = [[rect.right - 1, bottom], [rect.right - 1, top], [refRect.left + 1, top], [refRect.left + 1, bottom]];\n break;\n case 'right':\n rectPoly = [[refRect.right - 1, bottom], [refRect.right - 1, top], [rect.left + 1, top], [rect.left + 1, bottom]];\n break;\n }\n function getPolygon(_ref3) {\n let [x, y] = _ref3;\n switch (side) {\n case 'top':\n {\n const cursorPointOne = [isFloatingWider ? x + buffer / 2 : cursorLeaveFromRight ? x + buffer * 4 : x - buffer * 4, y + buffer + 1];\n const cursorPointTwo = [isFloatingWider ? x - buffer / 2 : cursorLeaveFromRight ? x + buffer * 4 : x - buffer * 4, y + buffer + 1];\n const commonPoints = [[rect.left, cursorLeaveFromRight ? rect.bottom - buffer : isFloatingWider ? rect.bottom - buffer : rect.top], [rect.right, cursorLeaveFromRight ? isFloatingWider ? rect.bottom - buffer : rect.top : rect.bottom - buffer]];\n return [cursorPointOne, cursorPointTwo, ...commonPoints];\n }\n case 'bottom':\n {\n const cursorPointOne = [isFloatingWider ? x + buffer / 2 : cursorLeaveFromRight ? x + buffer * 4 : x - buffer * 4, y - buffer];\n const cursorPointTwo = [isFloatingWider ? x - buffer / 2 : cursorLeaveFromRight ? x + buffer * 4 : x - buffer * 4, y - buffer];\n const commonPoints = [[rect.left, cursorLeaveFromRight ? rect.top + buffer : isFloatingWider ? rect.top + buffer : rect.bottom], [rect.right, cursorLeaveFromRight ? isFloatingWider ? rect.top + buffer : rect.bottom : rect.top + buffer]];\n return [cursorPointOne, cursorPointTwo, ...commonPoints];\n }\n case 'left':\n {\n const cursorPointOne = [x + buffer + 1, isFloatingTaller ? y + buffer / 2 : cursorLeaveFromBottom ? y + buffer * 4 : y - buffer * 4];\n const cursorPointTwo = [x + buffer + 1, isFloatingTaller ? y - buffer / 2 : cursorLeaveFromBottom ? y + buffer * 4 : y - buffer * 4];\n const commonPoints = [[cursorLeaveFromBottom ? rect.right - buffer : isFloatingTaller ? rect.right - buffer : rect.left, rect.top], [cursorLeaveFromBottom ? isFloatingTaller ? rect.right - buffer : rect.left : rect.right - buffer, rect.bottom]];\n return [...commonPoints, cursorPointOne, cursorPointTwo];\n }\n case 'right':\n {\n const cursorPointOne = [x - buffer, isFloatingTaller ? y + buffer / 2 : cursorLeaveFromBottom ? y + buffer * 4 : y - buffer * 4];\n const cursorPointTwo = [x - buffer, isFloatingTaller ? y - buffer / 2 : cursorLeaveFromBottom ? y + buffer * 4 : y - buffer * 4];\n const commonPoints = [[cursorLeaveFromBottom ? rect.left + buffer : isFloatingTaller ? rect.left + buffer : rect.right, rect.top], [cursorLeaveFromBottom ? isFloatingTaller ? rect.left + buffer : rect.right : rect.left + buffer, rect.bottom]];\n return [cursorPointOne, cursorPointTwo, ...commonPoints];\n }\n }\n }\n if (isPointInPolygon([clientX, clientY], rectPoly)) {\n return;\n }\n if (hasLanded && !isOverReferenceRect) {\n return close();\n }\n if (!isLeave && requireIntent) {\n const cursorSpeed = getCursorSpeed(event.clientX, event.clientY);\n const cursorSpeedThreshold = 0.1;\n if (cursorSpeed !== null && cursorSpeed < cursorSpeedThreshold) {\n return close();\n }\n }\n if (!isPointInPolygon([clientX, clientY], getPolygon([x, y]))) {\n close();\n } else if (!hasLanded && requireIntent) {\n timeoutId = window.setTimeout(close, 40);\n }\n };\n };\n fn.__options = {\n blockPointerEvents\n };\n return fn;\n}\n\nexport { Composite, CompositeItem, FloatingArrow, FloatingDelayGroup, FloatingFocusManager, FloatingList, FloatingNode, FloatingOverlay, FloatingPortal, FloatingTree, inner, safePolygon, useClick, useClientPoint, useDelayGroup, useDelayGroupContext, useDismiss, useFloating, useFloatingNodeId, useFloatingParentNodeId, useFloatingPortalNode, useFloatingRootContext, useFloatingTree, useFocus, useHover, useId, useInnerOffset, useInteractions, useListItem, useListNavigation, useMergeRefs, useRole, useTransitionStatus, useTransitionStyles, useTypeahead };\n","import{autoUpdate as Z,flip as ee,inner as te,offset as ne,shift as re,size as le,useFloating as oe,useInnerOffset as ie,useInteractions as se}from\"@floating-ui/react\";import*as j from\"react\";import{createContext as _,useCallback as ae,useContext as T,useMemo as R,useRef as ue,useState as v}from\"react\";import{useDisposables as fe}from'../hooks/use-disposables.js';import{useEvent as z}from'../hooks/use-event.js';import{useIsoMorphicEffect as C}from'../hooks/use-iso-morphic-effect.js';import*as pe from'../utils/dom.js';let y=_({styles:void 0,setReference:()=>{},setFloating:()=>{},getReferenceProps:()=>({}),getFloatingProps:()=>({}),slot:{}});y.displayName=\"FloatingContext\";let $=_(null);$.displayName=\"PlacementContext\";function ye(e){return R(()=>e?typeof e==\"string\"?{to:e}:e:null,[e])}function Fe(){return T(y).setReference}function be(){return T(y).getReferenceProps}function Te(){let{getFloatingProps:e,slot:t}=T(y);return ae((...n)=>Object.assign({},e(...n),{\"data-anchor\":t.anchor}),[e,t])}function Re(e=null){e===!1&&(e=null),typeof e==\"string\"&&(e={to:e});let t=T($),n=R(()=>e,[JSON.stringify(e,(l,o)=>{var u;return(u=o==null?void 0:o.outerHTML)!=null?u:o})]);C(()=>{t==null||t(n!=null?n:null)},[t,n]);let r=T(y);return R(()=>[r.setFloating,e?r.styles:{}],[r.setFloating,e,r.styles])}let D=4;function Ae({children:e,enabled:t=!0}){let[n,r]=v(null),[l,o]=v(0),u=ue(null),[f,s]=v(null);ce(f);let i=t&&n!==null&&f!==null,{to:F=\"bottom\",gap:E=0,offset:A=0,padding:c=0,inner:h}=ge(n,f),[a,p=\"center\"]=F.split(\" \");C(()=>{i&&o(0)},[i]);let{refs:b,floatingStyles:S,context:g}=oe({open:i,placement:a===\"selection\"?p===\"center\"?\"bottom\":`bottom-${p}`:p===\"center\"?`${a}`:`${a}-${p}`,strategy:\"absolute\",transform:!1,middleware:[ne({mainAxis:a===\"selection\"?0:E,crossAxis:A}),re({padding:c}),a!==\"selection\"&&ee({padding:c}),a===\"selection\"&&h?te({...h,padding:c,overflowRef:u,offset:l,minItemsVisible:D,referenceOverflowThreshold:c,onFallbackChange(P){var L,N;if(!P)return;let d=g.elements.floating;if(!d)return;let M=parseFloat(getComputedStyle(d).scrollPaddingBottom)||0,I=Math.min(D,d.childElementCount),W=0,B=0;for(let m of(N=(L=g.elements.floating)==null?void 0:L.childNodes)!=null?N:[])if(pe.isHTMLElement(m)){let x=m.offsetTop,k=x+m.clientHeight+M,H=d.scrollTop,U=H+d.clientHeight;if(x>=H&&k<=U)I--;else{B=Math.max(0,Math.min(k,U)-Math.max(x,H)),W=m.clientHeight;break}}I>=1&&o(m=>{let x=W*I-B+M;return m>=x?m:x})}}):null,le({padding:c,apply({availableWidth:P,availableHeight:d,elements:M}){Object.assign(M.floating.style,{overflow:\"auto\",maxWidth:`${P}px`,maxHeight:`min(var(--anchor-max-height, 100vh), ${d}px)`})}})].filter(Boolean),whileElementsMounted:Z}),[w=a,V=p]=g.placement.split(\"-\");a===\"selection\"&&(w=\"selection\");let G=R(()=>({anchor:[w,V].filter(Boolean).join(\" \")}),[w,V]),K=ie(g,{overflowRef:u,onChange:o}),{getReferenceProps:Q,getFloatingProps:X}=se([K]),Y=z(P=>{s(P),b.setFloating(P)});return j.createElement($.Provider,{value:r},j.createElement(y.Provider,{value:{setFloating:Y,setReference:b.setReference,styles:S,getReferenceProps:Q,getFloatingProps:X,slot:G}},e))}function ce(e){C(()=>{if(!e)return;let t=new MutationObserver(()=>{let n=window.getComputedStyle(e).maxHeight,r=parseFloat(n);if(isNaN(r))return;let l=parseInt(n);isNaN(l)||r!==l&&(e.style.maxHeight=`${Math.ceil(r)}px`)});return t.observe(e,{attributes:!0,attributeFilter:[\"style\"]}),()=>{t.disconnect()}},[e])}function ge(e,t){var o,u,f;let n=O((o=e==null?void 0:e.gap)!=null?o:\"var(--anchor-gap, 0)\",t),r=O((u=e==null?void 0:e.offset)!=null?u:\"var(--anchor-offset, 0)\",t),l=O((f=e==null?void 0:e.padding)!=null?f:\"var(--anchor-padding, 0)\",t);return{...e,gap:n,offset:r,padding:l}}function O(e,t,n=void 0){let r=fe(),l=z((s,i)=>{if(s==null)return[n,null];if(typeof s==\"number\")return[s,null];if(typeof s==\"string\"){if(!i)return[n,null];let F=J(s,i);return[F,E=>{let A=q(s);{let c=A.map(h=>window.getComputedStyle(i).getPropertyValue(h));r.requestAnimationFrame(function h(){r.nextFrame(h);let a=!1;for(let[b,S]of A.entries()){let g=window.getComputedStyle(i).getPropertyValue(S);if(c[b]!==g){c[b]=g,a=!0;break}}if(!a)return;let p=J(s,i);F!==p&&(E(p),F=p)})}return r.dispose}]}return[n,null]}),o=R(()=>l(e,t)[0],[e,t]),[u=o,f]=v();return C(()=>{let[s,i]=l(e,t);if(f(s),!!i)return i(f)},[e,t]),u}function q(e){let t=/var\\((.*)\\)/.exec(e);if(t){let n=t[1].indexOf(\",\");if(n===-1)return[t[1]];let r=t[1].slice(0,n).trim(),l=t[1].slice(n+1).trim();return l?[r,...q(l)]:[r]}return[]}function J(e,t){let n=document.createElement(\"div\");t.appendChild(n),n.style.setProperty(\"margin-top\",\"0px\",\"important\"),n.style.setProperty(\"margin-top\",e,\"important\");let r=parseFloat(window.getComputedStyle(n).marginTop)||0;return t.removeChild(n),r}export{Ae as FloatingProvider,Re as useFloatingPanel,Te as useFloatingPanelProps,Fe as useFloatingReference,be as useFloatingReferenceProps,ye as useResolvedAnchor};\n","import r,{cloneElement as l,isValidElement as c,useState as a}from\"react\";function f({children:t,freeze:e},o){let n=u(e,t);return c(n)?l(n,{ref:o}):r.createElement(r.Fragment,null,n)}const s=r.forwardRef(f);function u(t,e){let[o,n]=a(e);return!t&&o!==e&&n(e),t?o:e}export{s as Frozen,u as useFrozenData};\n","import r,{createContext as l,useContext as d}from\"react\";let n=l(null);n.displayName=\"OpenClosedContext\";var i=(e=>(e[e.Open=1]=\"Open\",e[e.Closed=2]=\"Closed\",e[e.Closing=4]=\"Closing\",e[e.Opening=8]=\"Opening\",e))(i||{});function u(){return d(n)}function c({value:o,children:t}){return r.createElement(n.Provider,{value:o},t)}function s({children:o}){return r.createElement(n.Provider,{value:null},o)}export{c as OpenClosedProvider,s as ResetOpenClosedProvider,i as State,u as useOpenClosed};\n","function u(l){throw new Error(\"Unexpected object: \"+l)}var c=(i=>(i[i.First=0]=\"First\",i[i.Previous=1]=\"Previous\",i[i.Next=2]=\"Next\",i[i.Last=3]=\"Last\",i[i.Specific=4]=\"Specific\",i[i.Nothing=5]=\"Nothing\",i))(c||{});function f(l,n){let t=n.resolveItems();if(t.length<=0)return null;let r=n.resolveActiveIndex(),s=r!=null?r:-1;switch(l.focus){case 0:{for(let e=0;e<t.length;++e)if(!n.resolveDisabled(t[e],e,t))return e;return r}case 1:{s===-1&&(s=t.length);for(let e=s-1;e>=0;--e)if(!n.resolveDisabled(t[e],e,t))return e;return r}case 2:{for(let e=s+1;e<t.length;++e)if(!n.resolveDisabled(t[e],e,t))return e;return r}case 3:{for(let e=t.length-1;e>=0;--e)if(!n.resolveDisabled(t[e],e,t))return e;return r}case 4:{for(let e=0;e<t.length;++e)if(n.resolveId(t[e],e,t)===l.id)return e;return r}case 5:return null;default:u(l)}}export{c as Focus,f as calculateActiveIndex};\n","import{useEffect as u,useRef as n}from\"react\";import{microTask as o}from'../utils/micro-task.js';import{useEvent as f}from'./use-event.js';function c(t){let r=f(t),e=n(!1);u(()=>(e.current=!1,()=>{e.current=!0,o(()=>{e.current&&r()})}),[r])}export{c as useOnUnmount};\n","import t,{createContext as r,useContext as c}from\"react\";let e=r(!1);function a(){return c(e)}function l(o){return t.createElement(e.Provider,{value:o.force},o.children)}export{l as ForcePortalRoot,a as usePortalRoot};\n","\"use client\";import i,{Fragment as R,createContext as E,useContext as P,useEffect as A,useMemo as G,useRef as x,useState as M}from\"react\";import{createPortal as b}from\"react-dom\";import{useDisposables as O}from'../../hooks/use-disposables.js';import{useEvent as L}from'../../hooks/use-event.js';import{useOnUnmount as F}from'../../hooks/use-on-unmount.js';import{useOwnerDocument as H}from'../../hooks/use-owner.js';import{optionalRef as h,useSyncRefs as T}from'../../hooks/use-sync-refs.js';import{usePortalRoot as U}from'../../internal/portal-force-root.js';import{env as N}from'../../utils/env.js';import{forwardRefWithAs as f,useRender as d}from'../../utils/render.js';function W(e){let o=U(),l=P(c),[r,p]=M(()=>{var s;if(!o&&l!==null)return(s=l.current)!=null?s:null;if(N.isServer)return null;let t=e==null?void 0:e.getElementById(\"headlessui-portal-root\");if(t)return t;if(e===null)return null;let n=e.createElement(\"div\");return n.setAttribute(\"id\",\"headlessui-portal-root\"),e.body.appendChild(n)});return A(()=>{r!==null&&(e!=null&&e.body.contains(r)||e==null||e.body.appendChild(r))},[r,e]),A(()=>{o||l!==null&&p(l.current)},[l,p,o]),r}let _=R,j=f(function(o,l){let{ownerDocument:r=null,...p}=o,t=x(null),n=T(h(a=>{t.current=a}),l),s=H(t.current),C=r!=null?r:s,u=W(C),y=P(m),g=O(),v=d();return F(()=>{var a;u&&u.childNodes.length<=0&&((a=u.parentElement)==null||a.removeChild(u))}),u?b(i.createElement(\"div\",{\"data-headlessui-portal\":\"\",ref:a=>{g.dispose(),y&&a&&g.add(y.register(a))}},v({ourProps:{ref:n},theirProps:p,slot:{},defaultTag:_,name:\"Portal\"})),u):null});function S(e,o){let l=T(o),{enabled:r=!0,ownerDocument:p,...t}=e,n=d();return r?i.createElement(j,{...t,ownerDocument:p,ref:l}):n({ourProps:{ref:l},theirProps:t,slot:{},defaultTag:_,name:\"Portal\"})}let I=R,c=E(null);function D(e,o){let{target:l,...r}=e,t={ref:T(o)},n=d();return i.createElement(c.Provider,{value:l},n({ourProps:t,theirProps:r,defaultTag:I,name:\"Popover.Group\"}))}let m=E(null);function ee(){let e=P(m),o=x([]),l=L(t=>(o.current.push(t),e&&e.register(t),()=>r(t))),r=L(t=>{let n=o.current.indexOf(t);n!==-1&&o.current.splice(n,1),e&&e.unregister(t)}),p=G(()=>({register:l,unregister:r,portals:o}),[l,r,o]);return[o,G(()=>function({children:n}){return i.createElement(m.Provider,{value:p},n)},[p])]}let J=f(S),X=f(D),te=Object.assign(J,{Group:X});export{te as Portal,X as PortalGroup,ee as useNestedPortals};\n","import{disposables as r}from'./disposables.js';const c={Idle:{kind:\"Idle\"},Tracked:e=>({kind:\"Tracked\",position:e}),Moved:{kind:\"Moved\"}};function a(e){let t=e.getBoundingClientRect();return`${t.x},${t.y}`}function p(e,t,i){let n=r();if(t.kind===\"Tracked\"){let o=function(){d!==a(e)&&(n.dispose(),i())};var f=o;let{position:d}=t,s=new ResizeObserver(o);s.observe(e),n.add(()=>s.disconnect()),n.addEventListener(window,\"scroll\",o,{passive:!0}),n.addEventListener(window,\"resize\",o)}return()=>n.dispose()}export{c as ElementPositionState,a as computeVisualPosition,p as detectMovement};\n","import*as g from'./dom.js';let a=/([\\u2700-\\u27BF]|[\\uE000-\\uF8FF]|\\uD83C[\\uDC00-\\uDFFF]|\\uD83D[\\uDC00-\\uDFFF]|[\\u2011-\\u26FF]|\\uD83E[\\uDD10-\\uDDFF])/g;function o(e){var l,n;let i=(l=e.innerText)!=null?l:\"\",t=e.cloneNode(!0);if(!g.isHTMLElement(t))return i;let u=!1;for(let f of t.querySelectorAll('[hidden],[aria-hidden],[role=\"img\"]'))f.remove(),u=!0;let r=u?(n=t.innerText)!=null?n:\"\":i;return a.test(r)&&(r=r.replace(a,\"\")),r}function F(e){let i=e.getAttribute(\"aria-label\");if(typeof i==\"string\")return i.trim();let t=e.getAttribute(\"aria-labelledby\");if(t){let u=t.split(\" \").map(r=>{let l=document.getElementById(r);if(l){let n=l.getAttribute(\"aria-label\");return typeof n==\"string\"?n.trim():o(l).trim()}return null}).filter(Boolean);if(u.length>0)return u.join(\", \")}return o(e).trim()}export{F as getTextValue};\n","import{useRef as l}from\"react\";import{getTextValue as i}from'../utils/get-text-value.js';import{useEvent as o}from'./use-event.js';function s(c){let t=l(\"\"),r=l(\"\");return o(()=>{let e=c.current;if(!e)return\"\";let u=e.innerText;if(t.current===u)return r.current;let n=i(e).trim().toLowerCase();return t.current=u,r.current=n,n})}export{s as useTextValue};\n","var T=Object.defineProperty;var y=(e,o,t)=>o in e?T(e,o,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[o]=t;var b=(e,o,t)=>(y(e,typeof o!=\"symbol\"?o+\"\":o,t),t);import{Machine as I,batch as v}from'../../machine.js';import{ActionTypes as R,stackMachines as A}from'../../machines/stack-machine.js';import{Focus as a,calculateActiveIndex as x}from'../../utils/calculate-active-index.js';import{ElementPositionState as S,computeVisualPosition as E,detectMovement as L}from'../../utils/element-movement.js';import{sortByDomNode as M}from'../../utils/focus-management.js';import{match as m}from'../../utils/match.js';var F=(t=>(t[t.Open=0]=\"Open\",t[t.Closed=1]=\"Closed\",t))(F||{}),P=(t=>(t[t.Single=0]=\"Single\",t[t.Multi=1]=\"Multi\",t))(P||{}),C=(t=>(t[t.Pointer=0]=\"Pointer\",t[t.Other=1]=\"Other\",t))(C||{}),k=(r=>(r[r.OpenListbox=0]=\"OpenListbox\",r[r.CloseListbox=1]=\"CloseListbox\",r[r.GoToOption=2]=\"GoToOption\",r[r.Search=3]=\"Search\",r[r.ClearSearch=4]=\"ClearSearch\",r[r.SelectOption=5]=\"SelectOption\",r[r.RegisterOptions=6]=\"RegisterOptions\",r[r.UnregisterOptions=7]=\"UnregisterOptions\",r[r.SetButtonElement=8]=\"SetButtonElement\",r[r.SetOptionsElement=9]=\"SetOptionsElement\",r[r.SortOptions=10]=\"SortOptions\",r[r.MarkButtonAsMoved=11]=\"MarkButtonAsMoved\",r))(k||{});function g(e,o=t=>t){let t=e.activeOptionIndex!==null?e.options[e.activeOptionIndex]:null,n=M(o(e.options.slice()),s=>s.dataRef.current.domRef.current),i=t?n.indexOf(t):null;return i===-1&&(i=null),{options:n,activeOptionIndex:i}}let D={[1](e){if(e.dataRef.current.disabled||e.listboxState===1)return e;let o=e.buttonElement?S.Tracked(E(e.buttonElement)):e.buttonPositionState;return{...e,activeOptionIndex:null,pendingFocus:{focus:a.Nothing},listboxState:1,__demoMode:!1,buttonPositionState:o}},[0](e,o){if(e.dataRef.current.disabled||e.listboxState===0)return e;let t=e.activeOptionIndex,{isSelected:n}=e.dataRef.current,i=e.options.findIndex(s=>n(s.dataRef.current.value));return i!==-1&&(t=i),{...e,frozenValue:!1,pendingFocus:o.focus,listboxState:0,activeOptionIndex:t,__demoMode:!1,buttonPositionState:S.Idle}},[2](e,o){var s,l,c,p,f;if(e.dataRef.current.disabled||e.listboxState===1)return e;let t={...e,searchQuery:\"\",activationTrigger:(s=o.trigger)!=null?s:1,__demoMode:!1};if(o.focus===a.Nothing)return{...t,activeOptionIndex:null};if(o.focus===a.Specific)return{...t,activeOptionIndex:e.options.findIndex(d=>d.id===o.id)};if(o.focus===a.Previous){let d=e.activeOptionIndex;if(d!==null){let O=e.options[d].dataRef.current.domRef,r=x(o,{resolveItems:()=>e.options,resolveActiveIndex:()=>e.activeOptionIndex,resolveId:u=>u.id,resolveDisabled:u=>u.dataRef.current.disabled});if(r!==null){let u=e.options[r].dataRef.current.domRef;if(((l=O.current)==null?void 0:l.previousElementSibling)===u.current||((c=u.current)==null?void 0:c.previousElementSibling)===null)return{...t,activeOptionIndex:r}}}}else if(o.focus===a.Next){let d=e.activeOptionIndex;if(d!==null){let O=e.options[d].dataRef.current.domRef,r=x(o,{resolveItems:()=>e.options,resolveActiveIndex:()=>e.activeOptionIndex,resolveId:u=>u.id,resolveDisabled:u=>u.dataRef.current.disabled});if(r!==null){let u=e.options[r].dataRef.current.domRef;if(((p=O.current)==null?void 0:p.nextElementSibling)===u.current||((f=u.current)==null?void 0:f.nextElementSibling)===null)return{...t,activeOptionIndex:r}}}}let n=g(e),i=x(o,{resolveItems:()=>n.options,resolveActiveIndex:()=>n.activeOptionIndex,resolveId:d=>d.id,resolveDisabled:d=>d.dataRef.current.disabled});return{...t,...n,activeOptionIndex:i}},[3]:(e,o)=>{if(e.dataRef.current.disabled||e.listboxState===1)return e;let n=e.searchQuery!==\"\"?0:1,i=e.searchQuery+o.value.toLowerCase(),l=(e.activeOptionIndex!==null?e.options.slice(e.activeOptionIndex+n).concat(e.options.slice(0,e.activeOptionIndex+n)):e.options).find(p=>{var f;return!p.dataRef.current.disabled&&((f=p.dataRef.current.textValue)==null?void 0:f.startsWith(i))}),c=l?e.options.indexOf(l):-1;return c===-1||c===e.activeOptionIndex?{...e,searchQuery:i}:{...e,searchQuery:i,activeOptionIndex:c,activationTrigger:1}},[4](e){return e.dataRef.current.disabled||e.listboxState===1||e.searchQuery===\"\"?e:{...e,searchQuery:\"\"}},[5](e){return e.dataRef.current.mode===0?{...e,frozenValue:!0}:{...e}},[6]:(e,o)=>{let t=e.options.concat(o.options),n=e.activeOptionIndex;if(e.pendingFocus.focus!==a.Nothing&&(n=x(e.pendingFocus,{resolveItems:()=>t,resolveActiveIndex:()=>e.activeOptionIndex,resolveId:i=>i.id,resolveDisabled:i=>i.dataRef.current.disabled})),e.activeOptionIndex===null){let{isSelected:i}=e.dataRef.current;if(i){let s=t.findIndex(l=>i==null?void 0:i(l.dataRef.current.value));s!==-1&&(n=s)}}return{...e,options:t,activeOptionIndex:n,pendingFocus:{focus:a.Nothing},pendingShouldSort:!0}},[7]:(e,o)=>{let t=e.options,n=[],i=new Set(o.options);for(let[s,l]of t.entries())if(i.has(l.id)&&(n.push(s),i.delete(l.id),i.size===0))break;if(n.length>0){t=t.slice();for(let s of n.reverse())t.splice(s,1)}return{...e,options:t,activationTrigger:1}},[8]:(e,o)=>e.buttonElement===o.element?e:{...e,buttonElement:o.element},[9]:(e,o)=>e.optionsElement===o.element?e:{...e,optionsElement:o.element},[10]:e=>e.pendingShouldSort?{...e,...g(e),pendingShouldSort:!1}:e,[11](e){return e.buttonPositionState.kind!==\"Tracked\"?e:{...e,buttonPositionState:S.Moved}}};class h extends I{constructor(t){super(t);b(this,\"actions\",{onChange:t=>{let{onChange:n,compare:i,mode:s,value:l}=this.state.dataRef.current;return m(s,{[0]:()=>n==null?void 0:n(t),[1]:()=>{let c=l.slice(),p=c.findIndex(f=>i(f,t));return p===-1?c.push(t):c.splice(p,1),n==null?void 0:n(c)}})},registerOption:v(()=>{let t=[],n=new Set;return[(i,s)=>{n.has(s)||(n.add(s),t.push({id:i,dataRef:s}))},()=>(n.clear(),this.send({type:6,options:t.splice(0)}))]}),unregisterOption:v(()=>{let t=[];return[n=>t.push(n),()=>{this.send({type:7,options:t.splice(0)})}]}),goToOption:v(()=>{let t=null;return[(n,i)=>{t={type:2,...n,trigger:i}},()=>t&&this.send(t)]}),closeListbox:()=>{this.send({type:1})},openListbox:t=>{this.send({type:0,focus:t})},selectActiveOption:()=>{var t;if(this.state.activeOptionIndex!==null){let{dataRef:n}=this.state.options[this.state.activeOptionIndex];this.actions.selectOption(n.current.value)}else this.state.dataRef.current.mode===0&&(this.actions.closeListbox(),(t=this.state.buttonElement)==null||t.focus({preventScroll:!0}))},selectOption:t=>{this.send({type:5,value:t})},search:t=>{this.send({type:3,value:t})},clearSearch:()=>{this.send({type:4})},setButtonElement:t=>{this.send({type:8,element:t})},setOptionsElement:t=>{this.send({type:9,element:t})}});b(this,\"selectors\",{activeDescendantId(t){var s;let n=t.activeOptionIndex,i=t.options;return n===null||(s=i[n])==null?void 0:s.id},isActive(t,n){var l;let i=t.activeOptionIndex,s=t.options;return i!==null?((l=s[i])==null?void 0:l.id)===n:!1},hasFrozenValue(t){return t.frozenValue},shouldScrollIntoView(t,n){return t.__demoMode||t.listboxState!==0||t.activationTrigger===0?!1:this.isActive(t,n)},didButtonMove(t){return t.buttonPositionState.kind===\"Moved\"}});this.on(6,()=>{requestAnimationFrame(()=>{this.send({type:10})})});{let n=this.state.id,i=A.get(null);this.disposables.add(i.on(R.Push,s=>{!i.selectors.isTop(s,n)&&this.state.listboxState===0&&this.actions.closeListbox()})),this.on(0,()=>i.actions.push(n)),this.on(1,()=>i.actions.pop(n))}this.disposables.group(n=>{this.on(1,i=>{i.buttonElement&&(n.dispose(),n.add(L(i.buttonElement,i.buttonPositionState,()=>{this.send({type:11})})))})}),this.on(5,(n,i)=>{var s;this.actions.onChange(i.value),this.state.dataRef.current.mode===0&&(this.actions.closeListbox(),(s=this.state.buttonElement)==null||s.focus({preventScroll:!0}))})}static new({id:t,__demoMode:n=!1}){return new h({id:t,dataRef:{current:{}},listboxState:n?0:1,options:[],searchQuery:\"\",activeOptionIndex:null,activationTrigger:1,buttonElement:null,optionsElement:null,pendingShouldSort:!1,pendingFocus:{focus:a.Nothing},frozenValue:!1,__demoMode:n,buttonPositionState:S.Idle})}reduce(t,n){return m(n.type,D,t,n)}}export{k as ActionTypes,C as ActivationTrigger,h as ListboxMachine,F as ListboxStates,P as ValueMode};\n","import{createContext as n,useContext as r,useMemo as i}from\"react\";import{useOnUnmount as s}from'../../hooks/use-on-unmount.js';import{ListboxMachine as a}from'./listbox-machine.js';const c=n(null);function p(o){let e=r(c);if(e===null){let t=new Error(`<${o} /> is missing a parent <Listbox /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(t,u),t}return e}function u({id:o,__demoMode:e=!1}){let t=i(()=>a.new({id:o,__demoMode:e}),[]);return s(()=>t.dispose()),t}export{c as ListboxContext,u as useListboxMachine,p as useListboxMachineContext};\n","\"use client\";import{useFocusRing as Ee}from\"@react-aria/focus\";import{useHover as he}from\"@react-aria/interactions\";import D,{Fragment as ce,createContext as fe,useCallback as K,useContext as Te,useEffect as Ae,useMemo as _e,useRef as ae,useState as Se}from\"react\";import{flushSync as ie}from\"react-dom\";import{useActivePress as De}from'../../hooks/use-active-press.js';import{useByComparator as Re}from'../../hooks/use-by-comparator.js';import{useControllable as Fe}from'../../hooks/use-controllable.js';import{useDefaultValue as Ce}from'../../hooks/use-default-value.js';import{useDisposables as Me}from'../../hooks/use-disposables.js';import{useElementSize as we}from'../../hooks/use-element-size.js';import{useEvent as B}from'../../hooks/use-event.js';import{useHandleToggle as Be}from'../../hooks/use-handle-toggle.js';import{useId as Y}from'../../hooks/use-id.js';import{useInertOthers as Ie}from'../../hooks/use-inert-others.js';import{useIsoMorphicEffect as se}from'../../hooks/use-iso-morphic-effect.js';import{useLatestValue as ke}from'../../hooks/use-latest-value.js';import{useOnDisappear as Ue}from'../../hooks/use-on-disappear.js';import{useOutsideClick as Ne}from'../../hooks/use-outside-click.js';import{useOwnerDocument as be}from'../../hooks/use-owner.js';import{Action as Z,useQuickRelease as He}from'../../hooks/use-quick-release.js';import{useResolveButtonType as Ge}from'../../hooks/use-resolve-button-type.js';import{useScrollLock as Ve}from'../../hooks/use-scroll-lock.js';import{useSlot as z}from'../../hooks/use-slot.js';import{useSyncRefs as X}from'../../hooks/use-sync-refs.js';import{useTextValue as Ke}from'../../hooks/use-text-value.js';import{useTrackedPointer as ze}from'../../hooks/use-tracked-pointer.js';import{transitionDataAttributes as We,useTransition as Xe}from'../../hooks/use-transition.js';import{useDisabled as je}from'../../internal/disabled.js';import{FloatingProvider as Je,useFloatingPanel as Qe,useFloatingPanelProps as $e,useFloatingReference as qe,useFloatingReferenceProps as Ye,useResolvedAnchor as Ze}from'../../internal/floating.js';import{FormFields as et}from'../../internal/form-fields.js';import{useFrozenData as tt}from'../../internal/frozen.js';import{useProvidedId as ot}from'../../internal/id.js';import{OpenClosedProvider as nt,State as ee,useOpenClosed as rt}from'../../internal/open-closed.js';import{stackMachines as lt}from'../../machines/stack-machine.js';import{useSlice as g}from'../../react-glue.js';import{Focus as v}from'../../utils/calculate-active-index.js';import{disposables as at}from'../../utils/disposables.js';import*as it from'../../utils/dom.js';import{Focus as me,FocusableMode as st,focusFrom as pt,isFocusableElement as ut}from'../../utils/focus-management.js';import{attemptSubmit as dt}from'../../utils/form.js';import{match as te}from'../../utils/match.js';import{isActiveElement as ct}from'../../utils/owner.js';import{RenderFeatures as ye,forwardRefWithAs as j,mergeProps as xe,useRender as J}from'../../utils/render.js';import{useDescribedBy as ft}from'../description/description.js';import{Keys as d}from'../keyboard.js';import{Label as Tt,useLabelledBy as bt,useLabels as mt}from'../label/label.js';import{Portal as yt}from'../portal/portal.js';import{ActionTypes as xt,ActivationTrigger as pe,ListboxStates as T,ValueMode as G}from'./listbox-machine.js';import{ListboxContext as Ot,useListboxMachine as Lt,useListboxMachineContext as ue}from'./listbox-machine-glue.js';let oe=fe(null);oe.displayName=\"ListboxDataContext\";function Q(b){let E=Te(oe);if(E===null){let m=new Error(`<${b} /> is missing a parent <Listbox /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(m,Q),m}return E}let Pt=ce;function gt(b,E){let m=Y(),u=je(),{value:s,defaultValue:a,form:_,name:i,onChange:y,by:o,invalid:x=!1,disabled:O=u||!1,horizontal:l=!1,multiple:t=!1,__demoMode:p=!1,...S}=b;const h=l?\"horizontal\":\"vertical\";let I=X(E),R=Ce(a),[c=t?[]:void 0,L]=Fe(s,y,R),f=Lt({id:m,__demoMode:p}),k=ae({static:!1,hold:!1}),N=ae(new Map),C=Re(o),V=K(P=>te(n.mode,{[G.Multi]:()=>c.some(W=>C(W,P)),[G.Single]:()=>C(c,P)}),[c]),n=z({value:c,disabled:O,invalid:x,mode:t?G.Multi:G.Single,orientation:h,onChange:L,compare:C,isSelected:V,optionsPropsRef:k,listRef:N});se(()=>{f.state.dataRef.current=n},[n]);let F=g(f,P=>P.listboxState),U=lt.get(null),H=g(U,K(P=>U.selectors.isTop(P,m),[U,m])),[A,$]=g(f,P=>[P.buttonElement,P.optionsElement]);Ne(H,[A,$],(P,W)=>{f.send({type:xt.CloseListbox}),ut(W,st.Loose)||(P.preventDefault(),A==null||A.focus())});let r=z({open:F===T.Open,disabled:O,invalid:x,value:c}),[M,ne]=mt({inherit:!0}),re={ref:I},q=K(()=>{if(R!==void 0)return L==null?void 0:L(R)},[L,R]),le=J();return D.createElement(ne,{value:M,props:{htmlFor:A==null?void 0:A.id},slot:{open:F===T.Open,disabled:O}},D.createElement(Je,null,D.createElement(Ot.Provider,{value:f},D.createElement(oe.Provider,{value:n},D.createElement(nt,{value:te(F,{[T.Open]:ee.Open,[T.Closed]:ee.Closed})},i!=null&&c!=null&&D.createElement(et,{disabled:O,data:{[i]:c},form:_,onReset:q}),le({ourProps:re,theirProps:S,slot:r,defaultTag:Pt,name:\"Listbox\"}))))))}let vt=\"button\";function Et(b,E){let m=Y(),u=ot(),s=Q(\"Listbox.Button\"),a=ue(\"Listbox.Button\"),{id:_=u||`headlessui-listbox-button-${m}`,disabled:i=s.disabled||!1,autoFocus:y=!1,...o}=b,x=X(E,qe(),a.actions.setButtonElement),O=Ye(),[l,t,p]=g(a,r=>[r.listboxState,r.buttonElement,r.optionsElement]),S=l===T.Open;He(S,{trigger:t,action:K(r=>{if(t!=null&&t.contains(r.target))return Z.Ignore;let M=r.target.closest('[role=\"option\"]:not([data-disabled])');return it.isHTMLElement(M)?Z.Select(M):p!=null&&p.contains(r.target)?Z.Ignore:Z.Close},[t,p]),close:a.actions.closeListbox,select:a.actions.selectActiveOption});let h=B(r=>{switch(r.key){case d.Enter:dt(r.currentTarget);break;case d.Space:case d.ArrowDown:r.preventDefault(),a.actions.openListbox({focus:s.value?v.Nothing:v.First});break;case d.ArrowUp:r.preventDefault(),a.actions.openListbox({focus:s.value?v.Nothing:v.Last});break}}),I=B(r=>{switch(r.key){case d.Space:r.preventDefault();break}}),R=Be(r=>{var M;a.state.listboxState===T.Open?(ie(()=>a.actions.closeListbox()),(M=a.state.buttonElement)==null||M.focus({preventScroll:!0})):(r.preventDefault(),a.actions.openListbox({focus:v.Nothing}))}),c=B(r=>r.preventDefault()),L=bt([_]),f=ft(),{isFocusVisible:k,focusProps:N}=Ee({autoFocus:y}),{isHovered:C,hoverProps:V}=he({isDisabled:i}),{pressed:n,pressProps:F}=De({disabled:i}),U=z({open:l===T.Open,active:n||l===T.Open,disabled:i,invalid:s.invalid,value:s.value,hover:C,focus:k,autofocus:y}),H=g(a,r=>r.listboxState===T.Open),A=xe(O(),{ref:x,id:_,type:Ge(b,t),\"aria-haspopup\":\"listbox\",\"aria-controls\":p==null?void 0:p.id,\"aria-expanded\":H,\"aria-labelledby\":L,\"aria-describedby\":f,disabled:i||void 0,autoFocus:y,onKeyDown:h,onKeyUp:I,onKeyPress:c},R,N,V,F);return J()({ourProps:A,theirProps:o,slot:U,defaultTag:vt,name:\"Listbox.Button\"})}let Oe=fe(!1),ht=\"div\",At=ye.RenderStrategy|ye.Static;function _t(b,E){let m=Y(),{id:u=`headlessui-listbox-options-${m}`,anchor:s,portal:a=!1,modal:_=!0,transition:i=!1,...y}=b,o=Ze(s),[x,O]=Se(null);o&&(a=!0);let l=Q(\"Listbox.Options\"),t=ue(\"Listbox.Options\"),[p,S,h,I]=g(t,e=>[e.listboxState,e.buttonElement,e.optionsElement,e.__demoMode]),R=be(S),c=be(h),L=rt(),[f,k]=Xe(i,x,L!==null?(L&ee.Open)===ee.Open:p===T.Open);Ue(f,S,t.actions.closeListbox);let N=I?!1:_&&p===T.Open;Ve(N,c);let C=I?!1:_&&p===T.Open;Ie(C,{allowed:K(()=>[S,h],[S,h])});let n=g(t,t.selectors.didButtonMove)?!1:f,F=g(t,t.selectors.hasFrozenValue)&&!b.static,U=tt(F,l.value),H=K(e=>l.compare(U,e),[l.compare,U]),A=g(t,e=>{var de;if(o==null||!((de=o==null?void 0:o.to)!=null&&de.includes(\"selection\")))return null;let w=e.options.findIndex(ve=>H(ve.dataRef.current.value));return w===-1&&(w=0),w}),$=(()=>{if(o==null)return;if(A===null)return{...o,inner:void 0};let e=Array.from(l.listRef.current.values());return{...o,inner:{listRef:{current:e},index:A}}})(),[r,M]=Qe($),ne=$e(),re=X(E,o?r:null,t.actions.setOptionsElement,O),q=Me();Ae(()=>{let e=h;e&&p===T.Open&&(ct(e)||e==null||e.focus({preventScroll:!0}))},[p,h]);let le=B(e=>{var w;switch(q.dispose(),e.key){case d.Space:if(t.state.searchQuery!==\"\")return e.preventDefault(),e.stopPropagation(),t.actions.search(e.key);case d.Enter:e.preventDefault(),e.stopPropagation(),t.actions.selectActiveOption();break;case te(l.orientation,{vertical:d.ArrowDown,horizontal:d.ArrowRight}):return e.preventDefault(),e.stopPropagation(),t.actions.goToOption({focus:v.Next});case te(l.orientation,{vertical:d.ArrowUp,horizontal:d.ArrowLeft}):return e.preventDefault(),e.stopPropagation(),t.actions.goToOption({focus:v.Previous});case d.Home:case d.PageUp:return e.preventDefault(),e.stopPropagation(),t.actions.goToOption({focus:v.First});case d.End:case d.PageDown:return e.preventDefault(),e.stopPropagation(),t.actions.goToOption({focus:v.Last});case d.Escape:e.preventDefault(),e.stopPropagation(),ie(()=>t.actions.closeListbox()),(w=t.state.buttonElement)==null||w.focus({preventScroll:!0});return;case d.Tab:e.preventDefault(),e.stopPropagation(),ie(()=>t.actions.closeListbox()),pt(t.state.buttonElement,e.shiftKey?me.Previous:me.Next);break;default:e.key.length===1&&(t.actions.search(e.key),q.setTimeout(()=>t.actions.clearSearch(),350));break}}),P=g(t,e=>{var w;return(w=e.buttonElement)==null?void 0:w.id}),W=z({open:p===T.Open}),Le=xe(o?ne():{},{id:u,ref:re,\"aria-activedescendant\":g(t,t.selectors.activeDescendantId),\"aria-multiselectable\":l.mode===G.Multi?!0:void 0,\"aria-labelledby\":P,\"aria-orientation\":l.orientation,onKeyDown:le,role:\"listbox\",tabIndex:p===T.Open?0:void 0,style:{...y.style,...M,\"--button-width\":we(f,S,!0).width},...We(k)}),Pe=J(),ge=_e(()=>l.mode===G.Multi?l:{...l,isSelected:H},[l,H]);return D.createElement(yt,{enabled:a?b.static||f:!1,ownerDocument:R},D.createElement(oe.Provider,{value:ge},Pe({ourProps:Le,theirProps:y,slot:W,defaultTag:ht,features:At,visible:n,name:\"Listbox.Options\"})))}let St=\"div\";function Dt(b,E){let m=Y(),{id:u=`headlessui-listbox-option-${m}`,disabled:s=!1,value:a,..._}=b,i=Te(Oe)===!0,y=Q(\"Listbox.Option\"),o=ue(\"Listbox.Option\"),x=g(o,n=>o.selectors.isActive(n,u)),O=y.isSelected(a),l=ae(null),t=Ke(l),p=ke({disabled:s,value:a,domRef:l,get textValue(){return t()}}),S=X(E,l,n=>{n?y.listRef.current.set(u,n):y.listRef.current.delete(u)}),h=g(o,n=>o.selectors.shouldScrollIntoView(n,u));se(()=>{if(h)return at().requestAnimationFrame(()=>{var n,F;(F=(n=l.current)==null?void 0:n.scrollIntoView)==null||F.call(n,{block:\"nearest\"})})},[h,l]),se(()=>{if(!i)return o.actions.registerOption(u,p),()=>o.actions.unregisterOption(u)},[p,u,i]);let I=B(n=>{if(s)return n.preventDefault();o.actions.selectOption(a)}),R=B(()=>{if(s)return o.actions.goToOption({focus:v.Nothing});o.actions.goToOption({focus:v.Specific,id:u})}),c=ze(),L=B(n=>c.update(n)),f=B(n=>{c.wasMoved(n)&&(s||x&&o.state.activationTrigger===pe.Pointer||o.actions.goToOption({focus:v.Specific,id:u},pe.Pointer))}),k=B(n=>{c.wasMoved(n)&&(s||x&&o.state.activationTrigger===pe.Pointer&&o.actions.goToOption({focus:v.Nothing}))}),N=z({active:x,focus:x,selected:O,disabled:s,selectedOption:O&&i}),C=i?{}:{id:u,ref:S,role:\"option\",tabIndex:s===!0?void 0:-1,\"aria-disabled\":s===!0?!0:void 0,\"aria-selected\":O,disabled:void 0,onClick:I,onFocus:R,onPointerEnter:L,onMouseEnter:L,onPointerMove:f,onMouseMove:f,onPointerLeave:k,onMouseLeave:k},V=J();return!O&&i?null:V({ourProps:C,theirProps:_,slot:N,defaultTag:St,name:\"Listbox.Option\"})}let Rt=ce;function Ft(b,E){let{options:m,placeholder:u,...s}=b,_={ref:X(E)},i=Q(\"ListboxSelectedOption\"),y=z({}),o=i.value===void 0||i.value===null||i.mode===G.Multi&&Array.isArray(i.value)&&i.value.length===0,x=J();return D.createElement(Oe.Provider,{value:!0},x({ourProps:_,theirProps:{...s,children:D.createElement(D.Fragment,null,u&&o?u:m)},slot:y,defaultTag:Rt,name:\"ListboxSelectedOption\"}))}let Ct=j(gt),Mt=j(Et),wt=Tt,Bt=j(_t),It=j(Dt),kt=j(Ft),Mo=Object.assign(Ct,{Button:Mt,Label:wt,Options:Bt,Option:It,SelectedOption:kt});export{Mo as Listbox,Mt as ListboxButton,wt as ListboxLabel,It as ListboxOption,Bt as ListboxOptions,kt as ListboxSelectedOption};\n","import { useQuery, UseQueryResult } from '@tanstack/react-query'\nimport { useWallet } from '@txnlab/use-wallet-react'\nimport algosdk from 'algosdk'\n\n/**\n * Custom hook to fetch account information for Algorand address\n *\n * @param options.enabled Whether to enable the account lookup (defaults to true)\n * @returns Account information query result\n */\nexport function useAccountInfo(\n options: { enabled?: boolean } = {},\n): UseQueryResult<algosdk.modelsv2.Account | null> {\n const { activeAddress, algodClient } = useWallet()\n const { enabled = true } = options\n\n return useQuery({\n queryKey: ['account-info', activeAddress],\n queryFn: async () => {\n if (!activeAddress || !algodClient) return null\n\n try {\n const accountInfo = await algodClient\n .accountInformation(activeAddress)\n .do()\n // Return the entire accountInfo object\n return accountInfo\n } catch (error) {\n throw new Error(`Error fetching account information: ${error}`)\n }\n },\n enabled: enabled && !!activeAddress && !!algodClient,\n refetchOnWindowFocus: true,\n })\n}\n","import React from 'react'\n\nimport { usePlugins } from './PluginContext'\n\nimport type { MenuRenderContext, MenuSlot } from './types'\n\n/**\n * Renders plugin menu items for a given slot.\n * Place this component at each named slot position in ConnectedWalletMenu.\n */\nexport function PluginSlot({\n slot,\n ctx,\n}: {\n slot: MenuSlot\n ctx: MenuRenderContext\n}) {\n const { menuItemsBySlot } = usePlugins()\n const items = menuItemsBySlot[slot]\n\n if (!items || items.length === 0) return null\n\n return (\n <>\n {items\n .filter((item) => !item.enabled || item.enabled(ctx))\n .map((item) => (\n <React.Fragment key={item.key}>{item.render(ctx)}</React.Fragment>\n ))}\n </>\n )\n}\n","import { cn } from '../utils'\n\ninterface AlgoSymbolProps {\n className?: string\n /**\n * Size relative to current font size (1em = 100%)\n * @default 0.85\n */\n scale?: number\n}\n\nexport function AlgoSymbol({ className, scale = 0.85 }: AlgoSymbolProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n className={cn('inline-block align-baseline', className)}\n style={{\n width: `${scale}em`,\n height: `${scale}em`,\n }}\n aria-label=\"Algorand\"\n fill=\"currentColor\"\n >\n <path d=\"M23.98 23.99h-3.75l-2.44-9.07-5.25 9.07H8.34l8.1-14.04-1.3-4.88L4.22 24H.02L13.88 0h3.67l1.61 5.96h3.79l-2.59 4.5 3.62 13.53z\" />\n </svg>\n )\n}\n","import {\n useFloating,\n useClick,\n useDismiss,\n useInteractions,\n FloatingFocusManager,\n FloatingPortal,\n offset,\n flip,\n shift,\n autoUpdate,\n useId,\n} from '@floating-ui/react'\nimport {\n Label,\n Listbox,\n ListboxButton,\n ListboxOption,\n ListboxOptions,\n} from '@headlessui/react'\nimport { QueryClientProvider } from '@tanstack/react-query'\nimport { useWallet } from '@txnlab/use-wallet-react'\nimport { formatNumber, formatShortAddress } from '@txnlab/utils-ts'\nimport React, { ReactElement, RefObject, useState } from 'react'\n\nimport { useAccountInfo } from '../hooks/useAccountInfo'\nimport { useNfd } from '../hooks/useNfd'\nimport { usePlugins } from '../plugins/PluginContext'\nimport { PluginSlot } from '../plugins/PluginSlot'\nimport { useWalletUI } from '../providers/WalletUIProvider'\n\nimport { AlgoSymbol } from './AlgoSymbol'\nimport { ConnectedWalletButton } from './ConnectedWalletButton'\nimport { NfdAvatar } from './NfdAvatar'\n\nimport type { MenuRenderContext } from '../plugins/types'\n\n// A more specific type for the children that includes ref\ntype RefableElement = ReactElement & {\n ref?: RefObject<HTMLElement> | ((instance: HTMLElement | null) => void)\n}\n\nexport interface ConnectedWalletMenuProps {\n children?: RefableElement\n}\n\nfunction ConnectedWalletMenuContent({ children }: ConnectedWalletMenuProps) {\n const { activeAddress, activeWallet } = useWallet()\n const { theme, resolvedTheme } = useWalletUI()\n const { openDialog, closeDialog, panels } = usePlugins()\n const [isOpen, setIsOpen] = useState(false)\n const [activePanel, setActivePanel] = useState<string | null>(null)\n const [isCopied, setIsCopied] = useState(false)\n const [showAvailableBalance, setShowAvailableBalance] = useState(() => {\n // Try to get the stored preference from localStorage\n const stored = localStorage.getItem('uwui:balance-preference')\n return stored ? stored === 'available' : false\n })\n\n // Determine the data-theme attribute for the portal\n // Only set explicit themes, let 'system' use media query fallback\n const dataTheme = theme === 'system' ? undefined : theme\n\n // NFD for the active address\n const nfdQuery = useNfd({ enabled: !!activeAddress })\n const nfdName = nfdQuery.data?.name ?? null\n\n // Get account info for balance display\n const { data: accountInfo } = useAccountInfo({ enabled: !!activeAddress })\n\n // Calculate full and available balance\n const totalBalance = React.useMemo(() => {\n if (!accountInfo || accountInfo.amount === undefined) {\n return null\n }\n return Number(accountInfo.amount) / 1_000_000\n }, [accountInfo])\n\n const availableBalance = React.useMemo(() => {\n if (\n !accountInfo ||\n accountInfo.amount === undefined ||\n accountInfo.minBalance === undefined\n ) {\n return null\n }\n const available =\n Number(accountInfo.amount) - Number(accountInfo.minBalance)\n return Math.max(0, available / 1_000_000)\n }, [accountInfo])\n\n // Use appropriate balance based on toggle state\n const displayBalance = showAvailableBalance ? availableBalance : totalBalance\n\n const { refs, floatingStyles, context } = useFloating({\n open: isOpen,\n onOpenChange: (open) => {\n setIsOpen(open)\n if (!open) setActivePanel(null)\n },\n placement: 'bottom-end',\n middleware: [offset(8), flip(), shift()],\n whileElementsMounted: autoUpdate,\n })\n\n const click = useClick(context)\n const dismiss = useDismiss(context, { outsidePressEvent: 'mousedown' })\n const { getReferenceProps, getFloatingProps } = useInteractions([\n click,\n dismiss,\n ])\n\n const labelId = useId()\n\n const handleCopyAddress = () => {\n if (activeAddress) {\n navigator.clipboard.writeText(activeAddress)\n setIsCopied(true)\n setTimeout(() => setIsCopied(false), 2000)\n }\n }\n\n const handleDisconnect = async () => {\n if (activeWallet) {\n try {\n await activeWallet.disconnect()\n setIsOpen(false)\n } catch (error) {\n console.error('Error disconnecting wallet:', error)\n }\n }\n }\n\n const handleAccountChange = (accountAddress: string) => {\n if (activeWallet && activeWallet.setActiveAccount) {\n activeWallet.setActiveAccount(accountAddress)\n }\n }\n\n const toggleBalanceView = () => {\n const newValue = !showAvailableBalance\n setShowAvailableBalance(newValue)\n // Store the preference in localStorage\n localStorage.setItem(\n 'uwui:balance-preference',\n newValue ? 'available' : 'total',\n )\n }\n\n // Build plugin render context with real closeMenu and dialog control\n const pluginCtx = React.useMemo<MenuRenderContext>(\n () => ({\n activeAddress,\n activeWallet,\n theme,\n resolvedTheme,\n closeMenu: () => setIsOpen(false),\n openDialog,\n closeDialog,\n setActivePanel,\n activePanel,\n }),\n [\n activeAddress,\n activeWallet,\n theme,\n resolvedTheme,\n openDialog,\n closeDialog,\n activePanel,\n ],\n )\n\n // Filter panels by enabled state\n const enabledPanels = React.useMemo(\n () => panels.filter((p) => !p.enabled || p.enabled(pluginCtx)),\n [panels, pluginCtx],\n )\n\n // Find the currently active panel definition\n const currentPanel = activePanel\n ? panels.find((p) => p.key === activePanel)\n : null\n\n // If no children are provided, create the default connected button\n const triggerElement = children || <ConnectedWalletButton />\n\n // Clone the trigger element with the reference props\n const trigger = React.cloneElement(\n triggerElement,\n getReferenceProps({ ref: refs.setReference }),\n )\n\n return (\n <>\n {trigger}\n {isOpen && (\n <FloatingPortal>\n <FloatingFocusManager context={context} modal={false}>\n <div data-wallet-theme data-wallet-ui data-theme={dataTheme}>\n <div\n ref={refs.setFloating}\n style={floatingStyles}\n {...getFloatingProps()}\n role=\"menu\"\n aria-labelledby={labelId}\n className=\"z-50 w-80 rounded-xl bg-[var(--wui-color-bg)] shadow-xl border border-[var(--wui-color-border)]\"\n >\n <div className=\"p-4\">\n {currentPanel ? (\n /* Panel view */\n <>\n <div className=\"flex items-center gap-2 mb-3\">\n <button\n onClick={() => setActivePanel(null)}\n className=\"p-1 rounded-md hover:bg-[var(--wui-color-bg-secondary)] transition-colors text-[var(--wui-color-text-secondary)]\"\n aria-label=\"Back to menu\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m15 18-6-6 6-6\" />\n </svg>\n </button>\n <h3 className=\"text-sm font-medium text-[var(--wui-color-text)]\">\n {currentPanel.label}\n </h3>\n </div>\n {currentPanel.render({\n ctx: pluginCtx,\n goBack: () => setActivePanel(null),\n })}\n </>\n ) : (\n /* Main menu view */\n <>\n <div className=\"flex items-center gap-3 mb-4\">\n <div className=\"h-12 w-12 overflow-hidden\">\n <NfdAvatar\n nfd={nfdQuery.data}\n alt={`${nfdName || activeAddress} avatar`}\n size={48}\n />\n </div>\n <div>\n <h3\n id={labelId}\n className=\"text-lg font-bold text-[var(--wui-color-text)] max-w-[220px] truncate wallet-custom-font\"\n >\n {nfdName ||\n (activeAddress\n ? formatShortAddress(activeAddress, 6, 4)\n : 'My Wallet')}\n </h3>\n {nfdName && activeAddress && (\n <p className=\"text-sm text-[var(--wui-color-text-secondary)]\">\n {formatShortAddress(activeAddress, 6, 4)}\n </p>\n )}\n </div>\n </div>\n\n {/* Balance display with toggle */}\n <div className=\"mb-4 bg-[var(--wui-color-bg-secondary)] rounded-lg p-3\">\n <div className=\"flex justify-between items-center\">\n {displayBalance !== null && (\n <span className=\"text-base font-medium text-[var(--wui-color-text)] flex items-center gap-1\">\n {formatNumber(displayBalance, {\n fractionDigits: 4,\n })}\n <AlgoSymbol />\n </span>\n )}\n <button\n onClick={toggleBalanceView}\n className=\"flex items-center gap-1 text-sm text-[var(--wui-color-text-secondary)] bg-[var(--wui-color-bg-tertiary)] py-1 pl-2.5 pr-2 rounded-md hover:brightness-90 transition-all focus:outline-none\"\n title={\n showAvailableBalance\n ? 'Show total balance'\n : 'Show available balance'\n }\n >\n {showAvailableBalance ? 'Available' : 'Total'}\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"10\"\n height=\"10\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"ml-0.5 opacity-80\"\n >\n <path d=\"m17 10-5-5-5 5\" />\n <path d=\"m17 14-5 5-5-5\" />\n </svg>\n </button>\n </div>\n </div>\n\n <PluginSlot slot=\"after-balance\" ctx={pluginCtx} />\n\n {/* Account selector (when multiple accounts available) */}\n {activeWallet &&\n activeWallet.accounts &&\n activeWallet.accounts.length > 1 && (\n <div className=\"mb-4\">\n <Listbox\n value={activeAddress || ''}\n onChange={handleAccountChange}\n >\n <Label className=\"block text-sm font-medium text-[var(--wui-color-text-secondary)] mb-1\">\n Select Account\n </Label>\n <div className=\"relative mt-1\">\n <ListboxButton className=\"grid w-full cursor-default grid-cols-1 rounded-lg border border-[var(--wui-color-border)] bg-[var(--wui-color-bg-secondary)] py-2 px-3 text-left text-[var(--wui-color-text)] shadow-sm focus:outline-none focus:ring-2 focus:ring-[var(--wui-color-primary)] focus:border-transparent text-sm\">\n <span className=\"col-start-1 row-start-1 truncate pr-8\">\n {activeAddress\n ? formatShortAddress(activeAddress, 6, 4)\n : 'Select account'}\n </span>\n <span className=\"col-start-1 row-start-1 self-center justify-self-end\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n className=\"text-[var(--wui-color-text-secondary)]\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M4 6L8 10L12 6\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </span>\n </ListboxButton>\n <ListboxOptions\n transition\n className=\"absolute z-10 mt-1 max-h-60 w-full overflow-auto rounded-md bg-[var(--wui-color-bg-secondary)] py-1 shadow-lg ring-1 ring-black/5 focus:outline-none text-sm data-[closed]:data-[leave]:opacity-0 data-[leave]:transition data-[leave]:duration-100 data-[leave]:ease-in\"\n >\n {activeWallet.accounts.map((account) => (\n <ListboxOption\n key={account.address}\n value={account.address}\n className=\"group relative cursor-default select-none py-2 pl-3 pr-9 text-[var(--wui-color-text)] data-[focus]:bg-[var(--wui-color-bg-hover)] data-[focus]:outline-none\"\n >\n <span className=\"block truncate font-normal group-data-[selected]:font-medium\">\n {formatShortAddress(\n account.address,\n 6,\n 4,\n )}\n </span>\n <span className=\"absolute inset-y-0 right-0 flex items-center pr-3 text-[var(--wui-color-primary)] group-[&:not([data-selected])]:hidden\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n className=\"h-5 w-5\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M13.3334 4L6.00008 11.3333L2.66675 8\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </span>\n </ListboxOption>\n ))}\n </ListboxOptions>\n </div>\n </Listbox>\n </div>\n )}\n\n <PluginSlot slot=\"after-accounts\" ctx={pluginCtx} />\n\n {/* Divider */}\n <div className=\"border-t border-[var(--wui-color-border)] mt-2 mb-2\" />\n\n {/* Wallet info section */}\n {activeWallet && (\n <div className=\"mb-2 flex items-center gap-2 px-1 py-0.5\">\n <div className=\"h-5 w-5 overflow-hidden rounded flex items-center justify-center\">\n {activeWallet.metadata.icon ? (\n <img\n src={activeWallet.metadata.icon}\n alt={`${activeWallet.metadata.name} icon`}\n className=\"max-w-full max-h-full\"\n />\n ) : (\n <div className=\"h-5 w-5 rounded-full bg-[var(--wui-color-bg-tertiary)] flex items-center justify-center\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"h-3 w-3 text-[var(--wui-color-text-tertiary)]\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M17 9c0-.55-.45-1-1-1h-4c-.55 0-1 .45-1 1v8c0 .55.45 1 1 1h4c.55 0 1-.45 1-1V9zm-1 0v8h-4V9h4zM8 4c0-.55-.45-1-1-1H3c-.55 0-1 .45-1 1v13c0 .55.45 1 1 1h4c.55 0 1-.45 1-1V4zM3 3h4v14H3V3z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </div>\n )}\n </div>\n <p className=\"text-sm text-[var(--wui-color-text-secondary)]\">\n {activeWallet.metadata.name}\n </p>\n </div>\n )}\n\n <PluginSlot slot=\"after-wallet-info\" ctx={pluginCtx} />\n\n <PluginSlot slot=\"before-actions\" ctx={pluginCtx} />\n\n {/* Plugin panel triggers */}\n {enabledPanels.length > 0 && (\n <div className=\"flex flex-col gap-1 mb-2\">\n {enabledPanels.map((panel) => (\n <button\n key={panel.key}\n onClick={() => setActivePanel(panel.key)}\n className=\"w-full flex items-center justify-between py-2 px-2 rounded-lg text-sm text-[var(--wui-color-text)] hover:bg-[var(--wui-color-bg-secondary)] transition-colors\"\n >\n <span className=\"flex items-center gap-2\">\n {panel.icon && (\n <panel.icon className=\"h-4 w-4 text-[var(--wui-color-text-secondary)]\" />\n )}\n {panel.label}\n </span>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"text-[var(--wui-color-text-tertiary)]\"\n >\n <path d=\"m9 18 6-6-6-6\" />\n </svg>\n </button>\n ))}\n </div>\n )}\n\n {/* Divider */}\n <div className=\"border-t border-[var(--wui-color-border)] mb-3 mt-2\" />\n\n {/* Action buttons */}\n <div className=\"flex gap-2\">\n {/* Copy Address Button */}\n <button\n onClick={handleCopyAddress}\n className=\"flex-1 py-2 px-4 bg-[var(--wui-color-bg-tertiary)] text-[var(--wui-color-text-secondary)] font-medium rounded-xl hover:brightness-90 transition-all text-sm flex items-center justify-center\"\n title=\"Copy address\"\n >\n {isCopied ? (\n <>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"h-4 w-4 text-green-500 mr-1.5\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\"\n clipRule=\"evenodd\"\n />\n </svg>\n Copied\n </>\n ) : (\n <>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"h-4 w-4 mr-1.5\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path d=\"M8 3a1 1 0 011-1h2a1 1 0 110 2H9a1 1 0 01-1-1z\" />\n <path d=\"M6 3a2 2 0 00-2 2v11a2 2 0 002 2h8a2 2 0 002-2V5a2 2 0 00-2-2 3 3 0 01-3 3H9a3 3 0 01-3-3z\" />\n </svg>\n Copy\n </>\n )}\n </button>\n\n <PluginSlot slot=\"actions\" ctx={pluginCtx} />\n\n {/* Disconnect Button */}\n <button\n onClick={handleDisconnect}\n className=\"flex-1 py-2 px-4 bg-[var(--wui-color-danger-bg)] text-[var(--wui-color-danger-text)] font-medium rounded-xl hover:bg-[var(--wui-color-danger-bg-hover)] transition-colors text-sm\"\n >\n Disconnect\n </button>\n </div>\n </>\n )}\n </div>\n </div>\n </div>\n </FloatingFocusManager>\n </FloatingPortal>\n )}\n </>\n )\n}\n\n// Need to provide the QueryClientProvider here because FloatingPortal breaks context inheritance\nexport function ConnectedWalletMenu(props: ConnectedWalletMenuProps) {\n const { queryClient } = useWalletUI()\n\n return (\n <QueryClientProvider client={queryClient}>\n <ConnectedWalletMenuContent {...props} />\n </QueryClientProvider>\n )\n}\n","import { useWallet } from '@txnlab/use-wallet-react'\nimport React from 'react'\n\nimport { ConnectedWalletButton } from './ConnectedWalletButton'\nimport { ConnectedWalletMenu } from './ConnectedWalletMenu'\nimport { type ButtonSize, ConnectWalletButton } from './ConnectWalletButton'\nimport { ConnectWalletMenu } from './ConnectWalletMenu'\n\nexport interface WalletButtonProps {\n /** Size variant for the button */\n size?: ButtonSize\n /** Additional CSS classes to apply to the button */\n className?: string\n /** Inline styles to apply to the button (can include CSS variable overrides) */\n style?: React.CSSProperties\n}\n\nexport function WalletButton({ size, className, style }: WalletButtonProps) {\n const { activeAddress } = useWallet()\n\n // If connected, show the connected wallet menu\n if (activeAddress) {\n return (\n <ConnectedWalletMenu>\n <ConnectedWalletButton size={size} className={className} style={style} />\n </ConnectedWalletMenu>\n )\n }\n\n // If not connected, show the ConnectWalletMenu with customized button\n return (\n <ConnectWalletMenu>\n <ConnectWalletButton size={size} className={className} style={style} />\n </ConnectWalletMenu>\n )\n}\n","import { initializeFonts } from './utils/fontLoader'\n\nexport { ConnectWalletButton } from './components/ConnectWalletButton'\nexport type { ButtonSize } from './components/ConnectWalletButton'\nexport { ConnectWalletMenu } from './components/ConnectWalletMenu'\nexport { ConnectedWalletButton } from './components/ConnectedWalletButton'\nexport { ConnectedWalletMenu } from './components/ConnectedWalletMenu'\nexport { WalletButton } from './components/WalletButton'\nexport { WalletList } from './components/WalletList'\nexport { NfdAvatar } from './components/NfdAvatar'\n\n// Hooks\nexport { useNfd } from './hooks/useNfd'\nexport type { NfdRecord, NfdLookupResponse } from './hooks/useNfd'\nexport { useAccountInfo } from './hooks/useAccountInfo'\nexport { useResolvedTheme } from './hooks/useResolvedTheme'\nexport type { Theme, ResolvedTheme } from './hooks/useResolvedTheme'\n\n// Providers\nexport { WalletUIProvider, useWalletUI } from './providers/WalletUIProvider'\n\n// Plugin system\nexport { usePlugins } from './plugins/PluginContext'\nexport type {\n MenuRenderContext,\n MenuSlot,\n PluginDialog,\n PluginLifecycleHooks,\n PluginMenuItem,\n PluginPanel,\n PluginRenderContext,\n WalletUIPlugin,\n} from './plugins/types'\n\n// Initialize custom fonts\ninitializeFonts()\n"],"names":["injectFonts","performFontInjection","style","fontUrl","_documentCurrentScript","urlError","error","initializeFonts","r","f","clsx","concatArrays","array1","array2","combinedArray","i","createClassValidatorObject","classGroupId","validator","createClassPartObject","nextPart","validators","CLASS_PART_SEPARATOR","EMPTY_CONFLICTS","ARBITRARY_PROPERTY_PREFIX","createClassGroupUtils","config","classMap","createClassMap","conflictingClassGroups","conflictingClassGroupModifiers","className","getGroupIdForArbitraryProperty","classParts","startIndex","getGroupRecursive","hasPostfixModifier","modifierConflicts","baseConflicts","classPartObject","currentClassPart","nextClassPartObject","result","classRest","validatorsLength","validatorObj","content","colonIndex","property","theme","classGroups","processClassGroups","group","processClassesRecursively","classGroup","len","classDefinition","processClassDefinition","processStringDefinition","processFunctionDefinition","processObjectDefinition","classPartObjectToEdit","getPart","isThemeGetter","entries","key","value","path","current","parts","part","next","func","createLruCache","maxCacheSize","cacheSize","cache","previousCache","update","IMPORTANT_MODIFIER","MODIFIER_SEPARATOR","EMPTY_MODIFIERS","createResultObject","modifiers","hasImportantModifier","baseClassName","maybePostfixModifierPosition","isExternal","createParseClassName","prefix","experimentalParseClassName","parseClassName","bracketDepth","parenDepth","modifierStart","postfixModifierPosition","index","currentCharacter","baseClassNameWithImportantModifier","fullPrefix","parseClassNameOriginal","createSortModifiers","modifierWeights","mod","currentSegment","modifier","isArbitrary","isOrderSensitive","createConfigUtils","SPLIT_CLASSES_REGEX","mergeClassList","classList","configUtils","getClassGroupId","getConflictingClassGroupIds","sortModifiers","classGroupsInConflict","classNames","originalClassName","variantModifier","modifierId","classId","conflictGroups","twJoin","classLists","argument","resolvedValue","string","toValue","mix","k","createTailwindMerge","createConfigFirst","createConfigRest","cacheGet","cacheSet","functionToCall","initTailwindMerge","previousConfig","createConfigCurrent","tailwindMerge","cachedResult","args","fallbackThemeArr","fromTheme","themeGetter","arbitraryValueRegex","arbitraryVariableRegex","fractionRegex","tshirtUnitRegex","lengthUnitRegex","colorFunctionRegex","shadowRegex","imageRegex","isFraction","isNumber","isInteger","isPercent","isTshirtSize","isAny","isLengthOnly","isNever","isShadow","isImage","isAnyNonArbitrary","isArbitraryValue","isArbitraryVariable","isArbitrarySize","getIsArbitraryValue","isLabelSize","isArbitraryLength","isLabelLength","isArbitraryNumber","isLabelNumber","isArbitraryWeight","isLabelWeight","isArbitraryFamilyName","isLabelFamilyName","isArbitraryPosition","isLabelPosition","isArbitraryImage","isLabelImage","isArbitraryShadow","isLabelShadow","isArbitraryVariableLength","getIsArbitraryVariable","isArbitraryVariableFamilyName","isArbitraryVariablePosition","isArbitraryVariableSize","isArbitraryVariableImage","isArbitraryVariableShadow","isArbitraryVariableWeight","testLabel","testValue","shouldMatchNoLabel","label","getDefaultConfig","themeColor","themeFont","themeText","themeFontWeight","themeTracking","themeLeading","themeBreakpoint","themeContainer","themeSpacing","themeRadius","themeShadow","themeInsetShadow","themeTextShadow","themeDropShadow","themeBlur","themePerspective","themeAspect","themeEase","themeAnimate","scaleBreak","scalePosition","scalePositionWithArbitrary","scaleOverflow","scaleOverscroll","scaleUnambiguousSpacing","scaleInset","scaleGridTemplateColsRows","scaleGridColRowStartAndEnd","scaleGridColRowStartOrEnd","scaleGridAutoColsRows","scaleAlignPrimaryAxis","scaleAlignSecondaryAxis","scaleMargin","scaleSizing","scaleSizingInline","scaleSizingBlock","scaleColor","scaleBgPosition","scaleBgRepeat","scaleBgSize","scaleGradientStopPosition","scaleRadius","scaleBorderWidth","scaleLineStyle","scaleBlendMode","scaleMaskImagePosition","scaleBlur","scaleRotate","scaleScale","scaleSkew","scaleTranslate","twMerge","cn","inputs","sizeClasses","ConnectWalletButton","React","children","size","props","ref","jsx","Subscribable","listener","defaultTimeoutProvider","callback","delay","timeoutId","intervalId","TimeoutManager","_a","__privateAdd","_provider","_providerCalled","provider","__privateGet","__privateSet","timeoutManager","systemSetTimeoutZero","isServer","noop","functionalUpdate","updater","input","isValidTimeout","timeUntilStale","updatedAt","staleTime","resolveStaleTime","query","resolveEnabled","enabled","matchQuery","filters","type","exact","fetchStatus","predicate","queryKey","stale","hashQueryKeyByOptions","partialMatchKey","isActive","matchMutation","mutation","status","mutationKey","hashKey","options","_","val","isPlainObject","a","b","hasOwn","replaceEqualDeep","depth","array","isPlainArray","aSize","bItems","bSize","copy","equalItems","aItem","bItem","v","shallowEqualObjects","o","hasObjectPrototype","ctor","prot","sleep","timeout","resolve","replaceData","prevData","data","addToEnd","items","item","max","newItems","addToStart","skipToken","ensureQueryFn","fetchOptions","shouldThrowError","throwOnError","params","addConsumeAwareSignal","object","getSignal","onCancelled","consumed","signal","FocusManager","_focused","_cleanup","_setup","onFocus","setup","focused","isFocused","focusManager","pendingThenable","reject","thenable","_resolve","_reject","finalize","reason","defaultScheduler","createNotifyManager","queue","transactions","notifyFn","batchNotifyFn","scheduleFn","schedule","flush","originalQueue","fn","notifyManager","OnlineManager","_online","onOnline","onlineListener","offlineListener","online","onlineManager","defaultRetryDelay","failureCount","canFetch","networkMode","CancelledError","createRetryer","isRetryCancelled","continueFn","isResolved","cancel","cancelOptions","cancelRetry","continueRetry","canContinue","canStart","pause","continueResolve","run","promiseOrValue","initialPromise","retry","retryDelay","shouldRetry","Removable","_gcTimeout","newGcTime","Query","_Query_instances","_initialState","_revertState","_cache","_client","_retryer","_defaultOptions","_abortSignalConsumed","getDefaultState","defaultState","successState","newData","__privateMethod","dispatch_fn","state","setStateOptions","promise","_b","observer","x","abortController","addSignalProperty","fetchFn","queryFn","queryFnContext","queryFnContext2","context","context2","_c","_d","_f","_e","_h","_g","_j","_i","_l","_k","action","reducer","fetchState","newState","dataUpdatedAt","hasData","initialDataUpdatedAt","QueryObserver","client","_QueryObserver_instances","_currentQuery","_currentQueryInitialState","_currentResult","_currentResultState","_currentResultOptions","_currentThenable","_selectError","_selectFn","_selectResult","_lastQueryWithDefinedData","_staleTimeoutId","_refetchIntervalId","_currentRefetchInterval","_trackedProps","shouldFetchOnMount","executeFetch_fn","updateTimers_fn","shouldFetchOn","clearStaleTimeout_fn","clearRefetchInterval_fn","prevOptions","prevQuery","updateQuery_fn","mounted","shouldFetchOptionally","updateStaleTimeout_fn","nextRefetchInterval","computeRefetchInterval_fn","updateRefetchInterval_fn","shouldAssignObserverCurrentProperties","onPropTracked","target","defaultedOptions","prevResult","prevResultState","prevResultOptions","queryInitialState","isPlaceholderData","fetchOnMount","fetchOptionally","errorUpdatedAt","skipSelect","placeholderData","selectError","isFetching","isPending","isError","isLoading","nextResult","isStale","hasResultData","isErrorWithoutData","finalizeThenableIfPossible","recreateThenable","pending","prevThenable","shouldNotifyListeners","notifyOnChangeProps","notifyOnChangePropsValue","includedProps","typedKey","notify_fn","nextInterval","notifyOptions","shouldLoadOnMount","field","optimisticResult","infiniteQueryBehavior","pages","direction","oldPages","oldPageParams","currentPage","cancelled","fetchPage","param","previous","page","maxPages","addTo","pageParamFn","getPreviousPageParam","getNextPageParam","oldData","remainingPages","pageParams","lastIndex","Mutation","_Mutation_instances","_observers","_mutationCache","variables","onContinue","mutationFnContext","restored","isPaused","e","_n","_m","_p","_o","_r","_q","MutationCache","_mutations","_scopes","_mutationId","__privateWrapper","scope","scopeFor","scopedMutations","mutationsWithSameScope","firstPendingMutation","m","foundMutation","defaultedFilters","event","pausedMutations","QueryCache","_queries","queryHash","queryInMap","queries","QueryClient","_queryCache","_queryDefaults","_mutationDefaults","_mountCount","_unsubscribeFocus","_unsubscribeOnline","cachedData","queryCache","defaultedCancelOptions","promises","defaults","queryDefault","QueryClientContext","useQueryClient","queryClient","QueryClientProvider","IsRestoringContext","useIsRestoring","createValue","isReset","QueryErrorResetBoundaryContext","useQueryErrorResetBoundary","ensurePreventErrorBoundaryRetry","errorResetBoundary","useClearResetErrorBoundary","getHasError","suspense","ensureSuspenseTimers","clamp","originalStaleTime","willFetch","isRestoring","shouldSuspend","fetchOptimistic","useBaseQuery","Observer","isNewCacheEntry","shouldSubscribe","onStoreChange","unsubscribe","useQuery","useResolvedTheme","systemTheme","setSystemTheme","useState","useEffect","mediaQuery","handler","ALL_SLOTS","EMPTY_MENU_ITEMS","EMPTY_RENDER_CONTEXT","EMPTY_CONTEXT","PluginContext","createContext","usePlugins","ctx","useContext","PluginProviderComposer","plugins","acc","plugin","useStablePlugins","stableRef","useRef","prevIds","p","nextIds","PluginContextProvider","rawPlugins","renderContext","useMemo","pluginIds","menuKeys","dialogKeys","panelKeys","dialog","panel","openDialogs","setOpenDialogs","openDialog","useCallback","prev","closeDialog","menuItemsBySlot","slot","dialogs","panels","enrichedContext","contextValue","PluginDialogRenderer","useWalletUI","dataTheme","Fragment","isOpen","FloatingPortal","safeInvoke","err","PluginLifecycleManager","prevAddressRef","prevWalletIdRef","prevAddress","prevWalletId","currentWalletId","THEME_STYLES_ID","lightThemeVars","darkThemeVars","injectThemeStyles","styleElement","createDefaultQueryClient","WalletUIContext","WalletAccountsPrefetcher","nfdView","activeAddress","activeWallet","algodClient","useWallet","activeNetwork","useNetwork","prevActiveAddressRef","shouldPrefetch","addresses","account","addressBatches","batch","apiEndpoint","queryParams","address","response","responseData","nfdData","accountInfo","WalletUIProvider","externalQueryClient","enablePrefetching","prefetchNfdView","resolvedTheme","jsxs","PluginHost","baseRenderContext","WalletList","wallets","handleWalletClick","wallet","ConnectWalletMenu","setIsOpen","animationState","setAnimationState","refs","useFloating","open","click","useClick","dismiss","useDismiss","role","useRole","getReferenceProps","getFloatingProps","useInteractions","labelId","useId","descriptionId","handleTriggerClick","triggerElement","triggerRef","useMergeRefs","referenceProps","trigger","FloatingOverlay","FloatingFocusManager","de","H","F","ge","X","E","pe","me","ee","G","Ie","w","g","U","d","I","A","M","T","R","y","j","Y","te","fe","t","c","n","u","s","l","S","q","we","h","N","C","O","Q","z","P","ne","ue","ae","J","re","V","L","B","W","ce","oe","ie","le","K","se","Ae","Ne","Ee","De","useNfd","view","IPFS_GATEWAY_URL","checkIpfsAvailability","url","cid","nfdUrl","gatewayUrl","isImageContentType","contentType","imageUrl","imageCid","imageGatewayUrl","imageResponse","imageContentType","NfdAvatar","nfd","alt","fallback","lightOnly","rawAvatarUrl","imgAlt","avatarUrl","avatarSizes","avatarContainerClasses","chevronSizes","ConnectedWalletButton","nfdQuery","nfdName","formatShortAddress","$f0a04ccd8dbdd83b$export$e5c5a5f917a5871c","$HgANd$react","$8ae05eaa5c114e9c$export$7f54fc3180508a52","$lmaYr$useRef","$lmaYr$useCallback","$431fbd86ca7dc216$export$b204af158042fbac","el","_el_ownerDocument","$431fbd86ca7dc216$export$f21a1ffae260145a","$431fbd86ca7dc216$var$isNode","$431fbd86ca7dc216$export$af51f0f06c0f328a","node","$f4e2df6bd15f8569$var$_shadowDOM","$f4e2df6bd15f8569$export$98658e8c59125e6a","$d4ee10de306f2510$export$4282f70798064fe0","otherNode","$lcSu5$shadowDOM","currentNode","$d4ee10de306f2510$export$cd4e5573fbe2b576","doc","_activeElement_shadowRoot","activeElement","$d4ee10de306f2510$export$e58f029f0fbfdb29","$c87311424ea30a05$var$testUserAgent","_window_navigator_userAgentData","brand","$c87311424ea30a05$var$testPlatform","$c87311424ea30a05$var$cached","res","$c87311424ea30a05$export$9ac100e40613ea10","$c87311424ea30a05$export$186c6964ca17d99","$c87311424ea30a05$export$7bef049ce92e4224","$c87311424ea30a05$export$fedb369cb70207f1","$c87311424ea30a05$export$6446a186d09e379e","$c87311424ea30a05$export$a11b0059900ceec8","$03deb23ff14920c4$export$4eaf04e54aa8eed6","globalListeners","$lPAwt$useRef","addGlobalListener","$lPAwt$useCallback","eventTarget","removeGlobalListener","_globalListeners_current_get","removeAllGlobalListeners","$lPAwt$useEffect","$6a7db85432448f7f$export$60278871457622de","$8a9cb279dc87e130$export$525bc4921d56d4a","nativeEvent","$8a9cb279dc87e130$export$c2b7abe5d61ec696","$8a9cb279dc87e130$export$715c682d09d639cc","onBlur","stateRef","$6dfIe$useRef","$6dfIe$useLayoutEffect","dispatchBlur","$6dfIe$useEffectEvent","$6dfIe$useCallback","onBlurHandler","_stateRef_current_observer","relatedTargetEl","$8a9cb279dc87e130$export$fda7da73ab5d4c48","$507fabe10e71c6fb$var$currentModality","$507fabe10e71c6fb$var$changeHandlers","$507fabe10e71c6fb$export$d90243b58daecda7","$507fabe10e71c6fb$var$hasEventBeforeFocus","$507fabe10e71c6fb$var$hasBlurredWindowRecently","$507fabe10e71c6fb$var$FOCUS_VISIBLE_INPUT_KEYS","$507fabe10e71c6fb$var$triggerChangeHandlers","modality","$507fabe10e71c6fb$var$isValidKey","$28AnR$isMac","$507fabe10e71c6fb$var$handleKeyboardEvent","$507fabe10e71c6fb$var$handlePointerEvent","$507fabe10e71c6fb$var$handleClickEvent","$28AnR$isVirtualClick","$507fabe10e71c6fb$var$handleFocusEvent","$507fabe10e71c6fb$var$handleWindowBlur","$507fabe10e71c6fb$var$setupGlobalFocusEvents","element","$28AnR$getOwnerWindow","windowObject","documentObject","$28AnR$getOwnerDocument","focus","$507fabe10e71c6fb$var$tearDownWindowFocusTracking","loadListener","$507fabe10e71c6fb$export$2f1888112f558a7d","$507fabe10e71c6fb$export$b9b3dfddab17db27","$507fabe10e71c6fb$var$nonTextInputTypes","$507fabe10e71c6fb$var$isKeyboardFocusEvent","isTextInput","document1","IHTMLInputElement","IHTMLTextAreaElement","IHTMLElement","IKeyboardEvent","$507fabe10e71c6fb$export$ec71b4b83ac08ec3","deps","opts","$28AnR$useEffect","$a1ea59d68270f0dd$export$f8168d8dd8fd66e6","isDisabled","onFocusProp","onBlurProp","onFocusChange","$hf0lj$useCallback","onSyntheticFocus","ownerDocument","$hf0lj$getOwnerDocument","$hf0lj$getActiveElement","$hf0lj$getEventTarget","$9ab94262bd0047c7$export$420e68273165f4ec","onBlurWithin","onFocusWithin","onFocusWithinChange","$3b9Q0$useRef","$3b9Q0$useGlobalListeners","$3b9Q0$useCallback","$3b9Q0$getOwnerDocument","$3b9Q0$getActiveElement","$3b9Q0$getEventTarget","currentTarget","$3b9Q0$nodeContains","$6179b936705e76d3$var$globalIgnoreEmulatedMouseEvents","$6179b936705e76d3$var$hoverCount","$6179b936705e76d3$var$setGlobalIgnoreEmulatedMouseEvents","$6179b936705e76d3$var$handleGlobalPointerEvent","$6179b936705e76d3$var$setupGlobalTouchEvents","$6179b936705e76d3$export$ae780daf29e6d456","onHoverStart","onHoverChange","onHoverEnd","isHovered","setHovered","$AWxnT$useState","$AWxnT$useRef","$AWxnT$useEffect","$AWxnT$useGlobalListeners","hoverProps","triggerHoverEnd","$AWxnT$useMemo","triggerHoverStart","pointerType","$AWxnT$getOwnerDocument","$AWxnT$nodeContains","$f7dceffc5ad7768b$export$4e328f61c538687f","autoFocus","within","$isWE5$useRef","$isWE5$isFocusVisible","setFocused","$isWE5$useState","isFocusVisibleState","setFocusVisible","updateState","$isWE5$useCallback","$isWE5$useFocusVisibleListener","isFocusVisible","focusProps","$isWE5$useFocus","focusWithinProps","$isWE5$useFocusWithin","o$8","$","D","n.isHTMLFieldSetElement","n.isHTMLLegendElement","m.isInteractiveElement","m.isHTMLLabelElement","m.isHTMLInputElement","Z","T$3","o$2","require$$0","is","objectIs","useSyncExternalStore","useDebugValue","useSyncExternalStoreWithSelector_production","subscribe","getSnapshot","getServerSnapshot","selector","isEqual","instRef","inst","memoizedSelector","nextSnapshot","hasMemo","memoizedSnapshot","currentSelection","memoizedSelection","nextSelection","maybeGetServerSnapshot","useSyncExternalStoreWithSelector_development","withSelectorModule","require$$1","c.isHTMLElement","d.isHTMLorSVGElement","d.isHTMLIframeElement","E.isNode","E.isHTMLorSVGElement","i.isHTMLorSVGElement","i.hasInlineStyle","i.isHTMLInputElement","getUserAgent","uaData","_ref","version","SafeReact","useInsertionEffect","useSafeInsertionEffect","useEffectEvent","_len","_key","useLayoutEffect","serverHandoffComplete","count","genId","useFloatingId","id","setId","useReactId","devMessageSet","warn","_devMessageSet","messages","message","_devMessageSet2","_devMessageSet3","_len2","_key2","_devMessageSet4","createPubSub","map","_map$get","_map$get2","FloatingNodeContext","FloatingTreeContext","useFloatingParentNodeId","_React$useContext","useFloatingTree","FOCUSABLE_ATTRIBUTE","useFloatingRootContext","onOpenChangeProp","elementsProp","floatingId","dataRef","events","nested","optionDomReference","isElement","positionReference","setPositionReference","onOpenChange","elements","nodeId","internalRootContext","rootContext","computedElements","_domReference","setDomReference","_setPositionReference","domReference","domReferenceRef","tree","position","useFloating$1","computedPositionReference","setReference","ACTIVE_KEY","SELECTED_KEY","mergeProps","userProps","propsList","elementKey","isItem","domUserProps","__","validProps","propsOrGetProps","referenceDeps","floatingDeps","itemDeps","getItemProps","getArgsWithCustomFloatingHeight","height","inner","listRef","overflowRef","onFallbackChange","innerOffset","minItemsVisible","referenceOverflowThreshold","scrollRef","detectOverflowOptions","evaluate","rects","floating","scrollEl","clientTop","floatingIsBordered","scrollElIsBordered","floatingIsScrollEl","nextArgs","offset","overflow","detectOverflow","refOverflow","diffY","nextY","maxHeight","round","shouldFallback","min","ReactDOM","useInnerOffset","unstable_onChange","onChange","controlledScrollingRef","prevScrollTopRef","initialOverflowRef","onWheel","dY","isAtTop","isAtBottom","remainingScroll","sign","method","scrollDiff","ye","Fe","be","Te","Re","pe.isHTMLElement","g.isHTMLElement","Pt","gt","je","Ce","Lt","lt","xt","ut","st","mt","Je","Ot","nt","et","vt","Et","ot","qe","Ye","He","it.isHTMLElement","dt","Be","bt","ft","he","xe","Ge","Oe","ht","At","_t","Ze","Se","rt","Xe","Ue","Ve","tt","ve","Qe","$e","Me","ct","pt","Le","We","Pe","yt","St","Dt","Ke","ke","at","ze","Rt","Ft","Ct","Mt","wt","Tt","Bt","It","kt","Mo","useAccountInfo","PluginSlot","AlgoSymbol","scale","ConnectedWalletMenuContent","activePanel","setActivePanel","isCopied","setIsCopied","showAvailableBalance","setShowAvailableBalance","stored","totalBalance","availableBalance","available","displayBalance","floatingStyles","flip","shift","autoUpdate","handleCopyAddress","handleDisconnect","handleAccountChange","accountAddress","toggleBalanceView","newValue","pluginCtx","enabledPanels","currentPanel","formatNumber","Listbox","Label","ListboxButton","ListboxOptions","ListboxOption","ConnectedWalletMenu","WalletButton"],"mappings":"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","x_google_ignoreList":[1,2,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,35,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127]}
1
+ {"version":3,"file":"index.cjs","sources":["../../src/utils/fontLoader.ts","../../../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs","../../../../node_modules/.pnpm/tailwind-merge@3.6.0/node_modules/tailwind-merge/dist/bundle-mjs.mjs","../../src/utils/cn.ts","../../src/components/ConnectWalletButton.tsx","../../../../node_modules/.pnpm/@tanstack+query-core@5.100.10/node_modules/@tanstack/query-core/build/modern/subscribable.js","../../../../node_modules/.pnpm/@tanstack+query-core@5.100.10/node_modules/@tanstack/query-core/build/modern/focusManager.js","../../../../node_modules/.pnpm/@tanstack+query-core@5.100.10/node_modules/@tanstack/query-core/build/modern/timeoutManager.js","../../../../node_modules/.pnpm/@tanstack+query-core@5.100.10/node_modules/@tanstack/query-core/build/modern/utils.js","../../../../node_modules/.pnpm/@tanstack+query-core@5.100.10/node_modules/@tanstack/query-core/build/modern/environmentManager.js","../../../../node_modules/.pnpm/@tanstack+query-core@5.100.10/node_modules/@tanstack/query-core/build/modern/thenable.js","../../../../node_modules/.pnpm/@tanstack+query-core@5.100.10/node_modules/@tanstack/query-core/build/modern/notifyManager.js","../../../../node_modules/.pnpm/@tanstack+query-core@5.100.10/node_modules/@tanstack/query-core/build/modern/onlineManager.js","../../../../node_modules/.pnpm/@tanstack+query-core@5.100.10/node_modules/@tanstack/query-core/build/modern/retryer.js","../../../../node_modules/.pnpm/@tanstack+query-core@5.100.10/node_modules/@tanstack/query-core/build/modern/removable.js","../../../../node_modules/.pnpm/@tanstack+query-core@5.100.10/node_modules/@tanstack/query-core/build/modern/infiniteQueryBehavior.js","../../../../node_modules/.pnpm/@tanstack+query-core@5.100.10/node_modules/@tanstack/query-core/build/modern/query.js","../../../../node_modules/.pnpm/@tanstack+query-core@5.100.10/node_modules/@tanstack/query-core/build/modern/queryObserver.js","../../../../node_modules/.pnpm/@tanstack+query-core@5.100.10/node_modules/@tanstack/query-core/build/modern/mutation.js","../../../../node_modules/.pnpm/@tanstack+query-core@5.100.10/node_modules/@tanstack/query-core/build/modern/mutationCache.js","../../../../node_modules/.pnpm/@tanstack+query-core@5.100.10/node_modules/@tanstack/query-core/build/modern/queryCache.js","../../../../node_modules/.pnpm/@tanstack+query-core@5.100.10/node_modules/@tanstack/query-core/build/modern/queryClient.js","../../../../node_modules/.pnpm/@tanstack+react-query@5.100.10_react@19.2.6/node_modules/@tanstack/react-query/build/modern/QueryClientProvider.js","../../../../node_modules/.pnpm/@tanstack+react-query@5.100.10_react@19.2.6/node_modules/@tanstack/react-query/build/modern/IsRestoringProvider.js","../../../../node_modules/.pnpm/@tanstack+react-query@5.100.10_react@19.2.6/node_modules/@tanstack/react-query/build/modern/QueryErrorResetBoundary.js","../../../../node_modules/.pnpm/@tanstack+react-query@5.100.10_react@19.2.6/node_modules/@tanstack/react-query/build/modern/errorBoundaryUtils.js","../../../../node_modules/.pnpm/@tanstack+react-query@5.100.10_react@19.2.6/node_modules/@tanstack/react-query/build/modern/suspense.js","../../../../node_modules/.pnpm/@tanstack+react-query@5.100.10_react@19.2.6/node_modules/@tanstack/react-query/build/modern/useBaseQuery.js","../../../../node_modules/.pnpm/@tanstack+react-query@5.100.10_react@19.2.6/node_modules/@tanstack/react-query/build/modern/useQuery.js","../../src/hooks/useResolvedTheme.ts","../../src/plugins/PluginContext.tsx","../../src/plugins/PluginDialogRenderer.tsx","../../src/plugins/PluginLifecycleManager.tsx","../../src/providers/WalletUIProvider.tsx","../../src/components/WalletList.tsx","../../src/components/ConnectWalletMenu.tsx","../../../../node_modules/.pnpm/@txnlab+utils-ts@0.1.0/node_modules/@txnlab/utils-ts/dist/esm/index.js","../../src/hooks/useNfd.ts","../../src/utils/ipfs.ts","../../src/components/NfdAvatar.tsx","../../src/components/ConnectedWalletButton.tsx","../../../../node_modules/.pnpm/@react-aria+utils@3.29.1_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@react-aria/utils/dist/useLayoutEffect.mjs","../../../../node_modules/.pnpm/@react-aria+utils@3.29.1_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@react-aria/utils/dist/useEffectEvent.mjs","../../../../node_modules/.pnpm/@react-aria+utils@3.29.1_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@react-aria/utils/dist/domHelpers.mjs","../../../../node_modules/.pnpm/@react-stately+flags@3.1.2/node_modules/@react-stately/flags/dist/import.mjs","../../../../node_modules/.pnpm/@react-aria+utils@3.29.1_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@react-aria/utils/dist/DOMFunctions.mjs","../../../../node_modules/.pnpm/@react-aria+utils@3.29.1_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@react-aria/utils/dist/platform.mjs","../../../../node_modules/.pnpm/@react-aria+utils@3.29.1_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@react-aria/utils/dist/useGlobalListeners.mjs","../../../../node_modules/.pnpm/@react-aria+utils@3.29.1_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@react-aria/utils/dist/isVirtualEvent.mjs","../../../../node_modules/.pnpm/@react-aria+interactions@3.25.3_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@react-aria/interactions/dist/utils.mjs","../../../../node_modules/.pnpm/@react-aria+interactions@3.25.3_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@react-aria/interactions/dist/useFocusVisible.mjs","../../../../node_modules/.pnpm/@react-aria+interactions@3.25.3_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@react-aria/interactions/dist/useFocus.mjs","../../../../node_modules/.pnpm/@react-aria+interactions@3.25.3_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@react-aria/interactions/dist/useFocusWithin.mjs","../../../../node_modules/.pnpm/@react-aria+interactions@3.25.3_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@react-aria/interactions/dist/useHover.mjs","../../../../node_modules/.pnpm/@react-aria+focus@3.20.5_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@react-aria/focus/dist/useFocusRing.mjs","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/utils/env.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/utils/owner.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/utils/micro-task.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/utils/disposables.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/hooks/use-disposables.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/hooks/use-iso-morphic-effect.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/hooks/use-latest-value.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/hooks/use-event.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/hooks/use-active-press.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/hooks/use-slot.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/internal/disabled.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/utils/class-names.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/utils/match.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/utils/render.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/hooks/use-controllable.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/hooks/use-default-value.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/utils/form.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/internal/hidden.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/internal/form-fields.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/internal/id.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/utils/dom.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/utils/bugs.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/hooks/use-sync-refs.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/components/description/description.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/components/keyboard.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/components/label/label.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/hooks/use-by-comparator.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/hooks/use-element-size.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/components/mouse.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/hooks/use-handle-toggle.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/utils/default-map.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/machine.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/machines/stack-machine.js","../../../../node_modules/.pnpm/use-sync-external-store@1.6.0_react@19.2.6/node_modules/use-sync-external-store/cjs/use-sync-external-store-with-selector.production.js","../../../../node_modules/.pnpm/use-sync-external-store@1.6.0_react@19.2.6/node_modules/use-sync-external-store/cjs/use-sync-external-store-with-selector.development.js","../../../../node_modules/.pnpm/use-sync-external-store@1.6.0_react@19.2.6/node_modules/use-sync-external-store/with-selector.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/react-glue.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/hooks/use-is-top-layer.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/hooks/use-inert-others.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/hooks/use-on-disappear.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/utils/focus-management.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/utils/platform.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/hooks/use-document-event.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/hooks/use-window-event.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/hooks/use-outside-click.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/hooks/use-owner.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/hooks/use-quick-release.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/hooks/use-resolve-button-type.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/hooks/use-store.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/utils/store.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/hooks/document-overflow/adjust-scrollbar-padding.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/hooks/document-overflow/handle-ios-locking.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/hooks/document-overflow/prevent-scroll.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/hooks/document-overflow/overflow-store.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/hooks/document-overflow/use-document-overflow.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/hooks/use-scroll-lock.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/hooks/use-tracked-pointer.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/hooks/use-flags.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/hooks/use-transition.js","../../../../node_modules/.pnpm/@floating-ui+react@0.26.28_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@floating-ui/react/dist/floating-ui.react.utils.mjs","../../../../node_modules/.pnpm/@floating-ui+react@0.26.28_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@floating-ui/react/dist/floating-ui.react.mjs","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/internal/floating.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/internal/frozen.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/internal/open-closed.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/utils/calculate-active-index.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/hooks/use-on-unmount.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/hooks/use-server-handoff-complete.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/internal/portal-force-root.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/components/portal/portal.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/utils/element-movement.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/utils/get-text-value.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/hooks/use-text-value.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/components/listbox/listbox-machine.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/components/listbox/listbox-machine-glue.js","../../../../node_modules/.pnpm/@headlessui+react@2.2.10_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@headlessui/react/dist/components/listbox/listbox.js","../../src/hooks/useAccountInfo.ts","../../src/plugins/PluginSlot.tsx","../../src/components/AlgoSymbol.tsx","../../src/components/ConnectedWalletMenu.tsx","../../src/components/WalletButton.tsx","../../src/index.ts"],"sourcesContent":["/**\n * Initiates font injection process with SSR safety mechanisms.\n * Defers actual injection to ensure compatibility with various rendering environments.\n * @private\n */\nconst injectFonts = (): void => {\n if (typeof window === 'undefined' || typeof document === 'undefined') {\n return\n }\n\n if (typeof window.requestAnimationFrame === 'function') {\n window.requestAnimationFrame(() => {\n performFontInjection()\n })\n } else {\n setTimeout(performFontInjection, 0)\n }\n}\n\n/**\n * Handles the actual font injection process.\n * Creates a style element with font-face declarations and appends it to document head.\n * Includes fallback mechanisms for various failure scenarios.\n * @private\n */\nconst performFontInjection = (): void => {\n try {\n const existingStyle = document.getElementById('wallet-ui-fonts')\n if (existingStyle) return\n\n const style = document.createElement('style')\n style.id = 'wallet-ui-fonts'\n\n let fontUrl = ''\n try {\n fontUrl = new URL(\n '../fonts/Aeonik-Bold.woff2',\n import.meta.url,\n ).toString()\n } catch (urlError) {\n console.warn(\n 'Could not resolve font URL. Using fallback styling.',\n urlError,\n )\n }\n\n style.textContent = `\n @font-face {\n font-family: 'Aeonik';\n src: url('${fontUrl}') format('woff2');\n font-weight: 700;\n font-style: normal;\n font-display: swap;\n }\n \n .wallet-custom-font {\n font-family: 'Aeonik', system-ui, sans-serif !important;\n }\n `\n // Insert at the START of <head> so consumer styles can override if needed\n document.head.insertBefore(style, document.head.firstChild)\n console.log('Wallet UI fonts loaded')\n } catch (error) {\n console.warn(\n 'Failed to load custom fonts, using system fonts instead',\n error,\n )\n }\n}\n\n/**\n * Initializes font loading for the UI components.\n * Safe to use in any environment (SSR, CSR, Next.js, etc).\n * Will automatically inject the Aeonik font for components using the 'wallet-custom-font' class.\n * Falls back gracefully to system fonts if loading fails.\n */\nexport const initializeFonts = (): void => {\n if (typeof window !== 'undefined') {\n injectFonts()\n }\n}\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","/**\n * Concatenates two arrays faster than the array spread operator.\n */\nconst concatArrays = (array1, array2) => {\n // Pre-allocate for better V8 optimization\n const combinedArray = new Array(array1.length + array2.length);\n for (let i = 0; i < array1.length; i++) {\n combinedArray[i] = array1[i];\n }\n for (let i = 0; i < array2.length; i++) {\n combinedArray[array1.length + i] = array2[i];\n }\n return combinedArray;\n};\n\n// Factory function ensures consistent object shapes\nconst createClassValidatorObject = (classGroupId, validator) => ({\n classGroupId,\n validator\n});\n// Factory ensures consistent ClassPartObject shape\nconst createClassPartObject = (nextPart = new Map(), validators = null, classGroupId) => ({\n nextPart,\n validators,\n classGroupId\n});\nconst CLASS_PART_SEPARATOR = '-';\nconst EMPTY_CONFLICTS = [];\n// I use two dots here because one dot is used as prefix for class groups in plugins\nconst ARBITRARY_PROPERTY_PREFIX = 'arbitrary..';\nconst createClassGroupUtils = config => {\n const classMap = createClassMap(config);\n const {\n conflictingClassGroups,\n conflictingClassGroupModifiers\n } = config;\n const getClassGroupId = className => {\n if (className.startsWith('[') && className.endsWith(']')) {\n return getGroupIdForArbitraryProperty(className);\n }\n const classParts = className.split(CLASS_PART_SEPARATOR);\n // Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and skip it.\n const startIndex = classParts[0] === '' && classParts.length > 1 ? 1 : 0;\n return getGroupRecursive(classParts, startIndex, classMap);\n };\n const getConflictingClassGroupIds = (classGroupId, hasPostfixModifier) => {\n if (hasPostfixModifier) {\n const modifierConflicts = conflictingClassGroupModifiers[classGroupId];\n const baseConflicts = conflictingClassGroups[classGroupId];\n if (modifierConflicts) {\n if (baseConflicts) {\n // Merge base conflicts with modifier conflicts\n return concatArrays(baseConflicts, modifierConflicts);\n }\n // Only modifier conflicts\n return modifierConflicts;\n }\n // Fall back to without postfix if no modifier conflicts\n return baseConflicts || EMPTY_CONFLICTS;\n }\n return conflictingClassGroups[classGroupId] || EMPTY_CONFLICTS;\n };\n return {\n getClassGroupId,\n getConflictingClassGroupIds\n };\n};\nconst getGroupRecursive = (classParts, startIndex, classPartObject) => {\n const classPathsLength = classParts.length - startIndex;\n if (classPathsLength === 0) {\n return classPartObject.classGroupId;\n }\n const currentClassPart = classParts[startIndex];\n const nextClassPartObject = classPartObject.nextPart.get(currentClassPart);\n if (nextClassPartObject) {\n const result = getGroupRecursive(classParts, startIndex + 1, nextClassPartObject);\n if (result) return result;\n }\n const validators = classPartObject.validators;\n if (validators === null) {\n return undefined;\n }\n // Build classRest string efficiently by joining from startIndex onwards\n const classRest = startIndex === 0 ? classParts.join(CLASS_PART_SEPARATOR) : classParts.slice(startIndex).join(CLASS_PART_SEPARATOR);\n const validatorsLength = validators.length;\n for (let i = 0; i < validatorsLength; i++) {\n const validatorObj = validators[i];\n if (validatorObj.validator(classRest)) {\n return validatorObj.classGroupId;\n }\n }\n return undefined;\n};\n/**\n * Get the class group ID for an arbitrary property.\n *\n * @param className - The class name to get the group ID for. Is expected to be string starting with `[` and ending with `]`.\n */\nconst getGroupIdForArbitraryProperty = className => className.slice(1, -1).indexOf(':') === -1 ? undefined : (() => {\n const content = className.slice(1, -1);\n const colonIndex = content.indexOf(':');\n const property = content.slice(0, colonIndex);\n return property ? ARBITRARY_PROPERTY_PREFIX + property : undefined;\n})();\n/**\n * Exported for testing only\n */\nconst createClassMap = config => {\n const {\n theme,\n classGroups\n } = config;\n return processClassGroups(classGroups, theme);\n};\n// Split into separate functions to maintain monomorphic call sites\nconst processClassGroups = (classGroups, theme) => {\n const classMap = createClassPartObject();\n for (const classGroupId in classGroups) {\n const group = classGroups[classGroupId];\n processClassesRecursively(group, classMap, classGroupId, theme);\n }\n return classMap;\n};\nconst processClassesRecursively = (classGroup, classPartObject, classGroupId, theme) => {\n const len = classGroup.length;\n for (let i = 0; i < len; i++) {\n const classDefinition = classGroup[i];\n processClassDefinition(classDefinition, classPartObject, classGroupId, theme);\n }\n};\n// Split into separate functions for each type to maintain monomorphic call sites\nconst processClassDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n if (typeof classDefinition === 'string') {\n processStringDefinition(classDefinition, classPartObject, classGroupId);\n return;\n }\n if (typeof classDefinition === 'function') {\n processFunctionDefinition(classDefinition, classPartObject, classGroupId, theme);\n return;\n }\n processObjectDefinition(classDefinition, classPartObject, classGroupId, theme);\n};\nconst processStringDefinition = (classDefinition, classPartObject, classGroupId) => {\n const classPartObjectToEdit = classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition);\n classPartObjectToEdit.classGroupId = classGroupId;\n};\nconst processFunctionDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n if (isThemeGetter(classDefinition)) {\n processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);\n return;\n }\n if (classPartObject.validators === null) {\n classPartObject.validators = [];\n }\n classPartObject.validators.push(createClassValidatorObject(classGroupId, classDefinition));\n};\nconst processObjectDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n const entries = Object.entries(classDefinition);\n const len = entries.length;\n for (let i = 0; i < len; i++) {\n const [key, value] = entries[i];\n processClassesRecursively(value, getPart(classPartObject, key), classGroupId, theme);\n }\n};\nconst getPart = (classPartObject, path) => {\n let current = classPartObject;\n const parts = path.split(CLASS_PART_SEPARATOR);\n const len = parts.length;\n for (let i = 0; i < len; i++) {\n const part = parts[i];\n let next = current.nextPart.get(part);\n if (!next) {\n next = createClassPartObject();\n current.nextPart.set(part, next);\n }\n current = next;\n }\n return current;\n};\n// Type guard maintains monomorphic check\nconst isThemeGetter = func => 'isThemeGetter' in func && func.isThemeGetter === true;\n\n// LRU cache implementation using plain objects for simplicity\nconst createLruCache = maxCacheSize => {\n if (maxCacheSize < 1) {\n return {\n get: () => undefined,\n set: () => {}\n };\n }\n let cacheSize = 0;\n let cache = Object.create(null);\n let previousCache = Object.create(null);\n const update = (key, value) => {\n cache[key] = value;\n cacheSize++;\n if (cacheSize > maxCacheSize) {\n cacheSize = 0;\n previousCache = cache;\n cache = Object.create(null);\n }\n };\n return {\n get(key) {\n let value = cache[key];\n if (value !== undefined) {\n return value;\n }\n if ((value = previousCache[key]) !== undefined) {\n update(key, value);\n return value;\n }\n },\n set(key, value) {\n if (key in cache) {\n cache[key] = value;\n } else {\n update(key, value);\n }\n }\n };\n};\nconst IMPORTANT_MODIFIER = '!';\nconst MODIFIER_SEPARATOR = ':';\nconst EMPTY_MODIFIERS = [];\n// Pre-allocated result object shape for consistency\nconst createResultObject = (modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition, isExternal) => ({\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition,\n isExternal\n});\nconst createParseClassName = config => {\n const {\n prefix,\n experimentalParseClassName\n } = config;\n /**\n * Parse class name into parts.\n *\n * Inspired by `splitAtTopLevelOnly` used in Tailwind CSS\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js\n */\n let parseClassName = className => {\n // Use simple array with push for better performance\n const modifiers = [];\n let bracketDepth = 0;\n let parenDepth = 0;\n let modifierStart = 0;\n let postfixModifierPosition;\n const len = className.length;\n for (let index = 0; index < len; index++) {\n const currentCharacter = className[index];\n if (bracketDepth === 0 && parenDepth === 0) {\n if (currentCharacter === MODIFIER_SEPARATOR) {\n modifiers.push(className.slice(modifierStart, index));\n modifierStart = index + 1;\n continue;\n }\n if (currentCharacter === '/') {\n postfixModifierPosition = index;\n continue;\n }\n }\n if (currentCharacter === '[') bracketDepth++;else if (currentCharacter === ']') bracketDepth--;else if (currentCharacter === '(') parenDepth++;else if (currentCharacter === ')') parenDepth--;\n }\n const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.slice(modifierStart);\n // Inline important modifier check\n let baseClassName = baseClassNameWithImportantModifier;\n let hasImportantModifier = false;\n if (baseClassNameWithImportantModifier.endsWith(IMPORTANT_MODIFIER)) {\n baseClassName = baseClassNameWithImportantModifier.slice(0, -1);\n hasImportantModifier = true;\n } else if (\n /**\n * In Tailwind CSS v3 the important modifier was at the start of the base class name. This is still supported for legacy reasons.\n * @see https://github.com/dcastil/tailwind-merge/issues/513#issuecomment-2614029864\n */\n baseClassNameWithImportantModifier.startsWith(IMPORTANT_MODIFIER)) {\n baseClassName = baseClassNameWithImportantModifier.slice(1);\n hasImportantModifier = true;\n }\n const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : undefined;\n return createResultObject(modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition);\n };\n if (prefix) {\n const fullPrefix = prefix + MODIFIER_SEPARATOR;\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => className.startsWith(fullPrefix) ? parseClassNameOriginal(className.slice(fullPrefix.length)) : createResultObject(EMPTY_MODIFIERS, false, className, undefined, true);\n }\n if (experimentalParseClassName) {\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => experimentalParseClassName({\n className,\n parseClassName: parseClassNameOriginal\n });\n }\n return parseClassName;\n};\n\n/**\n * Sorts modifiers according to following schema:\n * - Predefined modifiers are sorted alphabetically\n * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it\n */\nconst createSortModifiers = config => {\n // Pre-compute weights for all known modifiers for O(1) comparison\n const modifierWeights = new Map();\n // Assign weights to sensitive modifiers (highest priority, but preserve order)\n config.orderSensitiveModifiers.forEach((mod, index) => {\n modifierWeights.set(mod, 1000000 + index); // High weights for sensitive mods\n });\n return modifiers => {\n const result = [];\n let currentSegment = [];\n // Process modifiers in one pass\n for (let i = 0; i < modifiers.length; i++) {\n const modifier = modifiers[i];\n // Check if modifier is sensitive (starts with '[' or in orderSensitiveModifiers)\n const isArbitrary = modifier[0] === '[';\n const isOrderSensitive = modifierWeights.has(modifier);\n if (isArbitrary || isOrderSensitive) {\n // Sort and flush current segment alphabetically\n if (currentSegment.length > 0) {\n currentSegment.sort();\n result.push(...currentSegment);\n currentSegment = [];\n }\n result.push(modifier);\n } else {\n // Regular modifier - add to current segment for batch sorting\n currentSegment.push(modifier);\n }\n }\n // Sort and add any remaining segment items\n if (currentSegment.length > 0) {\n currentSegment.sort();\n result.push(...currentSegment);\n }\n return result;\n };\n};\nconst createConfigUtils = config => ({\n cache: createLruCache(config.cacheSize),\n parseClassName: createParseClassName(config),\n sortModifiers: createSortModifiers(config),\n postfixLookupClassGroupIds: createPostfixLookupClassGroupIds(config),\n ...createClassGroupUtils(config)\n});\nconst createPostfixLookupClassGroupIds = config => {\n const lookup = Object.create(null);\n const classGroupIds = config.postfixLookupClassGroups;\n if (classGroupIds) {\n for (let i = 0; i < classGroupIds.length; i++) {\n lookup[classGroupIds[i]] = true;\n }\n }\n return lookup;\n};\nconst SPLIT_CLASSES_REGEX = /\\s+/;\nconst mergeClassList = (classList, configUtils) => {\n const {\n parseClassName,\n getClassGroupId,\n getConflictingClassGroupIds,\n sortModifiers,\n postfixLookupClassGroupIds\n } = configUtils;\n /**\n * Set of classGroupIds in following format:\n * `{importantModifier}{variantModifiers}{classGroupId}`\n * @example 'float'\n * @example 'hover:focus:bg-color'\n * @example 'md:!pr'\n */\n const classGroupsInConflict = [];\n const classNames = classList.trim().split(SPLIT_CLASSES_REGEX);\n let result = '';\n for (let index = classNames.length - 1; index >= 0; index -= 1) {\n const originalClassName = classNames[index];\n const {\n isExternal,\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition\n } = parseClassName(originalClassName);\n if (isExternal) {\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n let hasPostfixModifier = !!maybePostfixModifierPosition;\n let classGroupId;\n if (hasPostfixModifier) {\n const baseClassNameWithoutPostfix = baseClassName.substring(0, maybePostfixModifierPosition);\n classGroupId = getClassGroupId(baseClassNameWithoutPostfix);\n const classGroupIdWithPostfix = classGroupId && postfixLookupClassGroupIds[classGroupId] ? getClassGroupId(baseClassName) : undefined;\n if (classGroupIdWithPostfix && classGroupIdWithPostfix !== classGroupId) {\n classGroupId = classGroupIdWithPostfix;\n hasPostfixModifier = false;\n }\n } else {\n classGroupId = getClassGroupId(baseClassName);\n }\n if (!classGroupId) {\n if (!hasPostfixModifier) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n classGroupId = getClassGroupId(baseClassName);\n if (!classGroupId) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n hasPostfixModifier = false;\n }\n // Fast path: skip sorting for empty or single modifier\n const variantModifier = modifiers.length === 0 ? '' : modifiers.length === 1 ? modifiers[0] : sortModifiers(modifiers).join(':');\n const modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier;\n const classId = modifierId + classGroupId;\n if (classGroupsInConflict.indexOf(classId) > -1) {\n // Tailwind class omitted due to conflict\n continue;\n }\n classGroupsInConflict.push(classId);\n const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier);\n for (let i = 0; i < conflictGroups.length; ++i) {\n const group = conflictGroups[i];\n classGroupsInConflict.push(modifierId + group);\n }\n // Tailwind class not in conflict\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n }\n return result;\n};\n\n/**\n * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.\n *\n * Specifically:\n * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js\n * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts\n *\n * Original code has MIT license: Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n */\nconst twJoin = (...classLists) => {\n let index = 0;\n let argument;\n let resolvedValue;\n let string = '';\n while (index < classLists.length) {\n if (argument = classLists[index++]) {\n if (resolvedValue = toValue(argument)) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n};\nconst toValue = mix => {\n // Fast path for strings\n if (typeof mix === 'string') {\n return mix;\n }\n let resolvedValue;\n let string = '';\n for (let k = 0; k < mix.length; k++) {\n if (mix[k]) {\n if (resolvedValue = toValue(mix[k])) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n};\nconst createTailwindMerge = (createConfigFirst, ...createConfigRest) => {\n let configUtils;\n let cacheGet;\n let cacheSet;\n let functionToCall;\n const initTailwindMerge = classList => {\n const config = createConfigRest.reduce((previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig), createConfigFirst());\n configUtils = createConfigUtils(config);\n cacheGet = configUtils.cache.get;\n cacheSet = configUtils.cache.set;\n functionToCall = tailwindMerge;\n return tailwindMerge(classList);\n };\n const tailwindMerge = classList => {\n const cachedResult = cacheGet(classList);\n if (cachedResult) {\n return cachedResult;\n }\n const result = mergeClassList(classList, configUtils);\n cacheSet(classList, result);\n return result;\n };\n functionToCall = initTailwindMerge;\n return (...args) => functionToCall(twJoin(...args));\n};\nconst fallbackThemeArr = [];\nconst fromTheme = key => {\n const themeGetter = theme => theme[key] || fallbackThemeArr;\n themeGetter.isThemeGetter = true;\n return themeGetter;\n};\nconst arbitraryValueRegex = /^\\[(?:(\\w[\\w-]*):)?(.+)\\]$/i;\nconst arbitraryVariableRegex = /^\\((?:(\\w[\\w-]*):)?(.+)\\)$/i;\nconst fractionRegex = /^\\d+(?:\\.\\d+)?\\/\\d+(?:\\.\\d+)?$/;\nconst tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/;\nconst lengthUnitRegex = /\\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\\b(calc|min|max|clamp)\\(.+\\)|^0$/;\nconst colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\\(.+\\)$/;\n// Shadow always begins with x and y offset separated by underscore optionally prepended by inset\nconst shadowRegex = /^(inset_)?-?((\\d+)?\\.?(\\d+)[a-z]+|0)_-?((\\d+)?\\.?(\\d+)[a-z]+|0)/;\nconst imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\\(.+\\)$/;\nconst isFraction = value => fractionRegex.test(value);\nconst isNumber = value => !!value && !Number.isNaN(Number(value));\nconst isInteger = value => !!value && Number.isInteger(Number(value));\nconst isPercent = value => value.endsWith('%') && isNumber(value.slice(0, -1));\nconst isTshirtSize = value => tshirtUnitRegex.test(value);\nconst isAny = () => true;\nconst isLengthOnly = value =>\n// `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.\n// For example, `hsl(0 0% 0%)` would be classified as a length without this check.\n// I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.\nlengthUnitRegex.test(value) && !colorFunctionRegex.test(value);\nconst isNever = () => false;\nconst isShadow = value => shadowRegex.test(value);\nconst isImage = value => imageRegex.test(value);\nconst isAnyNonArbitrary = value => !isArbitraryValue(value) && !isArbitraryVariable(value);\nconst isNamedContainerQuery = value => value.startsWith('@container') && (value[10] === '/' && value[11] !== undefined || value[11] === 's' && value[16] !== undefined && value.startsWith('-size/', 10) || value[11] === 'n' && value[18] !== undefined && value.startsWith('-normal/', 10));\nconst isArbitrarySize = value => getIsArbitraryValue(value, isLabelSize, isNever);\nconst isArbitraryValue = value => arbitraryValueRegex.test(value);\nconst isArbitraryLength = value => getIsArbitraryValue(value, isLabelLength, isLengthOnly);\nconst isArbitraryNumber = value => getIsArbitraryValue(value, isLabelNumber, isNumber);\nconst isArbitraryWeight = value => getIsArbitraryValue(value, isLabelWeight, isAny);\nconst isArbitraryFamilyName = value => getIsArbitraryValue(value, isLabelFamilyName, isNever);\nconst isArbitraryPosition = value => getIsArbitraryValue(value, isLabelPosition, isNever);\nconst isArbitraryImage = value => getIsArbitraryValue(value, isLabelImage, isImage);\nconst isArbitraryShadow = value => getIsArbitraryValue(value, isLabelShadow, isShadow);\nconst isArbitraryVariable = value => arbitraryVariableRegex.test(value);\nconst isArbitraryVariableLength = value => getIsArbitraryVariable(value, isLabelLength);\nconst isArbitraryVariableFamilyName = value => getIsArbitraryVariable(value, isLabelFamilyName);\nconst isArbitraryVariablePosition = value => getIsArbitraryVariable(value, isLabelPosition);\nconst isArbitraryVariableSize = value => getIsArbitraryVariable(value, isLabelSize);\nconst isArbitraryVariableImage = value => getIsArbitraryVariable(value, isLabelImage);\nconst isArbitraryVariableShadow = value => getIsArbitraryVariable(value, isLabelShadow, true);\nconst isArbitraryVariableWeight = value => getIsArbitraryVariable(value, isLabelWeight, true);\n// Helpers\nconst getIsArbitraryValue = (value, testLabel, testValue) => {\n const result = arbitraryValueRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return testValue(result[2]);\n }\n return false;\n};\nconst getIsArbitraryVariable = (value, testLabel, shouldMatchNoLabel = false) => {\n const result = arbitraryVariableRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return shouldMatchNoLabel;\n }\n return false;\n};\n// Labels\nconst isLabelPosition = label => label === 'position' || label === 'percentage';\nconst isLabelImage = label => label === 'image' || label === 'url';\nconst isLabelSize = label => label === 'length' || label === 'size' || label === 'bg-size';\nconst isLabelLength = label => label === 'length';\nconst isLabelNumber = label => label === 'number';\nconst isLabelFamilyName = label => label === 'family-name';\nconst isLabelWeight = label => label === 'number' || label === 'weight';\nconst isLabelShadow = label => label === 'shadow';\nconst validators = /*#__PURE__*/Object.defineProperty({\n __proto__: null,\n isAny,\n isAnyNonArbitrary,\n isArbitraryFamilyName,\n isArbitraryImage,\n isArbitraryLength,\n isArbitraryNumber,\n isArbitraryPosition,\n isArbitraryShadow,\n isArbitrarySize,\n isArbitraryValue,\n isArbitraryVariable,\n isArbitraryVariableFamilyName,\n isArbitraryVariableImage,\n isArbitraryVariableLength,\n isArbitraryVariablePosition,\n isArbitraryVariableShadow,\n isArbitraryVariableSize,\n isArbitraryVariableWeight,\n isArbitraryWeight,\n isFraction,\n isInteger,\n isNamedContainerQuery,\n isNumber,\n isPercent,\n isTshirtSize\n}, Symbol.toStringTag, {\n value: 'Module'\n});\nconst getDefaultConfig = () => {\n /**\n * Theme getters for theme variable namespaces\n * @see https://tailwindcss.com/docs/theme#theme-variable-namespaces\n */\n /***/\n const themeColor = fromTheme('color');\n const themeFont = fromTheme('font');\n const themeText = fromTheme('text');\n const themeFontWeight = fromTheme('font-weight');\n const themeTracking = fromTheme('tracking');\n const themeLeading = fromTheme('leading');\n const themeBreakpoint = fromTheme('breakpoint');\n const themeContainer = fromTheme('container');\n const themeSpacing = fromTheme('spacing');\n const themeRadius = fromTheme('radius');\n const themeShadow = fromTheme('shadow');\n const themeInsetShadow = fromTheme('inset-shadow');\n const themeTextShadow = fromTheme('text-shadow');\n const themeDropShadow = fromTheme('drop-shadow');\n const themeBlur = fromTheme('blur');\n const themePerspective = fromTheme('perspective');\n const themeAspect = fromTheme('aspect');\n const themeEase = fromTheme('ease');\n const themeAnimate = fromTheme('animate');\n /**\n * Helpers to avoid repeating the same scales\n *\n * We use functions that create a new array every time they're called instead of static arrays.\n * This ensures that users who modify any scale by mutating the array (e.g. with `array.push(element)`) don't accidentally mutate arrays in other parts of the config.\n */\n /***/\n const scaleBreak = () => ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'];\n const scalePosition = () => ['center', 'top', 'bottom', 'left', 'right', 'top-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-top', 'top-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-top', 'bottom-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-bottom', 'bottom-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-bottom'];\n const scalePositionWithArbitrary = () => [...scalePosition(), isArbitraryVariable, isArbitraryValue];\n const scaleOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'];\n const scaleOverscroll = () => ['auto', 'contain', 'none'];\n const scaleUnambiguousSpacing = () => [isArbitraryVariable, isArbitraryValue, themeSpacing];\n const scaleInset = () => [isFraction, 'full', 'auto', ...scaleUnambiguousSpacing()];\n const scaleGridTemplateColsRows = () => [isInteger, 'none', 'subgrid', isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartAndEnd = () => ['auto', {\n span: ['full', isInteger, isArbitraryVariable, isArbitraryValue]\n }, isInteger, isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartOrEnd = () => [isInteger, 'auto', isArbitraryVariable, isArbitraryValue];\n const scaleGridAutoColsRows = () => ['auto', 'min', 'max', 'fr', isArbitraryVariable, isArbitraryValue];\n const scaleAlignPrimaryAxis = () => ['start', 'end', 'center', 'between', 'around', 'evenly', 'stretch', 'baseline', 'center-safe', 'end-safe'];\n const scaleAlignSecondaryAxis = () => ['start', 'end', 'center', 'stretch', 'center-safe', 'end-safe'];\n const scaleMargin = () => ['auto', ...scaleUnambiguousSpacing()];\n const scaleSizing = () => [isFraction, 'auto', 'full', 'dvw', 'dvh', 'lvw', 'lvh', 'svw', 'svh', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];\n const scaleSizingInline = () => [isFraction, 'screen', 'full', 'dvw', 'lvw', 'svw', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];\n const scaleSizingBlock = () => [isFraction, 'screen', 'full', 'lh', 'dvh', 'lvh', 'svh', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];\n const scaleColor = () => [themeColor, isArbitraryVariable, isArbitraryValue];\n const scaleBgPosition = () => [...scalePosition(), isArbitraryVariablePosition, isArbitraryPosition, {\n position: [isArbitraryVariable, isArbitraryValue]\n }];\n const scaleBgRepeat = () => ['no-repeat', {\n repeat: ['', 'x', 'y', 'space', 'round']\n }];\n const scaleBgSize = () => ['auto', 'cover', 'contain', isArbitraryVariableSize, isArbitrarySize, {\n size: [isArbitraryVariable, isArbitraryValue]\n }];\n const scaleGradientStopPosition = () => [isPercent, isArbitraryVariableLength, isArbitraryLength];\n const scaleRadius = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', 'full', themeRadius, isArbitraryVariable, isArbitraryValue];\n const scaleBorderWidth = () => ['', isNumber, isArbitraryVariableLength, isArbitraryLength];\n const scaleLineStyle = () => ['solid', 'dashed', 'dotted', 'double'];\n const scaleBlendMode = () => ['normal', 'multiply', 'screen', 'overlay', 'darken', 'lighten', 'color-dodge', 'color-burn', 'hard-light', 'soft-light', 'difference', 'exclusion', 'hue', 'saturation', 'color', 'luminosity'];\n const scaleMaskImagePosition = () => [isNumber, isPercent, isArbitraryVariablePosition, isArbitraryPosition];\n const scaleBlur = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeBlur, isArbitraryVariable, isArbitraryValue];\n const scaleRotate = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleScale = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleSkew = () => [isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleTranslate = () => [isFraction, 'full', ...scaleUnambiguousSpacing()];\n return {\n cacheSize: 500,\n theme: {\n animate: ['spin', 'ping', 'pulse', 'bounce'],\n aspect: ['video'],\n blur: [isTshirtSize],\n breakpoint: [isTshirtSize],\n color: [isAny],\n container: [isTshirtSize],\n 'drop-shadow': [isTshirtSize],\n ease: ['in', 'out', 'in-out'],\n font: [isAnyNonArbitrary],\n 'font-weight': ['thin', 'extralight', 'light', 'normal', 'medium', 'semibold', 'bold', 'extrabold', 'black'],\n 'inset-shadow': [isTshirtSize],\n leading: ['none', 'tight', 'snug', 'normal', 'relaxed', 'loose'],\n perspective: ['dramatic', 'near', 'normal', 'midrange', 'distant', 'none'],\n radius: [isTshirtSize],\n shadow: [isTshirtSize],\n spacing: ['px', isNumber],\n text: [isTshirtSize],\n 'text-shadow': [isTshirtSize],\n tracking: ['tighter', 'tight', 'normal', 'wide', 'wider', 'widest']\n },\n classGroups: {\n // --------------\n // --- Layout ---\n // --------------\n /**\n * Aspect Ratio\n * @see https://tailwindcss.com/docs/aspect-ratio\n */\n aspect: [{\n aspect: ['auto', 'square', isFraction, isArbitraryValue, isArbitraryVariable, themeAspect]\n }],\n /**\n * Container\n * @see https://tailwindcss.com/docs/container\n * @deprecated since Tailwind CSS v4.0.0\n */\n container: ['container'],\n /**\n * Container Type\n * @see https://tailwindcss.com/docs/responsive-design#container-queries\n */\n 'container-type': [{\n '@container': ['', 'normal', 'size', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Container Name\n * @see https://tailwindcss.com/docs/responsive-design#named-containers\n */\n 'container-named': [isNamedContainerQuery],\n /**\n * Columns\n * @see https://tailwindcss.com/docs/columns\n */\n columns: [{\n columns: [isNumber, isArbitraryValue, isArbitraryVariable, themeContainer]\n }],\n /**\n * Break After\n * @see https://tailwindcss.com/docs/break-after\n */\n 'break-after': [{\n 'break-after': scaleBreak()\n }],\n /**\n * Break Before\n * @see https://tailwindcss.com/docs/break-before\n */\n 'break-before': [{\n 'break-before': scaleBreak()\n }],\n /**\n * Break Inside\n * @see https://tailwindcss.com/docs/break-inside\n */\n 'break-inside': [{\n 'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column']\n }],\n /**\n * Box Decoration Break\n * @see https://tailwindcss.com/docs/box-decoration-break\n */\n 'box-decoration': [{\n 'box-decoration': ['slice', 'clone']\n }],\n /**\n * Box Sizing\n * @see https://tailwindcss.com/docs/box-sizing\n */\n box: [{\n box: ['border', 'content']\n }],\n /**\n * Display\n * @see https://tailwindcss.com/docs/display\n */\n display: ['block', 'inline-block', 'inline', 'flex', 'inline-flex', 'table', 'inline-table', 'table-caption', 'table-cell', 'table-column', 'table-column-group', 'table-footer-group', 'table-header-group', 'table-row-group', 'table-row', 'flow-root', 'grid', 'inline-grid', 'contents', 'list-item', 'hidden'],\n /**\n * Screen Reader Only\n * @see https://tailwindcss.com/docs/display#screen-reader-only\n */\n sr: ['sr-only', 'not-sr-only'],\n /**\n * Floats\n * @see https://tailwindcss.com/docs/float\n */\n float: [{\n float: ['right', 'left', 'none', 'start', 'end']\n }],\n /**\n * Clear\n * @see https://tailwindcss.com/docs/clear\n */\n clear: [{\n clear: ['left', 'right', 'both', 'none', 'start', 'end']\n }],\n /**\n * Isolation\n * @see https://tailwindcss.com/docs/isolation\n */\n isolation: ['isolate', 'isolation-auto'],\n /**\n * Object Fit\n * @see https://tailwindcss.com/docs/object-fit\n */\n 'object-fit': [{\n object: ['contain', 'cover', 'fill', 'none', 'scale-down']\n }],\n /**\n * Object Position\n * @see https://tailwindcss.com/docs/object-position\n */\n 'object-position': [{\n object: scalePositionWithArbitrary()\n }],\n /**\n * Overflow\n * @see https://tailwindcss.com/docs/overflow\n */\n overflow: [{\n overflow: scaleOverflow()\n }],\n /**\n * Overflow X\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-x': [{\n 'overflow-x': scaleOverflow()\n }],\n /**\n * Overflow Y\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-y': [{\n 'overflow-y': scaleOverflow()\n }],\n /**\n * Overscroll Behavior\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n overscroll: [{\n overscroll: scaleOverscroll()\n }],\n /**\n * Overscroll Behavior X\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-x': [{\n 'overscroll-x': scaleOverscroll()\n }],\n /**\n * Overscroll Behavior Y\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-y': [{\n 'overscroll-y': scaleOverscroll()\n }],\n /**\n * Position\n * @see https://tailwindcss.com/docs/position\n */\n position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],\n /**\n * Inset\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n inset: [{\n inset: scaleInset()\n }],\n /**\n * Inset Inline\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-x': [{\n 'inset-x': scaleInset()\n }],\n /**\n * Inset Block\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-y': [{\n 'inset-y': scaleInset()\n }],\n /**\n * Inset Inline Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n * @todo class group will be renamed to `inset-s` in next major release\n */\n start: [{\n 'inset-s': scaleInset(),\n /**\n * @deprecated since Tailwind CSS v4.2.0 in favor of `inset-s-*` utilities.\n * @see https://github.com/tailwindlabs/tailwindcss/pull/19613\n */\n start: scaleInset()\n }],\n /**\n * Inset Inline End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n * @todo class group will be renamed to `inset-e` in next major release\n */\n end: [{\n 'inset-e': scaleInset(),\n /**\n * @deprecated since Tailwind CSS v4.2.0 in favor of `inset-e-*` utilities.\n * @see https://github.com/tailwindlabs/tailwindcss/pull/19613\n */\n end: scaleInset()\n }],\n /**\n * Inset Block Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-bs': [{\n 'inset-bs': scaleInset()\n }],\n /**\n * Inset Block End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-be': [{\n 'inset-be': scaleInset()\n }],\n /**\n * Top\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n top: [{\n top: scaleInset()\n }],\n /**\n * Right\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n right: [{\n right: scaleInset()\n }],\n /**\n * Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n bottom: [{\n bottom: scaleInset()\n }],\n /**\n * Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n left: [{\n left: scaleInset()\n }],\n /**\n * Visibility\n * @see https://tailwindcss.com/docs/visibility\n */\n visibility: ['visible', 'invisible', 'collapse'],\n /**\n * Z-Index\n * @see https://tailwindcss.com/docs/z-index\n */\n z: [{\n z: [isInteger, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------------\n // --- Flexbox and Grid ---\n // ------------------------\n /**\n * Flex Basis\n * @see https://tailwindcss.com/docs/flex-basis\n */\n basis: [{\n basis: [isFraction, 'full', 'auto', themeContainer, ...scaleUnambiguousSpacing()]\n }],\n /**\n * Flex Direction\n * @see https://tailwindcss.com/docs/flex-direction\n */\n 'flex-direction': [{\n flex: ['row', 'row-reverse', 'col', 'col-reverse']\n }],\n /**\n * Flex Wrap\n * @see https://tailwindcss.com/docs/flex-wrap\n */\n 'flex-wrap': [{\n flex: ['nowrap', 'wrap', 'wrap-reverse']\n }],\n /**\n * Flex\n * @see https://tailwindcss.com/docs/flex\n */\n flex: [{\n flex: [isNumber, isFraction, 'auto', 'initial', 'none', isArbitraryValue]\n }],\n /**\n * Flex Grow\n * @see https://tailwindcss.com/docs/flex-grow\n */\n grow: [{\n grow: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Flex Shrink\n * @see https://tailwindcss.com/docs/flex-shrink\n */\n shrink: [{\n shrink: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Order\n * @see https://tailwindcss.com/docs/order\n */\n order: [{\n order: [isInteger, 'first', 'last', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Grid Template Columns\n * @see https://tailwindcss.com/docs/grid-template-columns\n */\n 'grid-cols': [{\n 'grid-cols': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Column Start / End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start-end': [{\n col: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Column Start\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start': [{\n 'col-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Column End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-end': [{\n 'col-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Template Rows\n * @see https://tailwindcss.com/docs/grid-template-rows\n */\n 'grid-rows': [{\n 'grid-rows': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Row Start / End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start-end': [{\n row: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Row Start\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start': [{\n 'row-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Row End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-end': [{\n 'row-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Auto Flow\n * @see https://tailwindcss.com/docs/grid-auto-flow\n */\n 'grid-flow': [{\n 'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense']\n }],\n /**\n * Grid Auto Columns\n * @see https://tailwindcss.com/docs/grid-auto-columns\n */\n 'auto-cols': [{\n 'auto-cols': scaleGridAutoColsRows()\n }],\n /**\n * Grid Auto Rows\n * @see https://tailwindcss.com/docs/grid-auto-rows\n */\n 'auto-rows': [{\n 'auto-rows': scaleGridAutoColsRows()\n }],\n /**\n * Gap\n * @see https://tailwindcss.com/docs/gap\n */\n gap: [{\n gap: scaleUnambiguousSpacing()\n }],\n /**\n * Gap X\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-x': [{\n 'gap-x': scaleUnambiguousSpacing()\n }],\n /**\n * Gap Y\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-y': [{\n 'gap-y': scaleUnambiguousSpacing()\n }],\n /**\n * Justify Content\n * @see https://tailwindcss.com/docs/justify-content\n */\n 'justify-content': [{\n justify: [...scaleAlignPrimaryAxis(), 'normal']\n }],\n /**\n * Justify Items\n * @see https://tailwindcss.com/docs/justify-items\n */\n 'justify-items': [{\n 'justify-items': [...scaleAlignSecondaryAxis(), 'normal']\n }],\n /**\n * Justify Self\n * @see https://tailwindcss.com/docs/justify-self\n */\n 'justify-self': [{\n 'justify-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n /**\n * Align Content\n * @see https://tailwindcss.com/docs/align-content\n */\n 'align-content': [{\n content: ['normal', ...scaleAlignPrimaryAxis()]\n }],\n /**\n * Align Items\n * @see https://tailwindcss.com/docs/align-items\n */\n 'align-items': [{\n items: [...scaleAlignSecondaryAxis(), {\n baseline: ['', 'last']\n }]\n }],\n /**\n * Align Self\n * @see https://tailwindcss.com/docs/align-self\n */\n 'align-self': [{\n self: ['auto', ...scaleAlignSecondaryAxis(), {\n baseline: ['', 'last']\n }]\n }],\n /**\n * Place Content\n * @see https://tailwindcss.com/docs/place-content\n */\n 'place-content': [{\n 'place-content': scaleAlignPrimaryAxis()\n }],\n /**\n * Place Items\n * @see https://tailwindcss.com/docs/place-items\n */\n 'place-items': [{\n 'place-items': [...scaleAlignSecondaryAxis(), 'baseline']\n }],\n /**\n * Place Self\n * @see https://tailwindcss.com/docs/place-self\n */\n 'place-self': [{\n 'place-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n // Spacing\n /**\n * Padding\n * @see https://tailwindcss.com/docs/padding\n */\n p: [{\n p: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Inline\n * @see https://tailwindcss.com/docs/padding\n */\n px: [{\n px: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Block\n * @see https://tailwindcss.com/docs/padding\n */\n py: [{\n py: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Inline Start\n * @see https://tailwindcss.com/docs/padding\n */\n ps: [{\n ps: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Inline End\n * @see https://tailwindcss.com/docs/padding\n */\n pe: [{\n pe: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Block Start\n * @see https://tailwindcss.com/docs/padding\n */\n pbs: [{\n pbs: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Block End\n * @see https://tailwindcss.com/docs/padding\n */\n pbe: [{\n pbe: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Top\n * @see https://tailwindcss.com/docs/padding\n */\n pt: [{\n pt: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Right\n * @see https://tailwindcss.com/docs/padding\n */\n pr: [{\n pr: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Bottom\n * @see https://tailwindcss.com/docs/padding\n */\n pb: [{\n pb: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Left\n * @see https://tailwindcss.com/docs/padding\n */\n pl: [{\n pl: scaleUnambiguousSpacing()\n }],\n /**\n * Margin\n * @see https://tailwindcss.com/docs/margin\n */\n m: [{\n m: scaleMargin()\n }],\n /**\n * Margin Inline\n * @see https://tailwindcss.com/docs/margin\n */\n mx: [{\n mx: scaleMargin()\n }],\n /**\n * Margin Block\n * @see https://tailwindcss.com/docs/margin\n */\n my: [{\n my: scaleMargin()\n }],\n /**\n * Margin Inline Start\n * @see https://tailwindcss.com/docs/margin\n */\n ms: [{\n ms: scaleMargin()\n }],\n /**\n * Margin Inline End\n * @see https://tailwindcss.com/docs/margin\n */\n me: [{\n me: scaleMargin()\n }],\n /**\n * Margin Block Start\n * @see https://tailwindcss.com/docs/margin\n */\n mbs: [{\n mbs: scaleMargin()\n }],\n /**\n * Margin Block End\n * @see https://tailwindcss.com/docs/margin\n */\n mbe: [{\n mbe: scaleMargin()\n }],\n /**\n * Margin Top\n * @see https://tailwindcss.com/docs/margin\n */\n mt: [{\n mt: scaleMargin()\n }],\n /**\n * Margin Right\n * @see https://tailwindcss.com/docs/margin\n */\n mr: [{\n mr: scaleMargin()\n }],\n /**\n * Margin Bottom\n * @see https://tailwindcss.com/docs/margin\n */\n mb: [{\n mb: scaleMargin()\n }],\n /**\n * Margin Left\n * @see https://tailwindcss.com/docs/margin\n */\n ml: [{\n ml: scaleMargin()\n }],\n /**\n * Space Between X\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x': [{\n 'space-x': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between X Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x-reverse': ['space-x-reverse'],\n /**\n * Space Between Y\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y': [{\n 'space-y': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between Y Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y-reverse': ['space-y-reverse'],\n // --------------\n // --- Sizing ---\n // --------------\n /**\n * Size\n * @see https://tailwindcss.com/docs/width#setting-both-width-and-height\n */\n size: [{\n size: scaleSizing()\n }],\n /**\n * Inline Size\n * @see https://tailwindcss.com/docs/width\n */\n 'inline-size': [{\n inline: ['auto', ...scaleSizingInline()]\n }],\n /**\n * Min-Inline Size\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-inline-size': [{\n 'min-inline': ['auto', ...scaleSizingInline()]\n }],\n /**\n * Max-Inline Size\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-inline-size': [{\n 'max-inline': ['none', ...scaleSizingInline()]\n }],\n /**\n * Block Size\n * @see https://tailwindcss.com/docs/height\n */\n 'block-size': [{\n block: ['auto', ...scaleSizingBlock()]\n }],\n /**\n * Min-Block Size\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-block-size': [{\n 'min-block': ['auto', ...scaleSizingBlock()]\n }],\n /**\n * Max-Block Size\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-block-size': [{\n 'max-block': ['none', ...scaleSizingBlock()]\n }],\n /**\n * Width\n * @see https://tailwindcss.com/docs/width\n */\n w: [{\n w: [themeContainer, 'screen', ...scaleSizing()]\n }],\n /**\n * Min-Width\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-w': [{\n 'min-w': [themeContainer, 'screen', /** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'none', ...scaleSizing()]\n }],\n /**\n * Max-Width\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-w': [{\n 'max-w': [themeContainer, 'screen', 'none', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'prose', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n {\n screen: [themeBreakpoint]\n }, ...scaleSizing()]\n }],\n /**\n * Height\n * @see https://tailwindcss.com/docs/height\n */\n h: [{\n h: ['screen', 'lh', ...scaleSizing()]\n }],\n /**\n * Min-Height\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-h': [{\n 'min-h': ['screen', 'lh', 'none', ...scaleSizing()]\n }],\n /**\n * Max-Height\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-h': [{\n 'max-h': ['screen', 'lh', ...scaleSizing()]\n }],\n // ------------------\n // --- Typography ---\n // ------------------\n /**\n * Font Size\n * @see https://tailwindcss.com/docs/font-size\n */\n 'font-size': [{\n text: ['base', themeText, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Font Smoothing\n * @see https://tailwindcss.com/docs/font-smoothing\n */\n 'font-smoothing': ['antialiased', 'subpixel-antialiased'],\n /**\n * Font Style\n * @see https://tailwindcss.com/docs/font-style\n */\n 'font-style': ['italic', 'not-italic'],\n /**\n * Font Weight\n * @see https://tailwindcss.com/docs/font-weight\n */\n 'font-weight': [{\n font: [themeFontWeight, isArbitraryVariableWeight, isArbitraryWeight]\n }],\n /**\n * Font Stretch\n * @see https://tailwindcss.com/docs/font-stretch\n */\n 'font-stretch': [{\n 'font-stretch': ['ultra-condensed', 'extra-condensed', 'condensed', 'semi-condensed', 'normal', 'semi-expanded', 'expanded', 'extra-expanded', 'ultra-expanded', isPercent, isArbitraryValue]\n }],\n /**\n * Font Family\n * @see https://tailwindcss.com/docs/font-family\n */\n 'font-family': [{\n font: [isArbitraryVariableFamilyName, isArbitraryFamilyName, themeFont]\n }],\n /**\n * Font Feature Settings\n * @see https://tailwindcss.com/docs/font-feature-settings\n */\n 'font-features': [{\n 'font-features': [isArbitraryValue]\n }],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-normal': ['normal-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-ordinal': ['ordinal'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-slashed-zero': ['slashed-zero'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-figure': ['lining-nums', 'oldstyle-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-spacing': ['proportional-nums', 'tabular-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-fraction': ['diagonal-fractions', 'stacked-fractions'],\n /**\n * Letter Spacing\n * @see https://tailwindcss.com/docs/letter-spacing\n */\n tracking: [{\n tracking: [themeTracking, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Line Clamp\n * @see https://tailwindcss.com/docs/line-clamp\n */\n 'line-clamp': [{\n 'line-clamp': [isNumber, 'none', isArbitraryVariable, isArbitraryNumber]\n }],\n /**\n * Line Height\n * @see https://tailwindcss.com/docs/line-height\n */\n leading: [{\n leading: [/** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n themeLeading, ...scaleUnambiguousSpacing()]\n }],\n /**\n * List Style Image\n * @see https://tailwindcss.com/docs/list-style-image\n */\n 'list-image': [{\n 'list-image': ['none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * List Style Position\n * @see https://tailwindcss.com/docs/list-style-position\n */\n 'list-style-position': [{\n list: ['inside', 'outside']\n }],\n /**\n * List Style Type\n * @see https://tailwindcss.com/docs/list-style-type\n */\n 'list-style-type': [{\n list: ['disc', 'decimal', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Alignment\n * @see https://tailwindcss.com/docs/text-align\n */\n 'text-alignment': [{\n text: ['left', 'center', 'right', 'justify', 'start', 'end']\n }],\n /**\n * Placeholder Color\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://v3.tailwindcss.com/docs/placeholder-color\n */\n 'placeholder-color': [{\n placeholder: scaleColor()\n }],\n /**\n * Text Color\n * @see https://tailwindcss.com/docs/text-color\n */\n 'text-color': [{\n text: scaleColor()\n }],\n /**\n * Text Decoration\n * @see https://tailwindcss.com/docs/text-decoration\n */\n 'text-decoration': ['underline', 'overline', 'line-through', 'no-underline'],\n /**\n * Text Decoration Style\n * @see https://tailwindcss.com/docs/text-decoration-style\n */\n 'text-decoration-style': [{\n decoration: [...scaleLineStyle(), 'wavy']\n }],\n /**\n * Text Decoration Thickness\n * @see https://tailwindcss.com/docs/text-decoration-thickness\n */\n 'text-decoration-thickness': [{\n decoration: [isNumber, 'from-font', 'auto', isArbitraryVariable, isArbitraryLength]\n }],\n /**\n * Text Decoration Color\n * @see https://tailwindcss.com/docs/text-decoration-color\n */\n 'text-decoration-color': [{\n decoration: scaleColor()\n }],\n /**\n * Text Underline Offset\n * @see https://tailwindcss.com/docs/text-underline-offset\n */\n 'underline-offset': [{\n 'underline-offset': [isNumber, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Transform\n * @see https://tailwindcss.com/docs/text-transform\n */\n 'text-transform': ['uppercase', 'lowercase', 'capitalize', 'normal-case'],\n /**\n * Text Overflow\n * @see https://tailwindcss.com/docs/text-overflow\n */\n 'text-overflow': ['truncate', 'text-ellipsis', 'text-clip'],\n /**\n * Text Wrap\n * @see https://tailwindcss.com/docs/text-wrap\n */\n 'text-wrap': [{\n text: ['wrap', 'nowrap', 'balance', 'pretty']\n }],\n /**\n * Text Indent\n * @see https://tailwindcss.com/docs/text-indent\n */\n indent: [{\n indent: scaleUnambiguousSpacing()\n }],\n /**\n * Tab Size\n * @see https://tailwindcss.com/docs/tab-size\n */\n 'tab-size': [{\n tab: [isInteger, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Vertical Alignment\n * @see https://tailwindcss.com/docs/vertical-align\n */\n 'vertical-align': [{\n align: ['baseline', 'top', 'middle', 'bottom', 'text-top', 'text-bottom', 'sub', 'super', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Whitespace\n * @see https://tailwindcss.com/docs/whitespace\n */\n whitespace: [{\n whitespace: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'break-spaces']\n }],\n /**\n * Word Break\n * @see https://tailwindcss.com/docs/word-break\n */\n break: [{\n break: ['normal', 'words', 'all', 'keep']\n }],\n /**\n * Overflow Wrap\n * @see https://tailwindcss.com/docs/overflow-wrap\n */\n wrap: [{\n wrap: ['break-word', 'anywhere', 'normal']\n }],\n /**\n * Hyphens\n * @see https://tailwindcss.com/docs/hyphens\n */\n hyphens: [{\n hyphens: ['none', 'manual', 'auto']\n }],\n /**\n * Content\n * @see https://tailwindcss.com/docs/content\n */\n content: [{\n content: ['none', isArbitraryVariable, isArbitraryValue]\n }],\n // -------------------\n // --- Backgrounds ---\n // -------------------\n /**\n * Background Attachment\n * @see https://tailwindcss.com/docs/background-attachment\n */\n 'bg-attachment': [{\n bg: ['fixed', 'local', 'scroll']\n }],\n /**\n * Background Clip\n * @see https://tailwindcss.com/docs/background-clip\n */\n 'bg-clip': [{\n 'bg-clip': ['border', 'padding', 'content', 'text']\n }],\n /**\n * Background Origin\n * @see https://tailwindcss.com/docs/background-origin\n */\n 'bg-origin': [{\n 'bg-origin': ['border', 'padding', 'content']\n }],\n /**\n * Background Position\n * @see https://tailwindcss.com/docs/background-position\n */\n 'bg-position': [{\n bg: scaleBgPosition()\n }],\n /**\n * Background Repeat\n * @see https://tailwindcss.com/docs/background-repeat\n */\n 'bg-repeat': [{\n bg: scaleBgRepeat()\n }],\n /**\n * Background Size\n * @see https://tailwindcss.com/docs/background-size\n */\n 'bg-size': [{\n bg: scaleBgSize()\n }],\n /**\n * Background Image\n * @see https://tailwindcss.com/docs/background-image\n */\n 'bg-image': [{\n bg: ['none', {\n linear: [{\n to: ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl']\n }, isInteger, isArbitraryVariable, isArbitraryValue],\n radial: ['', isArbitraryVariable, isArbitraryValue],\n conic: [isInteger, isArbitraryVariable, isArbitraryValue]\n }, isArbitraryVariableImage, isArbitraryImage]\n }],\n /**\n * Background Color\n * @see https://tailwindcss.com/docs/background-color\n */\n 'bg-color': [{\n bg: scaleColor()\n }],\n /**\n * Gradient Color Stops From Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from-pos': [{\n from: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops Via Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via-pos': [{\n via: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops To Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to-pos': [{\n to: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops From\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from': [{\n from: scaleColor()\n }],\n /**\n * Gradient Color Stops Via\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via': [{\n via: scaleColor()\n }],\n /**\n * Gradient Color Stops To\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to': [{\n to: scaleColor()\n }],\n // ---------------\n // --- Borders ---\n // ---------------\n /**\n * Border Radius\n * @see https://tailwindcss.com/docs/border-radius\n */\n rounded: [{\n rounded: scaleRadius()\n }],\n /**\n * Border Radius Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-s': [{\n 'rounded-s': scaleRadius()\n }],\n /**\n * Border Radius End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-e': [{\n 'rounded-e': scaleRadius()\n }],\n /**\n * Border Radius Top\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-t': [{\n 'rounded-t': scaleRadius()\n }],\n /**\n * Border Radius Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-r': [{\n 'rounded-r': scaleRadius()\n }],\n /**\n * Border Radius Bottom\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-b': [{\n 'rounded-b': scaleRadius()\n }],\n /**\n * Border Radius Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-l': [{\n 'rounded-l': scaleRadius()\n }],\n /**\n * Border Radius Start Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ss': [{\n 'rounded-ss': scaleRadius()\n }],\n /**\n * Border Radius Start End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-se': [{\n 'rounded-se': scaleRadius()\n }],\n /**\n * Border Radius End End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ee': [{\n 'rounded-ee': scaleRadius()\n }],\n /**\n * Border Radius End Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-es': [{\n 'rounded-es': scaleRadius()\n }],\n /**\n * Border Radius Top Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tl': [{\n 'rounded-tl': scaleRadius()\n }],\n /**\n * Border Radius Top Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tr': [{\n 'rounded-tr': scaleRadius()\n }],\n /**\n * Border Radius Bottom Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-br': [{\n 'rounded-br': scaleRadius()\n }],\n /**\n * Border Radius Bottom Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-bl': [{\n 'rounded-bl': scaleRadius()\n }],\n /**\n * Border Width\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w': [{\n border: scaleBorderWidth()\n }],\n /**\n * Border Width Inline\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-x': [{\n 'border-x': scaleBorderWidth()\n }],\n /**\n * Border Width Block\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-y': [{\n 'border-y': scaleBorderWidth()\n }],\n /**\n * Border Width Inline Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-s': [{\n 'border-s': scaleBorderWidth()\n }],\n /**\n * Border Width Inline End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-e': [{\n 'border-e': scaleBorderWidth()\n }],\n /**\n * Border Width Block Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-bs': [{\n 'border-bs': scaleBorderWidth()\n }],\n /**\n * Border Width Block End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-be': [{\n 'border-be': scaleBorderWidth()\n }],\n /**\n * Border Width Top\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-t': [{\n 'border-t': scaleBorderWidth()\n }],\n /**\n * Border Width Right\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-r': [{\n 'border-r': scaleBorderWidth()\n }],\n /**\n * Border Width Bottom\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-b': [{\n 'border-b': scaleBorderWidth()\n }],\n /**\n * Border Width Left\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-l': [{\n 'border-l': scaleBorderWidth()\n }],\n /**\n * Divide Width X\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x': [{\n 'divide-x': scaleBorderWidth()\n }],\n /**\n * Divide Width X Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x-reverse': ['divide-x-reverse'],\n /**\n * Divide Width Y\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y': [{\n 'divide-y': scaleBorderWidth()\n }],\n /**\n * Divide Width Y Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y-reverse': ['divide-y-reverse'],\n /**\n * Border Style\n * @see https://tailwindcss.com/docs/border-style\n */\n 'border-style': [{\n border: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Divide Style\n * @see https://tailwindcss.com/docs/border-style#setting-the-divider-style\n */\n 'divide-style': [{\n divide: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Border Color\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color': [{\n border: scaleColor()\n }],\n /**\n * Border Color Inline\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-x': [{\n 'border-x': scaleColor()\n }],\n /**\n * Border Color Block\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-y': [{\n 'border-y': scaleColor()\n }],\n /**\n * Border Color Inline Start\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-s': [{\n 'border-s': scaleColor()\n }],\n /**\n * Border Color Inline End\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-e': [{\n 'border-e': scaleColor()\n }],\n /**\n * Border Color Block Start\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-bs': [{\n 'border-bs': scaleColor()\n }],\n /**\n * Border Color Block End\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-be': [{\n 'border-be': scaleColor()\n }],\n /**\n * Border Color Top\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-t': [{\n 'border-t': scaleColor()\n }],\n /**\n * Border Color Right\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-r': [{\n 'border-r': scaleColor()\n }],\n /**\n * Border Color Bottom\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-b': [{\n 'border-b': scaleColor()\n }],\n /**\n * Border Color Left\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-l': [{\n 'border-l': scaleColor()\n }],\n /**\n * Divide Color\n * @see https://tailwindcss.com/docs/divide-color\n */\n 'divide-color': [{\n divide: scaleColor()\n }],\n /**\n * Outline Style\n * @see https://tailwindcss.com/docs/outline-style\n */\n 'outline-style': [{\n outline: [...scaleLineStyle(), 'none', 'hidden']\n }],\n /**\n * Outline Offset\n * @see https://tailwindcss.com/docs/outline-offset\n */\n 'outline-offset': [{\n 'outline-offset': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Outline Width\n * @see https://tailwindcss.com/docs/outline-width\n */\n 'outline-w': [{\n outline: ['', isNumber, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Outline Color\n * @see https://tailwindcss.com/docs/outline-color\n */\n 'outline-color': [{\n outline: scaleColor()\n }],\n // ---------------\n // --- Effects ---\n // ---------------\n /**\n * Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow\n */\n shadow: [{\n shadow: [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color\n */\n 'shadow-color': [{\n shadow: scaleColor()\n }],\n /**\n * Inset Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow\n */\n 'inset-shadow': [{\n 'inset-shadow': ['none', themeInsetShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Inset Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color\n */\n 'inset-shadow-color': [{\n 'inset-shadow': scaleColor()\n }],\n /**\n * Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-a-ring\n */\n 'ring-w': [{\n ring: scaleBorderWidth()\n }],\n /**\n * Ring Width Inset\n * @see https://v3.tailwindcss.com/docs/ring-width#inset-rings\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-w-inset': ['ring-inset'],\n /**\n * Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color\n */\n 'ring-color': [{\n ring: scaleColor()\n }],\n /**\n * Ring Offset Width\n * @see https://v3.tailwindcss.com/docs/ring-offset-width\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-w': [{\n 'ring-offset': [isNumber, isArbitraryLength]\n }],\n /**\n * Ring Offset Color\n * @see https://v3.tailwindcss.com/docs/ring-offset-color\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-color': [{\n 'ring-offset': scaleColor()\n }],\n /**\n * Inset Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring\n */\n 'inset-ring-w': [{\n 'inset-ring': scaleBorderWidth()\n }],\n /**\n * Inset Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color\n */\n 'inset-ring-color': [{\n 'inset-ring': scaleColor()\n }],\n /**\n * Text Shadow\n * @see https://tailwindcss.com/docs/text-shadow\n */\n 'text-shadow': [{\n 'text-shadow': ['none', themeTextShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Text Shadow Color\n * @see https://tailwindcss.com/docs/text-shadow#setting-the-shadow-color\n */\n 'text-shadow-color': [{\n 'text-shadow': scaleColor()\n }],\n /**\n * Opacity\n * @see https://tailwindcss.com/docs/opacity\n */\n opacity: [{\n opacity: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Mix Blend Mode\n * @see https://tailwindcss.com/docs/mix-blend-mode\n */\n 'mix-blend': [{\n 'mix-blend': [...scaleBlendMode(), 'plus-darker', 'plus-lighter']\n }],\n /**\n * Background Blend Mode\n * @see https://tailwindcss.com/docs/background-blend-mode\n */\n 'bg-blend': [{\n 'bg-blend': scaleBlendMode()\n }],\n /**\n * Mask Clip\n * @see https://tailwindcss.com/docs/mask-clip\n */\n 'mask-clip': [{\n 'mask-clip': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n }, 'mask-no-clip'],\n /**\n * Mask Composite\n * @see https://tailwindcss.com/docs/mask-composite\n */\n 'mask-composite': [{\n mask: ['add', 'subtract', 'intersect', 'exclude']\n }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image-linear-pos': [{\n 'mask-linear': [isNumber]\n }],\n 'mask-image-linear-from-pos': [{\n 'mask-linear-from': scaleMaskImagePosition()\n }],\n 'mask-image-linear-to-pos': [{\n 'mask-linear-to': scaleMaskImagePosition()\n }],\n 'mask-image-linear-from-color': [{\n 'mask-linear-from': scaleColor()\n }],\n 'mask-image-linear-to-color': [{\n 'mask-linear-to': scaleColor()\n }],\n 'mask-image-t-from-pos': [{\n 'mask-t-from': scaleMaskImagePosition()\n }],\n 'mask-image-t-to-pos': [{\n 'mask-t-to': scaleMaskImagePosition()\n }],\n 'mask-image-t-from-color': [{\n 'mask-t-from': scaleColor()\n }],\n 'mask-image-t-to-color': [{\n 'mask-t-to': scaleColor()\n }],\n 'mask-image-r-from-pos': [{\n 'mask-r-from': scaleMaskImagePosition()\n }],\n 'mask-image-r-to-pos': [{\n 'mask-r-to': scaleMaskImagePosition()\n }],\n 'mask-image-r-from-color': [{\n 'mask-r-from': scaleColor()\n }],\n 'mask-image-r-to-color': [{\n 'mask-r-to': scaleColor()\n }],\n 'mask-image-b-from-pos': [{\n 'mask-b-from': scaleMaskImagePosition()\n }],\n 'mask-image-b-to-pos': [{\n 'mask-b-to': scaleMaskImagePosition()\n }],\n 'mask-image-b-from-color': [{\n 'mask-b-from': scaleColor()\n }],\n 'mask-image-b-to-color': [{\n 'mask-b-to': scaleColor()\n }],\n 'mask-image-l-from-pos': [{\n 'mask-l-from': scaleMaskImagePosition()\n }],\n 'mask-image-l-to-pos': [{\n 'mask-l-to': scaleMaskImagePosition()\n }],\n 'mask-image-l-from-color': [{\n 'mask-l-from': scaleColor()\n }],\n 'mask-image-l-to-color': [{\n 'mask-l-to': scaleColor()\n }],\n 'mask-image-x-from-pos': [{\n 'mask-x-from': scaleMaskImagePosition()\n }],\n 'mask-image-x-to-pos': [{\n 'mask-x-to': scaleMaskImagePosition()\n }],\n 'mask-image-x-from-color': [{\n 'mask-x-from': scaleColor()\n }],\n 'mask-image-x-to-color': [{\n 'mask-x-to': scaleColor()\n }],\n 'mask-image-y-from-pos': [{\n 'mask-y-from': scaleMaskImagePosition()\n }],\n 'mask-image-y-to-pos': [{\n 'mask-y-to': scaleMaskImagePosition()\n }],\n 'mask-image-y-from-color': [{\n 'mask-y-from': scaleColor()\n }],\n 'mask-image-y-to-color': [{\n 'mask-y-to': scaleColor()\n }],\n 'mask-image-radial': [{\n 'mask-radial': [isArbitraryVariable, isArbitraryValue]\n }],\n 'mask-image-radial-from-pos': [{\n 'mask-radial-from': scaleMaskImagePosition()\n }],\n 'mask-image-radial-to-pos': [{\n 'mask-radial-to': scaleMaskImagePosition()\n }],\n 'mask-image-radial-from-color': [{\n 'mask-radial-from': scaleColor()\n }],\n 'mask-image-radial-to-color': [{\n 'mask-radial-to': scaleColor()\n }],\n 'mask-image-radial-shape': [{\n 'mask-radial': ['circle', 'ellipse']\n }],\n 'mask-image-radial-size': [{\n 'mask-radial': [{\n closest: ['side', 'corner'],\n farthest: ['side', 'corner']\n }]\n }],\n 'mask-image-radial-pos': [{\n 'mask-radial-at': scalePosition()\n }],\n 'mask-image-conic-pos': [{\n 'mask-conic': [isNumber]\n }],\n 'mask-image-conic-from-pos': [{\n 'mask-conic-from': scaleMaskImagePosition()\n }],\n 'mask-image-conic-to-pos': [{\n 'mask-conic-to': scaleMaskImagePosition()\n }],\n 'mask-image-conic-from-color': [{\n 'mask-conic-from': scaleColor()\n }],\n 'mask-image-conic-to-color': [{\n 'mask-conic-to': scaleColor()\n }],\n /**\n * Mask Mode\n * @see https://tailwindcss.com/docs/mask-mode\n */\n 'mask-mode': [{\n mask: ['alpha', 'luminance', 'match']\n }],\n /**\n * Mask Origin\n * @see https://tailwindcss.com/docs/mask-origin\n */\n 'mask-origin': [{\n 'mask-origin': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n }],\n /**\n * Mask Position\n * @see https://tailwindcss.com/docs/mask-position\n */\n 'mask-position': [{\n mask: scaleBgPosition()\n }],\n /**\n * Mask Repeat\n * @see https://tailwindcss.com/docs/mask-repeat\n */\n 'mask-repeat': [{\n mask: scaleBgRepeat()\n }],\n /**\n * Mask Size\n * @see https://tailwindcss.com/docs/mask-size\n */\n 'mask-size': [{\n mask: scaleBgSize()\n }],\n /**\n * Mask Type\n * @see https://tailwindcss.com/docs/mask-type\n */\n 'mask-type': [{\n 'mask-type': ['alpha', 'luminance']\n }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image': [{\n mask: ['none', isArbitraryVariable, isArbitraryValue]\n }],\n // ---------------\n // --- Filters ---\n // ---------------\n /**\n * Filter\n * @see https://tailwindcss.com/docs/filter\n */\n filter: [{\n filter: [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Blur\n * @see https://tailwindcss.com/docs/blur\n */\n blur: [{\n blur: scaleBlur()\n }],\n /**\n * Brightness\n * @see https://tailwindcss.com/docs/brightness\n */\n brightness: [{\n brightness: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Contrast\n * @see https://tailwindcss.com/docs/contrast\n */\n contrast: [{\n contrast: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Drop Shadow\n * @see https://tailwindcss.com/docs/drop-shadow\n */\n 'drop-shadow': [{\n 'drop-shadow': [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeDropShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Drop Shadow Color\n * @see https://tailwindcss.com/docs/filter-drop-shadow#setting-the-shadow-color\n */\n 'drop-shadow-color': [{\n 'drop-shadow': scaleColor()\n }],\n /**\n * Grayscale\n * @see https://tailwindcss.com/docs/grayscale\n */\n grayscale: [{\n grayscale: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Hue Rotate\n * @see https://tailwindcss.com/docs/hue-rotate\n */\n 'hue-rotate': [{\n 'hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Invert\n * @see https://tailwindcss.com/docs/invert\n */\n invert: [{\n invert: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Saturate\n * @see https://tailwindcss.com/docs/saturate\n */\n saturate: [{\n saturate: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Sepia\n * @see https://tailwindcss.com/docs/sepia\n */\n sepia: [{\n sepia: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Filter\n * @see https://tailwindcss.com/docs/backdrop-filter\n */\n 'backdrop-filter': [{\n 'backdrop-filter': [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Blur\n * @see https://tailwindcss.com/docs/backdrop-blur\n */\n 'backdrop-blur': [{\n 'backdrop-blur': scaleBlur()\n }],\n /**\n * Backdrop Brightness\n * @see https://tailwindcss.com/docs/backdrop-brightness\n */\n 'backdrop-brightness': [{\n 'backdrop-brightness': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Contrast\n * @see https://tailwindcss.com/docs/backdrop-contrast\n */\n 'backdrop-contrast': [{\n 'backdrop-contrast': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Grayscale\n * @see https://tailwindcss.com/docs/backdrop-grayscale\n */\n 'backdrop-grayscale': [{\n 'backdrop-grayscale': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Hue Rotate\n * @see https://tailwindcss.com/docs/backdrop-hue-rotate\n */\n 'backdrop-hue-rotate': [{\n 'backdrop-hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Invert\n * @see https://tailwindcss.com/docs/backdrop-invert\n */\n 'backdrop-invert': [{\n 'backdrop-invert': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Opacity\n * @see https://tailwindcss.com/docs/backdrop-opacity\n */\n 'backdrop-opacity': [{\n 'backdrop-opacity': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Saturate\n * @see https://tailwindcss.com/docs/backdrop-saturate\n */\n 'backdrop-saturate': [{\n 'backdrop-saturate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Sepia\n * @see https://tailwindcss.com/docs/backdrop-sepia\n */\n 'backdrop-sepia': [{\n 'backdrop-sepia': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n // --------------\n // --- Tables ---\n // --------------\n /**\n * Border Collapse\n * @see https://tailwindcss.com/docs/border-collapse\n */\n 'border-collapse': [{\n border: ['collapse', 'separate']\n }],\n /**\n * Border Spacing\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing': [{\n 'border-spacing': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing X\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-x': [{\n 'border-spacing-x': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing Y\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-y': [{\n 'border-spacing-y': scaleUnambiguousSpacing()\n }],\n /**\n * Table Layout\n * @see https://tailwindcss.com/docs/table-layout\n */\n 'table-layout': [{\n table: ['auto', 'fixed']\n }],\n /**\n * Caption Side\n * @see https://tailwindcss.com/docs/caption-side\n */\n caption: [{\n caption: ['top', 'bottom']\n }],\n // ---------------------------------\n // --- Transitions and Animation ---\n // ---------------------------------\n /**\n * Transition Property\n * @see https://tailwindcss.com/docs/transition-property\n */\n transition: [{\n transition: ['', 'all', 'colors', 'opacity', 'shadow', 'transform', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Behavior\n * @see https://tailwindcss.com/docs/transition-behavior\n */\n 'transition-behavior': [{\n transition: ['normal', 'discrete']\n }],\n /**\n * Transition Duration\n * @see https://tailwindcss.com/docs/transition-duration\n */\n duration: [{\n duration: [isNumber, 'initial', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Timing Function\n * @see https://tailwindcss.com/docs/transition-timing-function\n */\n ease: [{\n ease: ['linear', 'initial', themeEase, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Delay\n * @see https://tailwindcss.com/docs/transition-delay\n */\n delay: [{\n delay: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Animation\n * @see https://tailwindcss.com/docs/animation\n */\n animate: [{\n animate: ['none', themeAnimate, isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------\n // --- Transforms ---\n // ------------------\n /**\n * Backface Visibility\n * @see https://tailwindcss.com/docs/backface-visibility\n */\n backface: [{\n backface: ['hidden', 'visible']\n }],\n /**\n * Perspective\n * @see https://tailwindcss.com/docs/perspective\n */\n perspective: [{\n perspective: [themePerspective, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Perspective Origin\n * @see https://tailwindcss.com/docs/perspective-origin\n */\n 'perspective-origin': [{\n 'perspective-origin': scalePositionWithArbitrary()\n }],\n /**\n * Rotate\n * @see https://tailwindcss.com/docs/rotate\n */\n rotate: [{\n rotate: scaleRotate()\n }],\n /**\n * Rotate X\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-x': [{\n 'rotate-x': scaleRotate()\n }],\n /**\n * Rotate Y\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-y': [{\n 'rotate-y': scaleRotate()\n }],\n /**\n * Rotate Z\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-z': [{\n 'rotate-z': scaleRotate()\n }],\n /**\n * Scale\n * @see https://tailwindcss.com/docs/scale\n */\n scale: [{\n scale: scaleScale()\n }],\n /**\n * Scale X\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-x': [{\n 'scale-x': scaleScale()\n }],\n /**\n * Scale Y\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-y': [{\n 'scale-y': scaleScale()\n }],\n /**\n * Scale Z\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-z': [{\n 'scale-z': scaleScale()\n }],\n /**\n * Scale 3D\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-3d': ['scale-3d'],\n /**\n * Skew\n * @see https://tailwindcss.com/docs/skew\n */\n skew: [{\n skew: scaleSkew()\n }],\n /**\n * Skew X\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-x': [{\n 'skew-x': scaleSkew()\n }],\n /**\n * Skew Y\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-y': [{\n 'skew-y': scaleSkew()\n }],\n /**\n * Transform\n * @see https://tailwindcss.com/docs/transform\n */\n transform: [{\n transform: [isArbitraryVariable, isArbitraryValue, '', 'none', 'gpu', 'cpu']\n }],\n /**\n * Transform Origin\n * @see https://tailwindcss.com/docs/transform-origin\n */\n 'transform-origin': [{\n origin: scalePositionWithArbitrary()\n }],\n /**\n * Transform Style\n * @see https://tailwindcss.com/docs/transform-style\n */\n 'transform-style': [{\n transform: ['3d', 'flat']\n }],\n /**\n * Translate\n * @see https://tailwindcss.com/docs/translate\n */\n translate: [{\n translate: scaleTranslate()\n }],\n /**\n * Translate X\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-x': [{\n 'translate-x': scaleTranslate()\n }],\n /**\n * Translate Y\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-y': [{\n 'translate-y': scaleTranslate()\n }],\n /**\n * Translate Z\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-z': [{\n 'translate-z': scaleTranslate()\n }],\n /**\n * Translate None\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-none': ['translate-none'],\n /**\n * Zoom\n * @see https://tailwindcss.com/docs/zoom\n */\n zoom: [{\n zoom: [isInteger, isArbitraryVariable, isArbitraryValue]\n }],\n // ---------------------\n // --- Interactivity ---\n // ---------------------\n /**\n * Accent Color\n * @see https://tailwindcss.com/docs/accent-color\n */\n accent: [{\n accent: scaleColor()\n }],\n /**\n * Appearance\n * @see https://tailwindcss.com/docs/appearance\n */\n appearance: [{\n appearance: ['none', 'auto']\n }],\n /**\n * Caret Color\n * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n */\n 'caret-color': [{\n caret: scaleColor()\n }],\n /**\n * Color Scheme\n * @see https://tailwindcss.com/docs/color-scheme\n */\n 'color-scheme': [{\n scheme: ['normal', 'dark', 'light', 'light-dark', 'only-dark', 'only-light']\n }],\n /**\n * Cursor\n * @see https://tailwindcss.com/docs/cursor\n */\n cursor: [{\n cursor: ['auto', 'default', 'pointer', 'wait', 'text', 'move', 'help', 'not-allowed', 'none', 'context-menu', 'progress', 'cell', 'crosshair', 'vertical-text', 'alias', 'copy', 'no-drop', 'grab', 'grabbing', 'all-scroll', 'col-resize', 'row-resize', 'n-resize', 'e-resize', 's-resize', 'w-resize', 'ne-resize', 'nw-resize', 'se-resize', 'sw-resize', 'ew-resize', 'ns-resize', 'nesw-resize', 'nwse-resize', 'zoom-in', 'zoom-out', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Field Sizing\n * @see https://tailwindcss.com/docs/field-sizing\n */\n 'field-sizing': [{\n 'field-sizing': ['fixed', 'content']\n }],\n /**\n * Pointer Events\n * @see https://tailwindcss.com/docs/pointer-events\n */\n 'pointer-events': [{\n 'pointer-events': ['auto', 'none']\n }],\n /**\n * Resize\n * @see https://tailwindcss.com/docs/resize\n */\n resize: [{\n resize: ['none', '', 'y', 'x']\n }],\n /**\n * Scroll Behavior\n * @see https://tailwindcss.com/docs/scroll-behavior\n */\n 'scroll-behavior': [{\n scroll: ['auto', 'smooth']\n }],\n /**\n * Scrollbar Thumb Color\n * @see https://tailwindcss.com/docs/scrollbar-color\n */\n 'scrollbar-thumb-color': [{\n 'scrollbar-thumb': scaleColor()\n }],\n /**\n * Scrollbar Track Color\n * @see https://tailwindcss.com/docs/scrollbar-color\n */\n 'scrollbar-track-color': [{\n 'scrollbar-track': scaleColor()\n }],\n /**\n * Scrollbar Gutter\n * @see https://tailwindcss.com/docs/scrollbar-gutter\n */\n 'scrollbar-gutter': [{\n 'scrollbar-gutter': ['auto', 'stable', 'both']\n }],\n /**\n * Scrollbar Width\n * @see https://tailwindcss.com/docs/scrollbar-width\n */\n 'scrollbar-w': [{\n scrollbar: ['auto', 'thin', 'none']\n }],\n /**\n * Scroll Margin\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-m': [{\n 'scroll-m': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Inline\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mx': [{\n 'scroll-mx': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Block\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-my': [{\n 'scroll-my': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Inline Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ms': [{\n 'scroll-ms': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Inline End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-me': [{\n 'scroll-me': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Block Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mbs': [{\n 'scroll-mbs': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Block End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mbe': [{\n 'scroll-mbe': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Top\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mt': [{\n 'scroll-mt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Right\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mr': [{\n 'scroll-mr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Bottom\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mb': [{\n 'scroll-mb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Left\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ml': [{\n 'scroll-ml': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-p': [{\n 'scroll-p': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Inline\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-px': [{\n 'scroll-px': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Block\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-py': [{\n 'scroll-py': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Inline Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-ps': [{\n 'scroll-ps': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Inline End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pe': [{\n 'scroll-pe': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Block Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pbs': [{\n 'scroll-pbs': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Block End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pbe': [{\n 'scroll-pbe': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Top\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pt': [{\n 'scroll-pt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Right\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pr': [{\n 'scroll-pr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Bottom\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pb': [{\n 'scroll-pb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Left\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pl': [{\n 'scroll-pl': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Snap Align\n * @see https://tailwindcss.com/docs/scroll-snap-align\n */\n 'snap-align': [{\n snap: ['start', 'end', 'center', 'align-none']\n }],\n /**\n * Scroll Snap Stop\n * @see https://tailwindcss.com/docs/scroll-snap-stop\n */\n 'snap-stop': [{\n snap: ['normal', 'always']\n }],\n /**\n * Scroll Snap Type\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-type': [{\n snap: ['none', 'x', 'y', 'both']\n }],\n /**\n * Scroll Snap Type Strictness\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-strictness': [{\n snap: ['mandatory', 'proximity']\n }],\n /**\n * Touch Action\n * @see https://tailwindcss.com/docs/touch-action\n */\n touch: [{\n touch: ['auto', 'none', 'manipulation']\n }],\n /**\n * Touch Action X\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-x': [{\n 'touch-pan': ['x', 'left', 'right']\n }],\n /**\n * Touch Action Y\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-y': [{\n 'touch-pan': ['y', 'up', 'down']\n }],\n /**\n * Touch Action Pinch Zoom\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-pz': ['touch-pinch-zoom'],\n /**\n * User Select\n * @see https://tailwindcss.com/docs/user-select\n */\n select: [{\n select: ['none', 'text', 'all', 'auto']\n }],\n /**\n * Will Change\n * @see https://tailwindcss.com/docs/will-change\n */\n 'will-change': [{\n 'will-change': ['auto', 'scroll', 'contents', 'transform', isArbitraryVariable, isArbitraryValue]\n }],\n // -----------\n // --- SVG ---\n // -----------\n /**\n * Fill\n * @see https://tailwindcss.com/docs/fill\n */\n fill: [{\n fill: ['none', ...scaleColor()]\n }],\n /**\n * Stroke Width\n * @see https://tailwindcss.com/docs/stroke-width\n */\n 'stroke-w': [{\n stroke: [isNumber, isArbitraryVariableLength, isArbitraryLength, isArbitraryNumber]\n }],\n /**\n * Stroke\n * @see https://tailwindcss.com/docs/stroke\n */\n stroke: [{\n stroke: ['none', ...scaleColor()]\n }],\n // ---------------------\n // --- Accessibility ---\n // ---------------------\n /**\n * Forced Color Adjust\n * @see https://tailwindcss.com/docs/forced-color-adjust\n */\n 'forced-color-adjust': [{\n 'forced-color-adjust': ['auto', 'none']\n }]\n },\n conflictingClassGroups: {\n 'container-named': ['container-type'],\n overflow: ['overflow-x', 'overflow-y'],\n overscroll: ['overscroll-x', 'overscroll-y'],\n inset: ['inset-x', 'inset-y', 'inset-bs', 'inset-be', 'start', 'end', 'top', 'right', 'bottom', 'left'],\n 'inset-x': ['right', 'left'],\n 'inset-y': ['top', 'bottom'],\n flex: ['basis', 'grow', 'shrink'],\n gap: ['gap-x', 'gap-y'],\n p: ['px', 'py', 'ps', 'pe', 'pbs', 'pbe', 'pt', 'pr', 'pb', 'pl'],\n px: ['pr', 'pl'],\n py: ['pt', 'pb'],\n m: ['mx', 'my', 'ms', 'me', 'mbs', 'mbe', 'mt', 'mr', 'mb', 'ml'],\n mx: ['mr', 'ml'],\n my: ['mt', 'mb'],\n size: ['w', 'h'],\n 'font-size': ['leading'],\n 'fvn-normal': ['fvn-ordinal', 'fvn-slashed-zero', 'fvn-figure', 'fvn-spacing', 'fvn-fraction'],\n 'fvn-ordinal': ['fvn-normal'],\n 'fvn-slashed-zero': ['fvn-normal'],\n 'fvn-figure': ['fvn-normal'],\n 'fvn-spacing': ['fvn-normal'],\n 'fvn-fraction': ['fvn-normal'],\n 'line-clamp': ['display', 'overflow'],\n rounded: ['rounded-s', 'rounded-e', 'rounded-t', 'rounded-r', 'rounded-b', 'rounded-l', 'rounded-ss', 'rounded-se', 'rounded-ee', 'rounded-es', 'rounded-tl', 'rounded-tr', 'rounded-br', 'rounded-bl'],\n 'rounded-s': ['rounded-ss', 'rounded-es'],\n 'rounded-e': ['rounded-se', 'rounded-ee'],\n 'rounded-t': ['rounded-tl', 'rounded-tr'],\n 'rounded-r': ['rounded-tr', 'rounded-br'],\n 'rounded-b': ['rounded-br', 'rounded-bl'],\n 'rounded-l': ['rounded-tl', 'rounded-bl'],\n 'border-spacing': ['border-spacing-x', 'border-spacing-y'],\n 'border-w': ['border-w-x', 'border-w-y', 'border-w-s', 'border-w-e', 'border-w-bs', 'border-w-be', 'border-w-t', 'border-w-r', 'border-w-b', 'border-w-l'],\n 'border-w-x': ['border-w-r', 'border-w-l'],\n 'border-w-y': ['border-w-t', 'border-w-b'],\n 'border-color': ['border-color-x', 'border-color-y', 'border-color-s', 'border-color-e', 'border-color-bs', 'border-color-be', 'border-color-t', 'border-color-r', 'border-color-b', 'border-color-l'],\n 'border-color-x': ['border-color-r', 'border-color-l'],\n 'border-color-y': ['border-color-t', 'border-color-b'],\n translate: ['translate-x', 'translate-y', 'translate-none'],\n 'translate-none': ['translate', 'translate-x', 'translate-y', 'translate-z'],\n 'scroll-m': ['scroll-mx', 'scroll-my', 'scroll-ms', 'scroll-me', 'scroll-mbs', 'scroll-mbe', 'scroll-mt', 'scroll-mr', 'scroll-mb', 'scroll-ml'],\n 'scroll-mx': ['scroll-mr', 'scroll-ml'],\n 'scroll-my': ['scroll-mt', 'scroll-mb'],\n 'scroll-p': ['scroll-px', 'scroll-py', 'scroll-ps', 'scroll-pe', 'scroll-pbs', 'scroll-pbe', 'scroll-pt', 'scroll-pr', 'scroll-pb', 'scroll-pl'],\n 'scroll-px': ['scroll-pr', 'scroll-pl'],\n 'scroll-py': ['scroll-pt', 'scroll-pb'],\n touch: ['touch-x', 'touch-y', 'touch-pz'],\n 'touch-x': ['touch'],\n 'touch-y': ['touch'],\n 'touch-pz': ['touch']\n },\n conflictingClassGroupModifiers: {\n 'font-size': ['leading']\n },\n postfixLookupClassGroups: ['container-type'],\n orderSensitiveModifiers: ['*', '**', 'after', 'backdrop', 'before', 'details-content', 'file', 'first-letter', 'first-line', 'marker', 'placeholder', 'selection']\n };\n};\n\n/**\n * @param baseConfig Config where other config will be merged into. This object will be mutated.\n * @param configExtension Partial config to merge into the `baseConfig`.\n */\nconst mergeConfigs = (baseConfig, {\n cacheSize,\n prefix,\n experimentalParseClassName,\n extend = {},\n override = {}\n}) => {\n overrideProperty(baseConfig, 'cacheSize', cacheSize);\n overrideProperty(baseConfig, 'prefix', prefix);\n overrideProperty(baseConfig, 'experimentalParseClassName', experimentalParseClassName);\n overrideConfigProperties(baseConfig.theme, override.theme);\n overrideConfigProperties(baseConfig.classGroups, override.classGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroups, override.conflictingClassGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroupModifiers, override.conflictingClassGroupModifiers);\n overrideProperty(baseConfig, 'postfixLookupClassGroups', override.postfixLookupClassGroups);\n overrideProperty(baseConfig, 'orderSensitiveModifiers', override.orderSensitiveModifiers);\n mergeConfigProperties(baseConfig.theme, extend.theme);\n mergeConfigProperties(baseConfig.classGroups, extend.classGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroups, extend.conflictingClassGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroupModifiers, extend.conflictingClassGroupModifiers);\n mergeArrayProperties(baseConfig, extend, 'postfixLookupClassGroups');\n mergeArrayProperties(baseConfig, extend, 'orderSensitiveModifiers');\n return baseConfig;\n};\nconst overrideProperty = (baseObject, overrideKey, overrideValue) => {\n if (overrideValue !== undefined) {\n baseObject[overrideKey] = overrideValue;\n }\n};\nconst overrideConfigProperties = (baseObject, overrideObject) => {\n if (overrideObject) {\n for (const key in overrideObject) {\n overrideProperty(baseObject, key, overrideObject[key]);\n }\n }\n};\nconst mergeConfigProperties = (baseObject, mergeObject) => {\n if (mergeObject) {\n for (const key in mergeObject) {\n mergeArrayProperties(baseObject, mergeObject, key);\n }\n }\n};\nconst mergeArrayProperties = (baseObject, mergeObject, key) => {\n const mergeValue = mergeObject[key];\n if (mergeValue !== undefined) {\n baseObject[key] = baseObject[key] ? baseObject[key].concat(mergeValue) : mergeValue;\n }\n};\nconst extendTailwindMerge = (configExtension, ...createConfig) => typeof configExtension === 'function' ? createTailwindMerge(getDefaultConfig, configExtension, ...createConfig) : createTailwindMerge(() => mergeConfigs(getDefaultConfig(), configExtension), ...createConfig);\nconst twMerge = /*#__PURE__*/createTailwindMerge(getDefaultConfig);\nexport { createTailwindMerge, extendTailwindMerge, fromTheme, getDefaultConfig, mergeConfigs, twJoin, twMerge, validators };\n//# sourceMappingURL=bundle-mjs.mjs.map\n","import { type ClassValue, clsx } from 'clsx'\nimport { twMerge } from 'tailwind-merge'\n\n/**\n * Uses clsx and tailwind-merge to construct className strings conditionally.\n * @param {ClassValue[]} inputs - Any number of arguments, can be Object, Array, Boolean, or String\n * @returns {string} The combined class names, merged without style conflicts\n * @see {@link https://github.com/lukeed/clsx#usage}\n * @see {@link https://github.com/dcastil/tailwind-merge}\n * @example\n * ```jsx\n * <p className={cn('text-center', { 'text-blue-500': isBlue })}>\n * Hello, world!\n * </p>\n * ```\n */\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs))\n}\n","import React from 'react'\n\nimport { cn } from '../utils'\n\nexport type ButtonSize = 'sm' | 'md' | 'lg'\n\nconst sizeClasses: Record<ButtonSize, string> = {\n sm: 'py-1.5 px-3 text-sm rounded-lg',\n md: 'py-2.5 px-4 text-base rounded-xl',\n lg: 'py-3 px-5 text-lg rounded-xl',\n}\n\nexport interface ConnectWalletButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n /** Size variant for the button */\n size?: ButtonSize\n style?: React.CSSProperties\n}\n\nexport const ConnectWalletButton = React.forwardRef<\n HTMLButtonElement,\n ConnectWalletButtonProps\n>(({ className = '', children, style, size = 'md', ...props }, ref) => {\n // Base styles using CSS custom properties for theming\n const baseStyles =\n 'bg-[var(--wui-color-primary)] transition-colors hover:bg-[var(--wui-color-primary-hover)] text-[var(--wui-color-primary-text)] font-bold cursor-pointer disabled:opacity-50 wallet-custom-font'\n\n return (\n <button\n ref={ref}\n data-wallet-ui\n data-wallet-button\n className={cn(baseStyles, sizeClasses[size], className)}\n style={style}\n {...props}\n type=\"button\"\n >\n {children || 'Connect Wallet'}\n </button>\n )\n})\n\nConnectWalletButton.displayName = 'ConnectWalletButton'\n","// src/subscribable.ts\nvar Subscribable = class {\n constructor() {\n this.listeners = /* @__PURE__ */ new Set();\n this.subscribe = this.subscribe.bind(this);\n }\n subscribe(listener) {\n this.listeners.add(listener);\n this.onSubscribe();\n return () => {\n this.listeners.delete(listener);\n this.onUnsubscribe();\n };\n }\n hasListeners() {\n return this.listeners.size > 0;\n }\n onSubscribe() {\n }\n onUnsubscribe() {\n }\n};\nexport {\n Subscribable\n};\n//# sourceMappingURL=subscribable.js.map","// src/focusManager.ts\nimport { Subscribable } from \"./subscribable.js\";\nvar FocusManager = class extends Subscribable {\n #focused;\n #cleanup;\n #setup;\n constructor() {\n super();\n this.#setup = (onFocus) => {\n if (typeof window !== \"undefined\" && window.addEventListener) {\n const listener = () => onFocus();\n window.addEventListener(\"visibilitychange\", listener, false);\n return () => {\n window.removeEventListener(\"visibilitychange\", listener);\n };\n }\n return;\n };\n }\n onSubscribe() {\n if (!this.#cleanup) {\n this.setEventListener(this.#setup);\n }\n }\n onUnsubscribe() {\n if (!this.hasListeners()) {\n this.#cleanup?.();\n this.#cleanup = void 0;\n }\n }\n setEventListener(setup) {\n this.#setup = setup;\n this.#cleanup?.();\n this.#cleanup = setup((focused) => {\n if (typeof focused === \"boolean\") {\n this.setFocused(focused);\n } else {\n this.onFocus();\n }\n });\n }\n setFocused(focused) {\n const changed = this.#focused !== focused;\n if (changed) {\n this.#focused = focused;\n this.onFocus();\n }\n }\n onFocus() {\n const isFocused = this.isFocused();\n this.listeners.forEach((listener) => {\n listener(isFocused);\n });\n }\n isFocused() {\n if (typeof this.#focused === \"boolean\") {\n return this.#focused;\n }\n return globalThis.document?.visibilityState !== \"hidden\";\n }\n};\nvar focusManager = new FocusManager();\nexport {\n FocusManager,\n focusManager\n};\n//# sourceMappingURL=focusManager.js.map","// src/timeoutManager.ts\nvar defaultTimeoutProvider = {\n // We need the wrapper function syntax below instead of direct references to\n // global setTimeout etc.\n //\n // BAD: `setTimeout: setTimeout`\n // GOOD: `setTimeout: (cb, delay) => setTimeout(cb, delay)`\n //\n // If we use direct references here, then anything that wants to spy on or\n // replace the global setTimeout (like tests) won't work since we'll already\n // have a hard reference to the original implementation at the time when this\n // file was imported.\n setTimeout: (callback, delay) => setTimeout(callback, delay),\n clearTimeout: (timeoutId) => clearTimeout(timeoutId),\n setInterval: (callback, delay) => setInterval(callback, delay),\n clearInterval: (intervalId) => clearInterval(intervalId)\n};\nvar TimeoutManager = class {\n // We cannot have TimeoutManager<T> as we must instantiate it with a concrete\n // type at app boot; and if we leave that type, then any new timer provider\n // would need to support the default provider's concrete timer ID, which is\n // infeasible across environments.\n //\n // We settle for type safety for the TimeoutProvider type, and accept that\n // this class is unsafe internally to allow for extension.\n #provider = defaultTimeoutProvider;\n #providerCalled = false;\n setTimeoutProvider(provider) {\n if (process.env.NODE_ENV !== \"production\") {\n if (this.#providerCalled && provider !== this.#provider) {\n console.error(\n `[timeoutManager]: Switching provider after calls to previous provider might result in unexpected behavior.`,\n { previous: this.#provider, provider }\n );\n }\n }\n this.#provider = provider;\n if (process.env.NODE_ENV !== \"production\") {\n this.#providerCalled = false;\n }\n }\n setTimeout(callback, delay) {\n if (process.env.NODE_ENV !== \"production\") {\n this.#providerCalled = true;\n }\n return this.#provider.setTimeout(callback, delay);\n }\n clearTimeout(timeoutId) {\n this.#provider.clearTimeout(timeoutId);\n }\n setInterval(callback, delay) {\n if (process.env.NODE_ENV !== \"production\") {\n this.#providerCalled = true;\n }\n return this.#provider.setInterval(callback, delay);\n }\n clearInterval(intervalId) {\n this.#provider.clearInterval(intervalId);\n }\n};\nvar timeoutManager = new TimeoutManager();\nfunction systemSetTimeoutZero(callback) {\n setTimeout(callback, 0);\n}\nexport {\n TimeoutManager,\n defaultTimeoutProvider,\n systemSetTimeoutZero,\n timeoutManager\n};\n//# sourceMappingURL=timeoutManager.js.map","// src/utils.ts\nimport { timeoutManager } from \"./timeoutManager.js\";\nvar isServer = typeof window === \"undefined\" || \"Deno\" in globalThis;\nfunction noop() {\n}\nfunction functionalUpdate(updater, input) {\n return typeof updater === \"function\" ? updater(input) : updater;\n}\nfunction isValidTimeout(value) {\n return typeof value === \"number\" && value >= 0 && value !== Infinity;\n}\nfunction timeUntilStale(updatedAt, staleTime) {\n return Math.max(updatedAt + (staleTime || 0) - Date.now(), 0);\n}\nfunction resolveStaleTime(staleTime, query) {\n return typeof staleTime === \"function\" ? staleTime(query) : staleTime;\n}\nfunction resolveQueryBoolean(option, query) {\n return typeof option === \"function\" ? option(query) : option;\n}\nfunction matchQuery(filters, query) {\n const {\n type = \"all\",\n exact,\n fetchStatus,\n predicate,\n queryKey,\n stale\n } = filters;\n if (queryKey) {\n if (exact) {\n if (query.queryHash !== hashQueryKeyByOptions(queryKey, query.options)) {\n return false;\n }\n } else if (!partialMatchKey(query.queryKey, queryKey)) {\n return false;\n }\n }\n if (type !== \"all\") {\n const isActive = query.isActive();\n if (type === \"active\" && !isActive) {\n return false;\n }\n if (type === \"inactive\" && isActive) {\n return false;\n }\n }\n if (typeof stale === \"boolean\" && query.isStale() !== stale) {\n return false;\n }\n if (fetchStatus && fetchStatus !== query.state.fetchStatus) {\n return false;\n }\n if (predicate && !predicate(query)) {\n return false;\n }\n return true;\n}\nfunction matchMutation(filters, mutation) {\n const { exact, status, predicate, mutationKey } = filters;\n if (mutationKey) {\n if (!mutation.options.mutationKey) {\n return false;\n }\n if (exact) {\n if (hashKey(mutation.options.mutationKey) !== hashKey(mutationKey)) {\n return false;\n }\n } else if (!partialMatchKey(mutation.options.mutationKey, mutationKey)) {\n return false;\n }\n }\n if (status && mutation.state.status !== status) {\n return false;\n }\n if (predicate && !predicate(mutation)) {\n return false;\n }\n return true;\n}\nfunction hashQueryKeyByOptions(queryKey, options) {\n const hashFn = options?.queryKeyHashFn || hashKey;\n return hashFn(queryKey);\n}\nfunction hashKey(queryKey) {\n return JSON.stringify(\n queryKey,\n (_, val) => isPlainObject(val) ? Object.keys(val).sort().reduce((result, key) => {\n result[key] = val[key];\n return result;\n }, {}) : val\n );\n}\nfunction partialMatchKey(a, b) {\n if (a === b) {\n return true;\n }\n if (typeof a !== typeof b) {\n return false;\n }\n if (a && b && typeof a === \"object\" && typeof b === \"object\") {\n return Object.keys(b).every((key) => partialMatchKey(a[key], b[key]));\n }\n return false;\n}\nvar hasOwn = Object.prototype.hasOwnProperty;\nfunction replaceEqualDeep(a, b, depth = 0) {\n if (a === b) {\n return a;\n }\n if (depth > 500) return b;\n const array = isPlainArray(a) && isPlainArray(b);\n if (!array && !(isPlainObject(a) && isPlainObject(b))) return b;\n const aItems = array ? a : Object.keys(a);\n const aSize = aItems.length;\n const bItems = array ? b : Object.keys(b);\n const bSize = bItems.length;\n const copy = array ? new Array(bSize) : {};\n let equalItems = 0;\n for (let i = 0; i < bSize; i++) {\n const key = array ? i : bItems[i];\n const aItem = a[key];\n const bItem = b[key];\n if (aItem === bItem) {\n copy[key] = aItem;\n if (array ? i < aSize : hasOwn.call(a, key)) equalItems++;\n continue;\n }\n if (aItem === null || bItem === null || typeof aItem !== \"object\" || typeof bItem !== \"object\") {\n copy[key] = bItem;\n continue;\n }\n const v = replaceEqualDeep(aItem, bItem, depth + 1);\n copy[key] = v;\n if (v === aItem) equalItems++;\n }\n return aSize === bSize && equalItems === aSize ? a : copy;\n}\nfunction shallowEqualObjects(a, b) {\n if (!b || Object.keys(a).length !== Object.keys(b).length) {\n return false;\n }\n for (const key in a) {\n if (a[key] !== b[key]) {\n return false;\n }\n }\n return true;\n}\nfunction isPlainArray(value) {\n return Array.isArray(value) && value.length === Object.keys(value).length;\n}\nfunction isPlainObject(o) {\n if (!hasObjectPrototype(o)) {\n return false;\n }\n const ctor = o.constructor;\n if (ctor === void 0) {\n return true;\n }\n const prot = ctor.prototype;\n if (!hasObjectPrototype(prot)) {\n return false;\n }\n if (!prot.hasOwnProperty(\"isPrototypeOf\")) {\n return false;\n }\n if (Object.getPrototypeOf(o) !== Object.prototype) {\n return false;\n }\n return true;\n}\nfunction hasObjectPrototype(o) {\n return Object.prototype.toString.call(o) === \"[object Object]\";\n}\nfunction sleep(timeout) {\n return new Promise((resolve) => {\n timeoutManager.setTimeout(resolve, timeout);\n });\n}\nfunction replaceData(prevData, data, options) {\n if (typeof options.structuralSharing === \"function\") {\n return options.structuralSharing(prevData, data);\n } else if (options.structuralSharing !== false) {\n if (process.env.NODE_ENV !== \"production\") {\n try {\n return replaceEqualDeep(prevData, data);\n } catch (error) {\n console.error(\n `Structural sharing requires data to be JSON serializable. To fix this, turn off structuralSharing or return JSON-serializable data from your queryFn. [${options.queryHash}]: ${error}`\n );\n throw error;\n }\n }\n return replaceEqualDeep(prevData, data);\n }\n return data;\n}\nfunction keepPreviousData(previousData) {\n return previousData;\n}\nfunction addToEnd(items, item, max = 0) {\n const newItems = [...items, item];\n return max && newItems.length > max ? newItems.slice(1) : newItems;\n}\nfunction addToStart(items, item, max = 0) {\n const newItems = [item, ...items];\n return max && newItems.length > max ? newItems.slice(0, -1) : newItems;\n}\nvar skipToken = /* @__PURE__ */ Symbol();\nfunction ensureQueryFn(options, fetchOptions) {\n if (process.env.NODE_ENV !== \"production\") {\n if (options.queryFn === skipToken) {\n console.error(\n `Attempted to invoke queryFn when set to skipToken. This is likely a configuration error. Query hash: '${options.queryHash}'`\n );\n }\n }\n if (!options.queryFn && fetchOptions?.initialPromise) {\n return () => fetchOptions.initialPromise;\n }\n if (!options.queryFn || options.queryFn === skipToken) {\n return () => Promise.reject(new Error(`Missing queryFn: '${options.queryHash}'`));\n }\n return options.queryFn;\n}\nfunction shouldThrowError(throwOnError, params) {\n if (typeof throwOnError === \"function\") {\n return throwOnError(...params);\n }\n return !!throwOnError;\n}\nfunction addConsumeAwareSignal(object, getSignal, onCancelled) {\n let consumed = false;\n let signal;\n Object.defineProperty(object, \"signal\", {\n enumerable: true,\n get: () => {\n signal ??= getSignal();\n if (consumed) {\n return signal;\n }\n consumed = true;\n if (signal.aborted) {\n onCancelled();\n } else {\n signal.addEventListener(\"abort\", onCancelled, { once: true });\n }\n return signal;\n }\n });\n return object;\n}\nexport {\n addConsumeAwareSignal,\n addToEnd,\n addToStart,\n ensureQueryFn,\n functionalUpdate,\n hashKey,\n hashQueryKeyByOptions,\n isPlainArray,\n isPlainObject,\n isServer,\n isValidTimeout,\n keepPreviousData,\n matchMutation,\n matchQuery,\n noop,\n partialMatchKey,\n replaceData,\n replaceEqualDeep,\n resolveQueryBoolean,\n resolveStaleTime,\n shallowEqualObjects,\n shouldThrowError,\n skipToken,\n sleep,\n timeUntilStale\n};\n//# sourceMappingURL=utils.js.map","// src/environmentManager.ts\nimport { isServer } from \"./utils.js\";\nvar environmentManager = /* @__PURE__ */ (() => {\n let isServerFn = () => isServer;\n return {\n /**\n * Returns whether the current runtime should be treated as a server environment.\n */\n isServer() {\n return isServerFn();\n },\n /**\n * Overrides the server check globally.\n */\n setIsServer(isServerValue) {\n isServerFn = isServerValue;\n }\n };\n})();\nexport {\n environmentManager\n};\n//# sourceMappingURL=environmentManager.js.map","// src/thenable.ts\nimport { noop } from \"./utils.js\";\nfunction pendingThenable() {\n let resolve;\n let reject;\n const thenable = new Promise((_resolve, _reject) => {\n resolve = _resolve;\n reject = _reject;\n });\n thenable.status = \"pending\";\n thenable.catch(() => {\n });\n function finalize(data) {\n Object.assign(thenable, data);\n delete thenable.resolve;\n delete thenable.reject;\n }\n thenable.resolve = (value) => {\n finalize({\n status: \"fulfilled\",\n value\n });\n resolve(value);\n };\n thenable.reject = (reason) => {\n finalize({\n status: \"rejected\",\n reason\n });\n reject(reason);\n };\n return thenable;\n}\nfunction tryResolveSync(promise) {\n let data;\n promise.then((result) => {\n data = result;\n return result;\n }, noop)?.catch(noop);\n if (data !== void 0) {\n return { data };\n }\n return void 0;\n}\nexport {\n pendingThenable,\n tryResolveSync\n};\n//# sourceMappingURL=thenable.js.map","// src/notifyManager.ts\nimport { systemSetTimeoutZero } from \"./timeoutManager.js\";\nvar defaultScheduler = systemSetTimeoutZero;\nfunction createNotifyManager() {\n let queue = [];\n let transactions = 0;\n let notifyFn = (callback) => {\n callback();\n };\n let batchNotifyFn = (callback) => {\n callback();\n };\n let scheduleFn = defaultScheduler;\n const schedule = (callback) => {\n if (transactions) {\n queue.push(callback);\n } else {\n scheduleFn(() => {\n notifyFn(callback);\n });\n }\n };\n const flush = () => {\n const originalQueue = queue;\n queue = [];\n if (originalQueue.length) {\n scheduleFn(() => {\n batchNotifyFn(() => {\n originalQueue.forEach((callback) => {\n notifyFn(callback);\n });\n });\n });\n }\n };\n return {\n batch: (callback) => {\n let result;\n transactions++;\n try {\n result = callback();\n } finally {\n transactions--;\n if (!transactions) {\n flush();\n }\n }\n return result;\n },\n /**\n * All calls to the wrapped function will be batched.\n */\n batchCalls: (callback) => {\n return (...args) => {\n schedule(() => {\n callback(...args);\n });\n };\n },\n schedule,\n /**\n * Use this method to set a custom notify function.\n * This can be used to for example wrap notifications with `React.act` while running tests.\n */\n setNotifyFunction: (fn) => {\n notifyFn = fn;\n },\n /**\n * Use this method to set a custom function to batch notifications together into a single tick.\n * By default React Query will use the batch function provided by ReactDOM or React Native.\n */\n setBatchNotifyFunction: (fn) => {\n batchNotifyFn = fn;\n },\n setScheduler: (fn) => {\n scheduleFn = fn;\n }\n };\n}\nvar notifyManager = createNotifyManager();\nexport {\n createNotifyManager,\n defaultScheduler,\n notifyManager\n};\n//# sourceMappingURL=notifyManager.js.map","// src/onlineManager.ts\nimport { Subscribable } from \"./subscribable.js\";\nvar OnlineManager = class extends Subscribable {\n #online = true;\n #cleanup;\n #setup;\n constructor() {\n super();\n this.#setup = (onOnline) => {\n if (typeof window !== \"undefined\" && window.addEventListener) {\n const onlineListener = () => onOnline(true);\n const offlineListener = () => onOnline(false);\n window.addEventListener(\"online\", onlineListener, false);\n window.addEventListener(\"offline\", offlineListener, false);\n return () => {\n window.removeEventListener(\"online\", onlineListener);\n window.removeEventListener(\"offline\", offlineListener);\n };\n }\n return;\n };\n }\n onSubscribe() {\n if (!this.#cleanup) {\n this.setEventListener(this.#setup);\n }\n }\n onUnsubscribe() {\n if (!this.hasListeners()) {\n this.#cleanup?.();\n this.#cleanup = void 0;\n }\n }\n setEventListener(setup) {\n this.#setup = setup;\n this.#cleanup?.();\n this.#cleanup = setup(this.setOnline.bind(this));\n }\n setOnline(online) {\n const changed = this.#online !== online;\n if (changed) {\n this.#online = online;\n this.listeners.forEach((listener) => {\n listener(online);\n });\n }\n }\n isOnline() {\n return this.#online;\n }\n};\nvar onlineManager = new OnlineManager();\nexport {\n OnlineManager,\n onlineManager\n};\n//# sourceMappingURL=onlineManager.js.map","// src/retryer.ts\nimport { focusManager } from \"./focusManager.js\";\nimport { onlineManager } from \"./onlineManager.js\";\nimport { pendingThenable } from \"./thenable.js\";\nimport { environmentManager } from \"./environmentManager.js\";\nimport { sleep } from \"./utils.js\";\nfunction defaultRetryDelay(failureCount) {\n return Math.min(1e3 * 2 ** failureCount, 3e4);\n}\nfunction canFetch(networkMode) {\n return (networkMode ?? \"online\") === \"online\" ? onlineManager.isOnline() : true;\n}\nvar CancelledError = class extends Error {\n constructor(options) {\n super(\"CancelledError\");\n this.revert = options?.revert;\n this.silent = options?.silent;\n }\n};\nfunction isCancelledError(value) {\n return value instanceof CancelledError;\n}\nfunction createRetryer(config) {\n let isRetryCancelled = false;\n let failureCount = 0;\n let continueFn;\n const thenable = pendingThenable();\n const isResolved = () => thenable.status !== \"pending\";\n const cancel = (cancelOptions) => {\n if (!isResolved()) {\n const error = new CancelledError(cancelOptions);\n reject(error);\n config.onCancel?.(error);\n }\n };\n const cancelRetry = () => {\n isRetryCancelled = true;\n };\n const continueRetry = () => {\n isRetryCancelled = false;\n };\n const canContinue = () => focusManager.isFocused() && (config.networkMode === \"always\" || onlineManager.isOnline()) && config.canRun();\n const canStart = () => canFetch(config.networkMode) && config.canRun();\n const resolve = (value) => {\n if (!isResolved()) {\n continueFn?.();\n thenable.resolve(value);\n }\n };\n const reject = (value) => {\n if (!isResolved()) {\n continueFn?.();\n thenable.reject(value);\n }\n };\n const pause = () => {\n return new Promise((continueResolve) => {\n continueFn = (value) => {\n if (isResolved() || canContinue()) {\n continueResolve(value);\n }\n };\n config.onPause?.();\n }).then(() => {\n continueFn = void 0;\n if (!isResolved()) {\n config.onContinue?.();\n }\n });\n };\n const run = () => {\n if (isResolved()) {\n return;\n }\n let promiseOrValue;\n const initialPromise = failureCount === 0 ? config.initialPromise : void 0;\n try {\n promiseOrValue = initialPromise ?? config.fn();\n } catch (error) {\n promiseOrValue = Promise.reject(error);\n }\n Promise.resolve(promiseOrValue).then(resolve).catch((error) => {\n if (isResolved()) {\n return;\n }\n const retry = config.retry ?? (environmentManager.isServer() ? 0 : 3);\n const retryDelay = config.retryDelay ?? defaultRetryDelay;\n const delay = typeof retryDelay === \"function\" ? retryDelay(failureCount, error) : retryDelay;\n const shouldRetry = retry === true || typeof retry === \"number\" && failureCount < retry || typeof retry === \"function\" && retry(failureCount, error);\n if (isRetryCancelled || !shouldRetry) {\n reject(error);\n return;\n }\n failureCount++;\n config.onFail?.(failureCount, error);\n sleep(delay).then(() => {\n return canContinue() ? void 0 : pause();\n }).then(() => {\n if (isRetryCancelled) {\n reject(error);\n } else {\n run();\n }\n });\n });\n };\n return {\n promise: thenable,\n status: () => thenable.status,\n cancel,\n continue: () => {\n continueFn?.();\n return thenable;\n },\n cancelRetry,\n continueRetry,\n canStart,\n start: () => {\n if (canStart()) {\n run();\n } else {\n pause().then(run);\n }\n return thenable;\n }\n };\n}\nexport {\n CancelledError,\n canFetch,\n createRetryer,\n isCancelledError\n};\n//# sourceMappingURL=retryer.js.map","// src/removable.ts\nimport { timeoutManager } from \"./timeoutManager.js\";\nimport { environmentManager } from \"./environmentManager.js\";\nimport { isValidTimeout } from \"./utils.js\";\nvar Removable = class {\n #gcTimeout;\n destroy() {\n this.clearGcTimeout();\n }\n scheduleGc() {\n this.clearGcTimeout();\n if (isValidTimeout(this.gcTime)) {\n this.#gcTimeout = timeoutManager.setTimeout(() => {\n this.optionalRemove();\n }, this.gcTime);\n }\n }\n updateGcTime(newGcTime) {\n this.gcTime = Math.max(\n this.gcTime || 0,\n newGcTime ?? (environmentManager.isServer() ? Infinity : 5 * 60 * 1e3)\n );\n }\n clearGcTimeout() {\n if (this.#gcTimeout !== void 0) {\n timeoutManager.clearTimeout(this.#gcTimeout);\n this.#gcTimeout = void 0;\n }\n }\n};\nexport {\n Removable\n};\n//# sourceMappingURL=removable.js.map","// src/infiniteQueryBehavior.ts\nimport {\n addConsumeAwareSignal,\n addToEnd,\n addToStart,\n ensureQueryFn\n} from \"./utils.js\";\nfunction infiniteQueryBehavior(pages) {\n return {\n onFetch: (context, query) => {\n const options = context.options;\n const direction = context.fetchOptions?.meta?.fetchMore?.direction;\n const oldPages = context.state.data?.pages || [];\n const oldPageParams = context.state.data?.pageParams || [];\n let result = { pages: [], pageParams: [] };\n let currentPage = 0;\n const fetchFn = async () => {\n let cancelled = false;\n const addSignalProperty = (object) => {\n addConsumeAwareSignal(\n object,\n () => context.signal,\n () => cancelled = true\n );\n };\n const queryFn = ensureQueryFn(context.options, context.fetchOptions);\n const fetchPage = async (data, param, previous) => {\n if (cancelled) {\n return Promise.reject(context.signal.reason);\n }\n if (param == null && data.pages.length) {\n return Promise.resolve(data);\n }\n const createQueryFnContext = () => {\n const queryFnContext2 = {\n client: context.client,\n queryKey: context.queryKey,\n pageParam: param,\n direction: previous ? \"backward\" : \"forward\",\n meta: context.options.meta\n };\n addSignalProperty(queryFnContext2);\n return queryFnContext2;\n };\n const queryFnContext = createQueryFnContext();\n const page = await queryFn(queryFnContext);\n const { maxPages } = context.options;\n const addTo = previous ? addToStart : addToEnd;\n return {\n pages: addTo(data.pages, page, maxPages),\n pageParams: addTo(data.pageParams, param, maxPages)\n };\n };\n if (direction && oldPages.length) {\n const previous = direction === \"backward\";\n const pageParamFn = previous ? getPreviousPageParam : getNextPageParam;\n const oldData = {\n pages: oldPages,\n pageParams: oldPageParams\n };\n const param = pageParamFn(options, oldData);\n result = await fetchPage(oldData, param, previous);\n } else {\n const remainingPages = pages ?? oldPages.length;\n do {\n const param = currentPage === 0 ? oldPageParams[0] ?? options.initialPageParam : getNextPageParam(options, result);\n if (currentPage > 0 && param == null) {\n break;\n }\n result = await fetchPage(result, param);\n currentPage++;\n } while (currentPage < remainingPages);\n }\n return result;\n };\n if (context.options.persister) {\n context.fetchFn = () => {\n return context.options.persister?.(\n fetchFn,\n {\n client: context.client,\n queryKey: context.queryKey,\n meta: context.options.meta,\n signal: context.signal\n },\n query\n );\n };\n } else {\n context.fetchFn = fetchFn;\n }\n }\n };\n}\nfunction getNextPageParam(options, { pages, pageParams }) {\n const lastIndex = pages.length - 1;\n return pages.length > 0 ? options.getNextPageParam(\n pages[lastIndex],\n pages,\n pageParams[lastIndex],\n pageParams\n ) : void 0;\n}\nfunction getPreviousPageParam(options, { pages, pageParams }) {\n return pages.length > 0 ? options.getPreviousPageParam?.(pages[0], pages, pageParams[0], pageParams) : void 0;\n}\nfunction hasNextPage(options, data) {\n if (!data) return false;\n return getNextPageParam(options, data) != null;\n}\nfunction hasPreviousPage(options, data) {\n if (!data || !options.getPreviousPageParam) return false;\n return getPreviousPageParam(options, data) != null;\n}\nexport {\n hasNextPage,\n hasPreviousPage,\n infiniteQueryBehavior\n};\n//# sourceMappingURL=infiniteQueryBehavior.js.map","// src/query.ts\nimport {\n ensureQueryFn,\n noop,\n replaceData,\n resolveQueryBoolean,\n resolveStaleTime,\n skipToken,\n timeUntilStale\n} from \"./utils.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { CancelledError, canFetch, createRetryer } from \"./retryer.js\";\nimport { Removable } from \"./removable.js\";\nimport { infiniteQueryBehavior } from \"./infiniteQueryBehavior.js\";\nvar Query = class extends Removable {\n #queryType;\n #initialState;\n #revertState;\n #cache;\n #client;\n #retryer;\n #defaultOptions;\n #abortSignalConsumed;\n constructor(config) {\n super();\n this.#abortSignalConsumed = false;\n this.#defaultOptions = config.defaultOptions;\n this.setOptions(config.options);\n this.observers = [];\n this.#client = config.client;\n this.#cache = this.#client.getQueryCache();\n this.queryKey = config.queryKey;\n this.queryHash = config.queryHash;\n this.#initialState = getDefaultState(this.options);\n this.state = config.state ?? this.#initialState;\n this.scheduleGc();\n }\n get meta() {\n return this.options.meta;\n }\n get queryType() {\n return this.#queryType;\n }\n get promise() {\n return this.#retryer?.promise;\n }\n setOptions(options) {\n this.options = { ...this.#defaultOptions, ...options };\n if (options?._type) {\n this.#queryType = options._type;\n }\n this.updateGcTime(this.options.gcTime);\n if (this.state && this.state.data === void 0) {\n const defaultState = getDefaultState(this.options);\n if (defaultState.data !== void 0) {\n this.setState(\n successState(defaultState.data, defaultState.dataUpdatedAt)\n );\n this.#initialState = defaultState;\n }\n }\n }\n optionalRemove() {\n if (!this.observers.length && this.state.fetchStatus === \"idle\") {\n this.#cache.remove(this);\n }\n }\n setData(newData, options) {\n const data = replaceData(this.state.data, newData, this.options);\n this.#dispatch({\n data,\n type: \"success\",\n dataUpdatedAt: options?.updatedAt,\n manual: options?.manual\n });\n return data;\n }\n setState(state) {\n this.#dispatch({ type: \"setState\", state });\n }\n cancel(options) {\n const promise = this.#retryer?.promise;\n this.#retryer?.cancel(options);\n return promise ? promise.then(noop).catch(noop) : Promise.resolve();\n }\n destroy() {\n super.destroy();\n this.cancel({ silent: true });\n }\n get resetState() {\n return this.#initialState;\n }\n reset() {\n this.destroy();\n this.setState(this.resetState);\n }\n isActive() {\n return this.observers.some(\n (observer) => resolveQueryBoolean(observer.options.enabled, this) !== false\n );\n }\n isDisabled() {\n if (this.getObserversCount() > 0) {\n return !this.isActive();\n }\n return this.options.queryFn === skipToken || !this.isFetched();\n }\n isFetched() {\n return this.state.dataUpdateCount + this.state.errorUpdateCount > 0;\n }\n isStatic() {\n if (this.getObserversCount() > 0) {\n return this.observers.some(\n (observer) => resolveStaleTime(observer.options.staleTime, this) === \"static\"\n );\n }\n return false;\n }\n isStale() {\n if (this.getObserversCount() > 0) {\n return this.observers.some(\n (observer) => observer.getCurrentResult().isStale\n );\n }\n return this.state.data === void 0 || this.state.isInvalidated;\n }\n isStaleByTime(staleTime = 0) {\n if (this.state.data === void 0) {\n return true;\n }\n if (staleTime === \"static\") {\n return false;\n }\n if (this.state.isInvalidated) {\n return true;\n }\n return !timeUntilStale(this.state.dataUpdatedAt, staleTime);\n }\n onFocus() {\n const observer = this.observers.find((x) => x.shouldFetchOnWindowFocus());\n observer?.refetch({ cancelRefetch: false });\n this.#retryer?.continue();\n }\n onOnline() {\n const observer = this.observers.find((x) => x.shouldFetchOnReconnect());\n observer?.refetch({ cancelRefetch: false });\n this.#retryer?.continue();\n }\n addObserver(observer) {\n if (!this.observers.includes(observer)) {\n this.observers.push(observer);\n this.clearGcTimeout();\n this.#cache.notify({ type: \"observerAdded\", query: this, observer });\n }\n }\n removeObserver(observer) {\n if (this.observers.includes(observer)) {\n this.observers = this.observers.filter((x) => x !== observer);\n if (!this.observers.length) {\n if (this.#retryer) {\n if (this.#abortSignalConsumed || this.#isInitialPausedFetch()) {\n this.#retryer.cancel({ revert: true });\n } else {\n this.#retryer.cancelRetry();\n }\n }\n this.scheduleGc();\n }\n this.#cache.notify({ type: \"observerRemoved\", query: this, observer });\n }\n }\n getObserversCount() {\n return this.observers.length;\n }\n #isInitialPausedFetch() {\n return this.state.fetchStatus === \"paused\" && this.state.status === \"pending\";\n }\n invalidate() {\n if (!this.state.isInvalidated) {\n this.#dispatch({ type: \"invalidate\" });\n }\n }\n async fetch(options, fetchOptions) {\n if (this.state.fetchStatus !== \"idle\" && // If the promise in the retryer is already rejected, we have to definitely\n // re-start the fetch; there is a chance that the query is still in a\n // pending state when that happens\n this.#retryer?.status() !== \"rejected\") {\n if (this.state.data !== void 0 && fetchOptions?.cancelRefetch) {\n this.cancel({ silent: true });\n } else if (this.#retryer) {\n this.#retryer.continueRetry();\n return this.#retryer.promise;\n }\n }\n if (options) {\n this.setOptions(options);\n }\n if (!this.options.queryFn) {\n const observer = this.observers.find((x) => x.options.queryFn);\n if (observer) {\n this.setOptions(observer.options);\n }\n }\n if (process.env.NODE_ENV !== \"production\") {\n if (!Array.isArray(this.options.queryKey)) {\n console.error(\n `As of v4, queryKey needs to be an Array. If you are using a string like 'repoData', please change it to an Array, e.g. ['repoData']`\n );\n }\n }\n const abortController = new AbortController();\n const addSignalProperty = (object) => {\n Object.defineProperty(object, \"signal\", {\n enumerable: true,\n get: () => {\n this.#abortSignalConsumed = true;\n return abortController.signal;\n }\n });\n };\n const fetchFn = () => {\n const queryFn = ensureQueryFn(this.options, fetchOptions);\n const createQueryFnContext = () => {\n const queryFnContext2 = {\n client: this.#client,\n queryKey: this.queryKey,\n meta: this.meta\n };\n addSignalProperty(queryFnContext2);\n return queryFnContext2;\n };\n const queryFnContext = createQueryFnContext();\n this.#abortSignalConsumed = false;\n if (this.options.persister) {\n return this.options.persister(\n queryFn,\n queryFnContext,\n this\n );\n }\n return queryFn(queryFnContext);\n };\n const createFetchContext = () => {\n const context2 = {\n fetchOptions,\n options: this.options,\n queryKey: this.queryKey,\n client: this.#client,\n state: this.state,\n fetchFn\n };\n addSignalProperty(context2);\n return context2;\n };\n const context = createFetchContext();\n const behavior = this.#queryType === \"infinite\" ? infiniteQueryBehavior(\n this.options.pages\n ) : this.options.behavior;\n behavior?.onFetch(context, this);\n this.#revertState = this.state;\n if (this.state.fetchStatus === \"idle\" || this.state.fetchMeta !== context.fetchOptions?.meta) {\n this.#dispatch({ type: \"fetch\", meta: context.fetchOptions?.meta });\n }\n this.#retryer = createRetryer({\n initialPromise: fetchOptions?.initialPromise,\n fn: context.fetchFn,\n onCancel: (error) => {\n if (error instanceof CancelledError && error.revert) {\n this.setState({\n ...this.#revertState,\n fetchStatus: \"idle\"\n });\n }\n abortController.abort();\n },\n onFail: (failureCount, error) => {\n this.#dispatch({ type: \"failed\", failureCount, error });\n },\n onPause: () => {\n this.#dispatch({ type: \"pause\" });\n },\n onContinue: () => {\n this.#dispatch({ type: \"continue\" });\n },\n retry: context.options.retry,\n retryDelay: context.options.retryDelay,\n networkMode: context.options.networkMode,\n canRun: () => true\n });\n try {\n const data = await this.#retryer.start();\n if (data === void 0) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(\n `Query data cannot be undefined. Please make sure to return a value other than undefined from your query function. Affected query key: ${this.queryHash}`\n );\n }\n throw new Error(`${this.queryHash} data is undefined`);\n }\n this.setData(data);\n this.#cache.config.onSuccess?.(data, this);\n this.#cache.config.onSettled?.(\n data,\n this.state.error,\n this\n );\n return data;\n } catch (error) {\n if (error instanceof CancelledError) {\n if (error.silent) {\n return this.#retryer.promise;\n } else if (error.revert) {\n if (this.state.data === void 0) {\n throw error;\n }\n return this.state.data;\n }\n }\n this.#dispatch({\n type: \"error\",\n error\n });\n this.#cache.config.onError?.(\n error,\n this\n );\n this.#cache.config.onSettled?.(\n this.state.data,\n error,\n this\n );\n throw error;\n } finally {\n this.scheduleGc();\n }\n }\n #dispatch(action) {\n const reducer = (state) => {\n switch (action.type) {\n case \"failed\":\n return {\n ...state,\n fetchFailureCount: action.failureCount,\n fetchFailureReason: action.error\n };\n case \"pause\":\n return {\n ...state,\n fetchStatus: \"paused\"\n };\n case \"continue\":\n return {\n ...state,\n fetchStatus: \"fetching\"\n };\n case \"fetch\":\n return {\n ...state,\n ...fetchState(state.data, this.options),\n fetchMeta: action.meta ?? null\n };\n case \"success\":\n const newState = {\n ...state,\n ...successState(action.data, action.dataUpdatedAt),\n dataUpdateCount: state.dataUpdateCount + 1,\n ...!action.manual && {\n fetchStatus: \"idle\",\n fetchFailureCount: 0,\n fetchFailureReason: null\n }\n };\n this.#revertState = action.manual ? newState : void 0;\n return newState;\n case \"error\":\n const error = action.error;\n return {\n ...state,\n error,\n errorUpdateCount: state.errorUpdateCount + 1,\n errorUpdatedAt: Date.now(),\n fetchFailureCount: state.fetchFailureCount + 1,\n fetchFailureReason: error,\n fetchStatus: \"idle\",\n status: \"error\",\n // flag existing data as invalidated if we get a background error\n // note that \"no data\" always means stale so we can set unconditionally here\n isInvalidated: true\n };\n case \"invalidate\":\n return {\n ...state,\n isInvalidated: true\n };\n case \"setState\":\n return {\n ...state,\n ...action.state\n };\n }\n };\n this.state = reducer(this.state);\n notifyManager.batch(() => {\n this.observers.forEach((observer) => {\n observer.onQueryUpdate();\n });\n this.#cache.notify({ query: this, type: \"updated\", action });\n });\n }\n};\nfunction fetchState(data, options) {\n return {\n fetchFailureCount: 0,\n fetchFailureReason: null,\n fetchStatus: canFetch(options.networkMode) ? \"fetching\" : \"paused\",\n ...data === void 0 && {\n error: null,\n status: \"pending\"\n }\n };\n}\nfunction successState(data, dataUpdatedAt) {\n return {\n data,\n dataUpdatedAt: dataUpdatedAt ?? Date.now(),\n error: null,\n isInvalidated: false,\n status: \"success\"\n };\n}\nfunction getDefaultState(options) {\n const data = typeof options.initialData === \"function\" ? options.initialData() : options.initialData;\n const hasData = data !== void 0;\n const initialDataUpdatedAt = hasData ? typeof options.initialDataUpdatedAt === \"function\" ? options.initialDataUpdatedAt() : options.initialDataUpdatedAt : 0;\n return {\n data,\n dataUpdateCount: 0,\n dataUpdatedAt: hasData ? initialDataUpdatedAt ?? Date.now() : 0,\n error: null,\n errorUpdateCount: 0,\n errorUpdatedAt: 0,\n fetchFailureCount: 0,\n fetchFailureReason: null,\n fetchMeta: null,\n isInvalidated: false,\n status: hasData ? \"success\" : \"pending\",\n fetchStatus: \"idle\"\n };\n}\nexport {\n Query,\n fetchState\n};\n//# sourceMappingURL=query.js.map","// src/queryObserver.ts\nimport { focusManager } from \"./focusManager.js\";\nimport { environmentManager } from \"./environmentManager.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { fetchState } from \"./query.js\";\nimport { Subscribable } from \"./subscribable.js\";\nimport { pendingThenable } from \"./thenable.js\";\nimport {\n isValidTimeout,\n noop,\n replaceData,\n resolveQueryBoolean,\n resolveStaleTime,\n shallowEqualObjects,\n timeUntilStale\n} from \"./utils.js\";\nimport { timeoutManager } from \"./timeoutManager.js\";\nvar QueryObserver = class extends Subscribable {\n constructor(client, options) {\n super();\n this.options = options;\n this.#client = client;\n this.#selectError = null;\n this.#currentThenable = pendingThenable();\n this.bindMethods();\n this.setOptions(options);\n }\n #client;\n #currentQuery = void 0;\n #currentQueryInitialState = void 0;\n #currentResult = void 0;\n #currentResultState;\n #currentResultOptions;\n #currentThenable;\n #selectError;\n #selectFn;\n #selectResult;\n // This property keeps track of the last query with defined data.\n // It will be used to pass the previous data and query to the placeholder function between renders.\n #lastQueryWithDefinedData;\n #staleTimeoutId;\n #refetchIntervalId;\n #currentRefetchInterval;\n #trackedProps = /* @__PURE__ */ new Set();\n bindMethods() {\n this.refetch = this.refetch.bind(this);\n }\n onSubscribe() {\n if (this.listeners.size === 1) {\n this.#currentQuery.addObserver(this);\n if (shouldFetchOnMount(this.#currentQuery, this.options)) {\n this.#executeFetch();\n } else {\n this.updateResult();\n }\n this.#updateTimers();\n }\n }\n onUnsubscribe() {\n if (!this.hasListeners()) {\n this.destroy();\n }\n }\n shouldFetchOnReconnect() {\n return shouldFetchOn(\n this.#currentQuery,\n this.options,\n this.options.refetchOnReconnect\n );\n }\n shouldFetchOnWindowFocus() {\n return shouldFetchOn(\n this.#currentQuery,\n this.options,\n this.options.refetchOnWindowFocus\n );\n }\n destroy() {\n this.listeners = /* @__PURE__ */ new Set();\n this.#clearStaleTimeout();\n this.#clearRefetchInterval();\n this.#currentQuery.removeObserver(this);\n }\n setOptions(options) {\n const prevOptions = this.options;\n const prevQuery = this.#currentQuery;\n this.options = this.#client.defaultQueryOptions(options);\n if (this.options.enabled !== void 0 && typeof this.options.enabled !== \"boolean\" && typeof this.options.enabled !== \"function\" && typeof resolveQueryBoolean(this.options.enabled, this.#currentQuery) !== \"boolean\") {\n throw new Error(\n \"Expected enabled to be a boolean or a callback that returns a boolean\"\n );\n }\n this.#updateQuery();\n this.#currentQuery.setOptions(this.options);\n if (prevOptions._defaulted && !shallowEqualObjects(this.options, prevOptions)) {\n this.#client.getQueryCache().notify({\n type: \"observerOptionsUpdated\",\n query: this.#currentQuery,\n observer: this\n });\n }\n const mounted = this.hasListeners();\n if (mounted && shouldFetchOptionally(\n this.#currentQuery,\n prevQuery,\n this.options,\n prevOptions\n )) {\n this.#executeFetch();\n }\n this.updateResult();\n if (mounted && (this.#currentQuery !== prevQuery || resolveQueryBoolean(this.options.enabled, this.#currentQuery) !== resolveQueryBoolean(prevOptions.enabled, this.#currentQuery) || resolveStaleTime(this.options.staleTime, this.#currentQuery) !== resolveStaleTime(prevOptions.staleTime, this.#currentQuery))) {\n this.#updateStaleTimeout();\n }\n const nextRefetchInterval = this.#computeRefetchInterval();\n if (mounted && (this.#currentQuery !== prevQuery || resolveQueryBoolean(this.options.enabled, this.#currentQuery) !== resolveQueryBoolean(prevOptions.enabled, this.#currentQuery) || nextRefetchInterval !== this.#currentRefetchInterval)) {\n this.#updateRefetchInterval(nextRefetchInterval);\n }\n }\n getOptimisticResult(options) {\n const query = this.#client.getQueryCache().build(this.#client, options);\n const result = this.createResult(query, options);\n if (shouldAssignObserverCurrentProperties(this, result)) {\n this.#currentResult = result;\n this.#currentResultOptions = this.options;\n this.#currentResultState = this.#currentQuery.state;\n }\n return result;\n }\n getCurrentResult() {\n return this.#currentResult;\n }\n trackResult(result, onPropTracked) {\n return new Proxy(result, {\n get: (target, key) => {\n this.trackProp(key);\n onPropTracked?.(key);\n if (key === \"promise\") {\n this.trackProp(\"data\");\n if (!this.options.experimental_prefetchInRender && this.#currentThenable.status === \"pending\") {\n this.#currentThenable.reject(\n new Error(\n \"experimental_prefetchInRender feature flag is not enabled\"\n )\n );\n }\n }\n return Reflect.get(target, key);\n }\n });\n }\n trackProp(key) {\n this.#trackedProps.add(key);\n }\n getCurrentQuery() {\n return this.#currentQuery;\n }\n refetch({ ...options } = {}) {\n return this.fetch({\n ...options\n });\n }\n fetchOptimistic(options) {\n const defaultedOptions = this.#client.defaultQueryOptions(options);\n const query = this.#client.getQueryCache().build(this.#client, defaultedOptions);\n return query.fetch().then(() => this.createResult(query, defaultedOptions));\n }\n fetch(fetchOptions) {\n return this.#executeFetch({\n ...fetchOptions,\n cancelRefetch: fetchOptions.cancelRefetch ?? true\n }).then(() => {\n this.updateResult();\n return this.#currentResult;\n });\n }\n #executeFetch(fetchOptions) {\n this.#updateQuery();\n let promise = this.#currentQuery.fetch(\n this.options,\n fetchOptions\n );\n if (!fetchOptions?.throwOnError) {\n promise = promise.catch(noop);\n }\n return promise;\n }\n #updateStaleTimeout() {\n this.#clearStaleTimeout();\n const staleTime = resolveStaleTime(\n this.options.staleTime,\n this.#currentQuery\n );\n if (environmentManager.isServer() || this.#currentResult.isStale || !isValidTimeout(staleTime)) {\n return;\n }\n const time = timeUntilStale(this.#currentResult.dataUpdatedAt, staleTime);\n const timeout = time + 1;\n this.#staleTimeoutId = timeoutManager.setTimeout(() => {\n if (!this.#currentResult.isStale) {\n this.updateResult();\n }\n }, timeout);\n }\n #computeRefetchInterval() {\n return (typeof this.options.refetchInterval === \"function\" ? this.options.refetchInterval(this.#currentQuery) : this.options.refetchInterval) ?? false;\n }\n #updateRefetchInterval(nextInterval) {\n this.#clearRefetchInterval();\n this.#currentRefetchInterval = nextInterval;\n if (environmentManager.isServer() || resolveQueryBoolean(this.options.enabled, this.#currentQuery) === false || !isValidTimeout(this.#currentRefetchInterval) || this.#currentRefetchInterval === 0) {\n return;\n }\n this.#refetchIntervalId = timeoutManager.setInterval(() => {\n if (this.options.refetchIntervalInBackground || focusManager.isFocused()) {\n this.#executeFetch();\n }\n }, this.#currentRefetchInterval);\n }\n #updateTimers() {\n this.#updateStaleTimeout();\n this.#updateRefetchInterval(this.#computeRefetchInterval());\n }\n #clearStaleTimeout() {\n if (this.#staleTimeoutId !== void 0) {\n timeoutManager.clearTimeout(this.#staleTimeoutId);\n this.#staleTimeoutId = void 0;\n }\n }\n #clearRefetchInterval() {\n if (this.#refetchIntervalId !== void 0) {\n timeoutManager.clearInterval(this.#refetchIntervalId);\n this.#refetchIntervalId = void 0;\n }\n }\n createResult(query, options) {\n const prevQuery = this.#currentQuery;\n const prevOptions = this.options;\n const prevResult = this.#currentResult;\n const prevResultState = this.#currentResultState;\n const prevResultOptions = this.#currentResultOptions;\n const queryChange = query !== prevQuery;\n const queryInitialState = queryChange ? query.state : this.#currentQueryInitialState;\n const { state } = query;\n let newState = { ...state };\n let isPlaceholderData = false;\n let data;\n if (options._optimisticResults) {\n const mounted = this.hasListeners();\n const fetchOnMount = !mounted && shouldFetchOnMount(query, options);\n const fetchOptionally = mounted && shouldFetchOptionally(query, prevQuery, options, prevOptions);\n if (fetchOnMount || fetchOptionally) {\n newState = {\n ...newState,\n ...fetchState(state.data, query.options)\n };\n }\n if (options._optimisticResults === \"isRestoring\") {\n newState.fetchStatus = \"idle\";\n }\n }\n let { error, errorUpdatedAt, status } = newState;\n data = newState.data;\n let skipSelect = false;\n if (options.placeholderData !== void 0 && data === void 0 && status === \"pending\") {\n let placeholderData;\n if (prevResult?.isPlaceholderData && options.placeholderData === prevResultOptions?.placeholderData) {\n placeholderData = prevResult.data;\n skipSelect = true;\n } else {\n placeholderData = typeof options.placeholderData === \"function\" ? options.placeholderData(\n this.#lastQueryWithDefinedData?.state.data,\n this.#lastQueryWithDefinedData\n ) : options.placeholderData;\n }\n if (placeholderData !== void 0) {\n status = \"success\";\n data = replaceData(\n prevResult?.data,\n placeholderData,\n options\n );\n isPlaceholderData = true;\n }\n }\n if (options.select && data !== void 0 && !skipSelect) {\n if (prevResult && data === prevResultState?.data && options.select === this.#selectFn) {\n data = this.#selectResult;\n } else {\n try {\n this.#selectFn = options.select;\n data = options.select(data);\n data = replaceData(prevResult?.data, data, options);\n this.#selectResult = data;\n this.#selectError = null;\n } catch (selectError) {\n this.#selectError = selectError;\n }\n }\n }\n if (this.#selectError) {\n error = this.#selectError;\n data = this.#selectResult;\n errorUpdatedAt = Date.now();\n status = \"error\";\n }\n const isFetching = newState.fetchStatus === \"fetching\";\n const isPending = status === \"pending\";\n const isError = status === \"error\";\n const isLoading = isPending && isFetching;\n const hasData = data !== void 0;\n const result = {\n status,\n fetchStatus: newState.fetchStatus,\n isPending,\n isSuccess: status === \"success\",\n isError,\n isInitialLoading: isLoading,\n isLoading,\n data,\n dataUpdatedAt: newState.dataUpdatedAt,\n error,\n errorUpdatedAt,\n failureCount: newState.fetchFailureCount,\n failureReason: newState.fetchFailureReason,\n errorUpdateCount: newState.errorUpdateCount,\n isFetched: query.isFetched(),\n isFetchedAfterMount: newState.dataUpdateCount > queryInitialState.dataUpdateCount || newState.errorUpdateCount > queryInitialState.errorUpdateCount,\n isFetching,\n isRefetching: isFetching && !isPending,\n isLoadingError: isError && !hasData,\n isPaused: newState.fetchStatus === \"paused\",\n isPlaceholderData,\n isRefetchError: isError && hasData,\n isStale: isStale(query, options),\n refetch: this.refetch,\n promise: this.#currentThenable,\n isEnabled: resolveQueryBoolean(options.enabled, query) !== false\n };\n const nextResult = result;\n if (this.options.experimental_prefetchInRender) {\n const hasResultData = nextResult.data !== void 0;\n const isErrorWithoutData = nextResult.status === \"error\" && !hasResultData;\n const finalizeThenableIfPossible = (thenable) => {\n if (isErrorWithoutData) {\n thenable.reject(nextResult.error);\n } else if (hasResultData) {\n thenable.resolve(nextResult.data);\n }\n };\n const recreateThenable = () => {\n const pending = this.#currentThenable = nextResult.promise = pendingThenable();\n finalizeThenableIfPossible(pending);\n };\n const prevThenable = this.#currentThenable;\n switch (prevThenable.status) {\n case \"pending\":\n if (query.queryHash === prevQuery.queryHash) {\n finalizeThenableIfPossible(prevThenable);\n }\n break;\n case \"fulfilled\":\n if (isErrorWithoutData || nextResult.data !== prevThenable.value) {\n recreateThenable();\n }\n break;\n case \"rejected\":\n if (!isErrorWithoutData || nextResult.error !== prevThenable.reason) {\n recreateThenable();\n }\n break;\n }\n }\n return nextResult;\n }\n updateResult() {\n const prevResult = this.#currentResult;\n const nextResult = this.createResult(this.#currentQuery, this.options);\n this.#currentResultState = this.#currentQuery.state;\n this.#currentResultOptions = this.options;\n if (this.#currentResultState.data !== void 0) {\n this.#lastQueryWithDefinedData = this.#currentQuery;\n }\n if (shallowEqualObjects(nextResult, prevResult)) {\n return;\n }\n this.#currentResult = nextResult;\n const shouldNotifyListeners = () => {\n if (!prevResult) {\n return true;\n }\n const { notifyOnChangeProps } = this.options;\n const notifyOnChangePropsValue = typeof notifyOnChangeProps === \"function\" ? notifyOnChangeProps() : notifyOnChangeProps;\n if (notifyOnChangePropsValue === \"all\" || !notifyOnChangePropsValue && !this.#trackedProps.size) {\n return true;\n }\n const includedProps = new Set(\n notifyOnChangePropsValue ?? this.#trackedProps\n );\n if (this.options.throwOnError) {\n includedProps.add(\"error\");\n }\n return Object.keys(this.#currentResult).some((key) => {\n const typedKey = key;\n const changed = this.#currentResult[typedKey] !== prevResult[typedKey];\n return changed && includedProps.has(typedKey);\n });\n };\n this.#notify({ listeners: shouldNotifyListeners() });\n }\n #updateQuery() {\n const query = this.#client.getQueryCache().build(this.#client, this.options);\n if (query === this.#currentQuery) {\n return;\n }\n const prevQuery = this.#currentQuery;\n this.#currentQuery = query;\n this.#currentQueryInitialState = query.state;\n if (this.hasListeners()) {\n prevQuery?.removeObserver(this);\n query.addObserver(this);\n }\n }\n onQueryUpdate() {\n this.updateResult();\n if (this.hasListeners()) {\n this.#updateTimers();\n }\n }\n #notify(notifyOptions) {\n notifyManager.batch(() => {\n if (notifyOptions.listeners) {\n this.listeners.forEach((listener) => {\n listener(this.#currentResult);\n });\n }\n this.#client.getQueryCache().notify({\n query: this.#currentQuery,\n type: \"observerResultsUpdated\"\n });\n });\n }\n};\nfunction shouldLoadOnMount(query, options) {\n return resolveQueryBoolean(options.enabled, query) !== false && query.state.data === void 0 && !(query.state.status === \"error\" && resolveQueryBoolean(options.retryOnMount, query) === false);\n}\nfunction shouldFetchOnMount(query, options) {\n return shouldLoadOnMount(query, options) || query.state.data !== void 0 && shouldFetchOn(query, options, options.refetchOnMount);\n}\nfunction shouldFetchOn(query, options, field) {\n if (resolveQueryBoolean(options.enabled, query) !== false && resolveStaleTime(options.staleTime, query) !== \"static\") {\n const value = typeof field === \"function\" ? field(query) : field;\n return value === \"always\" || value !== false && isStale(query, options);\n }\n return false;\n}\nfunction shouldFetchOptionally(query, prevQuery, options, prevOptions) {\n return (query !== prevQuery || resolveQueryBoolean(prevOptions.enabled, query) === false) && (!options.suspense || query.state.status !== \"error\") && isStale(query, options);\n}\nfunction isStale(query, options) {\n return resolveQueryBoolean(options.enabled, query) !== false && query.isStaleByTime(resolveStaleTime(options.staleTime, query));\n}\nfunction shouldAssignObserverCurrentProperties(observer, optimisticResult) {\n if (!shallowEqualObjects(observer.getCurrentResult(), optimisticResult)) {\n return true;\n }\n return false;\n}\nexport {\n QueryObserver\n};\n//# sourceMappingURL=queryObserver.js.map","// src/mutation.ts\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Removable } from \"./removable.js\";\nimport { createRetryer } from \"./retryer.js\";\nvar Mutation = class extends Removable {\n #client;\n #observers;\n #mutationCache;\n #retryer;\n constructor(config) {\n super();\n this.#client = config.client;\n this.mutationId = config.mutationId;\n this.#mutationCache = config.mutationCache;\n this.#observers = [];\n this.state = config.state || getDefaultState();\n this.setOptions(config.options);\n this.scheduleGc();\n }\n setOptions(options) {\n this.options = options;\n this.updateGcTime(this.options.gcTime);\n }\n get meta() {\n return this.options.meta;\n }\n addObserver(observer) {\n if (!this.#observers.includes(observer)) {\n this.#observers.push(observer);\n this.clearGcTimeout();\n this.#mutationCache.notify({\n type: \"observerAdded\",\n mutation: this,\n observer\n });\n }\n }\n removeObserver(observer) {\n this.#observers = this.#observers.filter((x) => x !== observer);\n this.scheduleGc();\n this.#mutationCache.notify({\n type: \"observerRemoved\",\n mutation: this,\n observer\n });\n }\n optionalRemove() {\n if (!this.#observers.length) {\n if (this.state.status === \"pending\") {\n this.scheduleGc();\n } else {\n this.#mutationCache.remove(this);\n }\n }\n }\n continue() {\n return this.#retryer?.continue() ?? // continuing a mutation assumes that variables are set, mutation must have been dehydrated before\n this.execute(this.state.variables);\n }\n async execute(variables) {\n const onContinue = () => {\n this.#dispatch({ type: \"continue\" });\n };\n const mutationFnContext = {\n client: this.#client,\n meta: this.options.meta,\n mutationKey: this.options.mutationKey\n };\n this.#retryer = createRetryer({\n fn: () => {\n if (!this.options.mutationFn) {\n return Promise.reject(new Error(\"No mutationFn found\"));\n }\n return this.options.mutationFn(variables, mutationFnContext);\n },\n onFail: (failureCount, error) => {\n this.#dispatch({ type: \"failed\", failureCount, error });\n },\n onPause: () => {\n this.#dispatch({ type: \"pause\" });\n },\n onContinue,\n retry: this.options.retry ?? 0,\n retryDelay: this.options.retryDelay,\n networkMode: this.options.networkMode,\n canRun: () => this.#mutationCache.canRun(this)\n });\n const restored = this.state.status === \"pending\";\n const isPaused = !this.#retryer.canStart();\n try {\n if (restored) {\n onContinue();\n } else {\n this.#dispatch({ type: \"pending\", variables, isPaused });\n if (this.#mutationCache.config.onMutate) {\n await this.#mutationCache.config.onMutate(\n variables,\n this,\n mutationFnContext\n );\n }\n const context = await this.options.onMutate?.(\n variables,\n mutationFnContext\n );\n if (context !== this.state.context) {\n this.#dispatch({\n type: \"pending\",\n context,\n variables,\n isPaused\n });\n }\n }\n const data = await this.#retryer.start();\n await this.#mutationCache.config.onSuccess?.(\n data,\n variables,\n this.state.context,\n this,\n mutationFnContext\n );\n await this.options.onSuccess?.(\n data,\n variables,\n this.state.context,\n mutationFnContext\n );\n await this.#mutationCache.config.onSettled?.(\n data,\n null,\n this.state.variables,\n this.state.context,\n this,\n mutationFnContext\n );\n await this.options.onSettled?.(\n data,\n null,\n variables,\n this.state.context,\n mutationFnContext\n );\n this.#dispatch({ type: \"success\", data });\n return data;\n } catch (error) {\n try {\n await this.#mutationCache.config.onError?.(\n error,\n variables,\n this.state.context,\n this,\n mutationFnContext\n );\n } catch (e) {\n void Promise.reject(e);\n }\n try {\n await this.options.onError?.(\n error,\n variables,\n this.state.context,\n mutationFnContext\n );\n } catch (e) {\n void Promise.reject(e);\n }\n try {\n await this.#mutationCache.config.onSettled?.(\n void 0,\n error,\n this.state.variables,\n this.state.context,\n this,\n mutationFnContext\n );\n } catch (e) {\n void Promise.reject(e);\n }\n try {\n await this.options.onSettled?.(\n void 0,\n error,\n variables,\n this.state.context,\n mutationFnContext\n );\n } catch (e) {\n void Promise.reject(e);\n }\n this.#dispatch({ type: \"error\", error });\n throw error;\n } finally {\n this.#mutationCache.runNext(this);\n }\n }\n #dispatch(action) {\n const reducer = (state) => {\n switch (action.type) {\n case \"failed\":\n return {\n ...state,\n failureCount: action.failureCount,\n failureReason: action.error\n };\n case \"pause\":\n return {\n ...state,\n isPaused: true\n };\n case \"continue\":\n return {\n ...state,\n isPaused: false\n };\n case \"pending\":\n return {\n ...state,\n context: action.context,\n data: void 0,\n failureCount: 0,\n failureReason: null,\n error: null,\n isPaused: action.isPaused,\n status: \"pending\",\n variables: action.variables,\n submittedAt: Date.now()\n };\n case \"success\":\n return {\n ...state,\n data: action.data,\n failureCount: 0,\n failureReason: null,\n error: null,\n status: \"success\",\n isPaused: false\n };\n case \"error\":\n return {\n ...state,\n data: void 0,\n error: action.error,\n failureCount: state.failureCount + 1,\n failureReason: action.error,\n isPaused: false,\n status: \"error\"\n };\n }\n };\n this.state = reducer(this.state);\n notifyManager.batch(() => {\n this.#observers.forEach((observer) => {\n observer.onMutationUpdate(action);\n });\n this.#mutationCache.notify({\n mutation: this,\n type: \"updated\",\n action\n });\n });\n }\n};\nfunction getDefaultState() {\n return {\n context: void 0,\n data: void 0,\n error: null,\n failureCount: 0,\n failureReason: null,\n isPaused: false,\n status: \"idle\",\n variables: void 0,\n submittedAt: 0\n };\n}\nexport {\n Mutation,\n getDefaultState\n};\n//# sourceMappingURL=mutation.js.map","// src/mutationCache.ts\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Mutation } from \"./mutation.js\";\nimport { matchMutation, noop } from \"./utils.js\";\nimport { Subscribable } from \"./subscribable.js\";\nvar MutationCache = class extends Subscribable {\n constructor(config = {}) {\n super();\n this.config = config;\n this.#mutations = /* @__PURE__ */ new Set();\n this.#scopes = /* @__PURE__ */ new Map();\n this.#mutationId = 0;\n }\n #mutations;\n #scopes;\n #mutationId;\n build(client, options, state) {\n const mutation = new Mutation({\n client,\n mutationCache: this,\n mutationId: ++this.#mutationId,\n options: client.defaultMutationOptions(options),\n state\n });\n this.add(mutation);\n return mutation;\n }\n add(mutation) {\n this.#mutations.add(mutation);\n const scope = scopeFor(mutation);\n if (typeof scope === \"string\") {\n const scopedMutations = this.#scopes.get(scope);\n if (scopedMutations) {\n scopedMutations.push(mutation);\n } else {\n this.#scopes.set(scope, [mutation]);\n }\n }\n this.notify({ type: \"added\", mutation });\n }\n remove(mutation) {\n if (this.#mutations.delete(mutation)) {\n const scope = scopeFor(mutation);\n if (typeof scope === \"string\") {\n const scopedMutations = this.#scopes.get(scope);\n if (scopedMutations) {\n if (scopedMutations.length > 1) {\n const index = scopedMutations.indexOf(mutation);\n if (index !== -1) {\n scopedMutations.splice(index, 1);\n }\n } else if (scopedMutations[0] === mutation) {\n this.#scopes.delete(scope);\n }\n }\n }\n }\n this.notify({ type: \"removed\", mutation });\n }\n canRun(mutation) {\n const scope = scopeFor(mutation);\n if (typeof scope === \"string\") {\n const mutationsWithSameScope = this.#scopes.get(scope);\n const firstPendingMutation = mutationsWithSameScope?.find(\n (m) => m.state.status === \"pending\"\n );\n return !firstPendingMutation || firstPendingMutation === mutation;\n } else {\n return true;\n }\n }\n runNext(mutation) {\n const scope = scopeFor(mutation);\n if (typeof scope === \"string\") {\n const foundMutation = this.#scopes.get(scope)?.find((m) => m !== mutation && m.state.isPaused);\n return foundMutation?.continue() ?? Promise.resolve();\n } else {\n return Promise.resolve();\n }\n }\n clear() {\n notifyManager.batch(() => {\n this.#mutations.forEach((mutation) => {\n this.notify({ type: \"removed\", mutation });\n });\n this.#mutations.clear();\n this.#scopes.clear();\n });\n }\n getAll() {\n return Array.from(this.#mutations);\n }\n find(filters) {\n const defaultedFilters = { exact: true, ...filters };\n return this.getAll().find(\n (mutation) => matchMutation(defaultedFilters, mutation)\n );\n }\n findAll(filters = {}) {\n return this.getAll().filter((mutation) => matchMutation(filters, mutation));\n }\n notify(event) {\n notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(event);\n });\n });\n }\n resumePausedMutations() {\n const pausedMutations = this.getAll().filter((x) => x.state.isPaused);\n return notifyManager.batch(\n () => Promise.all(\n pausedMutations.map((mutation) => mutation.continue().catch(noop))\n )\n );\n }\n};\nfunction scopeFor(mutation) {\n return mutation.options.scope?.id;\n}\nexport {\n MutationCache\n};\n//# sourceMappingURL=mutationCache.js.map","// src/queryCache.ts\nimport { hashQueryKeyByOptions, matchQuery } from \"./utils.js\";\nimport { Query } from \"./query.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Subscribable } from \"./subscribable.js\";\nvar QueryCache = class extends Subscribable {\n constructor(config = {}) {\n super();\n this.config = config;\n this.#queries = /* @__PURE__ */ new Map();\n }\n #queries;\n build(client, options, state) {\n const queryKey = options.queryKey;\n const queryHash = options.queryHash ?? hashQueryKeyByOptions(queryKey, options);\n let query = this.get(queryHash);\n if (!query) {\n query = new Query({\n client,\n queryKey,\n queryHash,\n options: client.defaultQueryOptions(options),\n state,\n defaultOptions: client.getQueryDefaults(queryKey)\n });\n this.add(query);\n }\n return query;\n }\n add(query) {\n if (!this.#queries.has(query.queryHash)) {\n this.#queries.set(query.queryHash, query);\n this.notify({\n type: \"added\",\n query\n });\n }\n }\n remove(query) {\n const queryInMap = this.#queries.get(query.queryHash);\n if (queryInMap) {\n query.destroy();\n if (queryInMap === query) {\n this.#queries.delete(query.queryHash);\n }\n this.notify({ type: \"removed\", query });\n }\n }\n clear() {\n notifyManager.batch(() => {\n this.getAll().forEach((query) => {\n this.remove(query);\n });\n });\n }\n get(queryHash) {\n return this.#queries.get(queryHash);\n }\n getAll() {\n return [...this.#queries.values()];\n }\n find(filters) {\n const defaultedFilters = { exact: true, ...filters };\n return this.getAll().find(\n (query) => matchQuery(defaultedFilters, query)\n );\n }\n findAll(filters = {}) {\n const queries = this.getAll();\n return Object.keys(filters).length > 0 ? queries.filter((query) => matchQuery(filters, query)) : queries;\n }\n notify(event) {\n notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(event);\n });\n });\n }\n onFocus() {\n notifyManager.batch(() => {\n this.getAll().forEach((query) => {\n query.onFocus();\n });\n });\n }\n onOnline() {\n notifyManager.batch(() => {\n this.getAll().forEach((query) => {\n query.onOnline();\n });\n });\n }\n};\nexport {\n QueryCache\n};\n//# sourceMappingURL=queryCache.js.map","// src/queryClient.ts\nimport {\n functionalUpdate,\n hashKey,\n hashQueryKeyByOptions,\n noop,\n partialMatchKey,\n resolveStaleTime,\n skipToken\n} from \"./utils.js\";\nimport { QueryCache } from \"./queryCache.js\";\nimport { MutationCache } from \"./mutationCache.js\";\nimport { focusManager } from \"./focusManager.js\";\nimport { onlineManager } from \"./onlineManager.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nvar QueryClient = class {\n #queryCache;\n #mutationCache;\n #defaultOptions;\n #queryDefaults;\n #mutationDefaults;\n #mountCount;\n #unsubscribeFocus;\n #unsubscribeOnline;\n constructor(config = {}) {\n this.#queryCache = config.queryCache || new QueryCache();\n this.#mutationCache = config.mutationCache || new MutationCache();\n this.#defaultOptions = config.defaultOptions || {};\n this.#queryDefaults = /* @__PURE__ */ new Map();\n this.#mutationDefaults = /* @__PURE__ */ new Map();\n this.#mountCount = 0;\n }\n mount() {\n this.#mountCount++;\n if (this.#mountCount !== 1) return;\n this.#unsubscribeFocus = focusManager.subscribe(async (focused) => {\n if (focused) {\n await this.resumePausedMutations();\n this.#queryCache.onFocus();\n }\n });\n this.#unsubscribeOnline = onlineManager.subscribe(async (online) => {\n if (online) {\n await this.resumePausedMutations();\n this.#queryCache.onOnline();\n }\n });\n }\n unmount() {\n this.#mountCount--;\n if (this.#mountCount !== 0) return;\n this.#unsubscribeFocus?.();\n this.#unsubscribeFocus = void 0;\n this.#unsubscribeOnline?.();\n this.#unsubscribeOnline = void 0;\n }\n isFetching(filters) {\n return this.#queryCache.findAll({ ...filters, fetchStatus: \"fetching\" }).length;\n }\n isMutating(filters) {\n return this.#mutationCache.findAll({ ...filters, status: \"pending\" }).length;\n }\n /**\n * Imperative (non-reactive) way to retrieve data for a QueryKey.\n * Should only be used in callbacks or functions where reading the latest data is necessary, e.g. for optimistic updates.\n *\n * Hint: Do not use this function inside a component, because it won't receive updates.\n * Use `useQuery` to create a `QueryObserver` that subscribes to changes.\n */\n getQueryData(queryKey) {\n const options = this.defaultQueryOptions({ queryKey });\n return this.#queryCache.get(options.queryHash)?.state.data;\n }\n ensureQueryData(options) {\n const defaultedOptions = this.defaultQueryOptions(options);\n const query = this.#queryCache.build(this, defaultedOptions);\n const cachedData = query.state.data;\n if (cachedData === void 0) {\n return this.fetchQuery(options);\n }\n if (options.revalidateIfStale && query.isStaleByTime(resolveStaleTime(defaultedOptions.staleTime, query))) {\n void this.prefetchQuery(defaultedOptions);\n }\n return Promise.resolve(cachedData);\n }\n getQueriesData(filters) {\n return this.#queryCache.findAll(filters).map(({ queryKey, state }) => {\n const data = state.data;\n return [queryKey, data];\n });\n }\n setQueryData(queryKey, updater, options) {\n const defaultedOptions = this.defaultQueryOptions({ queryKey });\n const query = this.#queryCache.get(\n defaultedOptions.queryHash\n );\n const prevData = query?.state.data;\n const data = functionalUpdate(updater, prevData);\n if (data === void 0) {\n return void 0;\n }\n return this.#queryCache.build(this, defaultedOptions).setData(data, { ...options, manual: true });\n }\n setQueriesData(filters, updater, options) {\n return notifyManager.batch(\n () => this.#queryCache.findAll(filters).map(({ queryKey }) => [\n queryKey,\n this.setQueryData(queryKey, updater, options)\n ])\n );\n }\n getQueryState(queryKey) {\n const options = this.defaultQueryOptions({ queryKey });\n return this.#queryCache.get(\n options.queryHash\n )?.state;\n }\n removeQueries(filters) {\n const queryCache = this.#queryCache;\n notifyManager.batch(() => {\n queryCache.findAll(filters).forEach((query) => {\n queryCache.remove(query);\n });\n });\n }\n resetQueries(filters, options) {\n const queryCache = this.#queryCache;\n return notifyManager.batch(() => {\n queryCache.findAll(filters).forEach((query) => {\n query.reset();\n });\n return this.refetchQueries(\n {\n type: \"active\",\n ...filters\n },\n options\n );\n });\n }\n cancelQueries(filters, cancelOptions = {}) {\n const defaultedCancelOptions = { revert: true, ...cancelOptions };\n const promises = notifyManager.batch(\n () => this.#queryCache.findAll(filters).map((query) => query.cancel(defaultedCancelOptions))\n );\n return Promise.all(promises).then(noop).catch(noop);\n }\n invalidateQueries(filters, options = {}) {\n return notifyManager.batch(() => {\n this.#queryCache.findAll(filters).forEach((query) => {\n query.invalidate();\n });\n if (filters?.refetchType === \"none\") {\n return Promise.resolve();\n }\n return this.refetchQueries(\n {\n ...filters,\n type: filters?.refetchType ?? filters?.type ?? \"active\"\n },\n options\n );\n });\n }\n refetchQueries(filters, options = {}) {\n const fetchOptions = {\n ...options,\n cancelRefetch: options.cancelRefetch ?? true\n };\n const promises = notifyManager.batch(\n () => this.#queryCache.findAll(filters).filter((query) => !query.isDisabled() && !query.isStatic()).map((query) => {\n let promise = query.fetch(void 0, fetchOptions);\n if (!fetchOptions.throwOnError) {\n promise = promise.catch(noop);\n }\n return query.state.fetchStatus === \"paused\" ? Promise.resolve() : promise;\n })\n );\n return Promise.all(promises).then(noop);\n }\n fetchQuery(options) {\n const defaultedOptions = this.defaultQueryOptions(options);\n if (defaultedOptions.retry === void 0) {\n defaultedOptions.retry = false;\n }\n const query = this.#queryCache.build(this, defaultedOptions);\n return query.isStaleByTime(\n resolveStaleTime(defaultedOptions.staleTime, query)\n ) ? query.fetch(defaultedOptions) : Promise.resolve(query.state.data);\n }\n prefetchQuery(options) {\n return this.fetchQuery(options).then(noop).catch(noop);\n }\n fetchInfiniteQuery(options) {\n options._type = \"infinite\";\n return this.fetchQuery(options);\n }\n prefetchInfiniteQuery(options) {\n return this.fetchInfiniteQuery(options).then(noop).catch(noop);\n }\n ensureInfiniteQueryData(options) {\n options._type = \"infinite\";\n return this.ensureQueryData(options);\n }\n resumePausedMutations() {\n if (onlineManager.isOnline()) {\n return this.#mutationCache.resumePausedMutations();\n }\n return Promise.resolve();\n }\n getQueryCache() {\n return this.#queryCache;\n }\n getMutationCache() {\n return this.#mutationCache;\n }\n getDefaultOptions() {\n return this.#defaultOptions;\n }\n setDefaultOptions(options) {\n this.#defaultOptions = options;\n }\n setQueryDefaults(queryKey, options) {\n this.#queryDefaults.set(hashKey(queryKey), {\n queryKey,\n defaultOptions: options\n });\n }\n getQueryDefaults(queryKey) {\n const defaults = [...this.#queryDefaults.values()];\n const result = {};\n defaults.forEach((queryDefault) => {\n if (partialMatchKey(queryKey, queryDefault.queryKey)) {\n Object.assign(result, queryDefault.defaultOptions);\n }\n });\n return result;\n }\n setMutationDefaults(mutationKey, options) {\n this.#mutationDefaults.set(hashKey(mutationKey), {\n mutationKey,\n defaultOptions: options\n });\n }\n getMutationDefaults(mutationKey) {\n const defaults = [...this.#mutationDefaults.values()];\n const result = {};\n defaults.forEach((queryDefault) => {\n if (partialMatchKey(mutationKey, queryDefault.mutationKey)) {\n Object.assign(result, queryDefault.defaultOptions);\n }\n });\n return result;\n }\n defaultQueryOptions(options) {\n if (options._defaulted) {\n return options;\n }\n const defaultedOptions = {\n ...this.#defaultOptions.queries,\n ...this.getQueryDefaults(options.queryKey),\n ...options,\n _defaulted: true\n };\n if (!defaultedOptions.queryHash) {\n defaultedOptions.queryHash = hashQueryKeyByOptions(\n defaultedOptions.queryKey,\n defaultedOptions\n );\n }\n if (defaultedOptions.refetchOnReconnect === void 0) {\n defaultedOptions.refetchOnReconnect = defaultedOptions.networkMode !== \"always\";\n }\n if (defaultedOptions.throwOnError === void 0) {\n defaultedOptions.throwOnError = !!defaultedOptions.suspense;\n }\n if (!defaultedOptions.networkMode && defaultedOptions.persister) {\n defaultedOptions.networkMode = \"offlineFirst\";\n }\n if (defaultedOptions.queryFn === skipToken) {\n defaultedOptions.enabled = false;\n }\n return defaultedOptions;\n }\n defaultMutationOptions(options) {\n if (options?._defaulted) {\n return options;\n }\n return {\n ...this.#defaultOptions.mutations,\n ...options?.mutationKey && this.getMutationDefaults(options.mutationKey),\n ...options,\n _defaulted: true\n };\n }\n clear() {\n this.#queryCache.clear();\n this.#mutationCache.clear();\n }\n};\nexport {\n QueryClient\n};\n//# sourceMappingURL=queryClient.js.map","\"use client\";\n\n// src/QueryClientProvider.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nvar QueryClientContext = React.createContext(\n void 0\n);\nvar useQueryClient = (queryClient) => {\n const client = React.useContext(QueryClientContext);\n if (queryClient) {\n return queryClient;\n }\n if (!client) {\n throw new Error(\"No QueryClient set, use QueryClientProvider to set one\");\n }\n return client;\n};\nvar QueryClientProvider = ({\n client,\n children\n}) => {\n React.useEffect(() => {\n client.mount();\n return () => {\n client.unmount();\n };\n }, [client]);\n return /* @__PURE__ */ jsx(QueryClientContext.Provider, { value: client, children });\n};\nexport {\n QueryClientContext,\n QueryClientProvider,\n useQueryClient\n};\n//# sourceMappingURL=QueryClientProvider.js.map","\"use client\";\n\n// src/IsRestoringProvider.ts\nimport * as React from \"react\";\nvar IsRestoringContext = React.createContext(false);\nvar useIsRestoring = () => React.useContext(IsRestoringContext);\nvar IsRestoringProvider = IsRestoringContext.Provider;\nexport {\n IsRestoringProvider,\n useIsRestoring\n};\n//# sourceMappingURL=IsRestoringProvider.js.map","\"use client\";\n\n// src/QueryErrorResetBoundary.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createValue() {\n let isReset = false;\n return {\n clearReset: () => {\n isReset = false;\n },\n reset: () => {\n isReset = true;\n },\n isReset: () => {\n return isReset;\n }\n };\n}\nvar QueryErrorResetBoundaryContext = React.createContext(createValue());\nvar useQueryErrorResetBoundary = () => React.useContext(QueryErrorResetBoundaryContext);\nvar QueryErrorResetBoundary = ({\n children\n}) => {\n const [value] = React.useState(() => createValue());\n return /* @__PURE__ */ jsx(QueryErrorResetBoundaryContext.Provider, { value, children: typeof children === \"function\" ? children(value) : children });\n};\nexport {\n QueryErrorResetBoundary,\n useQueryErrorResetBoundary\n};\n//# sourceMappingURL=QueryErrorResetBoundary.js.map","\"use client\";\n\n// src/errorBoundaryUtils.ts\nimport * as React from \"react\";\nimport { shouldThrowError } from \"@tanstack/query-core\";\nvar ensurePreventErrorBoundaryRetry = (options, errorResetBoundary, query) => {\n const throwOnError = query?.state.error && typeof options.throwOnError === \"function\" ? shouldThrowError(options.throwOnError, [query.state.error, query]) : options.throwOnError;\n if (options.suspense || options.experimental_prefetchInRender || throwOnError) {\n if (!errorResetBoundary.isReset()) {\n options.retryOnMount = false;\n }\n }\n};\nvar useClearResetErrorBoundary = (errorResetBoundary) => {\n React.useEffect(() => {\n errorResetBoundary.clearReset();\n }, [errorResetBoundary]);\n};\nvar getHasError = ({\n result,\n errorResetBoundary,\n throwOnError,\n query,\n suspense\n}) => {\n return result.isError && !errorResetBoundary.isReset() && !result.isFetching && query && (suspense && result.data === void 0 || shouldThrowError(throwOnError, [result.error, query]));\n};\nexport {\n ensurePreventErrorBoundaryRetry,\n getHasError,\n useClearResetErrorBoundary\n};\n//# sourceMappingURL=errorBoundaryUtils.js.map","// src/suspense.ts\nvar defaultThrowOnError = (_error, query) => query.state.data === void 0;\nvar ensureSuspenseTimers = (defaultedOptions) => {\n if (defaultedOptions.suspense) {\n const MIN_SUSPENSE_TIME_MS = 1e3;\n const clamp = (value) => value === \"static\" ? value : Math.max(value ?? MIN_SUSPENSE_TIME_MS, MIN_SUSPENSE_TIME_MS);\n const originalStaleTime = defaultedOptions.staleTime;\n defaultedOptions.staleTime = typeof originalStaleTime === \"function\" ? (...args) => clamp(originalStaleTime(...args)) : clamp(originalStaleTime);\n if (typeof defaultedOptions.gcTime === \"number\") {\n defaultedOptions.gcTime = Math.max(\n defaultedOptions.gcTime,\n MIN_SUSPENSE_TIME_MS\n );\n }\n }\n};\nvar willFetch = (result, isRestoring) => result.isLoading && result.isFetching && !isRestoring;\nvar shouldSuspend = (defaultedOptions, result) => defaultedOptions?.suspense && result.isPending;\nvar fetchOptimistic = (defaultedOptions, observer, errorResetBoundary) => observer.fetchOptimistic(defaultedOptions).catch(() => {\n errorResetBoundary.clearReset();\n});\nexport {\n defaultThrowOnError,\n ensureSuspenseTimers,\n fetchOptimistic,\n shouldSuspend,\n willFetch\n};\n//# sourceMappingURL=suspense.js.map","\"use client\";\n\n// src/useBaseQuery.ts\nimport * as React from \"react\";\nimport { environmentManager, noop, notifyManager } from \"@tanstack/query-core\";\nimport { useQueryClient } from \"./QueryClientProvider.js\";\nimport { useQueryErrorResetBoundary } from \"./QueryErrorResetBoundary.js\";\nimport {\n ensurePreventErrorBoundaryRetry,\n getHasError,\n useClearResetErrorBoundary\n} from \"./errorBoundaryUtils.js\";\nimport { useIsRestoring } from \"./IsRestoringProvider.js\";\nimport {\n ensureSuspenseTimers,\n fetchOptimistic,\n shouldSuspend,\n willFetch\n} from \"./suspense.js\";\nfunction useBaseQuery(options, Observer, queryClient) {\n if (process.env.NODE_ENV !== \"production\") {\n if (typeof options !== \"object\" || Array.isArray(options)) {\n throw new Error(\n 'Bad argument type. Starting with v5, only the \"Object\" form is allowed when calling query related functions. Please use the error stack to find the culprit call. More info here: https://tanstack.com/query/latest/docs/react/guides/migrating-to-v5#supports-a-single-signature-one-object'\n );\n }\n }\n const isRestoring = useIsRestoring();\n const errorResetBoundary = useQueryErrorResetBoundary();\n const client = useQueryClient(queryClient);\n const defaultedOptions = client.defaultQueryOptions(options);\n client.getDefaultOptions().queries?._experimental_beforeQuery?.(\n defaultedOptions\n );\n const query = client.getQueryCache().get(defaultedOptions.queryHash);\n if (process.env.NODE_ENV !== \"production\") {\n if (!defaultedOptions.queryFn) {\n console.error(\n `[${defaultedOptions.queryHash}]: No queryFn was passed as an option, and no default queryFn was found. The queryFn parameter is only optional when using a default queryFn. More info here: https://tanstack.com/query/latest/docs/framework/react/guides/default-query-function`\n );\n }\n }\n defaultedOptions._optimisticResults = isRestoring ? \"isRestoring\" : \"optimistic\";\n ensureSuspenseTimers(defaultedOptions);\n ensurePreventErrorBoundaryRetry(defaultedOptions, errorResetBoundary, query);\n useClearResetErrorBoundary(errorResetBoundary);\n const isNewCacheEntry = !client.getQueryCache().get(defaultedOptions.queryHash);\n const [observer] = React.useState(\n () => new Observer(\n client,\n defaultedOptions\n )\n );\n const result = observer.getOptimisticResult(defaultedOptions);\n const shouldSubscribe = !isRestoring && options.subscribed !== false;\n React.useSyncExternalStore(\n React.useCallback(\n (onStoreChange) => {\n const unsubscribe = shouldSubscribe ? observer.subscribe(notifyManager.batchCalls(onStoreChange)) : noop;\n observer.updateResult();\n return unsubscribe;\n },\n [observer, shouldSubscribe]\n ),\n () => observer.getCurrentResult(),\n () => observer.getCurrentResult()\n );\n React.useEffect(() => {\n observer.setOptions(defaultedOptions);\n }, [defaultedOptions, observer]);\n if (shouldSuspend(defaultedOptions, result)) {\n throw fetchOptimistic(defaultedOptions, observer, errorResetBoundary);\n }\n if (getHasError({\n result,\n errorResetBoundary,\n throwOnError: defaultedOptions.throwOnError,\n query,\n suspense: defaultedOptions.suspense\n })) {\n throw result.error;\n }\n ;\n client.getDefaultOptions().queries?._experimental_afterQuery?.(\n defaultedOptions,\n result\n );\n if (defaultedOptions.experimental_prefetchInRender && !environmentManager.isServer() && willFetch(result, isRestoring)) {\n const promise = isNewCacheEntry ? (\n // Fetch immediately on render in order to ensure `.promise` is resolved even if the component is unmounted\n fetchOptimistic(defaultedOptions, observer, errorResetBoundary)\n ) : (\n // subscribe to the \"cache promise\" so that we can finalize the currentThenable once data comes in\n query?.promise\n );\n promise?.catch(noop).finally(() => {\n observer.updateResult();\n });\n }\n return !defaultedOptions.notifyOnChangeProps ? observer.trackResult(result) : result;\n}\nexport {\n useBaseQuery\n};\n//# sourceMappingURL=useBaseQuery.js.map","\"use client\";\n\n// src/useQuery.ts\nimport { QueryObserver } from \"@tanstack/query-core\";\nimport { useBaseQuery } from \"./useBaseQuery.js\";\nfunction useQuery(options, queryClient) {\n return useBaseQuery(options, QueryObserver, queryClient);\n}\nexport {\n useQuery\n};\n//# sourceMappingURL=useQuery.js.map","import { useEffect, useState } from 'react'\n\nexport type Theme = 'light' | 'dark' | 'system'\nexport type ResolvedTheme = 'light' | 'dark'\n\n/**\n * Hook to resolve the actual theme value, handling 'system' preference detection.\n * When theme is 'system', it listens to the user's OS/browser color scheme preference.\n *\n * @param theme - The theme setting: 'light', 'dark', or 'system'\n * @returns The resolved theme: 'light' or 'dark'\n */\nexport function useResolvedTheme(theme: Theme): ResolvedTheme {\n const [systemTheme, setSystemTheme] = useState<ResolvedTheme>(() => {\n // Check initial system preference (SSR-safe)\n if (typeof window === 'undefined') {\n return 'light'\n }\n return window.matchMedia('(prefers-color-scheme: dark)').matches\n ? 'dark'\n : 'light'\n })\n\n useEffect(() => {\n // Only listen to system changes if theme is 'system'\n if (theme !== 'system') {\n return\n }\n\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)')\n\n // Update state based on current value\n setSystemTheme(mediaQuery.matches ? 'dark' : 'light')\n\n // Listen for changes\n const handler = (e: MediaQueryListEvent): void => {\n setSystemTheme(e.matches ? 'dark' : 'light')\n }\n\n mediaQuery.addEventListener('change', handler)\n return (): void => mediaQuery.removeEventListener('change', handler)\n }, [theme])\n\n // Return explicit theme if not 'system', otherwise return detected system theme\n return theme === 'system' ? systemTheme : theme\n}\n","import {\n createContext,\n ReactNode,\n useCallback,\n useContext,\n useMemo,\n useRef,\n useState,\n} from 'react'\n\nimport type {\n MenuSlot,\n PluginDialog,\n PluginMenuItem,\n PluginPanel,\n PluginRenderContext,\n WalletUIPlugin,\n} from './types'\n\ninterface PluginContextType {\n /** All menu items grouped by slot, sorted by order */\n menuItemsBySlot: Record<MenuSlot, PluginMenuItem[]>\n /** All dialogs from all plugins */\n dialogs: PluginDialog[]\n /** Open a plugin dialog by key */\n openDialog: (key: string) => void\n /** Close a plugin dialog by key */\n closeDialog: (key: string) => void\n /** Currently open dialog keys */\n openDialogs: Set<string>\n /** All panels from all plugins, sorted by order */\n panels: PluginPanel[]\n /** All registered plugins */\n plugins: WalletUIPlugin[]\n /** Enriched render context with working openDialog/closeDialog */\n renderContext: PluginRenderContext\n}\n\nconst ALL_SLOTS: MenuSlot[] = [\n 'after-balance',\n 'after-accounts',\n 'after-wallet-info',\n 'before-actions',\n 'actions',\n]\n\nconst EMPTY_MENU_ITEMS: Record<MenuSlot, PluginMenuItem[]> = {\n 'after-balance': [],\n 'after-accounts': [],\n 'after-wallet-info': [],\n 'before-actions': [],\n actions: [],\n}\n\nconst EMPTY_RENDER_CONTEXT: PluginRenderContext = {\n activeAddress: null,\n activeWallet: null,\n theme: 'system',\n resolvedTheme: 'light',\n openDialog: () => {},\n closeDialog: () => {},\n}\n\nconst EMPTY_CONTEXT: PluginContextType = {\n menuItemsBySlot: EMPTY_MENU_ITEMS,\n dialogs: [],\n openDialog: () => {},\n closeDialog: () => {},\n openDialogs: new Set(),\n panels: [],\n plugins: [],\n renderContext: EMPTY_RENDER_CONTEXT,\n}\n\nconst PluginContext = createContext<PluginContextType | undefined>(undefined)\n\n/** Access the plugin context. Returns safe defaults when no plugins are registered. */\nexport function usePlugins(): PluginContextType {\n const ctx = useContext(PluginContext)\n if (!ctx) {\n return EMPTY_CONTEXT\n }\n return ctx\n}\n\n/**\n * Composes plugin Provider components around children.\n * First plugin's Provider wraps outermost, last wraps innermost.\n */\nfunction PluginProviderComposer({\n plugins,\n ctx,\n children,\n}: {\n plugins: WalletUIPlugin[]\n ctx: PluginRenderContext\n children: ReactNode\n}) {\n return plugins.reduceRight<ReactNode>((acc, plugin) => {\n if (plugin.Provider) {\n return <plugin.Provider ctx={ctx}>{acc}</plugin.Provider>\n }\n return acc\n }, children)\n}\n\n/**\n * Stabilizes the plugins array reference to prevent unnecessary re-renders.\n * Returns the same array reference as long as the set of plugin IDs hasn't changed.\n * This protects against the common pattern: `plugins={[myPlugin()]}` inline in JSX.\n */\nfunction useStablePlugins(plugins: WalletUIPlugin[]): WalletUIPlugin[] {\n const stableRef = useRef(plugins)\n\n const prevIds = stableRef.current.map((p) => p.id).join('\\0')\n const nextIds = plugins.map((p) => p.id).join('\\0')\n\n if (prevIds !== nextIds) {\n stableRef.current = plugins\n }\n\n return stableRef.current\n}\n\nexport function PluginContextProvider({\n plugins: rawPlugins,\n renderContext,\n children,\n}: {\n plugins: WalletUIPlugin[]\n renderContext: PluginRenderContext\n children: ReactNode\n}) {\n const plugins = useStablePlugins(rawPlugins)\n\n // Validate for duplicate plugin IDs, menu item keys, and dialog keys\n useMemo(() => {\n if (process.env.NODE_ENV === 'production') return\n\n const pluginIds = new Set<string>()\n const menuKeys = new Set<string>()\n const dialogKeys = new Set<string>()\n const panelKeys = new Set<string>()\n\n for (const plugin of plugins) {\n if (pluginIds.has(plugin.id)) {\n console.warn(`[WalletUI] Duplicate plugin ID: \"${plugin.id}\"`)\n }\n pluginIds.add(plugin.id)\n\n for (const item of plugin.menuItems ?? []) {\n if (menuKeys.has(item.key)) {\n console.warn(\n `[WalletUI] Duplicate menu item key: \"${item.key}\" (plugin: \"${plugin.id}\")`,\n )\n }\n menuKeys.add(item.key)\n }\n\n for (const dialog of plugin.dialogs ?? []) {\n if (dialogKeys.has(dialog.key)) {\n console.warn(\n `[WalletUI] Duplicate dialog key: \"${dialog.key}\" (plugin: \"${plugin.id}\")`,\n )\n }\n dialogKeys.add(dialog.key)\n }\n\n for (const panel of plugin.panels ?? []) {\n if (panelKeys.has(panel.key)) {\n console.warn(\n `[WalletUI] Duplicate panel key: \"${panel.key}\" (plugin: \"${plugin.id}\")`,\n )\n }\n panelKeys.add(panel.key)\n }\n }\n }, [plugins])\n\n const [openDialogs, setOpenDialogs] = useState<Set<string>>(new Set())\n\n const openDialog = useCallback((key: string) => {\n setOpenDialogs((prev) => {\n const next = new Set(prev)\n next.add(key)\n return next\n })\n }, [])\n\n const closeDialog = useCallback((key: string) => {\n setOpenDialogs((prev) => {\n const next = new Set(prev)\n next.delete(key)\n return next\n })\n }, [])\n\n // Group menu items by slot and sort by order\n const menuItemsBySlot = useMemo(() => {\n const result: Record<MenuSlot, PluginMenuItem[]> = {\n 'after-balance': [],\n 'after-accounts': [],\n 'after-wallet-info': [],\n 'before-actions': [],\n actions: [],\n }\n\n for (const plugin of plugins) {\n if (plugin.menuItems) {\n for (const item of plugin.menuItems) {\n if (ALL_SLOTS.includes(item.slot)) {\n result[item.slot].push(item)\n }\n }\n }\n }\n\n // Sort each slot by order\n for (const slot of ALL_SLOTS) {\n result[slot].sort((a, b) => (a.order ?? 100) - (b.order ?? 100))\n }\n\n return result\n }, [plugins])\n\n // Collect all dialogs\n const dialogs = useMemo(\n () => plugins.flatMap((p) => p.dialogs ?? []),\n [plugins],\n )\n\n // Collect all panels, sorted by order\n const panels = useMemo(\n () =>\n plugins\n .flatMap((p) => p.panels ?? [])\n .sort((a, b) => (a.order ?? 100) - (b.order ?? 100)),\n [plugins],\n )\n\n // Build a render context that includes dialog control\n const enrichedContext = useMemo(\n () => ({\n ...renderContext,\n openDialog,\n closeDialog,\n }),\n [renderContext, openDialog, closeDialog],\n )\n\n const contextValue = useMemo(\n () => ({\n menuItemsBySlot,\n dialogs,\n openDialog,\n closeDialog,\n openDialogs,\n panels,\n plugins,\n renderContext: enrichedContext,\n }),\n [\n menuItemsBySlot,\n dialogs,\n openDialog,\n closeDialog,\n openDialogs,\n panels,\n plugins,\n enrichedContext,\n ],\n )\n\n return (\n <PluginContext.Provider value={contextValue}>\n <PluginProviderComposer plugins={plugins} ctx={enrichedContext}>\n {children}\n </PluginProviderComposer>\n </PluginContext.Provider>\n )\n}\n","import { FloatingPortal } from '@floating-ui/react'\nimport { QueryClientProvider } from '@tanstack/react-query'\n\nimport { useWalletUI } from '../providers/WalletUIProvider'\n\nimport { usePlugins } from './PluginContext'\n\n/**\n * Renders all open plugin dialogs via FloatingPortal.\n * Centralizes the QueryClientProvider wrapping needed to fix\n * FloatingPortal context inheritance issues.\n *\n * Must be rendered inside PluginContextProvider to access the\n * enriched render context with working openDialog/closeDialog.\n */\nexport function PluginDialogRenderer() {\n const { dialogs, openDialogs, closeDialog, renderContext } = usePlugins()\n const { queryClient, theme } = useWalletUI()\n\n const dataTheme = theme === 'system' ? undefined : theme\n\n return (\n <>\n {dialogs.map((dialog) => {\n const isOpen = openDialogs.has(dialog.key)\n if (!isOpen) return null\n\n return (\n <FloatingPortal key={dialog.key} id={`wallet-plugin-${dialog.key}`}>\n <QueryClientProvider client={queryClient}>\n <div data-wallet-theme data-wallet-ui data-theme={dataTheme}>\n {dialog.render({\n isOpen,\n onClose: () => closeDialog(dialog.key),\n ctx: renderContext,\n })}\n </div>\n </QueryClientProvider>\n </FloatingPortal>\n )\n })}\n </>\n )\n}\n","import { useEffect, useRef } from 'react'\n\nimport { usePlugins } from './PluginContext'\n\nimport type { WalletUIPlugin } from './types'\n\n/**\n * Safely invoke a plugin lifecycle hook, catching both sync and async errors.\n */\nfunction safeInvoke(plugin: WalletUIPlugin, fn: () => void | Promise<void>) {\n try {\n const result = fn()\n if (result && typeof result.catch === 'function') {\n result.catch((err) => {\n console.error(\n `[WalletUI] Plugin \"${plugin.id}\" lifecycle hook error:`,\n err,\n )\n })\n }\n } catch (err) {\n console.error(\n `[WalletUI] Plugin \"${plugin.id}\" lifecycle hook error:`,\n err,\n )\n }\n}\n\n/**\n * Monitors wallet state changes and invokes plugin lifecycle hooks.\n * Detects connect, disconnect, and account change transitions.\n *\n * Must be rendered inside PluginContextProvider to access the\n * enriched render context with working openDialog/closeDialog.\n */\nexport function PluginLifecycleManager() {\n const { plugins, renderContext: ctx } = usePlugins()\n\n const prevAddressRef = useRef<string | null>(null)\n const prevWalletIdRef = useRef<string | null>(null)\n\n useEffect(() => {\n const prevAddress = prevAddressRef.current\n const prevWalletId = prevWalletIdRef.current\n const currentWalletId = ctx.activeWallet?.id ?? null\n\n // Detect connection (no wallet → has wallet)\n if (!prevWalletId && currentWalletId) {\n for (const plugin of plugins) {\n if (plugin.lifecycle?.onConnect) {\n safeInvoke(plugin, () => plugin.lifecycle!.onConnect!(ctx))\n }\n }\n }\n\n // Detect disconnection (had wallet → no wallet)\n if (prevWalletId && !currentWalletId) {\n for (const plugin of plugins) {\n if (plugin.lifecycle?.onDisconnect) {\n safeInvoke(plugin, () => plugin.lifecycle!.onDisconnect!())\n }\n }\n }\n\n // Detect account change (wallet still connected, address changed)\n if (\n currentWalletId &&\n prevAddress &&\n ctx.activeAddress &&\n prevAddress !== ctx.activeAddress\n ) {\n for (const plugin of plugins) {\n if (plugin.lifecycle?.onAccountChange) {\n plugin.lifecycle.onAccountChange(ctx.activeAddress, prevAddress, ctx)\n }\n }\n }\n\n prevAddressRef.current = ctx.activeAddress\n prevWalletIdRef.current = currentWalletId\n }, [ctx, plugins])\n\n return null\n}\n","import {\n QueryClient,\n QueryClientProvider,\n useQueryClient,\n} from '@tanstack/react-query'\nimport { useWallet, useNetwork } from '@txnlab/use-wallet-react'\nimport {\n createContext,\n ReactNode,\n useContext,\n useEffect,\n useMemo,\n useRef,\n} from 'react'\n\nimport {\n useResolvedTheme,\n type Theme,\n type ResolvedTheme,\n} from '../hooks/useResolvedTheme'\nimport { PluginContextProvider } from '../plugins/PluginContext'\nimport { PluginDialogRenderer } from '../plugins/PluginDialogRenderer'\nimport { PluginLifecycleManager } from '../plugins/PluginLifecycleManager'\n\nimport type { NfdLookupResponse, NfdView } from '../hooks/useNfd'\nimport type { PluginRenderContext, WalletUIPlugin } from '../plugins/types'\n\n// CSS custom properties for theming - injected via JavaScript to avoid requiring CSS imports\nconst THEME_STYLES_ID = 'wallet-ui-theme-styles'\n\nconst lightThemeVars = `\n --wui-color-primary: #2d2df1;\n --wui-color-primary-hover: #2929d9;\n --wui-color-primary-text: #ffffff;\n --wui-color-bg: #ffffff;\n --wui-color-bg-secondary: #f9fafb;\n --wui-color-bg-tertiary: #f3f4f6;\n --wui-color-bg-hover: #e9e9fd;\n --wui-color-text: #1f2937;\n --wui-color-text-secondary: #6b7280;\n --wui-color-text-tertiary: #9ca3af;\n --wui-color-border: #e5e7eb;\n --wui-color-link: rgba(45, 45, 241, 0.8);\n --wui-color-link-hover: #2d2df1;\n --wui-color-overlay: rgba(0, 0, 0, 0.3);\n --wui-color-danger-bg: #fee2e2;\n --wui-color-danger-bg-hover: #fecaca;\n --wui-color-danger-text: #b91c1c;\n --wui-color-avatar-bg: #e5e7eb;\n --wui-color-avatar-icon: #9ca3af;\n`\n\nconst darkThemeVars = `\n --wui-color-primary: #bfbff9;\n --wui-color-primary-hover: #d4d4fa;\n --wui-color-primary-text: #001324;\n --wui-color-bg: #001324;\n --wui-color-bg-secondary: #101b29;\n --wui-color-bg-tertiary: #192a39;\n --wui-color-bg-hover: #192a39;\n --wui-color-text: #e9e9fd;\n --wui-color-text-secondary: #99a1a7;\n --wui-color-text-tertiary: #6b7280;\n --wui-color-border: #192a39;\n --wui-color-link: #6c6cf1;\n --wui-color-link-hover: #8080f3;\n --wui-color-overlay: rgba(0, 0, 0, 0.5);\n --wui-color-danger-bg: rgba(127, 29, 29, 0.4);\n --wui-color-danger-bg-hover: rgba(127, 29, 29, 0.6);\n --wui-color-danger-text: #fca5a5;\n --wui-color-avatar-bg: #192a39;\n --wui-color-avatar-icon: #6b7280;\n`\n\nfunction injectThemeStyles() {\n // Only inject once\n if (document.getElementById(THEME_STYLES_ID)) {\n return\n }\n\n const styleElement = document.createElement('style')\n styleElement.id = THEME_STYLES_ID\n styleElement.textContent = `\n /* Light mode (default) */\n [data-wallet-theme] {\n ${lightThemeVars}\n }\n\n /* Dark mode via data-theme attribute (explicit) */\n [data-wallet-theme][data-theme='dark'] {\n ${darkThemeVars}\n }\n\n /* Dark mode via .dark class on ancestor (Tailwind convention) */\n .dark [data-wallet-theme]:not([data-theme='light']) {\n ${darkThemeVars}\n }\n\n /* Dark mode via system preference (when theme=\"system\" or no explicit theme) */\n @media (prefers-color-scheme: dark) {\n [data-wallet-theme]:not([data-theme='light']):not([data-theme='dark']) {\n ${darkThemeVars}\n }\n }\n `\n // Insert at the START of <head> so consumer CSS (loaded later) can override\n document.head.insertBefore(styleElement, document.head.firstChild)\n}\n\ninterface WalletUIContextType {\n queryClient: QueryClient\n theme: Theme\n resolvedTheme: ResolvedTheme\n}\n\ninterface WalletUIProviderProps {\n children: ReactNode\n queryClient?: QueryClient\n /**\n * Whether to automatically prefetch data for all accounts in connected wallets (defaults to true)\n */\n enablePrefetching?: boolean\n /**\n * NFD view type for prefetching (defaults to 'thumbnail')\n */\n prefetchNfdView?: NfdView\n /**\n * Theme setting for wallet UI components.\n * - 'light': Always use light mode\n * - 'dark': Always use dark mode\n * - 'system': Follow the user's OS/browser preference (default)\n *\n * The library also respects the `.dark` class on ancestor elements (Tailwind convention),\n * which will enable dark mode unless explicitly overridden with theme=\"light\".\n */\n theme?: Theme\n /**\n * Plugins to register. Each plugin can contribute menu items, dialogs,\n * lifecycle hooks, and context providers.\n */\n plugins?: WalletUIPlugin[]\n}\n\n// Default query client configuration for NFD queries\nconst createDefaultQueryClient = () =>\n new QueryClient({\n defaultOptions: {\n queries: {\n staleTime: 5 * 60 * 1000, // 5 minutes\n gcTime: 60 * 60 * 1000, // 1 hour\n refetchOnWindowFocus: true,\n refetchInterval: 10 * 60 * 1000, // Refetch every 10 minutes\n retry: (failureCount, error) => {\n // Don't retry for 404 errors (not found)\n if (error instanceof Error && error.message.includes('404')) {\n return false\n }\n // For other errors, retry up to 3 times\n return failureCount < 3\n },\n },\n },\n })\n\nconst WalletUIContext = createContext<WalletUIContextType | undefined>(\n undefined,\n)\n\n// Internal function to prefetch all account data when a wallet connects\nfunction WalletAccountsPrefetcher({\n enabled,\n nfdView,\n}: {\n enabled: boolean\n nfdView: NfdView\n}) {\n const queryClient = useQueryClient()\n const { activeAddress, activeWallet, algodClient } = useWallet()\n const { activeNetwork } = useNetwork()\n\n // Previous activeAddress value\n const prevActiveAddressRef = useRef<string | null>(null)\n\n useEffect(() => {\n // Skip if prefetching is disabled\n if (!enabled) {\n prevActiveAddressRef.current = activeAddress\n return\n }\n\n // Only prefetch when transitioning from disconnected to connected state\n // (when prevActiveAddress was null but activeAddress is now defined)\n const shouldPrefetch =\n prevActiveAddressRef.current === null &&\n activeAddress !== null &&\n activeWallet !== null &&\n activeWallet.accounts !== undefined &&\n activeWallet.accounts.length > 0 &&\n algodClient !== undefined\n\n // Always update the previous address ref\n prevActiveAddressRef.current = activeAddress\n\n // If we don't need to prefetch, exit early\n if (!shouldPrefetch) {\n return\n }\n\n console.log(\n `[WalletUI] Prefetching data for all accounts in wallet ${activeWallet!.id}`,\n )\n\n // Get all addresses from the wallet\n const addresses = activeWallet!.accounts.map((account) => account.address)\n\n // If we have addresses, fetch NFDs in batches of 20\n if (addresses.length > 0) {\n // Process addresses in batches of 20 (NFD API limit)\n const batchSize = 20\n const addressBatches = []\n\n for (let i = 0; i < addresses.length; i += batchSize) {\n addressBatches.push(addresses.slice(i, i + batchSize))\n }\n\n // Process each batch\n addressBatches.forEach(async (batch) => {\n // Determine the API endpoint based on the network\n const isTestnet = activeNetwork === 'testnet'\n const apiEndpoint = isTestnet\n ? 'https://api.testnet.nf.domains'\n : 'https://api.nf.domains'\n\n // Build the query URL with multiple address parameters\n const queryParams = new URLSearchParams()\n batch.forEach((address) => {\n queryParams.append('address', address)\n })\n queryParams.append('view', nfdView)\n\n try {\n // Make a single request for all addresses in the batch\n const response = await fetch(\n `${apiEndpoint}/nfd/lookup?${queryParams.toString()}`,\n {\n method: 'GET',\n headers: {\n Accept: 'application/json',\n },\n },\n )\n\n // Handle response\n if (!response.ok && response.status !== 404) {\n throw new Error(\n `NFD prefetch lookup failed: ${response.statusText}`,\n )\n }\n\n // If we get a 404 or success, process the response\n // For 404, we'll get an empty object\n const responseData: NfdLookupResponse =\n response.status === 404 ? {} : await response.json()\n\n // For each address in the batch, seed the query cache\n batch.forEach((address) => {\n const nfdData = responseData[address] || null\n\n // Seed the cache with this NFD data\n queryClient.setQueryData(\n ['nfd', address, activeNetwork, nfdView],\n nfdData,\n )\n })\n } catch (error) {\n console.error('Error prefetching NFD data:', error)\n }\n })\n }\n\n // For each account in the wallet, prefetch balance data\n addresses.forEach((address) => {\n // Prefetch balance data\n queryClient.prefetchQuery({\n queryKey: ['account-balance', address],\n queryFn: async () => {\n try {\n const accountInfo = await algodClient!\n .accountInformation(address)\n .do()\n return Number(accountInfo.amount)\n } catch (error) {\n throw new Error(`Error fetching account balance: ${error}`)\n }\n },\n })\n })\n }, [\n activeAddress,\n activeWallet,\n activeNetwork,\n nfdView,\n algodClient,\n queryClient,\n enabled,\n ])\n\n // Return null since this is a utility component with no UI\n return null\n}\n\n/**\n * Provider that enables wallet UI components to work with TanStack Query.\n * It can use an existing QueryClient from the parent application or create its own.\n * Also creates a QueryClientProvider if none exists in the parent tree.\n *\n * Automatically prefetches data for all accounts in connected wallets for smoother\n * account switching experience.\n *\n * Supports theme configuration via the `theme` prop:\n * - 'light': Always use light mode\n * - 'dark': Always use dark mode\n * - 'system': Follow the user's OS/browser preference (default)\n */\nexport function WalletUIProvider({\n children,\n queryClient: externalQueryClient,\n enablePrefetching = true,\n prefetchNfdView = 'thumbnail',\n theme = 'system',\n plugins = [],\n}: WalletUIProviderProps) {\n // Use provided query client or create a default one\n const queryClient = useMemo(\n () => externalQueryClient || createDefaultQueryClient(),\n [externalQueryClient],\n )\n\n // Resolve the theme (handles 'system' preference detection)\n const resolvedTheme = useResolvedTheme(theme)\n\n // Inject theme CSS variables on mount\n useEffect(() => {\n injectThemeStyles()\n }, [])\n\n const contextValue = useMemo(\n () => ({\n queryClient,\n theme,\n resolvedTheme,\n }),\n [queryClient, theme, resolvedTheme],\n )\n\n // Determine the data-theme attribute value\n // - For explicit 'light' or 'dark', set the attribute to enable CSS variable overrides\n // - For 'system', don't set the attribute so CSS media queries handle it\n const dataTheme = theme === 'system' ? undefined : theme\n\n const content = (\n <WalletUIContext.Provider value={contextValue}>\n <div data-wallet-theme data-theme={dataTheme}>\n {/* Internal prefetcher component that runs automatically */}\n <WalletAccountsPrefetcher\n enabled={enablePrefetching}\n nfdView={prefetchNfdView}\n />\n <PluginHost plugins={plugins}>{children}</PluginHost>\n </div>\n </WalletUIContext.Provider>\n )\n\n // If no external query client was provided, wrap with our own QueryClientProvider\n if (!externalQueryClient) {\n return (\n <QueryClientProvider client={queryClient}>{content}</QueryClientProvider>\n )\n }\n\n // Otherwise just return the context provider\n return content\n}\n\n/**\n * Internal component that sets up plugin infrastructure.\n * Separated so it can call useWallet() (which requires WalletProvider ancestor).\n */\nfunction PluginHost({\n plugins,\n children,\n}: {\n plugins: WalletUIPlugin[]\n children: ReactNode\n}) {\n const { activeAddress, activeWallet } = useWallet()\n const { theme, resolvedTheme } = useWalletUI()\n\n // Base render context — PluginContextProvider enriches it with\n // working openDialog/closeDialog before exposing via usePlugins()\n const baseRenderContext = useMemo<PluginRenderContext>(\n () => ({\n activeAddress,\n activeWallet,\n theme,\n resolvedTheme,\n openDialog: () => {},\n closeDialog: () => {},\n }),\n [activeAddress, activeWallet, theme, resolvedTheme],\n )\n\n if (plugins.length === 0) {\n return <>{children}</>\n }\n\n return (\n <PluginContextProvider plugins={plugins} renderContext={baseRenderContext}>\n <PluginLifecycleManager />\n <PluginDialogRenderer />\n {children}\n </PluginContextProvider>\n )\n}\n\n/**\n * Hook to access the WalletUI context\n * @throws Error if used outside of WalletUIProvider\n */\nexport function useWalletUI(): WalletUIContextType {\n const context = useContext(WalletUIContext)\n if (context === undefined) {\n throw new Error('useWalletUI must be used within a WalletUIProvider')\n }\n return context\n}\n","import type { Wallet } from '@txnlab/use-wallet-react'\n\nexport interface WalletListProps {\n wallets: Wallet[]\n handleWalletClick: (wallet: Wallet) => Promise<void>\n}\n\nexport function WalletList({ wallets, handleWalletClick }: WalletListProps) {\n return (\n <ul className=\"space-y-1.5\">\n {wallets.map((wallet) => (\n <li key={wallet.id}>\n <button\n onClick={() => handleWalletClick(wallet)}\n className=\"flex w-full items-center gap-3 py-1.5 px-1.5 text-left text-[var(--wui-color-text)] transition-colors hover:bg-[var(--wui-color-bg-hover)] rounded-xl\"\n >\n <div className=\"shrink-0 h-8 w-8 rounded-md overflow-hidden bg-[var(--wui-color-bg-secondary)] flex items-center justify-center\">\n <img\n src={wallet.metadata.icon}\n alt={`${wallet.metadata.name} icon`}\n className=\"h-8 w-8 object-contain rounded-md\"\n />\n </div>\n <span className=\"text-lg font-bold wallet-custom-font\">\n {wallet.metadata.name}\n </span>\n </button>\n </li>\n ))}\n {wallets.length === 0 && (\n <p className=\"text-center text-[var(--wui-color-text-secondary)]\">\n No wallets found.\n </p>\n )}\n </ul>\n )\n}\n","import {\n useFloating,\n useClick,\n useDismiss,\n useRole,\n useInteractions,\n FloatingFocusManager,\n FloatingOverlay,\n FloatingPortal,\n useMergeRefs,\n useId,\n} from '@floating-ui/react'\nimport { useWallet } from '@txnlab/use-wallet-react'\nimport React, { ReactElement, RefObject, useState } from 'react'\n\nimport { useWalletUI } from '../providers/WalletUIProvider'\n\nimport { ConnectWalletButton } from './ConnectWalletButton'\nimport { WalletList } from './WalletList'\n\nimport type { Wallet } from '@txnlab/use-wallet-react'\n\n// A more specific type for the children that includes ref\ntype RefableElement = ReactElement & {\n ref?: RefObject<HTMLElement> | ((instance: HTMLElement | null) => void)\n}\n\nexport interface ConnectWalletMenuProps {\n children?: RefableElement\n}\n\nexport function ConnectWalletMenu({ children }: ConnectWalletMenuProps) {\n const [isOpen, setIsOpen] = useState(false)\n const [animationState, setAnimationState] = useState<\n 'starting' | 'entered' | 'exiting' | null\n >(null)\n\n const { wallets, activeAddress } = useWallet()\n const { theme } = useWalletUI()\n\n // Determine the data-theme attribute for the portal\n // Only set explicit themes, let 'system' use media query fallback\n const dataTheme = theme === 'system' ? undefined : theme\n\n const { refs, context } = useFloating({\n open: isOpen,\n onOpenChange: (open) => {\n // Don't open dialog if already connected\n if (open && activeAddress) return\n\n if (open) {\n setIsOpen(true)\n setAnimationState('starting')\n\n // Start entry animation\n requestAnimationFrame(() => {\n setAnimationState('entered')\n })\n } else {\n // Start exit animation\n setAnimationState('exiting')\n\n // Remove component after animation completes\n setTimeout(() => {\n setIsOpen(false)\n setAnimationState(null)\n }, 150)\n }\n },\n })\n\n // Interaction hooks\n const click = useClick(context)\n const dismiss = useDismiss(context, { outsidePressEvent: 'mousedown' })\n const role = useRole(context, { role: 'dialog' })\n\n // Merge interaction props\n const { getReferenceProps, getFloatingProps } = useInteractions([\n click,\n dismiss,\n role,\n ])\n\n // Accessibility IDs\n const labelId = useId()\n const descriptionId = useId()\n\n const handleWalletClick = async (wallet: Wallet) => {\n try {\n await wallet.connect()\n context.onOpenChange(false)\n } catch (error) {\n console.error(`Error connecting to ${wallet.metadata.name}:`, error)\n context.onOpenChange(false)\n }\n }\n\n // Always add click handler to trigger, but make it a no-op if connected\n const handleTriggerClick = (_e: React.MouseEvent) => {\n if (activeAddress) {\n // Do nothing if connected - let the event bubble up to potential parent handlers\n return\n }\n // Otherwise open the dialog directly\n context.onOpenChange(true)\n }\n\n // If no children are provided, create a default connect button\n const triggerElement = children || <ConnectWalletButton />\n\n const triggerRef = useMergeRefs([\n refs.setReference,\n (triggerElement as RefableElement).ref || null,\n ])\n\n const referenceProps = {\n ...getReferenceProps(),\n ref: triggerRef,\n onClick: handleTriggerClick,\n }\n\n // Clone the trigger element with the reference props\n const trigger = React.cloneElement(triggerElement, referenceProps)\n\n return (\n <>\n {trigger}\n <FloatingPortal id=\"wallet-dialog-portal\">\n {isOpen && (\n <div data-wallet-theme data-wallet-ui data-theme={dataTheme}>\n <FloatingOverlay\n className=\"grid place-items-center px-4 z-50 transition-opacity duration-150 ease-in-out bg-[var(--wui-color-overlay)] data-[state=starting]:opacity-0 data-[state=exiting]:opacity-0 data-[state=entered]:opacity-100\"\n data-state={animationState}\n lockScroll\n >\n <FloatingFocusManager context={context} modal={true}>\n <div\n ref={refs.setFloating}\n {...getFloatingProps({\n 'aria-labelledby': labelId,\n 'aria-describedby': descriptionId,\n })}\n role=\"dialog\"\n data-state={animationState}\n className=\"w-full max-w-sm rounded-3xl bg-[var(--wui-color-bg)] shadow-xl transform transition-all duration-150 ease-in-out data-[state=starting]:opacity-0 data-[state=starting]:scale-90 data-[state=exiting]:opacity-0 data-[state=exiting]:scale-90 data-[state=entered]:opacity-100 data-[state=entered]:scale-100\"\n style={{\n marginTop: '-0.5rem',\n }}\n >\n {/* Header */}\n <div className=\"relative flex items-center px-6 pt-5 pb-4\">\n <h2\n id={labelId}\n className=\"text-xl font-bold text-[var(--wui-color-text)] wallet-custom-font\"\n >\n Connect a Wallet\n </h2>\n {/* Close button */}\n <button\n onClick={() => context.onOpenChange(false)}\n className=\"absolute right-4 rounded-full bg-[var(--wui-color-bg-tertiary)] p-2 text-[var(--wui-color-text-secondary)] hover:brightness-90 transition-all\"\n aria-label=\"Close dialog\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"h-5 w-5\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </button>\n </div>\n\n {/* Wallet list */}\n <div className=\"px-4 pb-3\">\n <WalletList\n wallets={wallets}\n handleWalletClick={handleWalletClick}\n />\n </div>\n\n {/* Footer section */}\n <div className=\"px-6 py-5 border-t border-[var(--wui-color-border)] flex items-center justify-between\">\n <span className=\"text-[var(--wui-color-text-secondary)] text-sm\">\n Need an Algorand wallet?\n </span>\n <a\n href=\"https://algorand.co/wallets\"\n className=\"text-[var(--wui-color-link)] font-medium text-sm hover:text-[var(--wui-color-link-hover)]\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n Start here →\n </a>\n </div>\n </div>\n </FloatingFocusManager>\n </FloatingOverlay>\n </div>\n )}\n </FloatingPortal>\n </>\n )\n}\n","var Ue = Object.defineProperty;\nvar Oe = (w, a, g) => a in w ? Ue(w, a, { enumerable: !0, configurable: !0, writable: !0, value: g }) : w[a] = g;\nvar he = (w, a, g) => Oe(w, typeof a != \"symbol\" ? a + \"\" : a, g);\nvar _e = /^-?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?$/i, de = Math.ceil, H = Math.floor, F = \"[BigNumber Error] \", ge = F + \"Number primitive has more than 15 significant digits: \", X = 1e14, E = 14, pe = 9007199254740991, me = [1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13], ee = 1e7, G = 1e9;\nfunction Ie(w) {\n var a, g, U, d = m.prototype = { constructor: m, toString: null, valueOf: null }, v = new m(1), I = 20, A = 4, M = -7, T = 21, R = -1e7, y = 1e7, j = !1, Y = 1, k = 0, te = {\n prefix: \"\",\n groupSize: 3,\n secondaryGroupSize: 0,\n groupSeparator: \",\",\n decimalSeparator: \".\",\n fractionGroupSize: 0,\n fractionGroupSeparator: \" \",\n // non-breaking space\n suffix: \"\"\n }, b = \"0123456789abcdefghijklmnopqrstuvwxyz\", fe = !0;\n function m(e, i) {\n var t, c, n, o, u, r, s, l, f = this;\n if (!(f instanceof m)) return new m(e, i);\n if (i == null) {\n if (e && e._isBigNumber === !0) {\n f.s = e.s, !e.c || e.e > y ? f.c = f.e = null : e.e < R ? f.c = [f.e = 0] : (f.e = e.e, f.c = e.c.slice());\n return;\n }\n if ((r = typeof e == \"number\") && e * 0 == 0) {\n if (f.s = 1 / e < 0 ? (e = -e, -1) : 1, e === ~~e) {\n for (o = 0, u = e; u >= 10; u /= 10, o++) ;\n o > y ? f.c = f.e = null : (f.e = o, f.c = [e]);\n return;\n }\n l = String(e);\n } else {\n if (!_e.test(l = String(e))) return U(f, l, r);\n f.s = l.charCodeAt(0) == 45 ? (l = l.slice(1), -1) : 1;\n }\n (o = l.indexOf(\".\")) > -1 && (l = l.replace(\".\", \"\")), (u = l.search(/e/i)) > 0 ? (o < 0 && (o = u), o += +l.slice(u + 1), l = l.substring(0, u)) : o < 0 && (o = l.length);\n } else {\n if (S(i, 2, b.length, \"Base\"), i == 10 && fe)\n return f = new m(e), q(f, I + f.e + 1, A);\n if (l = String(e), r = typeof e == \"number\") {\n if (e * 0 != 0) return U(f, l, r, i);\n if (f.s = 1 / e < 0 ? (l = l.slice(1), -1) : 1, m.DEBUG && l.replace(/^0\\.0*|\\./, \"\").length > 15)\n throw Error(ge + e);\n } else\n f.s = l.charCodeAt(0) === 45 ? (l = l.slice(1), -1) : 1;\n for (t = b.slice(0, i), o = u = 0, s = l.length; u < s; u++)\n if (t.indexOf(c = l.charAt(u)) < 0) {\n if (c == \".\") {\n if (u > o) {\n o = s;\n continue;\n }\n } else if (!n && (l == l.toUpperCase() && (l = l.toLowerCase()) || l == l.toLowerCase() && (l = l.toUpperCase()))) {\n n = !0, u = -1, o = 0;\n continue;\n }\n return U(f, String(e), r, i);\n }\n r = !1, l = g(l, i, 10, f.s), (o = l.indexOf(\".\")) > -1 ? l = l.replace(\".\", \"\") : o = l.length;\n }\n for (u = 0; l.charCodeAt(u) === 48; u++) ;\n for (s = l.length; l.charCodeAt(--s) === 48; ) ;\n if (l = l.slice(u, ++s)) {\n if (s -= u, r && m.DEBUG && s > 15 && (e > pe || e !== H(e)))\n throw Error(ge + f.s * e);\n if ((o = o - u - 1) > y)\n f.c = f.e = null;\n else if (o < R)\n f.c = [f.e = 0];\n else {\n if (f.e = o, f.c = [], u = (o + 1) % E, o < 0 && (u += E), u < s) {\n for (u && f.c.push(+l.slice(0, u)), s -= E; u < s; )\n f.c.push(+l.slice(u, u += E));\n u = E - (l = l.slice(u)).length;\n } else\n u -= s;\n for (; u--; l += \"0\") ;\n f.c.push(+l);\n }\n } else\n f.c = [f.e = 0];\n }\n m.clone = Ie, m.ROUND_UP = 0, m.ROUND_DOWN = 1, m.ROUND_CEIL = 2, m.ROUND_FLOOR = 3, m.ROUND_HALF_UP = 4, m.ROUND_HALF_DOWN = 5, m.ROUND_HALF_EVEN = 6, m.ROUND_HALF_CEIL = 7, m.ROUND_HALF_FLOOR = 8, m.EUCLID = 9, m.config = m.set = function(e) {\n var i, t;\n if (e != null)\n if (typeof e == \"object\") {\n if (e.hasOwnProperty(i = \"DECIMAL_PLACES\") && (t = e[i], S(t, 0, G, i), I = t), e.hasOwnProperty(i = \"ROUNDING_MODE\") && (t = e[i], S(t, 0, 8, i), A = t), e.hasOwnProperty(i = \"EXPONENTIAL_AT\") && (t = e[i], t && t.pop ? (S(t[0], -1e9, 0, i), S(t[1], 0, G, i), M = t[0], T = t[1]) : (S(t, -1e9, G, i), M = -(T = t < 0 ? -t : t))), e.hasOwnProperty(i = \"RANGE\"))\n if (t = e[i], t && t.pop)\n S(t[0], -1e9, -1, i), S(t[1], 1, G, i), R = t[0], y = t[1];\n else if (S(t, -1e9, G, i), t)\n R = -(y = t < 0 ? -t : t);\n else\n throw Error(F + i + \" cannot be zero: \" + t);\n if (e.hasOwnProperty(i = \"CRYPTO\"))\n if (t = e[i], t === !!t)\n if (t)\n if (typeof crypto < \"u\" && crypto && (crypto.getRandomValues || crypto.randomBytes))\n j = t;\n else\n throw j = !t, Error(F + \"crypto unavailable\");\n else\n j = t;\n else\n throw Error(F + i + \" not true or false: \" + t);\n if (e.hasOwnProperty(i = \"MODULO_MODE\") && (t = e[i], S(t, 0, 9, i), Y = t), e.hasOwnProperty(i = \"POW_PRECISION\") && (t = e[i], S(t, 0, G, i), k = t), e.hasOwnProperty(i = \"FORMAT\"))\n if (t = e[i], typeof t == \"object\") te = t;\n else throw Error(F + i + \" not an object: \" + t);\n if (e.hasOwnProperty(i = \"ALPHABET\"))\n if (t = e[i], typeof t == \"string\" && !/^.?$|[+\\-.\\s]|(.).*\\1/.test(t))\n fe = t.slice(0, 10) == \"0123456789\", b = t;\n else\n throw Error(F + i + \" invalid: \" + t);\n } else\n throw Error(F + \"Object expected: \" + e);\n return {\n DECIMAL_PLACES: I,\n ROUNDING_MODE: A,\n EXPONENTIAL_AT: [M, T],\n RANGE: [R, y],\n CRYPTO: j,\n MODULO_MODE: Y,\n POW_PRECISION: k,\n FORMAT: te,\n ALPHABET: b\n };\n }, m.isBigNumber = function(e) {\n if (!e || e._isBigNumber !== !0) return !1;\n if (!m.DEBUG) return !0;\n var i, t, c = e.c, n = e.e, o = e.s;\n e: if ({}.toString.call(c) == \"[object Array]\") {\n if ((o === 1 || o === -1) && n >= -1e9 && n <= G && n === H(n)) {\n if (c[0] === 0) {\n if (n === 0 && c.length === 1) return !0;\n break e;\n }\n if (i = (n + 1) % E, i < 1 && (i += E), String(c[0]).length == i) {\n for (i = 0; i < c.length; i++)\n if (t = c[i], t < 0 || t >= X || t !== H(t)) break e;\n if (t !== 0) return !0;\n }\n }\n } else if (c === null && n === null && (o === null || o === 1 || o === -1))\n return !0;\n throw Error(F + \"Invalid BigNumber: \" + e);\n }, m.maximum = m.max = function() {\n return we(arguments, -1);\n }, m.minimum = m.min = function() {\n return we(arguments, 1);\n }, m.random = function() {\n var e = 9007199254740992, i = Math.random() * e & 2097151 ? function() {\n return H(Math.random() * e);\n } : function() {\n return (Math.random() * 1073741824 | 0) * 8388608 + (Math.random() * 8388608 | 0);\n };\n return function(t) {\n var c, n, o, u, r, s = 0, l = [], f = new m(v);\n if (t == null ? t = I : S(t, 0, G), u = de(t / E), j)\n if (crypto.getRandomValues) {\n for (c = crypto.getRandomValues(new Uint32Array(u *= 2)); s < u; )\n r = c[s] * 131072 + (c[s + 1] >>> 11), r >= 9e15 ? (n = crypto.getRandomValues(new Uint32Array(2)), c[s] = n[0], c[s + 1] = n[1]) : (l.push(r % 1e14), s += 2);\n s = u / 2;\n } else if (crypto.randomBytes) {\n for (c = crypto.randomBytes(u *= 7); s < u; )\n r = (c[s] & 31) * 281474976710656 + c[s + 1] * 1099511627776 + c[s + 2] * 4294967296 + c[s + 3] * 16777216 + (c[s + 4] << 16) + (c[s + 5] << 8) + c[s + 6], r >= 9e15 ? crypto.randomBytes(7).copy(c, s) : (l.push(r % 1e14), s += 7);\n s = u / 7;\n } else\n throw j = !1, Error(F + \"crypto unavailable\");\n if (!j)\n for (; s < u; )\n r = i(), r < 9e15 && (l[s++] = r % 1e14);\n for (u = l[--s], t %= E, u && t && (r = me[E - t], l[s] = H(u / r) * r); l[s] === 0; l.pop(), s--) ;\n if (s < 0)\n l = [o = 0];\n else {\n for (o = -1; l[0] === 0; l.splice(0, 1), o -= E) ;\n for (s = 1, r = l[0]; r >= 10; r /= 10, s++) ;\n s < E && (o -= E - s);\n }\n return f.e = o, f.c = l, f;\n };\n }(), m.sum = function() {\n for (var e = 1, i = arguments, t = new m(i[0]); e < i.length; ) t = t.plus(i[e++]);\n return t;\n }, g = /* @__PURE__ */ function() {\n var e = \"0123456789\";\n function i(t, c, n, o) {\n for (var u, r = [0], s, l = 0, f = t.length; l < f; ) {\n for (s = r.length; s--; r[s] *= c) ;\n for (r[0] += o.indexOf(t.charAt(l++)), u = 0; u < r.length; u++)\n r[u] > n - 1 && (r[u + 1] == null && (r[u + 1] = 0), r[u + 1] += r[u] / n | 0, r[u] %= n);\n }\n return r.reverse();\n }\n return function(t, c, n, o, u) {\n var r, s, l, f, h, p, N, _, x = t.indexOf(\".\"), C = I, O = A;\n for (x >= 0 && (f = k, k = 0, t = t.replace(\".\", \"\"), _ = new m(c), p = _.pow(t.length - x), k = f, _.c = i(\n Q(z(p.c), p.e, \"0\"),\n 10,\n n,\n e\n ), _.e = _.c.length), N = i(t, c, n, u ? (r = b, e) : (r = e, b)), l = f = N.length; N[--f] == 0; N.pop()) ;\n if (!N[0]) return r.charAt(0);\n if (x < 0 ? --l : (p.c = N, p.e = l, p.s = o, p = a(p, _, C, O, n), N = p.c, h = p.r, l = p.e), s = l + C + 1, x = N[s], f = n / 2, h = h || s < 0 || N[s + 1] != null, h = O < 4 ? (x != null || h) && (O == 0 || O == (p.s < 0 ? 3 : 2)) : x > f || x == f && (O == 4 || h || O == 6 && N[s - 1] & 1 || O == (p.s < 0 ? 8 : 7)), s < 1 || !N[0])\n t = h ? Q(r.charAt(1), -C, r.charAt(0)) : r.charAt(0);\n else {\n if (N.length = s, h)\n for (--n; ++N[--s] > n; )\n N[s] = 0, s || (++l, N = [1].concat(N));\n for (f = N.length; !N[--f]; ) ;\n for (x = 0, t = \"\"; x <= f; t += r.charAt(N[x++])) ;\n t = Q(t, l, r.charAt(0));\n }\n return t;\n };\n }(), a = /* @__PURE__ */ function() {\n function e(c, n, o) {\n var u, r, s, l, f = 0, h = c.length, p = n % ee, N = n / ee | 0;\n for (c = c.slice(); h--; )\n s = c[h] % ee, l = c[h] / ee | 0, u = N * s + l * p, r = p * s + u % ee * ee + f, f = (r / o | 0) + (u / ee | 0) + N * l, c[h] = r % o;\n return f && (c = [f].concat(c)), c;\n }\n function i(c, n, o, u) {\n var r, s;\n if (o != u)\n s = o > u ? 1 : -1;\n else\n for (r = s = 0; r < o; r++)\n if (c[r] != n[r]) {\n s = c[r] > n[r] ? 1 : -1;\n break;\n }\n return s;\n }\n function t(c, n, o, u) {\n for (var r = 0; o--; )\n c[o] -= r, r = c[o] < n[o] ? 1 : 0, c[o] = r * u + c[o] - n[o];\n for (; !c[0] && c.length > 1; c.splice(0, 1)) ;\n }\n return function(c, n, o, u, r) {\n var s, l, f, h, p, N, _, x, C, O, D, P, ne, ue, ae, J, re, V = c.s == n.s ? 1 : -1, L = c.c, B = n.c;\n if (!L || !L[0] || !B || !B[0])\n return new m(\n // Return NaN if either NaN, or both Infinity or 0.\n !c.s || !n.s || (L ? B && L[0] == B[0] : !B) ? NaN : (\n // Return ±0 if x is ±0 or y is ±Infinity, or return ±Infinity as y is ±0.\n L && L[0] == 0 || !B ? V * 0 : V / 0\n )\n );\n for (x = new m(V), C = x.c = [], l = c.e - n.e, V = o + l + 1, r || (r = X, l = W(c.e / E) - W(n.e / E), V = V / E | 0), f = 0; B[f] == (L[f] || 0); f++) ;\n if (B[f] > (L[f] || 0) && l--, V < 0)\n C.push(1), h = !0;\n else {\n for (ue = L.length, J = B.length, f = 0, V += 2, p = H(r / (B[0] + 1)), p > 1 && (B = e(B, p, r), L = e(L, p, r), J = B.length, ue = L.length), ne = J, O = L.slice(0, J), D = O.length; D < J; O[D++] = 0) ;\n re = B.slice(), re = [0].concat(re), ae = B[0], B[1] >= r / 2 && ae++;\n do {\n if (p = 0, s = i(B, O, J, D), s < 0) {\n if (P = O[0], J != D && (P = P * r + (O[1] || 0)), p = H(P / ae), p > 1)\n for (p >= r && (p = r - 1), N = e(B, p, r), _ = N.length, D = O.length; i(N, O, _, D) == 1; )\n p--, t(N, J < _ ? re : B, _, r), _ = N.length, s = 1;\n else\n p == 0 && (s = p = 1), N = B.slice(), _ = N.length;\n if (_ < D && (N = [0].concat(N)), t(O, N, D, r), D = O.length, s == -1)\n for (; i(B, O, J, D) < 1; )\n p++, t(O, J < D ? re : B, D, r), D = O.length;\n } else s === 0 && (p++, O = [0]);\n C[f++] = p, O[0] ? O[D++] = L[ne] || 0 : (O = [L[ne]], D = 1);\n } while ((ne++ < ue || O[0] != null) && V--);\n h = O[0] != null, C[0] || C.splice(0, 1);\n }\n if (r == X) {\n for (f = 1, V = C[0]; V >= 10; V /= 10, f++) ;\n q(x, o + (x.e = f + l * E - 1) + 1, u, h);\n } else\n x.e = l, x.r = +h;\n return x;\n };\n }();\n function ce(e, i, t, c) {\n var n, o, u, r, s;\n if (t == null ? t = A : S(t, 0, 8), !e.c) return e.toString();\n if (n = e.c[0], u = e.e, i == null)\n s = z(e.c), s = c == 1 || c == 2 && (u <= M || u >= T) ? oe(s, u) : Q(s, u, \"0\");\n else if (e = q(new m(e), i, t), o = e.e, s = z(e.c), r = s.length, c == 1 || c == 2 && (i <= o || o <= M)) {\n for (; r < i; s += \"0\", r++) ;\n s = oe(s, o);\n } else if (i -= u, s = Q(s, o, \"0\"), o + 1 > r) {\n if (--i > 0) for (s += \".\"; i--; s += \"0\") ;\n } else if (i += o - r, i > 0)\n for (o + 1 == r && (s += \".\"); i--; s += \"0\") ;\n return e.s < 0 && n ? \"-\" + s : s;\n }\n function we(e, i) {\n for (var t, c, n = 1, o = new m(e[0]); n < e.length; n++)\n c = new m(e[n]), (!c.s || (t = ie(o, c)) === i || t === 0 && o.s === i) && (o = c);\n return o;\n }\n function le(e, i, t) {\n for (var c = 1, n = i.length; !i[--n]; i.pop()) ;\n for (n = i[0]; n >= 10; n /= 10, c++) ;\n return (t = c + t * E - 1) > y ? e.c = e.e = null : t < R ? e.c = [e.e = 0] : (e.e = t, e.c = i), e;\n }\n U = /* @__PURE__ */ function() {\n var e = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i, i = /^([^.]+)\\.$/, t = /^\\.([^.]+)$/, c = /^-?(Infinity|NaN)$/, n = /^\\s*\\+(?=[\\w.])|^\\s+|\\s+$/g;\n return function(o, u, r, s) {\n var l, f = r ? u : u.replace(n, \"\");\n if (c.test(f))\n o.s = isNaN(f) ? null : f < 0 ? -1 : 1;\n else {\n if (!r && (f = f.replace(e, function(h, p, N) {\n return l = (N = N.toLowerCase()) == \"x\" ? 16 : N == \"b\" ? 2 : 8, !s || s == l ? p : h;\n }), s && (l = s, f = f.replace(i, \"$1\").replace(t, \"0.$1\")), u != f))\n return new m(f, l);\n if (m.DEBUG)\n throw Error(F + \"Not a\" + (s ? \" base \" + s : \"\") + \" number: \" + u);\n o.s = null;\n }\n o.c = o.e = null;\n };\n }();\n function q(e, i, t, c) {\n var n, o, u, r, s, l, f, h = e.c, p = me;\n if (h) {\n e: {\n for (n = 1, r = h[0]; r >= 10; r /= 10, n++) ;\n if (o = i - n, o < 0)\n o += E, u = i, s = h[l = 0], f = H(s / p[n - u - 1] % 10);\n else if (l = de((o + 1) / E), l >= h.length)\n if (c) {\n for (; h.length <= l; h.push(0)) ;\n s = f = 0, n = 1, o %= E, u = o - E + 1;\n } else\n break e;\n else {\n for (s = r = h[l], n = 1; r >= 10; r /= 10, n++) ;\n o %= E, u = o - E + n, f = u < 0 ? 0 : H(s / p[n - u - 1] % 10);\n }\n if (c = c || i < 0 || // Are there any non-zero digits after the rounding digit?\n // The expression n % pows10[d - j - 1] returns all digits of n to the right\n // of the digit at j, e.g. if n is 908714 and j is 2, the expression gives 714.\n h[l + 1] != null || (u < 0 ? s : s % p[n - u - 1]), c = t < 4 ? (f || c) && (t == 0 || t == (e.s < 0 ? 3 : 2)) : f > 5 || f == 5 && (t == 4 || c || t == 6 && // Check whether the digit to the left of the rounding digit is odd.\n (o > 0 ? u > 0 ? s / p[n - u] : 0 : h[l - 1]) % 10 & 1 || t == (e.s < 0 ? 8 : 7)), i < 1 || !h[0])\n return h.length = 0, c ? (i -= e.e + 1, h[0] = p[(E - i % E) % E], e.e = -i || 0) : h[0] = e.e = 0, e;\n if (o == 0 ? (h.length = l, r = 1, l--) : (h.length = l + 1, r = p[E - o], h[l] = u > 0 ? H(s / p[n - u] % p[u]) * r : 0), c)\n for (; ; )\n if (l == 0) {\n for (o = 1, u = h[0]; u >= 10; u /= 10, o++) ;\n for (u = h[0] += r, r = 1; u >= 10; u /= 10, r++) ;\n o != r && (e.e++, h[0] == X && (h[0] = 1));\n break;\n } else {\n if (h[l] += r, h[l] != X) break;\n h[l--] = 0, r = 1;\n }\n for (o = h.length; h[--o] === 0; h.pop()) ;\n }\n e.e > y ? e.c = e.e = null : e.e < R && (e.c = [e.e = 0]);\n }\n return e;\n }\n function K(e) {\n var i, t = e.e;\n return t === null ? e.toString() : (i = z(e.c), i = t <= M || t >= T ? oe(i, t) : Q(i, t, \"0\"), e.s < 0 ? \"-\" + i : i);\n }\n return d.absoluteValue = d.abs = function() {\n var e = new m(this);\n return e.s < 0 && (e.s = 1), e;\n }, d.comparedTo = function(e, i) {\n return ie(this, new m(e, i));\n }, d.decimalPlaces = d.dp = function(e, i) {\n var t, c, n, o = this;\n if (e != null)\n return S(e, 0, G), i == null ? i = A : S(i, 0, 8), q(new m(o), e + o.e + 1, i);\n if (!(t = o.c)) return null;\n if (c = ((n = t.length - 1) - W(this.e / E)) * E, n = t[n]) for (; n % 10 == 0; n /= 10, c--) ;\n return c < 0 && (c = 0), c;\n }, d.dividedBy = d.div = function(e, i) {\n return a(this, new m(e, i), I, A);\n }, d.dividedToIntegerBy = d.idiv = function(e, i) {\n return a(this, new m(e, i), 0, 1);\n }, d.exponentiatedBy = d.pow = function(e, i) {\n var t, c, n, o, u, r, s, l, f, h = this;\n if (e = new m(e), e.c && !e.isInteger())\n throw Error(F + \"Exponent not an integer: \" + K(e));\n if (i != null && (i = new m(i)), r = e.e > 14, !h.c || !h.c[0] || h.c[0] == 1 && !h.e && h.c.length == 1 || !e.c || !e.c[0])\n return f = new m(Math.pow(+K(h), r ? e.s * (2 - se(e)) : +K(e))), i ? f.mod(i) : f;\n if (s = e.s < 0, i) {\n if (i.c ? !i.c[0] : !i.s) return new m(NaN);\n c = !s && h.isInteger() && i.isInteger(), c && (h = h.mod(i));\n } else {\n if (e.e > 9 && (h.e > 0 || h.e < -1 || (h.e == 0 ? h.c[0] > 1 || r && h.c[1] >= 24e7 : h.c[0] < 8e13 || r && h.c[0] <= 9999975e7)))\n return o = h.s < 0 && se(e) ? -0 : 0, h.e > -1 && (o = 1 / o), new m(s ? 1 / o : o);\n k && (o = de(k / E + 2));\n }\n for (r ? (t = new m(0.5), s && (e.s = 1), l = se(e)) : (n = Math.abs(+K(e)), l = n % 2), f = new m(v); ; ) {\n if (l) {\n if (f = f.times(h), !f.c) break;\n o ? f.c.length > o && (f.c.length = o) : c && (f = f.mod(i));\n }\n if (n) {\n if (n = H(n / 2), n === 0) break;\n l = n % 2;\n } else if (e = e.times(t), q(e, e.e + 1, 1), e.e > 14)\n l = se(e);\n else {\n if (n = +K(e), n === 0) break;\n l = n % 2;\n }\n h = h.times(h), o ? h.c && h.c.length > o && (h.c.length = o) : c && (h = h.mod(i));\n }\n return c ? f : (s && (f = v.div(f)), i ? f.mod(i) : o ? q(f, k, A, u) : f);\n }, d.integerValue = function(e) {\n var i = new m(this);\n return e == null ? e = A : S(e, 0, 8), q(i, i.e + 1, e);\n }, d.isEqualTo = d.eq = function(e, i) {\n return ie(this, new m(e, i)) === 0;\n }, d.isFinite = function() {\n return !!this.c;\n }, d.isGreaterThan = d.gt = function(e, i) {\n return ie(this, new m(e, i)) > 0;\n }, d.isGreaterThanOrEqualTo = d.gte = function(e, i) {\n return (i = ie(this, new m(e, i))) === 1 || i === 0;\n }, d.isInteger = function() {\n return !!this.c && W(this.e / E) > this.c.length - 2;\n }, d.isLessThan = d.lt = function(e, i) {\n return ie(this, new m(e, i)) < 0;\n }, d.isLessThanOrEqualTo = d.lte = function(e, i) {\n return (i = ie(this, new m(e, i))) === -1 || i === 0;\n }, d.isNaN = function() {\n return !this.s;\n }, d.isNegative = function() {\n return this.s < 0;\n }, d.isPositive = function() {\n return this.s > 0;\n }, d.isZero = function() {\n return !!this.c && this.c[0] == 0;\n }, d.minus = function(e, i) {\n var t, c, n, o, u = this, r = u.s;\n if (e = new m(e, i), i = e.s, !r || !i) return new m(NaN);\n if (r != i)\n return e.s = -i, u.plus(e);\n var s = u.e / E, l = e.e / E, f = u.c, h = e.c;\n if (!s || !l) {\n if (!f || !h) return f ? (e.s = -i, e) : new m(h ? u : NaN);\n if (!f[0] || !h[0])\n return h[0] ? (e.s = -i, e) : new m(f[0] ? u : (\n // IEEE 754 (2008) 6.3: n - n = -0 when rounding to -Infinity\n A == 3 ? -0 : 0\n ));\n }\n if (s = W(s), l = W(l), f = f.slice(), r = s - l) {\n for ((o = r < 0) ? (r = -r, n = f) : (l = s, n = h), n.reverse(), i = r; i--; n.push(0)) ;\n n.reverse();\n } else\n for (c = (o = (r = f.length) < (i = h.length)) ? r : i, r = i = 0; i < c; i++)\n if (f[i] != h[i]) {\n o = f[i] < h[i];\n break;\n }\n if (o && (n = f, f = h, h = n, e.s = -e.s), i = (c = h.length) - (t = f.length), i > 0) for (; i--; f[t++] = 0) ;\n for (i = X - 1; c > r; ) {\n if (f[--c] < h[c]) {\n for (t = c; t && !f[--t]; f[t] = i) ;\n --f[t], f[c] += X;\n }\n f[c] -= h[c];\n }\n for (; f[0] == 0; f.splice(0, 1), --l) ;\n return f[0] ? le(e, f, l) : (e.s = A == 3 ? -1 : 1, e.c = [e.e = 0], e);\n }, d.modulo = d.mod = function(e, i) {\n var t, c, n = this;\n return e = new m(e, i), !n.c || !e.s || e.c && !e.c[0] ? new m(NaN) : !e.c || n.c && !n.c[0] ? new m(n) : (Y == 9 ? (c = e.s, e.s = 1, t = a(n, e, 0, 3), e.s = c, t.s *= c) : t = a(n, e, 0, Y), e = n.minus(t.times(e)), !e.c[0] && Y == 1 && (e.s = n.s), e);\n }, d.multipliedBy = d.times = function(e, i) {\n var t, c, n, o, u, r, s, l, f, h, p, N, _, x, C, O = this, D = O.c, P = (e = new m(e, i)).c;\n if (!D || !P || !D[0] || !P[0])\n return !O.s || !e.s || D && !D[0] && !P || P && !P[0] && !D ? e.c = e.e = e.s = null : (e.s *= O.s, !D || !P ? e.c = e.e = null : (e.c = [0], e.e = 0)), e;\n for (c = W(O.e / E) + W(e.e / E), e.s *= O.s, s = D.length, h = P.length, s < h && (_ = D, D = P, P = _, n = s, s = h, h = n), n = s + h, _ = []; n--; _.push(0)) ;\n for (x = X, C = ee, n = h; --n >= 0; ) {\n for (t = 0, p = P[n] % C, N = P[n] / C | 0, u = s, o = n + u; o > n; )\n l = D[--u] % C, f = D[u] / C | 0, r = N * l + f * p, l = p * l + r % C * C + _[o] + t, t = (l / x | 0) + (r / C | 0) + N * f, _[o--] = l % x;\n _[o] = t;\n }\n return t ? ++c : _.splice(0, 1), le(e, _, c);\n }, d.negated = function() {\n var e = new m(this);\n return e.s = -e.s || null, e;\n }, d.plus = function(e, i) {\n var t, c = this, n = c.s;\n if (e = new m(e, i), i = e.s, !n || !i) return new m(NaN);\n if (n != i)\n return e.s = -i, c.minus(e);\n var o = c.e / E, u = e.e / E, r = c.c, s = e.c;\n if (!o || !u) {\n if (!r || !s) return new m(n / 0);\n if (!r[0] || !s[0]) return s[0] ? e : new m(r[0] ? c : n * 0);\n }\n if (o = W(o), u = W(u), r = r.slice(), n = o - u) {\n for (n > 0 ? (u = o, t = s) : (n = -n, t = r), t.reverse(); n--; t.push(0)) ;\n t.reverse();\n }\n for (n = r.length, i = s.length, n - i < 0 && (t = s, s = r, r = t, i = n), n = 0; i; )\n n = (r[--i] = r[i] + s[i] + n) / X | 0, r[i] = X === r[i] ? 0 : r[i] % X;\n return n && (r = [n].concat(r), ++u), le(e, r, u);\n }, d.precision = d.sd = function(e, i) {\n var t, c, n, o = this;\n if (e != null && e !== !!e)\n return S(e, 1, G), i == null ? i = A : S(i, 0, 8), q(new m(o), e, i);\n if (!(t = o.c)) return null;\n if (n = t.length - 1, c = n * E + 1, n = t[n]) {\n for (; n % 10 == 0; n /= 10, c--) ;\n for (n = t[0]; n >= 10; n /= 10, c++) ;\n }\n return e && o.e + 1 > c && (c = o.e + 1), c;\n }, d.shiftedBy = function(e) {\n return S(e, -9007199254740991, pe), this.times(\"1e\" + e);\n }, d.squareRoot = d.sqrt = function() {\n var e, i, t, c, n, o = this, u = o.c, r = o.s, s = o.e, l = I + 4, f = new m(\"0.5\");\n if (r !== 1 || !u || !u[0])\n return new m(!r || r < 0 && (!u || u[0]) ? NaN : u ? o : 1 / 0);\n if (r = Math.sqrt(+K(o)), r == 0 || r == 1 / 0 ? (i = z(u), (i.length + s) % 2 == 0 && (i += \"0\"), r = Math.sqrt(+i), s = W((s + 1) / 2) - (s < 0 || s % 2), r == 1 / 0 ? i = \"5e\" + s : (i = r.toExponential(), i = i.slice(0, i.indexOf(\"e\") + 1) + s), t = new m(i)) : t = new m(r + \"\"), t.c[0]) {\n for (s = t.e, r = s + l, r < 3 && (r = 0); ; )\n if (n = t, t = f.times(n.plus(a(o, n, l, 1))), z(n.c).slice(0, r) === (i = z(t.c)).slice(0, r))\n if (t.e < s && --r, i = i.slice(r - 3, r + 1), i == \"9999\" || !c && i == \"4999\") {\n if (!c && (q(n, n.e + I + 2, 0), n.times(n).eq(o))) {\n t = n;\n break;\n }\n l += 4, r += 4, c = 1;\n } else {\n (!+i || !+i.slice(1) && i.charAt(0) == \"5\") && (q(t, t.e + I + 2, 1), e = !t.times(t).eq(o));\n break;\n }\n }\n return q(t, t.e + I + 1, A, e);\n }, d.toExponential = function(e, i) {\n return e != null && (S(e, 0, G), e++), ce(this, e, i, 1);\n }, d.toFixed = function(e, i) {\n return e != null && (S(e, 0, G), e = e + this.e + 1), ce(this, e, i);\n }, d.toFormat = function(e, i, t) {\n var c, n = this;\n if (t == null)\n e != null && i && typeof i == \"object\" ? (t = i, i = null) : e && typeof e == \"object\" ? (t = e, e = i = null) : t = te;\n else if (typeof t != \"object\")\n throw Error(F + \"Argument not an object: \" + t);\n if (c = n.toFixed(e, i), n.c) {\n var o, u = c.split(\".\"), r = +t.groupSize, s = +t.secondaryGroupSize, l = t.groupSeparator || \"\", f = u[0], h = u[1], p = n.s < 0, N = p ? f.slice(1) : f, _ = N.length;\n if (s && (o = r, r = s, s = o, _ -= o), r > 0 && _ > 0) {\n for (o = _ % r || r, f = N.substr(0, o); o < _; o += r) f += l + N.substr(o, r);\n s > 0 && (f += l + N.slice(o)), p && (f = \"-\" + f);\n }\n c = h ? f + (t.decimalSeparator || \"\") + ((s = +t.fractionGroupSize) ? h.replace(\n new RegExp(\"\\\\d{\" + s + \"}\\\\B\", \"g\"),\n \"$&\" + (t.fractionGroupSeparator || \"\")\n ) : h) : f;\n }\n return (t.prefix || \"\") + c + (t.suffix || \"\");\n }, d.toFraction = function(e) {\n var i, t, c, n, o, u, r, s, l, f, h, p, N = this, _ = N.c;\n if (e != null && (r = new m(e), !r.isInteger() && (r.c || r.s !== 1) || r.lt(v)))\n throw Error(F + \"Argument \" + (r.isInteger() ? \"out of range: \" : \"not an integer: \") + K(r));\n if (!_) return new m(N);\n for (i = new m(v), l = t = new m(v), c = s = new m(v), p = z(_), o = i.e = p.length - N.e - 1, i.c[0] = me[(u = o % E) < 0 ? E + u : u], e = !e || r.comparedTo(i) > 0 ? o > 0 ? i : l : r, u = y, y = 1 / 0, r = new m(p), s.c[0] = 0; f = a(r, i, 0, 1), n = t.plus(f.times(c)), n.comparedTo(e) != 1; )\n t = c, c = n, l = s.plus(f.times(n = l)), s = n, i = r.minus(f.times(n = i)), r = n;\n return n = a(e.minus(t), c, 0, 1), s = s.plus(n.times(l)), t = t.plus(n.times(c)), s.s = l.s = N.s, o = o * 2, h = a(l, c, o, A).minus(N).abs().comparedTo(\n a(s, t, o, A).minus(N).abs()\n ) < 1 ? [l, c] : [s, t], y = u, h;\n }, d.toNumber = function() {\n return +K(this);\n }, d.toPrecision = function(e, i) {\n return e != null && S(e, 1, G), ce(this, e, i, 2);\n }, d.toString = function(e) {\n var i, t = this, c = t.s, n = t.e;\n return n === null ? c ? (i = \"Infinity\", c < 0 && (i = \"-\" + i)) : i = \"NaN\" : (e == null ? i = n <= M || n >= T ? oe(z(t.c), n) : Q(z(t.c), n, \"0\") : e === 10 && fe ? (t = q(new m(t), I + n + 1, A), i = Q(z(t.c), t.e, \"0\")) : (S(e, 2, b.length, \"Base\"), i = g(Q(z(t.c), n, \"0\"), 10, e, c, !0)), c < 0 && t.c[0] && (i = \"-\" + i)), i;\n }, d.valueOf = d.toJSON = function() {\n return K(this);\n }, d._isBigNumber = !0, d[Symbol.toStringTag] = \"BigNumber\", d[Symbol.for(\"nodejs.util.inspect.custom\")] = d.valueOf, w != null && m.set(w), m;\n}\nfunction W(w) {\n var a = w | 0;\n return w > 0 || w === a ? a : a - 1;\n}\nfunction z(w) {\n for (var a, g, U = 1, d = w.length, v = w[0] + \"\"; U < d; ) {\n for (a = w[U++] + \"\", g = E - a.length; g--; a = \"0\" + a) ;\n v += a;\n }\n for (d = v.length; v.charCodeAt(--d) === 48; ) ;\n return v.slice(0, d + 1 || 1);\n}\nfunction ie(w, a) {\n var g, U, d = w.c, v = a.c, I = w.s, A = a.s, M = w.e, T = a.e;\n if (!I || !A) return null;\n if (g = d && !d[0], U = v && !v[0], g || U) return g ? U ? 0 : -A : I;\n if (I != A) return I;\n if (g = I < 0, U = M == T, !d || !v) return U ? 0 : !d ^ g ? 1 : -1;\n if (!U) return M > T ^ g ? 1 : -1;\n for (A = (M = d.length) < (T = v.length) ? M : T, I = 0; I < A; I++) if (d[I] != v[I]) return d[I] > v[I] ^ g ? 1 : -1;\n return M == T ? 0 : M > T ^ g ? 1 : -1;\n}\nfunction S(w, a, g, U) {\n if (w < a || w > g || w !== H(w))\n throw Error(F + (U || \"Argument\") + (typeof w == \"number\" ? w < a || w > g ? \" out of range: \" : \" not an integer: \" : \" not a primitive number: \") + String(w));\n}\nfunction se(w) {\n var a = w.c.length - 1;\n return W(w.e / E) == a && w.c[a] % 2 != 0;\n}\nfunction oe(w, a) {\n return (w.length > 1 ? w.charAt(0) + \".\" + w.slice(1) : w) + (a < 0 ? \"e\" : \"e+\") + a;\n}\nfunction Q(w, a, g) {\n var U, d;\n if (a < 0) {\n for (d = g + \".\"; ++a; d += g) ;\n w = d + w;\n } else if (U = w.length, ++a > U) {\n for (d = g, a -= U; --a; d += g) ;\n w += d;\n } else a < U && (w = w.slice(0, a) + \".\" + w.slice(a));\n return w;\n}\nvar $ = Ie();\nconst Ae = 100000n, Ne = (w, a = {}) => {\n const {\n style: g = \"decimal\",\n compact: U = !1,\n fractionDigits: d,\n adaptiveDecimals: v = !1\n } = a, I = typeof w == \"string\" ? Number(w) : w, A = typeof I == \"bigint\" ? I < 0n ? -I : I : Math.abs(I), M = U === \"auto\" ? A >= Ae : U, T = typeof I == \"bigint\" ? Number(I) : I, R = v && T !== 0 && Math.abs(T) < Math.pow(10, -(d ?? 2)), y = new Intl.NumberFormat(\"en-US\", {\n style: g,\n ...g === \"currency\" && { currency: \"USD\" },\n maximumFractionDigits: R ? 20 : d ?? 2,\n minimumFractionDigits: R ? 0 : d ?? 2\n });\n if (!M)\n return R ? y.format(Ee(T)) : y.format(I);\n const Y = [\n { threshold: 1e12, suffix: \"T\", divisor: 1e12 },\n { threshold: 1e9, suffix: \"B\", divisor: 1e9 },\n { threshold: 1e6, suffix: \"M\", divisor: 1e6 },\n { threshold: 1e3, suffix: \"K\", divisor: 1e3 }\n ].find((k) => A >= k.threshold);\n if (Y) {\n const k = new Intl.NumberFormat(\"en-US\", {\n style: g,\n ...g === \"currency\" && { currency: \"USD\" },\n maximumFractionDigits: d ?? 1,\n minimumFractionDigits: d ?? 1\n }), te = Number(I) / Y.divisor;\n return k.format(te) + Y.suffix;\n }\n return R ? y.format(Ee(T)) : y.format(I);\n};\nfunction Ee(w) {\n if (w === 0) return 0;\n const a = w.toExponential().split(\"e\"), g = parseInt(a[1]), U = Math.abs(g);\n return Number(w.toFixed(U));\n}\nfunction De(w, a = 5, g = 5) {\n return w ? w.length <= a + g ? w : `${w.slice(0, a)}...${w.slice(-g)}` : \"\";\n}\nclass Z {\n /**\n * Create a new AssetAmount instance\n *\n * @param assetInfo - Information about the asset\n * @param params - An object specifying the amount in standard or microunits\n * @param params.standardUnits - The amount in standard units\n * @param params.microUnits - The amount in microunits (base units)\n * @returns A new instance of AssetAmount representing the specified amount\n *\n * @example\n * ```typescript\n * // Create 5.5 units of an asset with ID 123 and 6 decimals\n * const amount = new AssetAmount(\n * { id: 123, decimals: 6, unitName: \"XYZ\" },\n * { standardUnits: 5.5 }\n * )\n *\n * // Create from microunits\n * const amount = new AssetAmount(\n * { id: 123, decimals: 6, unitName: \"XYZ\" },\n * { microUnits: 5500000n }\n * )\n * ```\n */\n constructor(a, g) {\n he(this, \"_microUnits\");\n he(this, \"_assetInfo\");\n if (this._assetInfo = a, \"standardUnits\" in g) {\n const U = new $(g.standardUnits);\n this._microUnits = U.multipliedBy(new $(10).pow(this.decimals)).integerValue($.ROUND_DOWN);\n } else\n this._microUnits = new $(g.microUnits.toString());\n }\n /**\n * Return the amount in microunits (base units)\n */\n get microUnits() {\n return BigInt(\n this._microUnits.integerValue($.ROUND_DOWN).toString()\n );\n }\n /**\n * Return the amount as a BigNumber in microunits (preserving precision)\n */\n get microBigNum() {\n return this._microUnits;\n }\n /**\n * Return the amount in standard units\n */\n get standardUnits() {\n return this._microUnits.dividedBy(new $(10).pow(this.decimals)).toNumber();\n }\n /**\n * Return the amount in standard units as a BigNumber (preserving precision)\n */\n get standardBigNum() {\n return this._microUnits.dividedBy(new $(10).pow(this.decimals));\n }\n /**\n * Return the number of decimal places for the asset\n */\n get decimals() {\n return this._assetInfo.decimals;\n }\n /**\n * Return the asset ID\n */\n get assetId() {\n return this._assetInfo.id;\n }\n /**\n * Return the asset information\n */\n get assetInfo() {\n return this._assetInfo;\n }\n /**\n * Returns a string representation of the asset amount\n *\n * @example\n * ```typescript\n * const amount = AssetAmount.StandardUnits({ id: 123, decimals: 6, unitName: \"XYZ\" }, 5.5)\n * console.log(amount.toString()) // \"5.5 XYZ (5500000 microunits)\"\n */\n toString() {\n const a = this._assetInfo.unitName ? ` ${this._assetInfo.unitName}` : \"\";\n return `${this.standardBigNum.toFormat()}${a} (${this._microUnits.toFormat(0)} microunits)`;\n }\n /**\n * Format the amount for display with options\n *\n * @param options - Formatting options\n * @param options.showSymbol - Whether to include the asset symbol\n * @param options.symbol - The asset symbol to display (defaults to asset's unitName if available)\n * @param options.decimalPlaces - Number of decimal places to show\n * @param options.trimZeroes - Whether to trim trailing zeros (default: true)\n * @param options.showMicrounits - Whether to include microunits in parentheses\n *\n * @example\n * ```typescript\n * const amount = AssetAmount.MicroUnits({ id: 123, decimals: 6, unitName: \"XYZ\" }, 5500000n)\n * console.log(amount.format()) // \"5.5\"\n * console.log(amount.format({ showSymbol: true })) // \"5.5 XYZ\"\n * console.log(amount.format({ showMicrounits: true })) // \"5.5 (5500000 microunits)\"\n * console.log(amount.format({ trimZeroes: false })) // \"5.500000\"\n * ```\n */\n format(a = {}) {\n const {\n showSymbol: g = !1,\n symbol: U,\n decimalPlaces: d = this.decimals,\n showMicrounits: v = !1,\n trimZeroes: I = !0\n } = a, A = Ne(this.standardUnits, {\n fractionDigits: d,\n adaptiveDecimals: I\n });\n let M = A;\n I && A.includes(\".\") && (M = A.replace(/\\.?0+$/, \"\"));\n let T = M;\n if (g) {\n const R = U || this._assetInfo.unitName || \"\";\n T = R ? `${M} ${R}` : M;\n }\n if (v) {\n const R = Ne(this.microUnits, {\n fractionDigits: 0,\n adaptiveDecimals: !0\n });\n T += ` (${R} microunits)`;\n }\n return T;\n }\n /**\n * Allows using AssetAmount in comparison operations\n * Not recommended for conversion to number, use standardUnits or microUnits explicitly\n *\n * @example\n * ```typescript\n * const amount = AssetAmount.MicroUnits({ id: 123, decimals: 6, unitName: \"XYZ\" }, 5500000n)\n * console.log(amount.valueOf()) // 5500000\n * ```\n */\n valueOf() {\n return this._microUnits.toNumber();\n }\n /**\n * Create an AssetAmount object representing the given number of standard units\n *\n * @param assetInfo - Information about the asset\n * @param amount - The amount in standard units\n *\n * @example\n * ```typescript\n * const amount = AssetAmount.StandardUnits({ id: 123, decimals: 6, unitName: \"XYZ\" }, 5.5)\n * console.log(amount.microUnits) // 5500000n\n * ```\n */\n static StandardUnits(a, g) {\n return new Z(a, { standardUnits: g });\n }\n /**\n * Create an AssetAmount object representing the given number of microunits (base units)\n *\n * @param assetInfo - Information about the asset\n * @param amount - The amount in microunits\n *\n * @example\n * ```typescript\n * const amount = AssetAmount.MicroUnits({ id: 123, decimals: 6, unitName: \"XYZ\" }, 5500000n)\n * console.log(amount.standardUnits) // 5.5\n * ```\n */\n static MicroUnits(a, g) {\n return new Z(a, { microUnits: g });\n }\n /**\n * Create a zero AssetAmount for the specified asset\n *\n * @param assetInfo - Information about the asset\n *\n * @example\n * ```typescript\n * const amount = AssetAmount.zero({ id: 123, decimals: 6, unitName: \"XYZ\" })\n * console.log(amount.standardUnits) // 0\n * ```\n */\n static zero(a) {\n return new Z(a, { microUnits: 0 });\n }\n /**\n * Create an AssetAmount from a currency value and asset price\n *\n * @param assetInfo - Information about the asset\n * @param currencyAmount - The amount in the currency, e.g. 100 USD\n * @param assetPrice - The price of one unit of the asset in the currency, e.g. 10 USD\n *\n * @example\n * ```typescript\n * // Using USD as currency\n * const amount = AssetAmount.fromCurrency({ id: 123, decimals: 6, unitName: \"XYZ\" }, 100, 10)\n * console.log(amount.standardUnits) // 10\n * ```\n */\n static fromCurrency(a, g, U) {\n const d = new $(g), v = new $(U);\n if (v.isZero())\n throw new Error(\"Asset price cannot be zero\");\n const I = d.dividedBy(v);\n return Z.StandardUnits(a, I);\n }\n /**\n * Add another AssetAmount to this one.\n * Both amounts must be in the same asset (same assetId and decimals).\n *\n * @example\n * ```typescript\n * const amount1 = AssetAmount.StandardUnits({ id: 123, decimals: 6, unitName: \"XYZ\" }, 5.5)\n * const amount2 = AssetAmount.StandardUnits({ id: 123, decimals: 6, unitName: \"XYZ\" }, 10)\n * const result = amount1.add(amount2)\n * console.log(result.standardUnits) // 15.5\n * console.log(result.microUnits) // 15500000n\n * ```\n */\n add(a) {\n if (this.assetId !== a.assetId)\n throw new Error(\n `Cannot add AssetAmounts with different asset IDs (${this.assetId} and ${a.assetId})`\n );\n if (this.decimals !== a.decimals)\n throw new Error(\"Cannot add AssetAmounts with different decimals\");\n return Z.MicroUnits(\n this._assetInfo,\n this._microUnits.plus(a.microUnits.toString())\n );\n }\n /**\n * Subtract another AssetAmount from this one.\n * Both amounts must be in the same asset (same assetId and decimals).\n *\n * @example\n * ```typescript\n * const amount1 = AssetAmount.StandardUnits({ id: 123, decimals: 6, unitName: \"XYZ\" }, 10)\n * const amount2 = AssetAmount.StandardUnits({ id: 123, decimals: 6, unitName: \"XYZ\" }, 5.5)\n * const result = amount1.subtract(amount2)\n * console.log(result.standardUnits) // 4.5\n * console.log(result.microUnits) // 4500000n\n * ```\n */\n subtract(a) {\n if (this.assetId !== a.assetId)\n throw new Error(\n `Cannot subtract AssetAmounts with different asset IDs (${this.assetId} and ${a.assetId})`\n );\n if (this.decimals !== a.decimals)\n throw new Error(\"Cannot subtract AssetAmounts with different decimals\");\n return Z.MicroUnits(\n this._assetInfo,\n this._microUnits.minus(a.microUnits.toString())\n );\n }\n /**\n * Multiply this amount by a scalar value\n *\n * @example\n * ```typescript\n * const amount = AssetAmount.StandardUnits({ id: 123, decimals: 6, unitName: \"XYZ\" }, 5.5)\n * const result = amount.multiply(2)\n * console.log(result.standardUnits) // 11\n * console.log(result.microUnits) // 11000000n\n * ```\n */\n multiply(a) {\n const g = new $(a);\n return Z.MicroUnits(\n this._assetInfo,\n this._microUnits.multipliedBy(g).integerValue($.ROUND_DOWN)\n );\n }\n /**\n * Divide this amount by a scalar value\n *\n * @example\n * ```typescript\n * const amount = AssetAmount.StandardUnits({ id: 123, decimals: 6, unitName: \"XYZ\" }, 11)\n * const result = amount.divide(2)\n * console.log(result.standardUnits) // 5.5\n * console.log(result.microUnits) // 5500000n\n */\n divide(a) {\n const g = new $(a);\n if (g.isZero())\n throw new Error(\"Division by zero\");\n return Z.MicroUnits(\n this._assetInfo,\n this._microUnits.dividedBy(g).integerValue($.ROUND_DOWN)\n );\n }\n /**\n * Round this amount to a specific number of decimal places\n *\n * @param decimalPlaces - Number of decimal places to round to\n * @param roundingMode - Rounding mode to use (default: ROUND_HALF_UP)\n * @returns A new AssetAmount with the rounded value\n *\n * @example\n * ```typescript\n * const amount = AssetAmount.StandardUnits({ id: 123, decimals: 6, unitName: \"XYZ\" }, 11)\n * const result = amount.round(2)\n * console.log(result.standardUnits) // 11.00\n */\n round(a = 0, g = $.ROUND_HALF_UP) {\n if (a >= this.decimals)\n return this;\n const U = this.decimals - a, d = new $(10).pow(U), v = this._microUnits.dividedBy(d).integerValue(g).multipliedBy(d);\n return Z.MicroUnits(this._assetInfo, v);\n }\n /**\n * Get this amount as a percentage of another amount.\n * Returns a number between 0 and 100.\n * Both amounts must be in the same asset (same assetId and decimals).\n *\n * @example\n * ```typescript\n * const amount1 = AssetAmount.StandardUnits({ id: 123, decimals: 6, unitName: \"XYZ\" }, 25)\n * const amount2 = AssetAmount.StandardUnits({ id: 123, decimals: 6, unitName: \"XYZ\" }, 100)\n * const result = amount1.percentageOf(amount2)\n * console.log(result) // 25\n * ```\n */\n percentageOf(a) {\n if (this.assetId !== a.assetId)\n throw new Error(\n `Cannot compare AssetAmounts with different asset IDs (${this.assetId} and ${a.assetId})`\n );\n if (this.decimals !== a.decimals)\n throw new Error(\"Cannot compare AssetAmounts with different decimals\");\n if (a.isZero())\n throw new Error(\"Cannot calculate percentage of zero\");\n return this._microUnits.dividedBy(a.microUnits.toString()).multipliedBy(100).toNumber();\n }\n /**\n * Check if this amount is zero\n *\n * @example\n * ```typescript\n * const amount = AssetAmount.StandardUnits({ id: 123, decimals: 6, unitName: \"XYZ\" }, 0)\n * console.log(amount.isZero()) // true\n * ```\n */\n isZero() {\n return this._microUnits.isZero();\n }\n /**\n * Check if this amount is greater than zero\n *\n * @example\n * ```typescript\n * const amount = AssetAmount.StandardUnits({ id: 123, decimals: 6, unitName: \"XYZ\" }, 10)\n * console.log(amount.isPositive()) // true\n * ```\n */\n isPositive() {\n return this._microUnits.isPositive();\n }\n /**\n * Check if this amount is less than zero\n *\n * @example\n * ```typescript\n * const amount = AssetAmount.StandardUnits({ id: 123, decimals: 6, unitName: \"XYZ\" }, -10)\n * console.log(amount.isNegative()) // true\n * ```\n */\n isNegative() {\n return this._microUnits.isNegative();\n }\n /**\n * Check if this amount is greater than another AssetAmount.\n * Both amounts must be in the same asset (same assetId and decimals).\n *\n * @example\n * ```typescript\n * const amount1 = AssetAmount.StandardUnits({ id: 123, decimals: 6, unitName: \"XYZ\" }, 10)\n * const amount2 = AssetAmount.StandardUnits({ id: 123, decimals: 6, unitName: \"XYZ\" }, 5)\n * console.log(amount1.isGreaterThan(amount2)) // true\n * ```\n */\n isGreaterThan(a) {\n if (this.assetId !== a.assetId)\n throw new Error(\n `Cannot compare AssetAmounts with different asset IDs (${this.assetId} and ${a.assetId})`\n );\n if (this.decimals !== a.decimals)\n throw new Error(\"Cannot compare AssetAmounts with different decimals\");\n return this._microUnits.isGreaterThan(a.microUnits.toString());\n }\n /**\n * Check if this amount is less than another AssetAmount.\n * Both amounts must be in the same asset (same assetId and decimals).\n *\n * @example\n * ```typescript\n * const amount1 = AssetAmount.StandardUnits({ id: 123, decimals: 6, unitName: \"XYZ\" }, 5)\n * const amount2 = AssetAmount.StandardUnits({ id: 123, decimals: 6, unitName: \"XYZ\" }, 10)\n * console.log(amount1.isLessThan(amount2)) // true\n * ```\n */\n isLessThan(a) {\n if (this.assetId !== a.assetId)\n throw new Error(\n `Cannot compare AssetAmounts with different asset IDs (${this.assetId} and ${a.assetId})`\n );\n if (this.decimals !== a.decimals)\n throw new Error(\"Cannot compare AssetAmounts with different decimals\");\n return this._microUnits.isLessThan(a.microUnits.toString());\n }\n /**\n * Check if this amount is greater than or equal to another AssetAmount.\n * Both amounts must be in the same asset (same assetId and decimals).\n *\n * @example\n * ```typescript\n * const amount1 = AssetAmount.StandardUnits({ id: 123, decimals: 6, unitName: \"XYZ\" }, 10)\n * const amount2 = AssetAmount.StandardUnits({ id: 123, decimals: 6, unitName: \"XYZ\" }, 5)\n * console.log(amount1.isGreaterThanOrEqualTo(amount2)) // true\n * ```\n */\n isGreaterThanOrEqualTo(a) {\n if (this.assetId !== a.assetId)\n throw new Error(\n `Cannot compare AssetAmounts with different asset IDs (${this.assetId} and ${a.assetId})`\n );\n if (this.decimals !== a.decimals)\n throw new Error(\"Cannot compare AssetAmounts with different decimals\");\n return this._microUnits.isGreaterThanOrEqualTo(a.microUnits.toString());\n }\n /**\n * Check if this amount is less than or equal to another AssetAmount.\n * Both amounts must be in the same asset (same assetId and decimals).\n *\n * @example\n * ```typescript\n * const amount1 = AssetAmount.StandardUnits({ id: 123, decimals: 6, unitName: \"XYZ\" }, 5)\n * const amount2 = AssetAmount.StandardUnits({ id: 123, decimals: 6, unitName: \"XYZ\" }, 10)\n * console.log(amount1.isLessThanOrEqualTo(amount2)) // true\n * ```\n */\n isLessThanOrEqualTo(a) {\n if (this.assetId !== a.assetId)\n throw new Error(\n `Cannot compare AssetAmounts with different asset IDs (${this.assetId} and ${a.assetId})`\n );\n if (this.decimals !== a.decimals)\n throw new Error(\"Cannot compare AssetAmounts with different decimals\");\n return this._microUnits.isLessThanOrEqualTo(a.microUnits.toString());\n }\n /**\n * Check if this amount is exactly the same as another AssetAmount.\n * Both amounts must be in the same asset (same assetId and decimals).\n *\n * @example\n * ```typescript\n * const amount1 = AssetAmount.StandardUnits({ id: 123, decimals: 6, unitName: \"XYZ\" }, 10)\n * const amount2 = AssetAmount.StandardUnits({ id: 123, decimals: 6, unitName: \"XYZ\" }, 10)\n * console.log(amount1.equals(amount2)) // true\n * ```\n */\n equals(a) {\n return this.assetId === a.assetId && this.decimals === a.decimals && this._microUnits.isEqualTo(a.microUnits.toString());\n }\n /**\n * Convert the asset amount to a JSON-compatible representation\n *\n * @example\n * ```typescript\n * const amount = AssetAmount.StandardUnits({ id: 123, decimals: 6, unitName: \"XYZ\" }, 10)\n * console.log(amount.toJSON()) // { assetInfo: { id: 123, decimals: 6, unitName: \"XYZ\" }, microUnits: \"10\" }\n * ```\n */\n toJSON() {\n return {\n assetInfo: this._assetInfo,\n microUnits: this._microUnits.toString()\n };\n }\n /**\n * Create an AssetAmount from a JSON representation\n *\n * @example\n * ```typescript\n * const json = { assetInfo: { id: 123, decimals: 6, unitName: \"XYZ\" }, microUnits: \"10\" }\n * const amount = AssetAmount.fromJSON(json)\n * console.log(amount.standardUnits) // 10\n * ```\n */\n static fromJSON(a) {\n return Z.MicroUnits(a.assetInfo, a.microUnits);\n }\n}\nexport {\n Z as AssetAmount,\n Ne as formatNumber,\n De as formatShortAddress,\n Ee as roundToFirstNonZeroDecimal\n};\n//# sourceMappingURL=index.js.map\n","import { useQuery, UseQueryResult } from '@tanstack/react-query'\nimport { useWallet, useNetwork } from '@txnlab/use-wallet-react'\n\n// NFD types\nexport type NfdRecord = {\n name: string\n properties: {\n verified: {\n [key: string]: string\n }\n userDefined: {\n [key: string]: string\n }\n }\n image?: string\n avatar?: {\n url?: string\n }\n}\n\nexport type NfdLookupResponse = {\n [address: string]: NfdRecord | null\n}\n\nexport type NfdView = 'tiny' | 'thumbnail' | 'brief' | 'full'\n\n/**\n * Custom hook to fetch NFD data for an Algorand address\n *\n * @param options.enabled Whether to enable the NFD lookup (defaults to true)\n * @param options.view The view type for the NFD lookup ('tiny', 'thumbnail', 'brief', 'full') (defaults to 'thumbnail')\n * @returns NFD data query result\n */\nexport function useNfd(\n options: { enabled?: boolean; view?: NfdView } = {},\n): UseQueryResult<NfdRecord | null> {\n const { activeAddress } = useWallet()\n const { activeNetwork } = useNetwork()\n const { enabled = true, view = 'thumbnail' } = options\n\n return useQuery({\n queryKey: ['nfd', activeAddress, activeNetwork, view],\n queryFn: async ({ signal }) => {\n if (!activeAddress) return null\n\n // Determine the API endpoint based on the network\n // Only check for TestNet, otherwise use MainNet\n const isTestnet = activeNetwork === 'testnet'\n const apiEndpoint = isTestnet\n ? 'https://api.testnet.nf.domains'\n : 'https://api.nf.domains'\n\n const response = await fetch(\n `${apiEndpoint}/nfd/lookup?address=${encodeURIComponent(activeAddress)}&view=${view}`,\n {\n method: 'GET',\n headers: {\n Accept: 'application/json',\n },\n signal,\n },\n )\n\n // If we get a 404, it means the address doesn't have an NFD\n // We should return null and not retry\n if (response.status === 404) {\n return null\n }\n\n if (!response.ok) {\n throw new Error(`NFD lookup failed: ${response.statusText}`)\n }\n\n const data: NfdLookupResponse = await response.json()\n return data[activeAddress]\n },\n enabled: enabled && !!activeAddress,\n retry: (failureCount, error) => {\n // If the error is a 404 (not found), don't retry\n if (error instanceof Error && error.message.includes('404')) {\n return false\n }\n\n // For other errors, retry up to 3 times\n return failureCount < 3\n },\n refetchOnWindowFocus: true,\n })\n}\n","// Default IPFS gateway to use as fallback\nconst IPFS_GATEWAY_URL = 'https://ipfs.algonode.dev'\n\n/**\n * Check availability of an IPFS resource and return appropriate URL\n * Tries images.nf.domains first, falls back to IPFS gateway\n * Only returns URLs for image content types\n *\n * @param url - IPFS URL to check\n * @returns URL to use (either images.nf.domains or fallback gateway)\n */\nexport const checkIpfsAvailability = async (url: string): Promise<string> => {\n if (!url.startsWith('ipfs://')) {\n return url\n }\n\n const cid = url.replace('ipfs://', '')\n const nfdUrl = `https://images.nf.domains/ipfs/${cid}`\n const gatewayUrl = `${IPFS_GATEWAY_URL}/ipfs/${cid}`\n\n // Helper to check if content type is an image\n const isImageContentType = (contentType: string): boolean => {\n return contentType.startsWith('image/')\n }\n\n // Try images.nf.domains first\n try {\n const response = await fetch(nfdUrl, { method: 'HEAD' })\n if (response.ok) {\n const contentType = response.headers.get('content-type')\n if (contentType && isImageContentType(contentType)) {\n return nfdUrl\n }\n }\n } catch {\n console.info(\n `CID ${cid} is not cached on images.nf.domains, trying IPFS gateway...`,\n )\n }\n\n // Try IPFS gateway\n try {\n const response = await fetch(gatewayUrl, { method: 'HEAD' })\n if (response.ok) {\n const contentType = response.headers.get('content-type')\n\n // If it's an image, return the gateway URL\n if (contentType && isImageContentType(contentType)) {\n return gatewayUrl\n }\n\n // If it's JSON, try to get image URL from metadata\n if (contentType === 'application/json') {\n try {\n const jsonResponse = await fetch(gatewayUrl)\n const metadata = await jsonResponse.json()\n\n // Get image URL from metadata\n const imageUrl = metadata.image\n if (imageUrl) {\n // If it's an IPFS URL, process it recursively\n if (imageUrl.startsWith('ipfs://')) {\n const imageCid = imageUrl.replace('ipfs://', '')\n const imageGatewayUrl = `${IPFS_GATEWAY_URL}/ipfs/${imageCid}`\n\n // Verify it's an image\n const imageResponse = await fetch(imageGatewayUrl, {\n method: 'HEAD',\n })\n if (imageResponse.ok) {\n const imageContentType =\n imageResponse.headers.get('content-type')\n if (imageContentType && isImageContentType(imageContentType)) {\n return imageGatewayUrl\n }\n }\n }\n // If it's already an HTTP URL and it's an image, return it\n else if (imageUrl.startsWith('http')) {\n try {\n const imageResponse = await fetch(imageUrl, { method: 'HEAD' })\n if (imageResponse.ok) {\n const imageContentType =\n imageResponse.headers.get('content-type')\n if (\n imageContentType &&\n isImageContentType(imageContentType)\n ) {\n return imageUrl\n }\n }\n } catch {\n console.error('Error checking HTTP image URL')\n }\n }\n }\n } catch {\n console.error('Error processing JSON metadata')\n }\n }\n }\n } catch {\n console.error(`Error checking gateway for CID ${cid}`)\n }\n\n // Fallback to IPFS gateway without guarantee it's an image\n return gatewayUrl\n}\n","import { useQuery } from '@tanstack/react-query'\nimport React from 'react'\n\nimport { cn } from '../utils/cn'\nimport { checkIpfsAvailability } from '../utils/ipfs'\n\nimport type { NfdRecord } from '../hooks/useNfd'\n\nexport interface NfdAvatarProps {\n /** NFD record containing avatar data */\n nfd: NfdRecord | null | undefined\n /** Optional alt text for the image (defaults to NFD name or 'NFD Avatar') */\n alt?: string\n /** Optional className for styling the image */\n className?: string\n /** Optional size in pixels (defaults to 40px) */\n size?: number\n /** Optional fallback element to show when no avatar is available */\n fallback?: React.ReactNode\n /** Optional flag to show light only avatar */\n lightOnly?: boolean\n}\n\n/**\n * Component for displaying NFD avatar images with automatic IPFS handling\n * - Handles IPFS URLs by converting them to HTTPS\n * - Checks availability on images.nf.domains and falls back to IPFS gateway if needed\n * - Caches results using TanStack Query\n */\nexport function NfdAvatar({\n nfd,\n alt,\n className,\n size = 40,\n fallback,\n lightOnly = false,\n}: NfdAvatarProps) {\n // Extract the potential avatar URL from the NFD data\n const rawAvatarUrl =\n nfd?.properties?.userDefined?.avatar ||\n nfd?.properties?.verified?.avatar ||\n null\n\n // Use a sensible alt text if not provided\n const imgAlt = alt || nfd?.name || 'NFD Avatar'\n\n // Use Tanstack Query to handle the availability check and cache the result\n const { data: avatarUrl, isLoading } = useQuery({\n queryKey: ['nfd-avatar', rawAvatarUrl],\n queryFn: async () => {\n if (!rawAvatarUrl) return null\n\n // If it's already an HTTPS URL and not IPFS-related, use as is\n if (\n rawAvatarUrl.startsWith('https://') &&\n !rawAvatarUrl.includes('/ipfs/')\n ) {\n return rawAvatarUrl\n }\n\n // For IPFS URLs, check availability and use the best option\n if (\n rawAvatarUrl.startsWith('ipfs://') ||\n rawAvatarUrl.includes('/ipfs/')\n ) {\n return await checkIpfsAvailability(rawAvatarUrl)\n }\n\n // For any other type of URL, just return it as is\n return rawAvatarUrl\n },\n enabled: !!rawAvatarUrl,\n staleTime: 60 * 60 * 1000, // 1 hour\n gcTime: 24 * 60 * 60 * 1000, // 24 hours\n })\n\n // Render loading state or fallback if no avatar available\n if (isLoading || !avatarUrl) {\n if (fallback) {\n return <>{fallback}</>\n }\n\n // Default fallback is a rounded placeholder with light/dark mode variants\n return (\n <div\n data-wallet-ui\n className={cn('flex items-center justify-center rounded-full', className)}\n style={{\n width: `${size}px`,\n height: `${size}px`,\n backgroundColor: lightOnly ? '#e5e7eb' : 'var(--wui-color-avatar-bg)',\n }}\n aria-label={imgAlt}\n role=\"img\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n style={{\n width: `${Math.max(size / 2, 12)}px`,\n height: `${Math.max(size / 2, 12)}px`,\n color: lightOnly ? '#9ca3af' : 'var(--wui-color-avatar-icon)',\n }}\n >\n <path\n fillRule=\"evenodd\"\n d=\"M7.5 6a4.5 4.5 0 119 0 4.5 4.5 0 01-9 0zM3.751 20.105a8.25 8.25 0 0116.498 0 .75.75 0 01-.437.695A18.683 18.683 0 0112 22.5c-2.786 0-5.433-.608-7.812-1.7a.75.75 0 01-.437-.695z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </div>\n )\n }\n\n // Render the avatar image\n return (\n <img\n src={avatarUrl}\n alt={imgAlt}\n className={cn('rounded-full', className)}\n style={{\n width: `${size}px`,\n height: `${size}px`,\n objectFit: 'cover',\n }}\n loading=\"lazy\"\n />\n )\n}\n","import { useWallet } from '@txnlab/use-wallet-react'\nimport { formatShortAddress } from '@txnlab/utils-ts'\nimport React from 'react'\n\nimport { useNfd } from '../hooks/useNfd'\nimport { cn } from '../utils'\n\nimport { NfdAvatar } from './NfdAvatar'\n\nimport type { ButtonSize } from './ConnectWalletButton'\n\nconst sizeClasses: Record<ButtonSize, string> = {\n sm: 'py-1.5 pl-2 md:pl-2.5 pr-2 text-sm rounded-lg',\n md: 'py-2.5 pl-3 md:pl-3.5 pr-3 text-base rounded-xl',\n lg: 'py-3 pl-3.5 md:pl-4 pr-3.5 text-lg rounded-xl',\n}\n\nconst avatarSizes: Record<ButtonSize, number> = {\n sm: 20,\n md: 24,\n lg: 28,\n}\n\nconst avatarContainerClasses: Record<ButtonSize, string> = {\n sm: 'mr-1 md:mr-1.5 h-5 w-5',\n md: 'mr-1 md:mr-2 h-6 w-6',\n lg: 'mr-1.5 md:mr-2.5 h-7 w-7',\n}\n\nconst chevronSizes: Record<ButtonSize, { width: number; height: number }> = {\n sm: { width: 14, height: 14 },\n md: { width: 18, height: 18 },\n lg: { width: 20, height: 20 },\n}\n\nexport interface ConnectedWalletButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n /** Size variant for the button */\n size?: ButtonSize\n style?: React.CSSProperties\n}\n\nexport const ConnectedWalletButton = React.forwardRef<\n HTMLButtonElement,\n ConnectedWalletButtonProps\n>(({ className = '', children, style, size = 'md', ...props }, ref) => {\n const { activeAddress } = useWallet()\n\n // NFD for the active address\n const nfdQuery = useNfd({ enabled: !!activeAddress })\n const nfdName = nfdQuery.data?.name ?? null\n\n // Base styles using CSS custom properties for theming\n const baseStyles =\n 'flex items-center bg-[var(--wui-color-primary)] transition-colors hover:bg-[var(--wui-color-primary-hover)] text-[var(--wui-color-primary-text)] cursor-pointer font-bold'\n\n return (\n <button\n ref={ref}\n data-wallet-ui\n data-wallet-button\n className={cn(baseStyles, sizeClasses[size], className)}\n style={style}\n disabled={false}\n {...props}\n type=\"button\"\n >\n {children || (\n <div className=\"flex items-center\">\n {/* Avatar */}\n {activeAddress && (\n <div className={cn('overflow-hidden', avatarContainerClasses[size])}>\n <NfdAvatar\n nfd={nfdQuery.data}\n alt={`${nfdName || activeAddress} avatar`}\n size={avatarSizes[size]}\n lightOnly\n />\n </div>\n )}\n\n <span className=\"hidden md:block max-w-[160px] truncate\">\n {nfdName ||\n (activeAddress\n ? formatShortAddress(activeAddress, 6, 4)\n : 'Connect')}\n </span>\n\n {/* Chevron icon */}\n {activeAddress && (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={chevronSizes[size].width}\n height={chevronSizes[size].height}\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n className=\"ml-1.5 mt-0.5\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M4 6L8 10L12 6\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )}\n </div>\n )}\n </button>\n )\n})\n\nConnectedWalletButton.displayName = 'ConnectedWalletButton'\n","import $HgANd$react from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \nconst $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c = typeof document !== 'undefined' ? (0, $HgANd$react).useLayoutEffect : ()=>{};\n\n\nexport {$f0a04ccd8dbdd83b$export$e5c5a5f917a5871c as useLayoutEffect};\n//# sourceMappingURL=useLayoutEffect.module.js.map\n","import {useLayoutEffect as $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c} from \"./useLayoutEffect.mjs\";\nimport {useRef as $lmaYr$useRef, useCallback as $lmaYr$useCallback} from \"react\";\n\n/*\n * Copyright 2023 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\nfunction $8ae05eaa5c114e9c$export$7f54fc3180508a52(fn) {\n const ref = (0, $lmaYr$useRef)(null);\n (0, $f0a04ccd8dbdd83b$export$e5c5a5f917a5871c)(()=>{\n ref.current = fn;\n }, [\n fn\n ]);\n // @ts-ignore\n return (0, $lmaYr$useCallback)((...args)=>{\n const f = ref.current;\n return f === null || f === void 0 ? void 0 : f(...args);\n }, []);\n}\n\n\nexport {$8ae05eaa5c114e9c$export$7f54fc3180508a52 as useEffectEvent};\n//# sourceMappingURL=useEffectEvent.module.js.map\n","const $431fbd86ca7dc216$export$b204af158042fbac = (el)=>{\n var _el_ownerDocument;\n return (_el_ownerDocument = el === null || el === void 0 ? void 0 : el.ownerDocument) !== null && _el_ownerDocument !== void 0 ? _el_ownerDocument : document;\n};\nconst $431fbd86ca7dc216$export$f21a1ffae260145a = (el)=>{\n if (el && 'window' in el && el.window === el) return el;\n const doc = $431fbd86ca7dc216$export$b204af158042fbac(el);\n return doc.defaultView || window;\n};\n/**\n * Type guard that checks if a value is a Node. Verifies the presence and type of the nodeType property.\n */ function $431fbd86ca7dc216$var$isNode(value) {\n return value !== null && typeof value === 'object' && 'nodeType' in value && typeof value.nodeType === 'number';\n}\nfunction $431fbd86ca7dc216$export$af51f0f06c0f328a(node) {\n return $431fbd86ca7dc216$var$isNode(node) && node.nodeType === Node.DOCUMENT_FRAGMENT_NODE && 'host' in node;\n}\n\n\nexport {$431fbd86ca7dc216$export$b204af158042fbac as getOwnerDocument, $431fbd86ca7dc216$export$f21a1ffae260145a as getOwnerWindow, $431fbd86ca7dc216$export$af51f0f06c0f328a as isShadowRoot};\n//# sourceMappingURL=domHelpers.module.js.map\n","/*\n * Copyright 2023 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ let $f4e2df6bd15f8569$var$_tableNestedRows = false;\nlet $f4e2df6bd15f8569$var$_shadowDOM = false;\nfunction $f4e2df6bd15f8569$export$d9d8a0f82de49530() {\n $f4e2df6bd15f8569$var$_tableNestedRows = true;\n}\nfunction $f4e2df6bd15f8569$export$1b00cb14a96194e6() {\n return $f4e2df6bd15f8569$var$_tableNestedRows;\n}\nfunction $f4e2df6bd15f8569$export$12b151d9882e9985() {\n $f4e2df6bd15f8569$var$_shadowDOM = true;\n}\nfunction $f4e2df6bd15f8569$export$98658e8c59125e6a() {\n return $f4e2df6bd15f8569$var$_shadowDOM;\n}\n\n\nexport {$f4e2df6bd15f8569$export$d9d8a0f82de49530 as enableTableNestedRows, $f4e2df6bd15f8569$export$1b00cb14a96194e6 as tableNestedRows, $f4e2df6bd15f8569$export$12b151d9882e9985 as enableShadowDOM, $f4e2df6bd15f8569$export$98658e8c59125e6a as shadowDOM};\n//# sourceMappingURL=module.js.map\n","import {isShadowRoot as $431fbd86ca7dc216$export$af51f0f06c0f328a} from \"./domHelpers.mjs\";\nimport {shadowDOM as $lcSu5$shadowDOM} from \"@react-stately/flags\";\n\n// Source: https://github.com/microsoft/tabster/blob/a89fc5d7e332d48f68d03b1ca6e344489d1c3898/src/Shadowdomize/DOMFunctions.ts#L16\n\n\nfunction $d4ee10de306f2510$export$4282f70798064fe0(node, otherNode) {\n if (!(0, $lcSu5$shadowDOM)()) return otherNode && node ? node.contains(otherNode) : false;\n if (!node || !otherNode) return false;\n let currentNode = otherNode;\n while(currentNode !== null){\n if (currentNode === node) return true;\n if (currentNode.tagName === 'SLOT' && currentNode.assignedSlot) // Element is slotted\n currentNode = currentNode.assignedSlot.parentNode;\n else if ((0, $431fbd86ca7dc216$export$af51f0f06c0f328a)(currentNode)) // Element is in shadow root\n currentNode = currentNode.host;\n else currentNode = currentNode.parentNode;\n }\n return false;\n}\nconst $d4ee10de306f2510$export$cd4e5573fbe2b576 = (doc = document)=>{\n var _activeElement_shadowRoot;\n if (!(0, $lcSu5$shadowDOM)()) return doc.activeElement;\n let activeElement = doc.activeElement;\n while(activeElement && 'shadowRoot' in activeElement && ((_activeElement_shadowRoot = activeElement.shadowRoot) === null || _activeElement_shadowRoot === void 0 ? void 0 : _activeElement_shadowRoot.activeElement))activeElement = activeElement.shadowRoot.activeElement;\n return activeElement;\n};\nfunction $d4ee10de306f2510$export$e58f029f0fbfdb29(event) {\n if ((0, $lcSu5$shadowDOM)() && event.target.shadowRoot) {\n if (event.composedPath) return event.composedPath()[0];\n }\n return event.target;\n}\n\n\nexport {$d4ee10de306f2510$export$4282f70798064fe0 as nodeContains, $d4ee10de306f2510$export$cd4e5573fbe2b576 as getActiveElement, $d4ee10de306f2510$export$e58f029f0fbfdb29 as getEventTarget};\n//# sourceMappingURL=DOMFunctions.module.js.map\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ function $c87311424ea30a05$var$testUserAgent(re) {\n var _window_navigator_userAgentData;\n if (typeof window === 'undefined' || window.navigator == null) return false;\n return ((_window_navigator_userAgentData = window.navigator['userAgentData']) === null || _window_navigator_userAgentData === void 0 ? void 0 : _window_navigator_userAgentData.brands.some((brand)=>re.test(brand.brand))) || re.test(window.navigator.userAgent);\n}\nfunction $c87311424ea30a05$var$testPlatform(re) {\n var _window_navigator_userAgentData;\n return typeof window !== 'undefined' && window.navigator != null ? re.test(((_window_navigator_userAgentData = window.navigator['userAgentData']) === null || _window_navigator_userAgentData === void 0 ? void 0 : _window_navigator_userAgentData.platform) || window.navigator.platform) : false;\n}\nfunction $c87311424ea30a05$var$cached(fn) {\n if (process.env.NODE_ENV === 'test') return fn;\n let res = null;\n return ()=>{\n if (res == null) res = fn();\n return res;\n };\n}\nconst $c87311424ea30a05$export$9ac100e40613ea10 = $c87311424ea30a05$var$cached(function() {\n return $c87311424ea30a05$var$testPlatform(/^Mac/i);\n});\nconst $c87311424ea30a05$export$186c6964ca17d99 = $c87311424ea30a05$var$cached(function() {\n return $c87311424ea30a05$var$testPlatform(/^iPhone/i);\n});\nconst $c87311424ea30a05$export$7bef049ce92e4224 = $c87311424ea30a05$var$cached(function() {\n return $c87311424ea30a05$var$testPlatform(/^iPad/i) || // iPadOS 13 lies and says it's a Mac, but we can distinguish by detecting touch support.\n $c87311424ea30a05$export$9ac100e40613ea10() && navigator.maxTouchPoints > 1;\n});\nconst $c87311424ea30a05$export$fedb369cb70207f1 = $c87311424ea30a05$var$cached(function() {\n return $c87311424ea30a05$export$186c6964ca17d99() || $c87311424ea30a05$export$7bef049ce92e4224();\n});\nconst $c87311424ea30a05$export$e1865c3bedcd822b = $c87311424ea30a05$var$cached(function() {\n return $c87311424ea30a05$export$9ac100e40613ea10() || $c87311424ea30a05$export$fedb369cb70207f1();\n});\nconst $c87311424ea30a05$export$78551043582a6a98 = $c87311424ea30a05$var$cached(function() {\n return $c87311424ea30a05$var$testUserAgent(/AppleWebKit/i) && !$c87311424ea30a05$export$6446a186d09e379e();\n});\nconst $c87311424ea30a05$export$6446a186d09e379e = $c87311424ea30a05$var$cached(function() {\n return $c87311424ea30a05$var$testUserAgent(/Chrome/i);\n});\nconst $c87311424ea30a05$export$a11b0059900ceec8 = $c87311424ea30a05$var$cached(function() {\n return $c87311424ea30a05$var$testUserAgent(/Android/i);\n});\nconst $c87311424ea30a05$export$b7d78993b74f766d = $c87311424ea30a05$var$cached(function() {\n return $c87311424ea30a05$var$testUserAgent(/Firefox/i);\n});\n\n\nexport {$c87311424ea30a05$export$9ac100e40613ea10 as isMac, $c87311424ea30a05$export$186c6964ca17d99 as isIPhone, $c87311424ea30a05$export$7bef049ce92e4224 as isIPad, $c87311424ea30a05$export$fedb369cb70207f1 as isIOS, $c87311424ea30a05$export$e1865c3bedcd822b as isAppleDevice, $c87311424ea30a05$export$78551043582a6a98 as isWebKit, $c87311424ea30a05$export$6446a186d09e379e as isChrome, $c87311424ea30a05$export$a11b0059900ceec8 as isAndroid, $c87311424ea30a05$export$b7d78993b74f766d as isFirefox};\n//# sourceMappingURL=platform.module.js.map\n","import {useRef as $lPAwt$useRef, useCallback as $lPAwt$useCallback, useEffect as $lPAwt$useEffect} from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \nfunction $03deb23ff14920c4$export$4eaf04e54aa8eed6() {\n let globalListeners = (0, $lPAwt$useRef)(new Map());\n let addGlobalListener = (0, $lPAwt$useCallback)((eventTarget, type, listener, options)=>{\n // Make sure we remove the listener after it is called with the `once` option.\n let fn = (options === null || options === void 0 ? void 0 : options.once) ? (...args)=>{\n globalListeners.current.delete(listener);\n listener(...args);\n } : listener;\n globalListeners.current.set(listener, {\n type: type,\n eventTarget: eventTarget,\n fn: fn,\n options: options\n });\n eventTarget.addEventListener(type, fn, options);\n }, []);\n let removeGlobalListener = (0, $lPAwt$useCallback)((eventTarget, type, listener, options)=>{\n var _globalListeners_current_get;\n let fn = ((_globalListeners_current_get = globalListeners.current.get(listener)) === null || _globalListeners_current_get === void 0 ? void 0 : _globalListeners_current_get.fn) || listener;\n eventTarget.removeEventListener(type, fn, options);\n globalListeners.current.delete(listener);\n }, []);\n let removeAllGlobalListeners = (0, $lPAwt$useCallback)(()=>{\n globalListeners.current.forEach((value, key)=>{\n removeGlobalListener(value.eventTarget, value.type, key, value.options);\n });\n }, [\n removeGlobalListener\n ]);\n (0, $lPAwt$useEffect)(()=>{\n return removeAllGlobalListeners;\n }, [\n removeAllGlobalListeners\n ]);\n return {\n addGlobalListener: addGlobalListener,\n removeGlobalListener: removeGlobalListener,\n removeAllGlobalListeners: removeAllGlobalListeners\n };\n}\n\n\nexport {$03deb23ff14920c4$export$4eaf04e54aa8eed6 as useGlobalListeners};\n//# sourceMappingURL=useGlobalListeners.module.js.map\n","import {isAndroid as $c87311424ea30a05$export$a11b0059900ceec8} from \"./platform.mjs\";\n\n/*\n * Copyright 2022 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \nfunction $6a7db85432448f7f$export$60278871457622de(event) {\n // JAWS/NVDA with Firefox.\n if (event.mozInputSource === 0 && event.isTrusted) return true;\n // Android TalkBack's detail value varies depending on the event listener providing the event so we have specific logic here instead\n // If pointerType is defined, event is from a click listener. For events from mousedown listener, detail === 0 is a sufficient check\n // to detect TalkBack virtual clicks.\n if ((0, $c87311424ea30a05$export$a11b0059900ceec8)() && event.pointerType) return event.type === 'click' && event.buttons === 1;\n return event.detail === 0 && !event.pointerType;\n}\nfunction $6a7db85432448f7f$export$29bf1b5f2c56cf63(event) {\n // If the pointer size is zero, then we assume it's from a screen reader.\n // Android TalkBack double tap will sometimes return a event with width and height of 1\n // and pointerType === 'mouse' so we need to check for a specific combination of event attributes.\n // Cannot use \"event.pressure === 0\" as the sole check due to Safari pointer events always returning pressure === 0\n // instead of .5, see https://bugs.webkit.org/show_bug.cgi?id=206216. event.pointerType === 'mouse' is to distingush\n // Talkback double tap from Windows Firefox touch screen press\n return !(0, $c87311424ea30a05$export$a11b0059900ceec8)() && event.width === 0 && event.height === 0 || event.width === 1 && event.height === 1 && event.pressure === 0 && event.detail === 0 && event.pointerType === 'mouse';\n}\n\n\nexport {$6a7db85432448f7f$export$60278871457622de as isVirtualClick, $6a7db85432448f7f$export$29bf1b5f2c56cf63 as isVirtualPointerEvent};\n//# sourceMappingURL=isVirtualEvent.module.js.map\n","import {useLayoutEffect as $6dfIe$useLayoutEffect, useEffectEvent as $6dfIe$useEffectEvent, isFocusable as $6dfIe$isFocusable, getOwnerWindow as $6dfIe$getOwnerWindow, focusWithoutScrolling as $6dfIe$focusWithoutScrolling} from \"@react-aria/utils\";\nimport {useRef as $6dfIe$useRef, useCallback as $6dfIe$useCallback} from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ \n\nfunction $8a9cb279dc87e130$export$525bc4921d56d4a(nativeEvent) {\n let event = nativeEvent;\n event.nativeEvent = nativeEvent;\n event.isDefaultPrevented = ()=>event.defaultPrevented;\n // cancelBubble is technically deprecated in the spec, but still supported in all browsers.\n event.isPropagationStopped = ()=>event.cancelBubble;\n event.persist = ()=>{};\n return event;\n}\nfunction $8a9cb279dc87e130$export$c2b7abe5d61ec696(event, target) {\n Object.defineProperty(event, 'target', {\n value: target\n });\n Object.defineProperty(event, 'currentTarget', {\n value: target\n });\n}\nfunction $8a9cb279dc87e130$export$715c682d09d639cc(onBlur) {\n let stateRef = (0, $6dfIe$useRef)({\n isFocused: false,\n observer: null\n });\n // Clean up MutationObserver on unmount. See below.\n (0, $6dfIe$useLayoutEffect)(()=>{\n const state = stateRef.current;\n return ()=>{\n if (state.observer) {\n state.observer.disconnect();\n state.observer = null;\n }\n };\n }, []);\n let dispatchBlur = (0, $6dfIe$useEffectEvent)((e)=>{\n onBlur === null || onBlur === void 0 ? void 0 : onBlur(e);\n });\n // This function is called during a React onFocus event.\n return (0, $6dfIe$useCallback)((e)=>{\n // React does not fire onBlur when an element is disabled. https://github.com/facebook/react/issues/9142\n // Most browsers fire a native focusout event in this case, except for Firefox. In that case, we use a\n // MutationObserver to watch for the disabled attribute, and dispatch these events ourselves.\n // For browsers that do, focusout fires before the MutationObserver, so onBlur should not fire twice.\n if (e.target instanceof HTMLButtonElement || e.target instanceof HTMLInputElement || e.target instanceof HTMLTextAreaElement || e.target instanceof HTMLSelectElement) {\n stateRef.current.isFocused = true;\n let target = e.target;\n let onBlurHandler = (e)=>{\n stateRef.current.isFocused = false;\n if (target.disabled) {\n // For backward compatibility, dispatch a (fake) React synthetic event.\n let event = $8a9cb279dc87e130$export$525bc4921d56d4a(e);\n dispatchBlur(event);\n }\n // We no longer need the MutationObserver once the target is blurred.\n if (stateRef.current.observer) {\n stateRef.current.observer.disconnect();\n stateRef.current.observer = null;\n }\n };\n target.addEventListener('focusout', onBlurHandler, {\n once: true\n });\n stateRef.current.observer = new MutationObserver(()=>{\n if (stateRef.current.isFocused && target.disabled) {\n var _stateRef_current_observer;\n (_stateRef_current_observer = stateRef.current.observer) === null || _stateRef_current_observer === void 0 ? void 0 : _stateRef_current_observer.disconnect();\n let relatedTargetEl = target === document.activeElement ? null : document.activeElement;\n target.dispatchEvent(new FocusEvent('blur', {\n relatedTarget: relatedTargetEl\n }));\n target.dispatchEvent(new FocusEvent('focusout', {\n bubbles: true,\n relatedTarget: relatedTargetEl\n }));\n }\n });\n stateRef.current.observer.observe(target, {\n attributes: true,\n attributeFilter: [\n 'disabled'\n ]\n });\n }\n }, [\n dispatchBlur\n ]);\n}\nlet $8a9cb279dc87e130$export$fda7da73ab5d4c48 = false;\nfunction $8a9cb279dc87e130$export$cabe61c495ee3649(target) {\n // The browser will focus the nearest focusable ancestor of our target.\n while(target && !(0, $6dfIe$isFocusable)(target))target = target.parentElement;\n let window = (0, $6dfIe$getOwnerWindow)(target);\n let activeElement = window.document.activeElement;\n if (!activeElement || activeElement === target) return;\n $8a9cb279dc87e130$export$fda7da73ab5d4c48 = true;\n let isRefocusing = false;\n let onBlur = (e)=>{\n if (e.target === activeElement || isRefocusing) e.stopImmediatePropagation();\n };\n let onFocusOut = (e)=>{\n if (e.target === activeElement || isRefocusing) {\n e.stopImmediatePropagation();\n // If there was no focusable ancestor, we don't expect a focus event.\n // Re-focus the original active element here.\n if (!target && !isRefocusing) {\n isRefocusing = true;\n (0, $6dfIe$focusWithoutScrolling)(activeElement);\n cleanup();\n }\n }\n };\n let onFocus = (e)=>{\n if (e.target === target || isRefocusing) e.stopImmediatePropagation();\n };\n let onFocusIn = (e)=>{\n if (e.target === target || isRefocusing) {\n e.stopImmediatePropagation();\n if (!isRefocusing) {\n isRefocusing = true;\n (0, $6dfIe$focusWithoutScrolling)(activeElement);\n cleanup();\n }\n }\n };\n window.addEventListener('blur', onBlur, true);\n window.addEventListener('focusout', onFocusOut, true);\n window.addEventListener('focusin', onFocusIn, true);\n window.addEventListener('focus', onFocus, true);\n let cleanup = ()=>{\n cancelAnimationFrame(raf);\n window.removeEventListener('blur', onBlur, true);\n window.removeEventListener('focusout', onFocusOut, true);\n window.removeEventListener('focusin', onFocusIn, true);\n window.removeEventListener('focus', onFocus, true);\n $8a9cb279dc87e130$export$fda7da73ab5d4c48 = false;\n isRefocusing = false;\n };\n let raf = requestAnimationFrame(cleanup);\n return cleanup;\n}\n\n\nexport {$8a9cb279dc87e130$export$525bc4921d56d4a as createSyntheticEvent, $8a9cb279dc87e130$export$c2b7abe5d61ec696 as setEventTarget, $8a9cb279dc87e130$export$715c682d09d639cc as useSyntheticBlurEvent, $8a9cb279dc87e130$export$fda7da73ab5d4c48 as ignoreFocusEvent, $8a9cb279dc87e130$export$cabe61c495ee3649 as preventFocus};\n//# sourceMappingURL=utils.module.js.map\n","import {ignoreFocusEvent as $8a9cb279dc87e130$export$fda7da73ab5d4c48} from \"./utils.mjs\";\nimport {isMac as $28AnR$isMac, isVirtualClick as $28AnR$isVirtualClick, getOwnerWindow as $28AnR$getOwnerWindow, getOwnerDocument as $28AnR$getOwnerDocument} from \"@react-aria/utils\";\nimport {useState as $28AnR$useState, useEffect as $28AnR$useEffect} from \"react\";\nimport {useIsSSR as $28AnR$useIsSSR} from \"@react-aria/ssr\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ // Portions of the code in this file are based on code from react.\n// Original licensing for the following can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/tree/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions\n\n\n\n\nlet $507fabe10e71c6fb$var$currentModality = null;\nlet $507fabe10e71c6fb$var$changeHandlers = new Set();\nlet $507fabe10e71c6fb$export$d90243b58daecda7 = new Map(); // We use a map here to support setting event listeners across multiple document objects.\nlet $507fabe10e71c6fb$var$hasEventBeforeFocus = false;\nlet $507fabe10e71c6fb$var$hasBlurredWindowRecently = false;\n// Only Tab or Esc keys will make focus visible on text input elements\nconst $507fabe10e71c6fb$var$FOCUS_VISIBLE_INPUT_KEYS = {\n Tab: true,\n Escape: true\n};\nfunction $507fabe10e71c6fb$var$triggerChangeHandlers(modality, e) {\n for (let handler of $507fabe10e71c6fb$var$changeHandlers)handler(modality, e);\n}\n/**\n * Helper function to determine if a KeyboardEvent is unmodified and could make keyboard focus styles visible.\n */ function $507fabe10e71c6fb$var$isValidKey(e) {\n // Control and Shift keys trigger when navigating back to the tab with keyboard.\n return !(e.metaKey || !(0, $28AnR$isMac)() && e.altKey || e.ctrlKey || e.key === 'Control' || e.key === 'Shift' || e.key === 'Meta');\n}\nfunction $507fabe10e71c6fb$var$handleKeyboardEvent(e) {\n $507fabe10e71c6fb$var$hasEventBeforeFocus = true;\n if ($507fabe10e71c6fb$var$isValidKey(e)) {\n $507fabe10e71c6fb$var$currentModality = 'keyboard';\n $507fabe10e71c6fb$var$triggerChangeHandlers('keyboard', e);\n }\n}\nfunction $507fabe10e71c6fb$var$handlePointerEvent(e) {\n $507fabe10e71c6fb$var$currentModality = 'pointer';\n if (e.type === 'mousedown' || e.type === 'pointerdown') {\n $507fabe10e71c6fb$var$hasEventBeforeFocus = true;\n $507fabe10e71c6fb$var$triggerChangeHandlers('pointer', e);\n }\n}\nfunction $507fabe10e71c6fb$var$handleClickEvent(e) {\n if ((0, $28AnR$isVirtualClick)(e)) {\n $507fabe10e71c6fb$var$hasEventBeforeFocus = true;\n $507fabe10e71c6fb$var$currentModality = 'virtual';\n }\n}\nfunction $507fabe10e71c6fb$var$handleFocusEvent(e) {\n // Firefox fires two extra focus events when the user first clicks into an iframe:\n // first on the window, then on the document. We ignore these events so they don't\n // cause keyboard focus rings to appear.\n if (e.target === window || e.target === document || (0, $8a9cb279dc87e130$export$fda7da73ab5d4c48) || !e.isTrusted) return;\n // If a focus event occurs without a preceding keyboard or pointer event, switch to virtual modality.\n // This occurs, for example, when navigating a form with the next/previous buttons on iOS.\n if (!$507fabe10e71c6fb$var$hasEventBeforeFocus && !$507fabe10e71c6fb$var$hasBlurredWindowRecently) {\n $507fabe10e71c6fb$var$currentModality = 'virtual';\n $507fabe10e71c6fb$var$triggerChangeHandlers('virtual', e);\n }\n $507fabe10e71c6fb$var$hasEventBeforeFocus = false;\n $507fabe10e71c6fb$var$hasBlurredWindowRecently = false;\n}\nfunction $507fabe10e71c6fb$var$handleWindowBlur() {\n if (0, $8a9cb279dc87e130$export$fda7da73ab5d4c48) return;\n // When the window is blurred, reset state. This is necessary when tabbing out of the window,\n // for example, since a subsequent focus event won't be fired.\n $507fabe10e71c6fb$var$hasEventBeforeFocus = false;\n $507fabe10e71c6fb$var$hasBlurredWindowRecently = true;\n}\n/**\n * Setup global event listeners to control when keyboard focus style should be visible.\n */ function $507fabe10e71c6fb$var$setupGlobalFocusEvents(element) {\n if (typeof window === 'undefined' || typeof document === 'undefined' || $507fabe10e71c6fb$export$d90243b58daecda7.get((0, $28AnR$getOwnerWindow)(element))) return;\n const windowObject = (0, $28AnR$getOwnerWindow)(element);\n const documentObject = (0, $28AnR$getOwnerDocument)(element);\n // Programmatic focus() calls shouldn't affect the current input modality.\n // However, we need to detect other cases when a focus event occurs without\n // a preceding user event (e.g. screen reader focus). Overriding the focus\n // method on HTMLElement.prototype is a bit hacky, but works.\n let focus = windowObject.HTMLElement.prototype.focus;\n windowObject.HTMLElement.prototype.focus = function() {\n $507fabe10e71c6fb$var$hasEventBeforeFocus = true;\n focus.apply(this, arguments);\n };\n documentObject.addEventListener('keydown', $507fabe10e71c6fb$var$handleKeyboardEvent, true);\n documentObject.addEventListener('keyup', $507fabe10e71c6fb$var$handleKeyboardEvent, true);\n documentObject.addEventListener('click', $507fabe10e71c6fb$var$handleClickEvent, true);\n // Register focus events on the window so they are sure to happen\n // before React's event listeners (registered on the document).\n windowObject.addEventListener('focus', $507fabe10e71c6fb$var$handleFocusEvent, true);\n windowObject.addEventListener('blur', $507fabe10e71c6fb$var$handleWindowBlur, false);\n if (typeof PointerEvent !== 'undefined') {\n documentObject.addEventListener('pointerdown', $507fabe10e71c6fb$var$handlePointerEvent, true);\n documentObject.addEventListener('pointermove', $507fabe10e71c6fb$var$handlePointerEvent, true);\n documentObject.addEventListener('pointerup', $507fabe10e71c6fb$var$handlePointerEvent, true);\n } else if (process.env.NODE_ENV === 'test') {\n documentObject.addEventListener('mousedown', $507fabe10e71c6fb$var$handlePointerEvent, true);\n documentObject.addEventListener('mousemove', $507fabe10e71c6fb$var$handlePointerEvent, true);\n documentObject.addEventListener('mouseup', $507fabe10e71c6fb$var$handlePointerEvent, true);\n }\n // Add unmount handler\n windowObject.addEventListener('beforeunload', ()=>{\n $507fabe10e71c6fb$var$tearDownWindowFocusTracking(element);\n }, {\n once: true\n });\n $507fabe10e71c6fb$export$d90243b58daecda7.set(windowObject, {\n focus: focus\n });\n}\nconst $507fabe10e71c6fb$var$tearDownWindowFocusTracking = (element, loadListener)=>{\n const windowObject = (0, $28AnR$getOwnerWindow)(element);\n const documentObject = (0, $28AnR$getOwnerDocument)(element);\n if (loadListener) documentObject.removeEventListener('DOMContentLoaded', loadListener);\n if (!$507fabe10e71c6fb$export$d90243b58daecda7.has(windowObject)) return;\n windowObject.HTMLElement.prototype.focus = $507fabe10e71c6fb$export$d90243b58daecda7.get(windowObject).focus;\n documentObject.removeEventListener('keydown', $507fabe10e71c6fb$var$handleKeyboardEvent, true);\n documentObject.removeEventListener('keyup', $507fabe10e71c6fb$var$handleKeyboardEvent, true);\n documentObject.removeEventListener('click', $507fabe10e71c6fb$var$handleClickEvent, true);\n windowObject.removeEventListener('focus', $507fabe10e71c6fb$var$handleFocusEvent, true);\n windowObject.removeEventListener('blur', $507fabe10e71c6fb$var$handleWindowBlur, false);\n if (typeof PointerEvent !== 'undefined') {\n documentObject.removeEventListener('pointerdown', $507fabe10e71c6fb$var$handlePointerEvent, true);\n documentObject.removeEventListener('pointermove', $507fabe10e71c6fb$var$handlePointerEvent, true);\n documentObject.removeEventListener('pointerup', $507fabe10e71c6fb$var$handlePointerEvent, true);\n } else if (process.env.NODE_ENV === 'test') {\n documentObject.removeEventListener('mousedown', $507fabe10e71c6fb$var$handlePointerEvent, true);\n documentObject.removeEventListener('mousemove', $507fabe10e71c6fb$var$handlePointerEvent, true);\n documentObject.removeEventListener('mouseup', $507fabe10e71c6fb$var$handlePointerEvent, true);\n }\n $507fabe10e71c6fb$export$d90243b58daecda7.delete(windowObject);\n};\nfunction $507fabe10e71c6fb$export$2f1888112f558a7d(element) {\n const documentObject = (0, $28AnR$getOwnerDocument)(element);\n let loadListener;\n if (documentObject.readyState !== 'loading') $507fabe10e71c6fb$var$setupGlobalFocusEvents(element);\n else {\n loadListener = ()=>{\n $507fabe10e71c6fb$var$setupGlobalFocusEvents(element);\n };\n documentObject.addEventListener('DOMContentLoaded', loadListener);\n }\n return ()=>$507fabe10e71c6fb$var$tearDownWindowFocusTracking(element, loadListener);\n}\n// Server-side rendering does not have the document object defined\n// eslint-disable-next-line no-restricted-globals\nif (typeof document !== 'undefined') $507fabe10e71c6fb$export$2f1888112f558a7d();\nfunction $507fabe10e71c6fb$export$b9b3dfddab17db27() {\n return $507fabe10e71c6fb$var$currentModality !== 'pointer';\n}\nfunction $507fabe10e71c6fb$export$630ff653c5ada6a9() {\n return $507fabe10e71c6fb$var$currentModality;\n}\nfunction $507fabe10e71c6fb$export$8397ddfc504fdb9a(modality) {\n $507fabe10e71c6fb$var$currentModality = modality;\n $507fabe10e71c6fb$var$triggerChangeHandlers(modality, null);\n}\nfunction $507fabe10e71c6fb$export$98e20ec92f614cfe() {\n $507fabe10e71c6fb$var$setupGlobalFocusEvents();\n let [modality, setModality] = (0, $28AnR$useState)($507fabe10e71c6fb$var$currentModality);\n (0, $28AnR$useEffect)(()=>{\n let handler = ()=>{\n setModality($507fabe10e71c6fb$var$currentModality);\n };\n $507fabe10e71c6fb$var$changeHandlers.add(handler);\n return ()=>{\n $507fabe10e71c6fb$var$changeHandlers.delete(handler);\n };\n }, []);\n return (0, $28AnR$useIsSSR)() ? null : modality;\n}\nconst $507fabe10e71c6fb$var$nonTextInputTypes = new Set([\n 'checkbox',\n 'radio',\n 'range',\n 'color',\n 'file',\n 'image',\n 'button',\n 'submit',\n 'reset'\n]);\n/**\n * If this is attached to text input component, return if the event is a focus event (Tab/Escape keys pressed) so that\n * focus visible style can be properly set.\n */ function $507fabe10e71c6fb$var$isKeyboardFocusEvent(isTextInput, modality, e) {\n let document1 = (0, $28AnR$getOwnerDocument)(e === null || e === void 0 ? void 0 : e.target);\n const IHTMLInputElement = typeof window !== 'undefined' ? (0, $28AnR$getOwnerWindow)(e === null || e === void 0 ? void 0 : e.target).HTMLInputElement : HTMLInputElement;\n const IHTMLTextAreaElement = typeof window !== 'undefined' ? (0, $28AnR$getOwnerWindow)(e === null || e === void 0 ? void 0 : e.target).HTMLTextAreaElement : HTMLTextAreaElement;\n const IHTMLElement = typeof window !== 'undefined' ? (0, $28AnR$getOwnerWindow)(e === null || e === void 0 ? void 0 : e.target).HTMLElement : HTMLElement;\n const IKeyboardEvent = typeof window !== 'undefined' ? (0, $28AnR$getOwnerWindow)(e === null || e === void 0 ? void 0 : e.target).KeyboardEvent : KeyboardEvent;\n // For keyboard events that occur on a non-input element that will move focus into input element (aka ArrowLeft going from Datepicker button to the main input group)\n // we need to rely on the user passing isTextInput into here. This way we can skip toggling focus visiblity for said input element\n isTextInput = isTextInput || document1.activeElement instanceof IHTMLInputElement && !$507fabe10e71c6fb$var$nonTextInputTypes.has(document1.activeElement.type) || document1.activeElement instanceof IHTMLTextAreaElement || document1.activeElement instanceof IHTMLElement && document1.activeElement.isContentEditable;\n return !(isTextInput && modality === 'keyboard' && e instanceof IKeyboardEvent && !$507fabe10e71c6fb$var$FOCUS_VISIBLE_INPUT_KEYS[e.key]);\n}\nfunction $507fabe10e71c6fb$export$ffd9e5021c1fb2d6(props = {}) {\n let { isTextInput: isTextInput, autoFocus: autoFocus } = props;\n let [isFocusVisibleState, setFocusVisible] = (0, $28AnR$useState)(autoFocus || $507fabe10e71c6fb$export$b9b3dfddab17db27());\n $507fabe10e71c6fb$export$ec71b4b83ac08ec3((isFocusVisible)=>{\n setFocusVisible(isFocusVisible);\n }, [\n isTextInput\n ], {\n isTextInput: isTextInput\n });\n return {\n isFocusVisible: isFocusVisibleState\n };\n}\nfunction $507fabe10e71c6fb$export$ec71b4b83ac08ec3(fn, deps, opts) {\n $507fabe10e71c6fb$var$setupGlobalFocusEvents();\n (0, $28AnR$useEffect)(()=>{\n let handler = (modality, e)=>{\n // We want to early return for any keyboard events that occur inside text inputs EXCEPT for Tab and Escape\n if (!$507fabe10e71c6fb$var$isKeyboardFocusEvent(!!(opts === null || opts === void 0 ? void 0 : opts.isTextInput), modality, e)) return;\n fn($507fabe10e71c6fb$export$b9b3dfddab17db27());\n };\n $507fabe10e71c6fb$var$changeHandlers.add(handler);\n return ()=>{\n $507fabe10e71c6fb$var$changeHandlers.delete(handler);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps);\n}\n\n\nexport {$507fabe10e71c6fb$export$d90243b58daecda7 as hasSetupGlobalListeners, $507fabe10e71c6fb$export$2f1888112f558a7d as addWindowFocusTracking, $507fabe10e71c6fb$export$b9b3dfddab17db27 as isFocusVisible, $507fabe10e71c6fb$export$630ff653c5ada6a9 as getInteractionModality, $507fabe10e71c6fb$export$8397ddfc504fdb9a as setInteractionModality, $507fabe10e71c6fb$export$98e20ec92f614cfe as useInteractionModality, $507fabe10e71c6fb$export$ffd9e5021c1fb2d6 as useFocusVisible, $507fabe10e71c6fb$export$ec71b4b83ac08ec3 as useFocusVisibleListener};\n//# sourceMappingURL=useFocusVisible.module.js.map\n","import {useSyntheticBlurEvent as $8a9cb279dc87e130$export$715c682d09d639cc} from \"./utils.mjs\";\nimport {useCallback as $hf0lj$useCallback} from \"react\";\nimport {getOwnerDocument as $hf0lj$getOwnerDocument, getActiveElement as $hf0lj$getActiveElement, getEventTarget as $hf0lj$getEventTarget} from \"@react-aria/utils\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ // Portions of the code in this file are based on code from react.\n// Original licensing for the following can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/tree/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions\n\n\n\nfunction $a1ea59d68270f0dd$export$f8168d8dd8fd66e6(props) {\n let { isDisabled: isDisabled, onFocus: onFocusProp, onBlur: onBlurProp, onFocusChange: onFocusChange } = props;\n const onBlur = (0, $hf0lj$useCallback)((e)=>{\n if (e.target === e.currentTarget) {\n if (onBlurProp) onBlurProp(e);\n if (onFocusChange) onFocusChange(false);\n return true;\n }\n }, [\n onBlurProp,\n onFocusChange\n ]);\n const onSyntheticFocus = (0, $8a9cb279dc87e130$export$715c682d09d639cc)(onBlur);\n const onFocus = (0, $hf0lj$useCallback)((e)=>{\n // Double check that document.activeElement actually matches e.target in case a previously chained\n // focus handler already moved focus somewhere else.\n const ownerDocument = (0, $hf0lj$getOwnerDocument)(e.target);\n const activeElement = ownerDocument ? (0, $hf0lj$getActiveElement)(ownerDocument) : (0, $hf0lj$getActiveElement)();\n if (e.target === e.currentTarget && activeElement === (0, $hf0lj$getEventTarget)(e.nativeEvent)) {\n if (onFocusProp) onFocusProp(e);\n if (onFocusChange) onFocusChange(true);\n onSyntheticFocus(e);\n }\n }, [\n onFocusChange,\n onFocusProp,\n onSyntheticFocus\n ]);\n return {\n focusProps: {\n onFocus: !isDisabled && (onFocusProp || onFocusChange || onBlurProp) ? onFocus : undefined,\n onBlur: !isDisabled && (onBlurProp || onFocusChange) ? onBlur : undefined\n }\n };\n}\n\n\nexport {$a1ea59d68270f0dd$export$f8168d8dd8fd66e6 as useFocus};\n//# sourceMappingURL=useFocus.module.js.map\n","import {createSyntheticEvent as $8a9cb279dc87e130$export$525bc4921d56d4a, setEventTarget as $8a9cb279dc87e130$export$c2b7abe5d61ec696, useSyntheticBlurEvent as $8a9cb279dc87e130$export$715c682d09d639cc} from \"./utils.mjs\";\nimport {useRef as $3b9Q0$useRef, useCallback as $3b9Q0$useCallback} from \"react\";\nimport {useGlobalListeners as $3b9Q0$useGlobalListeners, getOwnerDocument as $3b9Q0$getOwnerDocument, getActiveElement as $3b9Q0$getActiveElement, getEventTarget as $3b9Q0$getEventTarget, nodeContains as $3b9Q0$nodeContains} from \"@react-aria/utils\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ // Portions of the code in this file are based on code from react.\n// Original licensing for the following can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/tree/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions\n\n\n\nfunction $9ab94262bd0047c7$export$420e68273165f4ec(props) {\n let { isDisabled: isDisabled, onBlurWithin: onBlurWithin, onFocusWithin: onFocusWithin, onFocusWithinChange: onFocusWithinChange } = props;\n let state = (0, $3b9Q0$useRef)({\n isFocusWithin: false\n });\n let { addGlobalListener: addGlobalListener, removeAllGlobalListeners: removeAllGlobalListeners } = (0, $3b9Q0$useGlobalListeners)();\n let onBlur = (0, $3b9Q0$useCallback)((e)=>{\n // Ignore events bubbling through portals.\n if (!e.currentTarget.contains(e.target)) return;\n // We don't want to trigger onBlurWithin and then immediately onFocusWithin again\n // when moving focus inside the element. Only trigger if the currentTarget doesn't\n // include the relatedTarget (where focus is moving).\n if (state.current.isFocusWithin && !e.currentTarget.contains(e.relatedTarget)) {\n state.current.isFocusWithin = false;\n removeAllGlobalListeners();\n if (onBlurWithin) onBlurWithin(e);\n if (onFocusWithinChange) onFocusWithinChange(false);\n }\n }, [\n onBlurWithin,\n onFocusWithinChange,\n state,\n removeAllGlobalListeners\n ]);\n let onSyntheticFocus = (0, $8a9cb279dc87e130$export$715c682d09d639cc)(onBlur);\n let onFocus = (0, $3b9Q0$useCallback)((e)=>{\n // Ignore events bubbling through portals.\n if (!e.currentTarget.contains(e.target)) return;\n // Double check that document.activeElement actually matches e.target in case a previously chained\n // focus handler already moved focus somewhere else.\n const ownerDocument = (0, $3b9Q0$getOwnerDocument)(e.target);\n const activeElement = (0, $3b9Q0$getActiveElement)(ownerDocument);\n if (!state.current.isFocusWithin && activeElement === (0, $3b9Q0$getEventTarget)(e.nativeEvent)) {\n if (onFocusWithin) onFocusWithin(e);\n if (onFocusWithinChange) onFocusWithinChange(true);\n state.current.isFocusWithin = true;\n onSyntheticFocus(e);\n // Browsers don't fire blur events when elements are removed from the DOM.\n // However, if a focus event occurs outside the element we're tracking, we\n // can manually fire onBlur.\n let currentTarget = e.currentTarget;\n addGlobalListener(ownerDocument, 'focus', (e)=>{\n if (state.current.isFocusWithin && !(0, $3b9Q0$nodeContains)(currentTarget, e.target)) {\n let nativeEvent = new ownerDocument.defaultView.FocusEvent('blur', {\n relatedTarget: e.target\n });\n (0, $8a9cb279dc87e130$export$c2b7abe5d61ec696)(nativeEvent, currentTarget);\n let event = (0, $8a9cb279dc87e130$export$525bc4921d56d4a)(nativeEvent);\n onBlur(event);\n }\n }, {\n capture: true\n });\n }\n }, [\n onFocusWithin,\n onFocusWithinChange,\n onSyntheticFocus,\n addGlobalListener,\n onBlur\n ]);\n if (isDisabled) return {\n focusWithinProps: {\n // These cannot be null, that would conflict in mergeProps\n onFocus: undefined,\n onBlur: undefined\n }\n };\n return {\n focusWithinProps: {\n onFocus: onFocus,\n onBlur: onBlur\n }\n };\n}\n\n\nexport {$9ab94262bd0047c7$export$420e68273165f4ec as useFocusWithin};\n//# sourceMappingURL=useFocusWithin.module.js.map\n","import {useGlobalListeners as $AWxnT$useGlobalListeners, getOwnerDocument as $AWxnT$getOwnerDocument, nodeContains as $AWxnT$nodeContains} from \"@react-aria/utils\";\nimport {useState as $AWxnT$useState, useRef as $AWxnT$useRef, useEffect as $AWxnT$useEffect, useMemo as $AWxnT$useMemo} from \"react\";\n\n/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */ // Portions of the code in this file are based on code from react.\n// Original licensing for the following can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/tree/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions\n\n\n// iOS fires onPointerEnter twice: once with pointerType=\"touch\" and again with pointerType=\"mouse\".\n// We want to ignore these emulated events so they do not trigger hover behavior.\n// See https://bugs.webkit.org/show_bug.cgi?id=214609.\nlet $6179b936705e76d3$var$globalIgnoreEmulatedMouseEvents = false;\nlet $6179b936705e76d3$var$hoverCount = 0;\nfunction $6179b936705e76d3$var$setGlobalIgnoreEmulatedMouseEvents() {\n $6179b936705e76d3$var$globalIgnoreEmulatedMouseEvents = true;\n // Clear globalIgnoreEmulatedMouseEvents after a short timeout. iOS fires onPointerEnter\n // with pointerType=\"mouse\" immediately after onPointerUp and before onFocus. On other\n // devices that don't have this quirk, we don't want to ignore a mouse hover sometime in\n // the distant future because a user previously touched the element.\n setTimeout(()=>{\n $6179b936705e76d3$var$globalIgnoreEmulatedMouseEvents = false;\n }, 50);\n}\nfunction $6179b936705e76d3$var$handleGlobalPointerEvent(e) {\n if (e.pointerType === 'touch') $6179b936705e76d3$var$setGlobalIgnoreEmulatedMouseEvents();\n}\nfunction $6179b936705e76d3$var$setupGlobalTouchEvents() {\n if (typeof document === 'undefined') return;\n if (typeof PointerEvent !== 'undefined') document.addEventListener('pointerup', $6179b936705e76d3$var$handleGlobalPointerEvent);\n else if (process.env.NODE_ENV === 'test') document.addEventListener('touchend', $6179b936705e76d3$var$setGlobalIgnoreEmulatedMouseEvents);\n $6179b936705e76d3$var$hoverCount++;\n return ()=>{\n $6179b936705e76d3$var$hoverCount--;\n if ($6179b936705e76d3$var$hoverCount > 0) return;\n if (typeof PointerEvent !== 'undefined') document.removeEventListener('pointerup', $6179b936705e76d3$var$handleGlobalPointerEvent);\n else if (process.env.NODE_ENV === 'test') document.removeEventListener('touchend', $6179b936705e76d3$var$setGlobalIgnoreEmulatedMouseEvents);\n };\n}\nfunction $6179b936705e76d3$export$ae780daf29e6d456(props) {\n let { onHoverStart: onHoverStart, onHoverChange: onHoverChange, onHoverEnd: onHoverEnd, isDisabled: isDisabled } = props;\n let [isHovered, setHovered] = (0, $AWxnT$useState)(false);\n let state = (0, $AWxnT$useRef)({\n isHovered: false,\n ignoreEmulatedMouseEvents: false,\n pointerType: '',\n target: null\n }).current;\n (0, $AWxnT$useEffect)($6179b936705e76d3$var$setupGlobalTouchEvents, []);\n let { addGlobalListener: addGlobalListener, removeAllGlobalListeners: removeAllGlobalListeners } = (0, $AWxnT$useGlobalListeners)();\n let { hoverProps: hoverProps, triggerHoverEnd: triggerHoverEnd } = (0, $AWxnT$useMemo)(()=>{\n let triggerHoverStart = (event, pointerType)=>{\n state.pointerType = pointerType;\n if (isDisabled || pointerType === 'touch' || state.isHovered || !event.currentTarget.contains(event.target)) return;\n state.isHovered = true;\n let target = event.currentTarget;\n state.target = target;\n // When an element that is hovered over is removed, no pointerleave event is fired by the browser,\n // even though the originally hovered target may have shrunk in size so it is no longer hovered.\n // However, a pointerover event will be fired on the new target the mouse is over.\n // In Chrome this happens immediately. In Safari and Firefox, it happens upon moving the mouse one pixel.\n addGlobalListener((0, $AWxnT$getOwnerDocument)(event.target), 'pointerover', (e)=>{\n if (state.isHovered && state.target && !(0, $AWxnT$nodeContains)(state.target, e.target)) triggerHoverEnd(e, e.pointerType);\n }, {\n capture: true\n });\n if (onHoverStart) onHoverStart({\n type: 'hoverstart',\n target: target,\n pointerType: pointerType\n });\n if (onHoverChange) onHoverChange(true);\n setHovered(true);\n };\n let triggerHoverEnd = (event, pointerType)=>{\n let target = state.target;\n state.pointerType = '';\n state.target = null;\n if (pointerType === 'touch' || !state.isHovered || !target) return;\n state.isHovered = false;\n removeAllGlobalListeners();\n if (onHoverEnd) onHoverEnd({\n type: 'hoverend',\n target: target,\n pointerType: pointerType\n });\n if (onHoverChange) onHoverChange(false);\n setHovered(false);\n };\n let hoverProps = {};\n if (typeof PointerEvent !== 'undefined') {\n hoverProps.onPointerEnter = (e)=>{\n if ($6179b936705e76d3$var$globalIgnoreEmulatedMouseEvents && e.pointerType === 'mouse') return;\n triggerHoverStart(e, e.pointerType);\n };\n hoverProps.onPointerLeave = (e)=>{\n if (!isDisabled && e.currentTarget.contains(e.target)) triggerHoverEnd(e, e.pointerType);\n };\n } else if (process.env.NODE_ENV === 'test') {\n hoverProps.onTouchStart = ()=>{\n state.ignoreEmulatedMouseEvents = true;\n };\n hoverProps.onMouseEnter = (e)=>{\n if (!state.ignoreEmulatedMouseEvents && !$6179b936705e76d3$var$globalIgnoreEmulatedMouseEvents) triggerHoverStart(e, 'mouse');\n state.ignoreEmulatedMouseEvents = false;\n };\n hoverProps.onMouseLeave = (e)=>{\n if (!isDisabled && e.currentTarget.contains(e.target)) triggerHoverEnd(e, 'mouse');\n };\n }\n return {\n hoverProps: hoverProps,\n triggerHoverEnd: triggerHoverEnd\n };\n }, [\n onHoverStart,\n onHoverChange,\n onHoverEnd,\n isDisabled,\n state,\n addGlobalListener,\n removeAllGlobalListeners\n ]);\n (0, $AWxnT$useEffect)(()=>{\n // Call the triggerHoverEnd as soon as isDisabled changes to true\n // Safe to call triggerHoverEnd, it will early return if we aren't currently hovering\n if (isDisabled) triggerHoverEnd({\n currentTarget: state.target\n }, state.pointerType);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n isDisabled\n ]);\n return {\n hoverProps: hoverProps,\n isHovered: isHovered\n };\n}\n\n\nexport {$6179b936705e76d3$export$ae780daf29e6d456 as useHover};\n//# sourceMappingURL=useHover.module.js.map\n","import {isFocusVisible as $isWE5$isFocusVisible, useFocusVisibleListener as $isWE5$useFocusVisibleListener, useFocus as $isWE5$useFocus, useFocusWithin as $isWE5$useFocusWithin} from \"@react-aria/interactions\";\nimport {useRef as $isWE5$useRef, useState as $isWE5$useState, useCallback as $isWE5$useCallback} from \"react\";\n\n\n\nfunction $f7dceffc5ad7768b$export$4e328f61c538687f(props = {}) {\n let { autoFocus: autoFocus = false, isTextInput: isTextInput, within: within } = props;\n let state = (0, $isWE5$useRef)({\n isFocused: false,\n isFocusVisible: autoFocus || (0, $isWE5$isFocusVisible)()\n });\n let [isFocused, setFocused] = (0, $isWE5$useState)(false);\n let [isFocusVisibleState, setFocusVisible] = (0, $isWE5$useState)(()=>state.current.isFocused && state.current.isFocusVisible);\n let updateState = (0, $isWE5$useCallback)(()=>setFocusVisible(state.current.isFocused && state.current.isFocusVisible), []);\n let onFocusChange = (0, $isWE5$useCallback)((isFocused)=>{\n state.current.isFocused = isFocused;\n setFocused(isFocused);\n updateState();\n }, [\n updateState\n ]);\n (0, $isWE5$useFocusVisibleListener)((isFocusVisible)=>{\n state.current.isFocusVisible = isFocusVisible;\n updateState();\n }, [], {\n isTextInput: isTextInput\n });\n let { focusProps: focusProps } = (0, $isWE5$useFocus)({\n isDisabled: within,\n onFocusChange: onFocusChange\n });\n let { focusWithinProps: focusWithinProps } = (0, $isWE5$useFocusWithin)({\n isDisabled: !within,\n onFocusWithinChange: onFocusChange\n });\n return {\n isFocused: isFocused,\n isFocusVisible: isFocusVisibleState,\n focusProps: within ? focusWithinProps : focusProps\n };\n}\n\n\nexport {$f7dceffc5ad7768b$export$4e328f61c538687f as useFocusRing};\n//# sourceMappingURL=useFocusRing.module.js.map\n","var i=Object.defineProperty;var d=(t,e,n)=>e in t?i(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var r=(t,e,n)=>(d(t,typeof e!=\"symbol\"?e+\"\":e,n),n);class o{constructor(){r(this,\"current\",this.detect());r(this,\"handoffState\",\"pending\");r(this,\"currentId\",0)}set(e){this.current!==e&&(this.handoffState=\"pending\",this.currentId=0,this.current=e)}reset(){this.set(this.detect())}nextId(){return++this.currentId}get isServer(){return this.current===\"server\"}get isClient(){return this.current===\"client\"}detect(){return typeof window==\"undefined\"||typeof document==\"undefined\"?\"server\":\"client\"}handoff(){this.handoffState===\"pending\"&&(this.handoffState=\"complete\")}get isHandoffComplete(){return this.handoffState===\"complete\"}}let s=new o;export{s as env};\n","import{env as t}from'./env.js';function l(n){var u;return t.isServer?null:n==null?document:(u=n==null?void 0:n.ownerDocument)!=null?u:document}function r(n){var u,o;return t.isServer?null:n==null?document:(o=(u=n==null?void 0:n.getRootNode)==null?void 0:u.call(n))!=null?o:document}function e(n){var u,o;return(o=(u=r(n))==null?void 0:u.activeElement)!=null?o:null}function d(n){return e(n)===n}export{e as getActiveElement,l as getOwnerDocument,r as getRootNode,d as isActiveElement};\n","function t(e){typeof queueMicrotask==\"function\"?queueMicrotask(e):Promise.resolve().then(e).catch(o=>setTimeout(()=>{throw o}))}export{t as microTask};\n","import{microTask as a}from'./micro-task.js';function o(){let s=[],r={addEventListener(e,t,n,i){return e.addEventListener(t,n,i),r.add(()=>e.removeEventListener(t,n,i))},requestAnimationFrame(...e){let t=requestAnimationFrame(...e);return r.add(()=>cancelAnimationFrame(t))},nextFrame(...e){return r.requestAnimationFrame(()=>r.requestAnimationFrame(...e))},setTimeout(...e){let t=setTimeout(...e);return r.add(()=>clearTimeout(t))},microTask(...e){let t={current:!0};return a(()=>{t.current&&e[0]()}),r.add(()=>{t.current=!1})},style(e,t,n){let i=e.style.getPropertyValue(t);return Object.assign(e.style,{[t]:n}),this.add(()=>{Object.assign(e.style,{[t]:i})})},group(e){let t=o();return e(t),this.add(()=>t.dispose())},add(e){return s.includes(e)||s.push(e),()=>{let t=s.indexOf(e);if(t>=0)for(let n of s.splice(t,1))n()}},dispose(){for(let e of s.splice(0))e()}};return r}export{o as disposables};\n","import{useEffect as s,useState as o}from\"react\";import{disposables as t}from'../utils/disposables.js';function p(){let[e]=o(t);return s(()=>()=>e.dispose(),[e]),e}export{p as useDisposables};\n","import{useEffect as f,useLayoutEffect as c}from\"react\";import{env as i}from'../utils/env.js';let n=(e,t)=>{i.isServer?f(e,t):c(e,t)};export{n as useIsoMorphicEffect};\n","import{useRef as t}from\"react\";import{useIsoMorphicEffect as o}from'./use-iso-morphic-effect.js';function s(e){let r=t(e);return o(()=>{r.current=e},[e]),r}export{s as useLatestValue};\n","import a from\"react\";import{useLatestValue as n}from'./use-latest-value.js';let o=function(t){let e=n(t);return a.useCallback((...r)=>e.current(...r),[e])};export{o as useEvent};\n","import{useRef as a,useState as m}from\"react\";import{getOwnerDocument as d}from'../utils/owner.js';import{useDisposables as g}from'./use-disposables.js';import{useEvent as u}from'./use-event.js';function E(e){let t=e.width/2,n=e.height/2;return{top:e.clientY-n,right:e.clientX+t,bottom:e.clientY+n,left:e.clientX-t}}function P(e,t){return!(!e||!t||e.right<t.left||e.left>t.right||e.bottom<t.top||e.top>t.bottom)}function w({disabled:e=!1}={}){let t=a(null),[n,l]=m(!1),r=g(),o=u(()=>{t.current=null,l(!1),r.dispose()}),f=u(s=>{if(r.dispose(),t.current===null){t.current=s.currentTarget,l(!0);{let i=d(s.currentTarget);r.addEventListener(i,\"pointerup\",o,!1),r.addEventListener(i,\"pointermove\",c=>{if(t.current){let p=E(c);l(P(p,t.current.getBoundingClientRect()))}},!1),r.addEventListener(i,\"pointercancel\",o,!1)}}});return{pressed:n,pressProps:e?{}:{onPointerDown:f,onPointerUp:o,onClick:o}}}export{w as useActivePress};\n","import{useMemo as t}from\"react\";function n(e){return t(()=>e,Object.values(e))}export{n as useSlot};\n","import n,{createContext as r,useContext as i}from\"react\";let e=r(void 0);function a(){return i(e)}function l({value:t,children:o}){return n.createElement(e.Provider,{value:t},o)}export{l as DisabledProvider,a as useDisabled};\n","function t(...r){return Array.from(new Set(r.flatMap(n=>typeof n==\"string\"?n.split(\" \"):[]))).filter(Boolean).join(\" \")}export{t as classNames};\n","function u(r,n,...a){if(r in n){let e=n[r];return typeof e==\"function\"?e(...a):e}let t=new Error(`Tried to handle \"${r}\" but there is no handler defined. Only defined handlers are: ${Object.keys(n).map(e=>`\"${e}\"`).join(\", \")}.`);throw Error.captureStackTrace&&Error.captureStackTrace(t,u),t}export{u as match};\n","import v,{Fragment as S,cloneElement as j,createElement as w,forwardRef as k,isValidElement as M,useCallback as x,useRef as O}from\"react\";import{classNames as N}from'./class-names.js';import{match as $}from'./match.js';var A=(a=>(a[a.None=0]=\"None\",a[a.RenderStrategy=1]=\"RenderStrategy\",a[a.Static=2]=\"Static\",a))(A||{}),C=(t=>(t[t.Unmount=0]=\"Unmount\",t[t.Hidden=1]=\"Hidden\",t))(C||{});function K(){let e=I();return x(r=>U({mergeRefs:e,...r}),[e])}function U({ourProps:e,theirProps:r,slot:t,defaultTag:a,features:o,visible:n=!0,name:i,mergeRefs:l}){l=l!=null?l:H;let s=P(r,e);if(n)return F(s,t,a,i,l);let y=o!=null?o:0;if(y&2){let{static:f=!1,...u}=s;if(f)return F(u,t,a,i,l)}if(y&1){let{unmount:f=!0,...u}=s;return $(f?0:1,{[0](){return null},[1](){return F({...u,hidden:!0,style:{display:\"none\"}},t,a,i,l)}})}return F(s,t,a,i,l)}function F(e,r={},t,a,o){let{as:n=t,children:i,refName:l=\"ref\",...s}=h(e,[\"unmount\",\"static\"]),y=e.ref!==void 0?{[l]:e.ref}:{},f=typeof i==\"function\"?i(r):i;f=E(f),\"className\"in s&&s.className&&typeof s.className==\"function\"&&(s.className=s.className(r)),s[\"aria-labelledby\"]&&s[\"aria-labelledby\"]===s.id&&(s[\"aria-labelledby\"]=void 0);let u={};if(r){let d=!1,p=[];for(let[c,T]of Object.entries(r))typeof T==\"boolean\"&&(d=!0),T===!0&&p.push(c.replace(/([A-Z])/g,g=>`-${g.toLowerCase()}`));if(d){u[\"data-headlessui-state\"]=p.join(\" \");for(let c of p)u[`data-${c}`]=\"\"}}if(b(n)&&(Object.keys(m(s)).length>0||Object.keys(m(u)).length>0))if(!M(f)||Array.isArray(f)&&f.length>1||L(f)){if(Object.keys(m(s)).length>0)throw new Error(['Passing props on \"Fragment\"!',\"\",`The current component <${a} /> is rendering a \"Fragment\".`,\"However we need to passthrough the following props:\",Object.keys(m(s)).concat(Object.keys(m(u))).map(d=>` - ${d}`).join(`\n`),\"\",\"You can apply a few solutions:\",['Add an `as=\"...\"` prop, to ensure that we render an actual element instead of a \"Fragment\".',\"Render a single element as the child so that we can forward the props onto that element.\"].map(d=>` - ${d}`).join(`\n`)].join(`\n`))}else{let d=f.props,p=d==null?void 0:d.className,c=typeof p==\"function\"?(...R)=>N(p(...R),s.className):N(p,s.className),T=c?{className:c}:{},g=P(f.props,m(h(s,[\"ref\"])));for(let R in u)R in g&&delete u[R];return j(f,Object.assign({},g,u,y,{ref:o(D(f),y.ref)},T))}return w(n,Object.assign({},h(s,[\"ref\"]),!b(n)&&y,!b(n)&&u),f)}function I(){let e=O([]),r=x(t=>{for(let a of e.current)a!=null&&(typeof a==\"function\"?a(t):a.current=t)},[]);return(...t)=>{if(!t.every(a=>a==null))return e.current=t,r}}function H(...e){return e.every(r=>r==null)?void 0:r=>{for(let t of e)t!=null&&(typeof t==\"function\"?t(r):t.current=r)}}function P(...e){var a;if(e.length===0)return{};if(e.length===1)return e[0];let r={},t={};for(let o of e)for(let n in o)n.startsWith(\"on\")&&typeof o[n]==\"function\"?((a=t[n])!=null||(t[n]=[]),t[n].push(o[n])):r[n]=o[n];if(r.disabled||r[\"aria-disabled\"])for(let o in t)/^(on(?:Click|Pointer|Mouse|Key)(?:Down|Up|Press)?)$/.test(o)&&(t[o]=[n=>{var i;return(i=n==null?void 0:n.preventDefault)==null?void 0:i.call(n)}]);for(let o in t)Object.assign(r,{[o](n,...i){let l=t[o];for(let s of l){if((n instanceof Event||(n==null?void 0:n.nativeEvent)instanceof Event)&&n.defaultPrevented)return;s(n,...i)}}});return r}function V(...e){var a;if(e.length===0)return{};if(e.length===1)return e[0];let r={},t={};for(let o of e)for(let n in o)n.startsWith(\"on\")&&typeof o[n]==\"function\"?((a=t[n])!=null||(t[n]=[]),t[n].push(o[n])):r[n]=o[n];for(let o in t)Object.assign(r,{[o](...n){let i=t[o];for(let l of i)l==null||l(...n)}});return r}function Y(e){var r;return Object.assign(k(e),{displayName:(r=e.displayName)!=null?r:e.name})}function m(e){let r=Object.assign({},e);for(let t in r)r[t]===void 0&&delete r[t];return r}function h(e,r=[]){let t=Object.assign({},e);for(let a of r)a in t&&delete t[a];return t}function D(e){return v.version.split(\".\")[0]>=\"19\"?e.props.ref:e.ref}function E(e){if(e!=null&&e.$$typeof===Symbol.for(\"react.lazy\")){let r=e._payload;if(r!=null&&r.status===\"fulfilled\")return E(r.value)}return e}function b(e){return e===S||e===Symbol.for(\"react.fragment\")}function L(e){return b(e.type)}export{A as RenderFeatures,C as RenderStrategy,m as compact,Y as forwardRefWithAs,b as isFragment,L as isFragmentInstance,V as mergeProps,K as useRender};\n","import{useRef as o,useState as f}from\"react\";import{flushSync as a}from\"react-dom\";import{useEvent as m}from'./use-event.js';function b(l,r,c){let[i,s]=f(c),e=l!==void 0,t=o(e),u=o(!1),d=o(!1);return e&&!t.current&&!u.current?(u.current=!0,t.current=e,console.error(\"A component is changing from uncontrolled to controlled. This may be caused by the value changing from undefined to a defined value, which should not happen.\")):!e&&t.current&&!d.current&&(d.current=!0,t.current=e,console.error(\"A component is changing from controlled to uncontrolled. This may be caused by the value changing from a defined value to undefined, which should not happen.\")),[e?l:i,m(n=>(e||a(()=>s(n)),r==null?void 0:r(n)))]}export{b as useControllable};\n","import{useState as u}from\"react\";function l(e){let[t]=u(e);return t}export{l as useDefaultValue};\n","import{isValidElement as f}from\"react\";function p(t={},i=null,n=[]){for(let[e,o]of Object.entries(t))s(n,r(i,e),o);return n}function r(t,i){return t?t+\"[\"+i+\"]\":i}function s(t,i,n){if(Array.isArray(n))for(let[e,o]of n.entries())s(t,r(i,e.toString()),o);else n instanceof Date?t.push([i,n.toISOString()]):typeof n==\"boolean\"?t.push([i,n?\"1\":\"0\"]):typeof n==\"string\"?t.push([i,n]):typeof n==\"number\"?t.push([i,`${n}`]):n==null?t.push([i,\"\"]):c(n)&&!f(n)&&p(n,i,t)}function g(t){var n,e;let i=(n=t==null?void 0:t.form)!=null?n:t.closest(\"form\");if(i){for(let o of i.elements)if(o!==t&&(o.tagName===\"INPUT\"&&o.type===\"submit\"||o.tagName===\"BUTTON\"&&o.type===\"submit\"||o.nodeName===\"INPUT\"&&o.type===\"image\")){o.click();return}(e=i.requestSubmit)==null||e.call(i)}}function c(t){if(Object.prototype.toString.call(t)!==\"[object Object]\")return!1;let i=Object.getPrototypeOf(t);return i===null||Object.getPrototypeOf(i)===null}export{g as attemptSubmit,p as objectToFormEntries};\n","import{forwardRefWithAs as i,useRender as p}from'../utils/render.js';let a=\"span\";var s=(e=>(e[e.None=1]=\"None\",e[e.Focusable=2]=\"Focusable\",e[e.Hidden=4]=\"Hidden\",e))(s||{});function l(t,r){var n;let{features:d=1,...e}=t,o={ref:r,\"aria-hidden\":(d&2)===2?!0:(n=e[\"aria-hidden\"])!=null?n:void 0,hidden:(d&4)===4?!0:void 0,style:{position:\"fixed\",top:1,left:1,width:1,height:0,padding:0,margin:-1,overflow:\"hidden\",clip:\"rect(0, 0, 0, 0)\",whiteSpace:\"nowrap\",borderWidth:\"0\",...(d&4)===4&&(d&2)!==2&&{display:\"none\"}}};return p()({ourProps:o,theirProps:e,slot:{},defaultTag:a,name:\"Hidden\"})}let f=i(l);export{f as Hidden,s as HiddenFeatures};\n","import o,{createContext as H,useContext as E,useEffect as m,useState as u}from\"react\";import{createPortal as g}from\"react-dom\";import{useDisposables as h}from'../hooks/use-disposables.js';import{objectToFormEntries as x}from'../utils/form.js';import{compact as y}from'../utils/render.js';import{Hidden as l,HiddenFeatures as d}from'./hidden.js';let f=H(null);function W(t){let[e,r]=u(null);return o.createElement(f.Provider,{value:{target:e}},t.children,o.createElement(l,{features:d.Hidden,ref:r}))}function c({children:t}){let e=E(f);if(!e)return o.createElement(o.Fragment,null,t);let{target:r}=e;return r?g(o.createElement(o.Fragment,null,t),r):null}function j({data:t,form:e,disabled:r,onReset:n,overrides:F}){let[i,a]=u(null),p=h();return m(()=>{if(n&&i)return p.addEventListener(i,\"reset\",n)},[i,e,n]),o.createElement(c,null,o.createElement(C,{setForm:a,formId:e}),x(t).map(([s,v])=>o.createElement(l,{features:d.Hidden,...y({key:s,as:\"input\",type:\"hidden\",hidden:!0,readOnly:!0,form:e,disabled:r,name:s,value:v,...F})})))}function C({setForm:t,formId:e}){return m(()=>{if(e){let r=document.getElementById(e);r&&t(r)}},[t,e]),e?null:o.createElement(l,{features:d.Hidden,as:\"input\",type:\"hidden\",hidden:!0,readOnly:!0,ref:r=>{if(!r)return;let n=r.closest(\"form\");n&&t(n)}})}export{j as FormFields,W as FormFieldsProvider,c as HoistFormFields};\n","import n,{createContext as d,useContext as i}from\"react\";let e=d(void 0);function u(){return i(e)}function f({id:t,children:r}){return n.createElement(e.Provider,{value:t},r)}export{f as IdProvider,u as useProvidedId};\n","function o(e){return typeof e!=\"object\"||e===null?!1:\"nodeType\"in e}function t(e){return o(e)&&\"tagName\"in e}function n(e){return t(e)&&\"accessKey\"in e}function i(e){return t(e)&&\"tabIndex\"in e}function r(e){return t(e)&&\"style\"in e}function u(e){return n(e)&&e.nodeName===\"IFRAME\"}function l(e){return n(e)&&e.nodeName===\"INPUT\"}function s(e){return n(e)&&e.nodeName===\"TEXTAREA\"}function m(e){return n(e)&&e.nodeName===\"LABEL\"}function a(e){return n(e)&&e.nodeName===\"FIELDSET\"}function E(e){return n(e)&&e.nodeName===\"LEGEND\"}function L(e){return t(e)?e.matches('a[href],audio[controls],button,details,embed,iframe,img[usemap],input:not([type=\"hidden\"]),label,select,textarea,video[controls]'):!1}export{r as hasInlineStyle,t as isElement,n as isHTMLElement,a as isHTMLFieldSetElement,u as isHTMLIframeElement,l as isHTMLInputElement,m as isHTMLLabelElement,E as isHTMLLegendElement,s as isHTMLTextAreaElement,i as isHTMLorSVGElement,L as isInteractiveElement,o as isNode};\n","import*as n from'./dom.js';function s(l){let e=l.parentElement,t=null;for(;e&&!n.isHTMLFieldSetElement(e);)n.isHTMLLegendElement(e)&&(t=e),e=e.parentElement;let i=(e==null?void 0:e.getAttribute(\"disabled\"))===\"\";return i&&r(t)?!1:i}function r(l){if(!l)return!1;let e=l.previousElementSibling;for(;e!==null;){if(n.isHTMLLegendElement(e))return!1;e=e.previousElementSibling}return!0}export{s as isDisabledReactIssue7711};\n","import{useEffect as l,useRef as i}from\"react\";import{useEvent as r}from'./use-event.js';let u=Symbol();function T(t,n=!0){return Object.assign(t,{[u]:n})}function y(...t){let n=i(t);l(()=>{n.current=t},[t]);let c=r(e=>{for(let o of n.current)o!=null&&(typeof o==\"function\"?o(e):o.current=e)});return t.every(e=>e==null||(e==null?void 0:e[u]))?void 0:c}export{T as optionalRef,y as useSyncRefs};\n","\"use client\";import m,{createContext as D,useContext as d,useMemo as u,useState as T}from\"react\";import{useEvent as P}from'../../hooks/use-event.js';import{useId as g}from'../../hooks/use-id.js';import{useIsoMorphicEffect as x}from'../../hooks/use-iso-morphic-effect.js';import{useSlot as y}from'../../hooks/use-slot.js';import{useSyncRefs as E}from'../../hooks/use-sync-refs.js';import{useDisabled as v}from'../../internal/disabled.js';import{forwardRefWithAs as R,useRender as S}from'../../utils/render.js';let a=D(null);a.displayName=\"DescriptionContext\";function f(){let r=d(a);if(r===null){let e=new Error(\"You used a <Description /> component, but it is not inside a relevant parent.\");throw Error.captureStackTrace&&Error.captureStackTrace(e,f),e}return r}function w(){var r,e;return(e=(r=d(a))==null?void 0:r.value)!=null?e:void 0}function H(){let[r,e]=T([]);return[r.length>0?r.join(\" \"):void 0,u(()=>function(t){let i=P(n=>(e(o=>[...o,n]),()=>e(o=>{let s=o.slice(),p=s.indexOf(n);return p!==-1&&s.splice(p,1),s}))),l=u(()=>({register:i,slot:t.slot,name:t.name,props:t.props,value:t.value}),[i,t.slot,t.name,t.props,t.value]);return m.createElement(a.Provider,{value:l},t.children)},[e])]}let I=\"p\";function C(r,e){let c=g(),t=v(),{id:i=`headlessui-description-${c}`,...l}=r,n=f(),o=E(e);x(()=>n.register(i),[i,n.register]);let s=y({...n.slot,disabled:t||!1}),p={ref:o,...n.props,id:i};return S()({ourProps:p,theirProps:l,slot:s,defaultTag:I,name:n.name||\"Description\"})}let _=R(C),M=Object.assign(_,{});export{M as Description,w as useDescribedBy,H as useDescriptions};\n","var o=(r=>(r.Space=\" \",r.Enter=\"Enter\",r.Escape=\"Escape\",r.Backspace=\"Backspace\",r.Delete=\"Delete\",r.ArrowLeft=\"ArrowLeft\",r.ArrowUp=\"ArrowUp\",r.ArrowRight=\"ArrowRight\",r.ArrowDown=\"ArrowDown\",r.Home=\"Home\",r.End=\"End\",r.PageUp=\"PageUp\",r.PageDown=\"PageDown\",r.Tab=\"Tab\",r))(o||{});export{o as Keys};\n","\"use client\";import R,{createContext as D,useContext as h,useMemo as v,useState as k}from\"react\";import{useEvent as P}from'../../hooks/use-event.js';import{useId as _}from'../../hooks/use-id.js';import{useIsoMorphicEffect as S}from'../../hooks/use-iso-morphic-effect.js';import{useSlot as A}from'../../hooks/use-slot.js';import{useSyncRefs as B}from'../../hooks/use-sync-refs.js';import{useDisabled as F}from'../../internal/disabled.js';import{useProvidedId as M}from'../../internal/id.js';import*as m from'../../utils/dom.js';import{forwardRefWithAs as I,useRender as H}from'../../utils/render.js';let L=D(null);L.displayName=\"LabelContext\";function C(){let n=h(L);if(n===null){let l=new Error(\"You used a <Label /> component, but it is not inside a relevant parent.\");throw Error.captureStackTrace&&Error.captureStackTrace(l,C),l}return n}function N(n){var a,e,o;let l=(e=(a=h(L))==null?void 0:a.value)!=null?e:void 0;return((o=n==null?void 0:n.length)!=null?o:0)>0?[l,...n].filter(Boolean).join(\" \"):l}function V({inherit:n=!1}={}){let l=N(),[a,e]=k([]),o=n?[l,...a].filter(Boolean):a;return[o.length>0?o.join(\" \"):void 0,v(()=>function(t){let p=P(i=>(e(u=>[...u,i]),()=>e(u=>{let d=u.slice(),f=d.indexOf(i);return f!==-1&&d.splice(f,1),d}))),b=v(()=>({register:p,slot:t.slot,name:t.name,props:t.props,value:t.value}),[p,t.slot,t.name,t.props,t.value]);return R.createElement(L.Provider,{value:b},t.children)},[e])]}let G=\"label\";function U(n,l){var y;let a=_(),e=C(),o=M(),T=F(),{id:t=`headlessui-label-${a}`,htmlFor:p=o!=null?o:(y=e.props)==null?void 0:y.htmlFor,passive:b=!1,...i}=n,u=B(l);S(()=>e.register(t),[t,e.register]);let d=P(s=>{let g=s.currentTarget;if(!(s.target!==s.currentTarget&&m.isInteractiveElement(s.target))&&(m.isHTMLLabelElement(g)&&s.preventDefault(),e.props&&\"onClick\"in e.props&&typeof e.props.onClick==\"function\"&&e.props.onClick(s),m.isHTMLLabelElement(g))){let r=document.getElementById(g.htmlFor);if(r){let E=r.getAttribute(\"disabled\");if(E===\"true\"||E===\"\")return;let x=r.getAttribute(\"aria-disabled\");if(x===\"true\"||x===\"\")return;(m.isHTMLInputElement(r)&&(r.type===\"file\"||r.type===\"radio\"||r.type===\"checkbox\")||r.role===\"radio\"||r.role===\"checkbox\"||r.role===\"switch\")&&r.click(),r.focus({preventScroll:!0})}}}),f=A({...e.slot,disabled:T||!1}),c={ref:u,...e.props,id:t,htmlFor:p,onClick:d};return b&&(\"onClick\"in c&&(delete c.htmlFor,delete c.onClick),\"onClick\"in i&&delete i.onClick),H()({ourProps:c,theirProps:i,slot:f,defaultTag:p?G:\"div\",name:e.name||\"Label\"})}let j=I(U),Z=Object.assign(j,{});export{Z as Label,C as useLabelContext,N as useLabelledBy,V as useLabels};\n","import{useCallback as n}from\"react\";function l(e,r){return e!==null&&r!==null&&typeof e==\"object\"&&typeof r==\"object\"&&\"id\"in e&&\"id\"in r?e.id===r.id:e===r}function u(e=l){return n((r,t)=>{if(typeof e==\"string\"){let o=e;return(r==null?void 0:r[o])===(t==null?void 0:t[o])}return e(r,t)},[e])}export{u as useByComparator};\n","import{useState as l}from\"react\";import{disposables as m}from'../utils/disposables.js';import{useIsoMorphicEffect as p}from'./use-iso-morphic-effect.js';function h(i){if(i===null)return{width:0,height:0};let{width:t,height:e}=i.getBoundingClientRect();return{width:t,height:e}}function w(i,t,e=!1){let[r,f]=l(()=>h(t));return p(()=>{if(!t||!i)return;let n=m();return n.requestAnimationFrame(function s(){n.requestAnimationFrame(s),f(u=>{let o=h(t);return o.width===u.width&&o.height===u.height?u:o})}),()=>{n.dispose()}},[t,i]),e?{width:`${r.width}px`,height:`${r.height}px`}:r}export{w as useElementSize};\n","var g=(f=>(f[f.Left=0]=\"Left\",f[f.Right=2]=\"Right\",f))(g||{});export{g as MouseButton};\n","import{useRef as l}from\"react\";import{MouseButton as f}from'../components/mouse.js';import{isDisabledReactIssue7711 as n}from'../utils/bugs.js';import{useEvent as o}from'./use-event.js';function s(t){let r=l(null),u=o(e=>{r.current=e.pointerType,!n(e.currentTarget)&&e.pointerType===\"mouse\"&&e.button===f.Left&&(e.preventDefault(),t(e))}),i=o(e=>{r.current!==\"mouse\"&&(n(e.currentTarget)||t(e))});return{onPointerDown:u,onClick:i}}export{s as useHandleToggle};\n","class a extends Map{constructor(t){super();this.factory=t}get(t){let e=super.get(t);return e===void 0&&(e=this.factory(t),this.set(t,e)),e}}export{a as DefaultMap};\n","var h=Object.defineProperty;var v=(t,e,r)=>e in t?h(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var S=(t,e,r)=>(v(t,typeof e!=\"symbol\"?e+\"\":e,r),r),b=(t,e,r)=>{if(!e.has(t))throw TypeError(\"Cannot \"+r)};var i=(t,e,r)=>(b(t,e,\"read from private field\"),r?r.call(t):e.get(t)),c=(t,e,r)=>{if(e.has(t))throw TypeError(\"Cannot add the same private member more than once\");e instanceof WeakSet?e.add(t):e.set(t,r)},u=(t,e,r,s)=>(b(t,e,\"write to private field\"),s?s.call(t,r):e.set(t,r),r);var n,a,o;import{DefaultMap as m}from'./utils/default-map.js';import{disposables as y}from'./utils/disposables.js';import{env as d}from'./utils/env.js';class T{constructor(e){c(this,n,{});c(this,a,new m(()=>new Set));c(this,o,new Set);S(this,\"disposables\",y());u(this,n,e),d.isServer&&this.disposables.microTask(()=>{this.dispose()})}dispose(){this.disposables.dispose()}get state(){return i(this,n)}subscribe(e,r){if(d.isServer)return()=>{};let s={selector:e,callback:r,current:e(i(this,n))};return i(this,o).add(s),this.disposables.add(()=>{i(this,o).delete(s)})}on(e,r){return d.isServer?()=>{}:(i(this,a).get(e).add(r),this.disposables.add(()=>{i(this,a).get(e).delete(r)}))}send(e){let r=this.reduce(i(this,n),e);if(r!==i(this,n)){u(this,n,r);for(let s of i(this,o)){let l=s.selector(i(this,n));j(s.current,l)||(s.current=l,s.callback(l))}for(let s of i(this,a).get(e.type))s(i(this,n),e)}}}n=new WeakMap,a=new WeakMap,o=new WeakMap;function j(t,e){return Object.is(t,e)?!0:typeof t!=\"object\"||t===null||typeof e!=\"object\"||e===null?!1:Array.isArray(t)&&Array.isArray(e)?t.length!==e.length?!1:f(t[Symbol.iterator](),e[Symbol.iterator]()):t instanceof Map&&e instanceof Map||t instanceof Set&&e instanceof Set?t.size!==e.size?!1:f(t.entries(),e.entries()):p(t)&&p(e)?f(Object.entries(t)[Symbol.iterator](),Object.entries(e)[Symbol.iterator]()):!1}function f(t,e){do{let r=t.next(),s=e.next();if(r.done&&s.done)return!0;if(r.done||s.done||!Object.is(r.value,s.value))return!1}while(!0)}function p(t){if(Object.prototype.toString.call(t)!==\"[object Object]\")return!1;let e=Object.getPrototypeOf(t);return e===null||Object.getPrototypeOf(e)===null}function k(t){let[e,r]=t(),s=y();return(...l)=>{e(...l),s.dispose(),s.microTask(r)}}export{T as Machine,k as batch,j as shallowEqual};\n","var a=Object.defineProperty;var r=(e,c,t)=>c in e?a(e,c,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[c]=t;var p=(e,c,t)=>(r(e,typeof c!=\"symbol\"?c+\"\":c,t),t);import{Machine as d}from'../machine.js';import{DefaultMap as l}from'../utils/default-map.js';import{match as u}from'../utils/match.js';var k=(t=>(t[t.Push=0]=\"Push\",t[t.Pop=1]=\"Pop\",t))(k||{});let y={[0](e,c){let t=c.id,s=e.stack,i=e.stack.indexOf(t);if(i!==-1){let n=e.stack.slice();return n.splice(i,1),n.push(t),s=n,{...e,stack:s}}return{...e,stack:[...e.stack,t]}},[1](e,c){let t=c.id,s=e.stack.indexOf(t);if(s===-1)return e;let i=e.stack.slice();return i.splice(s,1),{...e,stack:i}}};class o extends d{constructor(){super(...arguments);p(this,\"actions\",{push:t=>this.send({type:0,id:t}),pop:t=>this.send({type:1,id:t})});p(this,\"selectors\",{isTop:(t,s)=>t.stack[t.stack.length-1]===s,inStack:(t,s)=>t.stack.includes(s)})}static new(){return new o({stack:[]})}reduce(t,s){return u(s.type,y,t,s)}}const x=new l(()=>o.new());export{k as ActionTypes,x as stackMachines};\n","/**\n * @license React\n * use-sync-external-store-with-selector.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\");\nfunction is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useSyncExternalStore = React.useSyncExternalStore,\n useRef = React.useRef,\n useEffect = React.useEffect,\n useMemo = React.useMemo,\n useDebugValue = React.useDebugValue;\nexports.useSyncExternalStoreWithSelector = function (\n subscribe,\n getSnapshot,\n getServerSnapshot,\n selector,\n isEqual\n) {\n var instRef = useRef(null);\n if (null === instRef.current) {\n var inst = { hasValue: !1, value: null };\n instRef.current = inst;\n } else inst = instRef.current;\n instRef = useMemo(\n function () {\n function memoizedSelector(nextSnapshot) {\n if (!hasMemo) {\n hasMemo = !0;\n memoizedSnapshot = nextSnapshot;\n nextSnapshot = selector(nextSnapshot);\n if (void 0 !== isEqual && inst.hasValue) {\n var currentSelection = inst.value;\n if (isEqual(currentSelection, nextSnapshot))\n return (memoizedSelection = currentSelection);\n }\n return (memoizedSelection = nextSnapshot);\n }\n currentSelection = memoizedSelection;\n if (objectIs(memoizedSnapshot, nextSnapshot)) return currentSelection;\n var nextSelection = selector(nextSnapshot);\n if (void 0 !== isEqual && isEqual(currentSelection, nextSelection))\n return (memoizedSnapshot = nextSnapshot), currentSelection;\n memoizedSnapshot = nextSnapshot;\n return (memoizedSelection = nextSelection);\n }\n var hasMemo = !1,\n memoizedSnapshot,\n memoizedSelection,\n maybeGetServerSnapshot =\n void 0 === getServerSnapshot ? null : getServerSnapshot;\n return [\n function () {\n return memoizedSelector(getSnapshot());\n },\n null === maybeGetServerSnapshot\n ? void 0\n : function () {\n return memoizedSelector(maybeGetServerSnapshot());\n }\n ];\n },\n [getSnapshot, getServerSnapshot, selector, isEqual]\n );\n var value = useSyncExternalStore(subscribe, instRef[0], instRef[1]);\n useEffect(\n function () {\n inst.hasValue = !0;\n inst.value = value;\n },\n [value]\n );\n useDebugValue(value);\n return value;\n};\n","/**\n * @license React\n * use-sync-external-store-with-selector.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n }\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());\n var React = require(\"react\"),\n objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useSyncExternalStore = React.useSyncExternalStore,\n useRef = React.useRef,\n useEffect = React.useEffect,\n useMemo = React.useMemo,\n useDebugValue = React.useDebugValue;\n exports.useSyncExternalStoreWithSelector = function (\n subscribe,\n getSnapshot,\n getServerSnapshot,\n selector,\n isEqual\n ) {\n var instRef = useRef(null);\n if (null === instRef.current) {\n var inst = { hasValue: !1, value: null };\n instRef.current = inst;\n } else inst = instRef.current;\n instRef = useMemo(\n function () {\n function memoizedSelector(nextSnapshot) {\n if (!hasMemo) {\n hasMemo = !0;\n memoizedSnapshot = nextSnapshot;\n nextSnapshot = selector(nextSnapshot);\n if (void 0 !== isEqual && inst.hasValue) {\n var currentSelection = inst.value;\n if (isEqual(currentSelection, nextSnapshot))\n return (memoizedSelection = currentSelection);\n }\n return (memoizedSelection = nextSnapshot);\n }\n currentSelection = memoizedSelection;\n if (objectIs(memoizedSnapshot, nextSnapshot))\n return currentSelection;\n var nextSelection = selector(nextSnapshot);\n if (void 0 !== isEqual && isEqual(currentSelection, nextSelection))\n return (memoizedSnapshot = nextSnapshot), currentSelection;\n memoizedSnapshot = nextSnapshot;\n return (memoizedSelection = nextSelection);\n }\n var hasMemo = !1,\n memoizedSnapshot,\n memoizedSelection,\n maybeGetServerSnapshot =\n void 0 === getServerSnapshot ? null : getServerSnapshot;\n return [\n function () {\n return memoizedSelector(getSnapshot());\n },\n null === maybeGetServerSnapshot\n ? void 0\n : function () {\n return memoizedSelector(maybeGetServerSnapshot());\n }\n ];\n },\n [getSnapshot, getServerSnapshot, selector, isEqual]\n );\n var value = useSyncExternalStore(subscribe, instRef[0], instRef[1]);\n useEffect(\n function () {\n inst.hasValue = !0;\n inst.value = value;\n },\n [value]\n );\n useDebugValue(value);\n return value;\n };\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());\n })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/use-sync-external-store-with-selector.production.js');\n} else {\n module.exports = require('./cjs/use-sync-external-store-with-selector.development.js');\n}\n","import{useSyncExternalStoreWithSelector as a}from\"use-sync-external-store/with-selector\";import{useEvent as t}from'./hooks/use-event.js';import{shallowEqual as o}from'./machine.js';function S(e,n,r=o){return a(t(i=>e.subscribe(s,i)),t(()=>e.state),t(()=>e.state),t(n),r)}function s(e){return e}export{S as useSlice};\n","import{useCallback as n,useId as u}from\"react\";import{stackMachines as p}from'../machines/stack-machine.js';import{useSlice as f}from'../react-glue.js';import{useIsoMorphicEffect as a}from'./use-iso-morphic-effect.js';function I(o,s){let t=u(),r=p.get(s),[i,c]=f(r,n(e=>[r.selectors.isTop(e,t),r.selectors.inStack(e,t)],[r,t]));return a(()=>{if(o)return r.actions.push(t),()=>r.actions.pop(t)},[r,o,t]),o?c?i:!0:!1}export{I as useIsTopLayer};\n","import{disposables as M}from'../utils/disposables.js';import{getOwnerDocument as b}from'../utils/owner.js';import{useIsTopLayer as L}from'./use-is-top-layer.js';import{useIsoMorphicEffect as T}from'./use-iso-morphic-effect.js';let f=new Map,u=new Map;function h(t){var e;let r=(e=u.get(t))!=null?e:0;return u.set(t,r+1),r!==0?()=>m(t):(f.set(t,{\"aria-hidden\":t.getAttribute(\"aria-hidden\"),inert:t.inert}),t.setAttribute(\"aria-hidden\",\"true\"),t.inert=!0,()=>m(t))}function m(t){var i;let r=(i=u.get(t))!=null?i:1;if(r===1?u.delete(t):u.set(t,r-1),r!==1)return;let e=f.get(t);e&&(e[\"aria-hidden\"]===null?t.removeAttribute(\"aria-hidden\"):t.setAttribute(\"aria-hidden\",e[\"aria-hidden\"]),t.inert=e.inert,f.delete(t))}function y(t,{allowed:r,disallowed:e}={}){let i=L(t,\"inert-others\");T(()=>{var d,c;if(!i)return;let a=M();for(let n of(d=e==null?void 0:e())!=null?d:[])n&&a.add(h(n));let s=(c=r==null?void 0:r())!=null?c:[];for(let n of s){if(!n)continue;let l=b(n);if(!l)continue;let o=n.parentElement;for(;o&&o!==l.body;){for(let p of o.children)s.some(E=>p.contains(E))||a.add(h(p));o=o.parentElement}}return a.dispose},[i,r,e])}export{y as useInertOthers};\n","import{useEffect as l}from\"react\";import{disposables as u}from'../utils/disposables.js';import*as c from'../utils/dom.js';import{useLatestValue as d}from'./use-latest-value.js';function p(s,n,o){let i=d(t=>{let e=t.getBoundingClientRect();e.x===0&&e.y===0&&e.width===0&&e.height===0&&o()});l(()=>{if(!s)return;let t=n===null?null:c.isHTMLElement(n)?n:n.current;if(!t)return;let e=u();if(typeof ResizeObserver!=\"undefined\"){let r=new ResizeObserver(()=>i.current(t));r.observe(t),e.add(()=>r.disconnect())}if(typeof IntersectionObserver!=\"undefined\"){let r=new IntersectionObserver(()=>i.current(t));r.observe(t),e.add(()=>r.disconnect())}return()=>e.dispose()},[n,i,s])}export{p as useOnDisappear};\n","import{disposables as p}from'./disposables.js';import*as y from'./dom.js';import{match as L}from'./match.js';import{getActiveElement as b,getOwnerDocument as F,getRootNode as f}from'./owner.js';let E=[\"[contentEditable=true]\",\"[tabindex]\",\"a[href]\",\"area[href]\",\"button:not([disabled])\",\"iframe\",\"input:not([disabled])\",\"select:not([disabled])\",\"details>summary\",\"textarea:not([disabled])\"].map(e=>`${e}:not([tabindex='-1'])`).join(\",\"),S=[\"[data-autofocus]\"].map(e=>`${e}:not([tabindex='-1'])`).join(\",\");var T=(o=>(o[o.First=1]=\"First\",o[o.Previous=2]=\"Previous\",o[o.Next=4]=\"Next\",o[o.Last=8]=\"Last\",o[o.WrapAround=16]=\"WrapAround\",o[o.NoScroll=32]=\"NoScroll\",o[o.AutoFocus=64]=\"AutoFocus\",o))(T||{}),A=(n=>(n[n.Error=0]=\"Error\",n[n.Overflow=1]=\"Overflow\",n[n.Success=2]=\"Success\",n[n.Underflow=3]=\"Underflow\",n))(A||{}),O=(t=>(t[t.Previous=-1]=\"Previous\",t[t.Next=1]=\"Next\",t))(O||{});function x(e=document.body){return e==null?[]:Array.from(e.querySelectorAll(E)).sort((r,t)=>Math.sign((r.tabIndex||Number.MAX_SAFE_INTEGER)-(t.tabIndex||Number.MAX_SAFE_INTEGER)))}function h(e=document.body){return e==null?[]:Array.from(e.querySelectorAll(S)).sort((r,t)=>Math.sign((r.tabIndex||Number.MAX_SAFE_INTEGER)-(t.tabIndex||Number.MAX_SAFE_INTEGER)))}var I=(t=>(t[t.Strict=0]=\"Strict\",t[t.Loose=1]=\"Loose\",t))(I||{});function H(e,r=0){var t;return e===((t=F(e))==null?void 0:t.body)?!1:L(r,{[0](){return e.matches(E)},[1](){let l=e;for(;l!==null;){if(l.matches(E))return!0;l=l.parentElement}return!1}})}function K(e){p().nextFrame(()=>{let r=b(e);r&&y.isHTMLorSVGElement(r)&&!H(r,0)&&w(e)})}var g=(t=>(t[t.Keyboard=0]=\"Keyboard\",t[t.Mouse=1]=\"Mouse\",t))(g||{});typeof window!=\"undefined\"&&typeof document!=\"undefined\"&&(document.addEventListener(\"keydown\",e=>{e.metaKey||e.altKey||e.ctrlKey||(document.documentElement.dataset.headlessuiFocusVisible=\"\")},!0),document.addEventListener(\"click\",e=>{e.detail===1?delete document.documentElement.dataset.headlessuiFocusVisible:e.detail===0&&(document.documentElement.dataset.headlessuiFocusVisible=\"\")},!0));function w(e){e==null||e.focus({preventScroll:!0})}let _=[\"textarea\",\"input\"].join(\",\");function P(e){var r,t;return(t=(r=e==null?void 0:e.matches)==null?void 0:r.call(e,_))!=null?t:!1}function G(e,r=t=>t){return e.slice().sort((t,l)=>{let n=r(t),a=r(l);if(n===null||a===null)return 0;let u=n.compareDocumentPosition(a);return u&Node.DOCUMENT_POSITION_FOLLOWING?-1:u&Node.DOCUMENT_POSITION_PRECEDING?1:0})}function R(e,r,t=e===null?document.body:f(e)){return v(x(t),r,{relativeTo:e})}function v(e,r,{sorted:t=!0,relativeTo:l=null,skipElements:n=[]}={}){let a=Array.isArray(e)?e.length>0?f(e[0]):document:f(e),u=Array.isArray(e)?t?G(e):e:r&64?h(e):x(e);n.length>0&&u.length>1&&(u=u.filter(i=>!n.some(d=>d!=null&&\"current\"in d?(d==null?void 0:d.current)===i:d===i))),l=l!=null?l:a==null?void 0:a.activeElement;let o=(()=>{if(r&5)return 1;if(r&10)return-1;throw new Error(\"Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last\")})(),M=(()=>{if(r&1)return 0;if(r&2)return Math.max(0,u.indexOf(l))-1;if(r&4)return Math.max(0,u.indexOf(l))+1;if(r&8)return u.length-1;throw new Error(\"Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last\")})(),N=r&32?{preventScroll:!0}:{},m=0,c=u.length,s;do{if(m>=c||m+c<=0)return 0;let i=M+m;if(r&16)i=(i+c)%c;else{if(i<0)return 3;if(i>=c)return 1}s=u[i],s==null||s.focus(N),m+=o}while(s!==b(s));return r&6&&P(s)&&s.select(),2}export{T as Focus,A as FocusResult,I as FocusableMode,w as focusElement,R as focusFrom,v as focusIn,E as focusableSelector,h as getAutoFocusableElements,x as getFocusableElements,H as isFocusableElement,K as restoreFocusIfNecessary,G as sortByDomNode};\n","function t(){return/iPhone/gi.test(window.navigator.platform)||/Mac/gi.test(window.navigator.platform)&&window.navigator.maxTouchPoints>0}function i(){return/Android/gi.test(window.navigator.userAgent)}function n(){return t()||i()}export{i as isAndroid,t as isIOS,n as isMobile};\n","import{useEffect as c}from\"react\";import{useLatestValue as a}from'./use-latest-value.js';function i(t,e,o,n){let u=a(o);c(()=>{if(!t)return;function r(m){u.current(m)}return document.addEventListener(e,r,n),()=>document.removeEventListener(e,r,n)},[t,e,n])}export{i as useDocumentEvent};\n","import{useEffect as a}from\"react\";import{useLatestValue as f}from'./use-latest-value.js';function s(t,e,o,n){let i=f(o);a(()=>{if(!t)return;function r(d){i.current(d)}return window.addEventListener(e,r,n),()=>window.removeEventListener(e,r,n)},[t,e,n])}export{s as useWindowEvent};\n","import{useCallback as T,useRef as E}from\"react\";import*as d from'../utils/dom.js';import{FocusableMode as g,isFocusableElement as y}from'../utils/focus-management.js';import{isMobile as p}from'../utils/platform.js';import{useDocumentEvent as a}from'./use-document-event.js';import{useLatestValue as L}from'./use-latest-value.js';import{useWindowEvent as x}from'./use-window-event.js';const C=30;function k(o,f,h){let m=L(h),s=T(function(e,c){if(e.defaultPrevented)return;let r=c(e);if(r===null||!r.getRootNode().contains(r)||!r.isConnected)return;let M=function u(n){return typeof n==\"function\"?u(n()):Array.isArray(n)||n instanceof Set?n:[n]}(f);for(let u of M)if(u!==null&&(u.contains(r)||e.composed&&e.composedPath().includes(u)))return;return!y(r,g.Loose)&&r.tabIndex!==-1&&e.preventDefault(),m.current(e,r)},[m,f]),i=E(null);a(o,\"pointerdown\",t=>{var e,c;p()||(i.current=((c=(e=t.composedPath)==null?void 0:e.call(t))==null?void 0:c[0])||t.target)},!0),a(o,\"pointerup\",t=>{if(p()||!i.current)return;let e=i.current;return i.current=null,s(t,()=>e)},!0);let l=E({x:0,y:0});a(o,\"touchstart\",t=>{l.current.x=t.touches[0].clientX,l.current.y=t.touches[0].clientY},!0),a(o,\"touchend\",t=>{let e={x:t.changedTouches[0].clientX,y:t.changedTouches[0].clientY};if(!(Math.abs(e.x-l.current.x)>=C||Math.abs(e.y-l.current.y)>=C))return s(t,()=>d.isHTMLorSVGElement(t.target)?t.target:null)},!0),x(o,\"blur\",t=>s(t,()=>d.isHTMLIframeElement(window.document.activeElement)?window.document.activeElement:null),!0)}export{k as useOutsideClick};\n","import{useMemo as o}from\"react\";import{getOwnerDocument as t,getRootNode as r}from'../utils/owner.js';function u(...e){return o(()=>t(...e),[...e])}function c(...e){return o(()=>r(...e),[...e])}export{u as useOwnerDocument,c as useRootDocument};\n","import{useRef as o}from\"react\";import*as E from'../utils/dom.js';import{useDocumentEvent as d}from'./use-document-event.js';var H=(e=>(e[e.Ignore=0]=\"Ignore\",e[e.Select=1]=\"Select\",e[e.Close=2]=\"Close\",e))(H||{});const S={Ignore:{kind:0},Select:r=>({kind:1,target:r}),Close:{kind:2}},M=200,f=5;function L(r,{trigger:n,action:T,close:e,select:p}){let l=o(null),i=o(null),u=o(null);d(r&&n!==null,\"pointerdown\",t=>{E.isNode(t==null?void 0:t.target)&&n!=null&&n.contains(t.target)&&(i.current=t.x,u.current=t.y,l.current=t.timeStamp)}),d(r&&n!==null,\"pointerup\",t=>{var s,m;let c=l.current;if(c===null||(l.current=null,!E.isHTMLorSVGElement(t.target))||Math.abs(t.x-((s=i.current)!=null?s:t.x))<f&&Math.abs(t.y-((m=u.current)!=null?m:t.y))<f)return;let a=T(t);switch(a.kind){case 0:return;case 1:{t.timeStamp-c>M&&(p(a.target),e());break}case 2:{e();break}}},{capture:!0})}export{S as Action,L as useQuickRelease};\n","import{useMemo as a}from\"react\";function e(t,u){return a(()=>{var n;if(t.type)return t.type;let r=(n=t.as)!=null?n:\"button\";if(typeof r==\"string\"&&r.toLowerCase()===\"button\"||(u==null?void 0:u.tagName)===\"BUTTON\"&&!u.hasAttribute(\"type\"))return\"button\"},[t.type,t.as,u])}export{e as useResolveButtonType};\n","import{useSyncExternalStore as e}from\"react\";function o(t){return e(t.subscribe,t.getSnapshot,t.getSnapshot)}export{o as useStore};\n","function a(o,r){let t=o(),n=new Set;return{getSnapshot(){return t},subscribe(e){return n.add(e),()=>n.delete(e)},dispatch(e,...s){let i=r[e].call(t,...s);i&&(t=i,n.forEach(c=>c()))}}}export{a as createStore};\n","function d(){let r;return{before({doc:e}){var l;let o=e.documentElement,t=(l=e.defaultView)!=null?l:window;r=Math.max(0,t.innerWidth-o.clientWidth)},after({doc:e,d:o}){let t=e.documentElement,l=Math.max(0,t.clientWidth-t.offsetWidth),n=Math.max(0,r-l);o.style(t,\"paddingRight\",`${n}px`)}}}export{d as adjustScrollbarPadding};\n","import{disposables as u}from'../../utils/disposables.js';import*as i from'../../utils/dom.js';import{isIOS as p}from'../../utils/platform.js';function w(){return p()?{before({doc:o,d:r,meta:m}){function a(s){for(let l of m().containers)for(let c of l())if(c.contains(s))return!0;return!1}r.microTask(()=>{var c;if(window.getComputedStyle(o.documentElement).scrollBehavior!==\"auto\"){let t=u();t.style(o.documentElement,\"scrollBehavior\",\"auto\"),r.add(()=>r.microTask(()=>t.dispose()))}let s=(c=window.scrollY)!=null?c:window.pageYOffset,l=null;r.addEventListener(o,\"click\",t=>{if(i.isHTMLorSVGElement(t.target))try{let e=t.target.closest(\"a\");if(!e)return;let{hash:n}=new URL(e.href),f=o.querySelector(n);i.isHTMLorSVGElement(f)&&!a(f)&&(l=f)}catch{}},!0),r.group(t=>{r.addEventListener(o,\"touchstart\",e=>{if(t.dispose(),i.isHTMLorSVGElement(e.target)&&i.hasInlineStyle(e.target))if(a(e.target)){let n=e.target;for(;n.parentElement&&a(n.parentElement);)n=n.parentElement;t.style(n,\"overscrollBehavior\",\"contain\")}else t.style(e.target,\"touchAction\",\"none\")})}),r.addEventListener(o,\"touchmove\",t=>{if(i.isHTMLorSVGElement(t.target)){if(i.isHTMLInputElement(t.target))return;if(a(t.target)){let e=t.target;for(;e.parentElement&&e.dataset.headlessuiPortal!==\"\"&&!(e.scrollHeight>e.clientHeight||e.scrollWidth>e.clientWidth);)e=e.parentElement;e.dataset.headlessuiPortal===\"\"&&t.preventDefault()}else t.preventDefault()}},{passive:!1}),r.add(()=>{var e;let t=(e=window.scrollY)!=null?e:window.pageYOffset;s!==t&&window.scrollTo(0,s),l&&l.isConnected&&(l.scrollIntoView({block:\"nearest\"}),l=null)})})}}:{}}export{w as handleIOSLocking};\n","function r(){return{before({doc:e,d:o}){o.style(e.documentElement,\"overflow\",\"hidden\")}}}export{r as preventScroll};\n","import{disposables as s}from'../../utils/disposables.js';import{createStore as d}from'../../utils/store.js';import{adjustScrollbarPadding as i}from'./adjust-scrollbar-padding.js';import{handleIOSLocking as l}from'./handle-ios-locking.js';import{preventScroll as p}from'./prevent-scroll.js';function r(e){let o={};for(let t of e)Object.assign(o,t(o));return o}let c=d(()=>new Map,{PUSH(e,o){var n;let t=(n=this.get(e))!=null?n:{doc:e,count:0,d:s(),meta:new Set,computedMeta:{}};return t.count++,t.meta.add(o),t.computedMeta=r(t.meta),this.set(e,t),this},POP(e,o){let t=this.get(e);return t&&(t.count--,t.meta.delete(o),t.computedMeta=r(t.meta)),this},SCROLL_PREVENT(e){let o={doc:e.doc,d:e.d,meta(){return e.computedMeta}},t=[l(),i(),p()];t.forEach(({before:n})=>n==null?void 0:n(o)),t.forEach(({after:n})=>n==null?void 0:n(o))},SCROLL_ALLOW({d:e}){e.dispose()},TEARDOWN({doc:e}){this.delete(e)}});c.subscribe(()=>{let e=c.getSnapshot(),o=new Map;for(let[t]of e)o.set(t,t.documentElement.style.overflow);for(let t of e.values()){let n=o.get(t.doc)===\"hidden\",a=t.count!==0;(a&&!n||!a&&n)&&c.dispatch(t.count>0?\"SCROLL_PREVENT\":\"SCROLL_ALLOW\",t),t.count===0&&c.dispatch(\"TEARDOWN\",t)}});export{c as overflows};\n","import{useStore as s}from'../../hooks/use-store.js';import{useIsoMorphicEffect as u}from'../use-iso-morphic-effect.js';import{overflows as t}from'./overflow-store.js';function a(r,e,n=()=>({containers:[]})){let f=s(t),o=e?f.get(e):void 0,i=o?o.count>0:!1;return u(()=>{if(!(!e||!r))return t.dispatch(\"PUSH\",e,n),()=>t.dispatch(\"POP\",e,n)},[r,e]),i}export{a as useDocumentOverflowLockedEffect};\n","import{useDocumentOverflowLockedEffect as l}from'./document-overflow/use-document-overflow.js';import{useIsTopLayer as m}from'./use-is-top-layer.js';function f(e,c,n=()=>[document.body]){let r=m(e,\"scroll-lock\");l(r,c,t=>{var o;return{containers:[...(o=t.containers)!=null?o:[],n]}})}export{f as useScrollLock};\n","import{useRef as o}from\"react\";function t(e){return[e.screenX,e.screenY]}function u(){let e=o([-1,-1]);return{wasMoved(r){let n=t(r);return e.current[0]===n[0]&&e.current[1]===n[1]?!1:(e.current=n,!0)},update(r){e.current=t(r)}}}export{u as useTrackedPointer};\n","import{useCallback as t,useState as b}from\"react\";function c(u=0){let[r,a]=b(u),g=t(e=>a(e),[]),s=t(e=>a(l=>l|e),[]),m=t(e=>(r&e)===e,[r]),n=t(e=>a(l=>l&~e),[]),F=t(e=>a(l=>l^e),[]);return{flags:r,setFlag:g,addFlag:s,hasFlag:m,removeFlag:n,toggleFlag:F}}export{c as useFlags};\n","var T,S;import{useRef as c,useState as b}from\"react\";import{disposables as m}from'../utils/disposables.js';import{useDisposables as g}from'./use-disposables.js';import{useFlags as y}from'./use-flags.js';import{useIsoMorphicEffect as L}from'./use-iso-morphic-effect.js';typeof process!=\"undefined\"&&typeof globalThis!=\"undefined\"&&typeof Element!=\"undefined\"&&((T=process==null?void 0:process.env)==null?void 0:T[\"NODE_ENV\"])===\"test\"&&typeof((S=Element==null?void 0:Element.prototype)==null?void 0:S.getAnimations)==\"undefined\"&&(Element.prototype.getAnimations=function(){return console.warn([\"Headless UI has polyfilled `Element.prototype.getAnimations` for your tests.\",\"Please install a proper polyfill e.g. `jsdom-testing-mocks`, to silence these warnings.\",\"\",\"Example usage:\",\"```js\",\"import { mockAnimationsApi } from 'jsdom-testing-mocks'\",\"mockAnimationsApi()\",\"```\"].join(`\n`)),[]});var A=(i=>(i[i.None=0]=\"None\",i[i.Closed=1]=\"Closed\",i[i.Enter=2]=\"Enter\",i[i.Leave=4]=\"Leave\",i))(A||{});function x(e){let r={};for(let t in e)e[t]===!0&&(r[`data-${t}`]=\"\");return r}function N(e,r,t,n){let[i,a]=b(t),{hasFlag:s,addFlag:o,removeFlag:l}=y(e&&i?3:0),u=c(!1),f=c(!1),E=g();return L(()=>{var d;if(e){if(t&&a(!0),!r){t&&o(3);return}return(d=n==null?void 0:n.start)==null||d.call(n,t),C(r,{inFlight:u,prepare(){f.current?f.current=!1:f.current=u.current,u.current=!0,!f.current&&(t?(o(3),l(4)):(o(4),l(2)))},run(){f.current?t?(l(3),o(4)):(l(4),o(3)):t?l(1):o(1)},done(){var p;f.current&&D(r)||(u.current=!1,l(7),t||a(!1),(p=n==null?void 0:n.end)==null||p.call(n,t))}})}},[e,t,r,E]),e?[i,{closed:s(1),enter:s(2),leave:s(4),transition:s(2)||s(4)}]:[t,{closed:void 0,enter:void 0,leave:void 0,transition:void 0}]}function C(e,{prepare:r,run:t,done:n,inFlight:i}){let a=m();return j(e,{prepare:r,inFlight:i}),a.nextFrame(()=>{t(),a.requestAnimationFrame(()=>{a.add(M(e,n))})}),a.dispose}function M(e,r){var a,s;let t=m();if(!e)return t.dispose;let n=!1;t.add(()=>{n=!0});let i=(s=(a=e.getAnimations)==null?void 0:a.call(e).filter(o=>o instanceof CSSTransition))!=null?s:[];return i.length===0?(r(),t.dispose):(Promise.allSettled(i.map(o=>o.finished)).then(()=>{n||r()}),t.dispose)}function j(e,{inFlight:r,prepare:t}){if(r!=null&&r.current){t();return}let n=e.style.transition;e.style.transition=\"none\",t(),e.offsetHeight,e.style.transition=n}function D(e){var t,n;return((n=(t=e.getAnimations)==null?void 0:t.call(e))!=null?n:[]).some(i=>i instanceof CSSTransition&&i.playState!==\"finished\")}export{x as transitionDataAttributes,N as useTransition};\n","import { isShadowRoot, isHTMLElement } from '@floating-ui/utils/dom';\n\nfunction activeElement(doc) {\n let activeElement = doc.activeElement;\n while (((_activeElement = activeElement) == null || (_activeElement = _activeElement.shadowRoot) == null ? void 0 : _activeElement.activeElement) != null) {\n var _activeElement;\n activeElement = activeElement.shadowRoot.activeElement;\n }\n return activeElement;\n}\nfunction contains(parent, child) {\n if (!parent || !child) {\n return false;\n }\n const rootNode = child.getRootNode == null ? void 0 : child.getRootNode();\n\n // First, attempt with faster native method\n if (parent.contains(child)) {\n return true;\n }\n\n // then fallback to custom implementation with Shadow DOM support\n if (rootNode && isShadowRoot(rootNode)) {\n let next = child;\n while (next) {\n if (parent === next) {\n return true;\n }\n // @ts-ignore\n next = next.parentNode || next.host;\n }\n }\n\n // Give up, the result is false\n return false;\n}\n// Avoid Chrome DevTools blue warning.\nfunction getPlatform() {\n const uaData = navigator.userAgentData;\n if (uaData != null && uaData.platform) {\n return uaData.platform;\n }\n return navigator.platform;\n}\nfunction getUserAgent() {\n const uaData = navigator.userAgentData;\n if (uaData && Array.isArray(uaData.brands)) {\n return uaData.brands.map(_ref => {\n let {\n brand,\n version\n } = _ref;\n return brand + \"/\" + version;\n }).join(' ');\n }\n return navigator.userAgent;\n}\n\n// License: https://github.com/adobe/react-spectrum/blob/b35d5c02fe900badccd0cf1a8f23bb593419f238/packages/@react-aria/utils/src/isVirtualEvent.ts\nfunction isVirtualClick(event) {\n // FIXME: Firefox is now emitting a deprecation warning for `mozInputSource`.\n // Try to find a workaround for this. `react-aria` source still has the check.\n if (event.mozInputSource === 0 && event.isTrusted) {\n return true;\n }\n if (isAndroid() && event.pointerType) {\n return event.type === 'click' && event.buttons === 1;\n }\n return event.detail === 0 && !event.pointerType;\n}\nfunction isVirtualPointerEvent(event) {\n if (isJSDOM()) return false;\n return !isAndroid() && event.width === 0 && event.height === 0 || isAndroid() && event.width === 1 && event.height === 1 && event.pressure === 0 && event.detail === 0 && event.pointerType === 'mouse' ||\n // iOS VoiceOver returns 0.333• for width/height.\n event.width < 1 && event.height < 1 && event.pressure === 0 && event.detail === 0 && event.pointerType === 'touch';\n}\nfunction isSafari() {\n // Chrome DevTools does not complain about navigator.vendor\n return /apple/i.test(navigator.vendor);\n}\nfunction isAndroid() {\n const re = /android/i;\n return re.test(getPlatform()) || re.test(getUserAgent());\n}\nfunction isMac() {\n return getPlatform().toLowerCase().startsWith('mac') && !navigator.maxTouchPoints;\n}\nfunction isJSDOM() {\n return getUserAgent().includes('jsdom/');\n}\nfunction isMouseLikePointerType(pointerType, strict) {\n // On some Linux machines with Chromium, mouse inputs return a `pointerType`\n // of \"pen\": https://github.com/floating-ui/floating-ui/issues/2015\n const values = ['mouse', 'pen'];\n if (!strict) {\n values.push('', undefined);\n }\n return values.includes(pointerType);\n}\nfunction isReactEvent(event) {\n return 'nativeEvent' in event;\n}\nfunction isRootElement(element) {\n return element.matches('html,body');\n}\nfunction getDocument(node) {\n return (node == null ? void 0 : node.ownerDocument) || document;\n}\nfunction isEventTargetWithin(event, node) {\n if (node == null) {\n return false;\n }\n if ('composedPath' in event) {\n return event.composedPath().includes(node);\n }\n\n // TS thinks `event` is of type never as it assumes all browsers support composedPath, but browsers without shadow dom don't\n const e = event;\n return e.target != null && node.contains(e.target);\n}\nfunction getTarget(event) {\n if ('composedPath' in event) {\n return event.composedPath()[0];\n }\n\n // TS thinks `event` is of type never as it assumes all browsers support\n // `composedPath()`, but browsers without shadow DOM don't.\n return event.target;\n}\nconst TYPEABLE_SELECTOR = \"input:not([type='hidden']):not([disabled]),\" + \"[contenteditable]:not([contenteditable='false']),textarea:not([disabled])\";\nfunction isTypeableElement(element) {\n return isHTMLElement(element) && element.matches(TYPEABLE_SELECTOR);\n}\nfunction stopEvent(event) {\n event.preventDefault();\n event.stopPropagation();\n}\nfunction isTypeableCombobox(element) {\n if (!element) return false;\n return element.getAttribute('role') === 'combobox' && isTypeableElement(element);\n}\n\nexport { TYPEABLE_SELECTOR, activeElement, contains, getDocument, getPlatform, getTarget, getUserAgent, isAndroid, isEventTargetWithin, isJSDOM, isMac, isMouseLikePointerType, isReactEvent, isRootElement, isSafari, isTypeableCombobox, isTypeableElement, isVirtualClick, isVirtualPointerEvent, stopEvent };\n","import * as React from 'react';\nimport { useLayoutEffect, useEffect, useRef } from 'react';\nimport { stopEvent, getDocument, isMouseLikePointerType, contains, activeElement, isSafari, isTypeableCombobox, isVirtualClick, isVirtualPointerEvent, getTarget, getPlatform, isTypeableElement, isReactEvent, isRootElement, isEventTargetWithin, isMac, getUserAgent } from '@floating-ui/react/utils';\nimport { floor, evaluate, max, min, round } from '@floating-ui/utils';\nimport { getComputedStyle, isElement, getNodeName, isHTMLElement, getWindow, isLastTraversableNode, getParentNode, isWebKit } from '@floating-ui/utils/dom';\nimport { tabbable, isTabbable } from 'tabbable';\nimport * as ReactDOM from 'react-dom';\nimport { getOverflowAncestors, useFloating as useFloating$1, offset, detectOverflow } from '@floating-ui/react-dom';\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, getOverflowAncestors, hide, inline, limitShift, offset, platform, shift, size } from '@floating-ui/react-dom';\n\n/**\n * Merges an array of refs into a single memoized callback ref or `null`.\n * @see https://floating-ui.com/docs/react-utils#usemergerefs\n */\nfunction useMergeRefs(refs) {\n return React.useMemo(() => {\n if (refs.every(ref => ref == null)) {\n return null;\n }\n return value => {\n refs.forEach(ref => {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref != null) {\n ref.current = value;\n }\n });\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, refs);\n}\n\n// https://github.com/mui/material-ui/issues/41190#issuecomment-2040873379\nconst SafeReact = {\n ...React\n};\n\nconst useInsertionEffect = SafeReact.useInsertionEffect;\nconst useSafeInsertionEffect = useInsertionEffect || (fn => fn());\nfunction useEffectEvent(callback) {\n const ref = React.useRef(() => {\n if (process.env.NODE_ENV !== \"production\") {\n throw new Error('Cannot call an event handler while rendering.');\n }\n });\n useSafeInsertionEffect(() => {\n ref.current = callback;\n });\n return React.useCallback(function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return ref.current == null ? void 0 : ref.current(...args);\n }, []);\n}\n\nconst ARROW_UP = 'ArrowUp';\nconst ARROW_DOWN = 'ArrowDown';\nconst ARROW_LEFT = 'ArrowLeft';\nconst ARROW_RIGHT = 'ArrowRight';\nfunction isDifferentRow(index, cols, prevRow) {\n return Math.floor(index / cols) !== prevRow;\n}\nfunction isIndexOutOfBounds(listRef, index) {\n return index < 0 || index >= listRef.current.length;\n}\nfunction getMinIndex(listRef, disabledIndices) {\n return findNonDisabledIndex(listRef, {\n disabledIndices\n });\n}\nfunction getMaxIndex(listRef, disabledIndices) {\n return findNonDisabledIndex(listRef, {\n decrement: true,\n startingIndex: listRef.current.length,\n disabledIndices\n });\n}\nfunction findNonDisabledIndex(listRef, _temp) {\n let {\n startingIndex = -1,\n decrement = false,\n disabledIndices,\n amount = 1\n } = _temp === void 0 ? {} : _temp;\n const list = listRef.current;\n let index = startingIndex;\n do {\n index += decrement ? -amount : amount;\n } while (index >= 0 && index <= list.length - 1 && isDisabled(list, index, disabledIndices));\n return index;\n}\nfunction getGridNavigatedIndex(elementsRef, _ref) {\n let {\n event,\n orientation,\n loop,\n rtl,\n cols,\n disabledIndices,\n minIndex,\n maxIndex,\n prevIndex,\n stopEvent: stop = false\n } = _ref;\n let nextIndex = prevIndex;\n if (event.key === ARROW_UP) {\n stop && stopEvent(event);\n if (prevIndex === -1) {\n nextIndex = maxIndex;\n } else {\n nextIndex = findNonDisabledIndex(elementsRef, {\n startingIndex: nextIndex,\n amount: cols,\n decrement: true,\n disabledIndices\n });\n if (loop && (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 (isIndexOutOfBounds(elementsRef, nextIndex)) {\n nextIndex = prevIndex;\n }\n }\n if (event.key === ARROW_DOWN) {\n stop && stopEvent(event);\n if (prevIndex === -1) {\n nextIndex = minIndex;\n } else {\n nextIndex = findNonDisabledIndex(elementsRef, {\n startingIndex: prevIndex,\n amount: cols,\n disabledIndices\n });\n if (loop && prevIndex + cols > maxIndex) {\n nextIndex = findNonDisabledIndex(elementsRef, {\n startingIndex: prevIndex % cols - cols,\n amount: cols,\n disabledIndices\n });\n }\n }\n if (isIndexOutOfBounds(elementsRef, nextIndex)) {\n nextIndex = prevIndex;\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 stop && stopEvent(event);\n if (prevIndex % cols !== cols - 1) {\n nextIndex = findNonDisabledIndex(elementsRef, {\n startingIndex: prevIndex,\n disabledIndices\n });\n if (loop && isDifferentRow(nextIndex, cols, prevRow)) {\n nextIndex = findNonDisabledIndex(elementsRef, {\n startingIndex: prevIndex - prevIndex % cols - 1,\n disabledIndices\n });\n }\n } else if (loop) {\n nextIndex = findNonDisabledIndex(elementsRef, {\n startingIndex: prevIndex - prevIndex % cols - 1,\n disabledIndices\n });\n }\n if (isDifferentRow(nextIndex, cols, prevRow)) {\n nextIndex = prevIndex;\n }\n }\n if (event.key === (rtl ? ARROW_RIGHT : ARROW_LEFT)) {\n stop && stopEvent(event);\n if (prevIndex % cols !== 0) {\n nextIndex = findNonDisabledIndex(elementsRef, {\n startingIndex: prevIndex,\n decrement: true,\n disabledIndices\n });\n if (loop && isDifferentRow(nextIndex, cols, prevRow)) {\n nextIndex = findNonDisabledIndex(elementsRef, {\n startingIndex: prevIndex + (cols - prevIndex % cols),\n decrement: true,\n disabledIndices\n });\n }\n } else if (loop) {\n nextIndex = findNonDisabledIndex(elementsRef, {\n startingIndex: prevIndex + (cols - prevIndex % cols),\n decrement: true,\n disabledIndices\n });\n }\n if (isDifferentRow(nextIndex, cols, prevRow)) {\n nextIndex = prevIndex;\n }\n }\n const lastRow = floor(maxIndex / cols) === prevRow;\n if (isIndexOutOfBounds(elementsRef, nextIndex)) {\n if (loop && lastRow) {\n nextIndex = event.key === (rtl ? ARROW_RIGHT : ARROW_LEFT) ? maxIndex : findNonDisabledIndex(elementsRef, {\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 */\nfunction buildCellMap(sizes, cols, dense) {\n const cellMap = [];\n let startIndex = 0;\n sizes.forEach((_ref2, index) => {\n let {\n width,\n height\n } = _ref2;\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++) {\n for (let j = 0; j < height; j++) {\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++;\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. */\nfunction getCellIndexOfCorner(index, sizes, cellMap, cols, corner) {\n if (index === -1) return -1;\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 }\n}\n\n/** Gets all cell indices that correspond to the specified indices */\nfunction getCellIndices(indices, cellMap) {\n return cellMap.flatMap((index, cellIndex) => indices.includes(index) ? [cellIndex] : []);\n}\nfunction isDisabled(list, index, disabledIndices) {\n if (disabledIndices) {\n return disabledIndices.includes(index);\n }\n const element = list[index];\n return element == null || element.hasAttribute('disabled') || element.getAttribute('aria-disabled') === 'true';\n}\n\nvar index = typeof document !== 'undefined' ? useLayoutEffect : useEffect;\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 areMapsEqual(map1, map2) {\n if (map1.size !== map2.size) {\n return false;\n }\n for (const [key, value] of map1.entries()) {\n if (value !== map2.get(key)) {\n return false;\n }\n }\n return true;\n}\nconst FloatingListContext = /*#__PURE__*/React.createContext({\n register: () => {},\n unregister: () => {},\n map: /*#__PURE__*/new Map(),\n elementsRef: {\n current: []\n }\n});\n/**\n * Provides context for a list of items within the floating element.\n * @see https://floating-ui.com/docs/FloatingList\n */\nfunction FloatingList(props) {\n const {\n children,\n elementsRef,\n labelsRef\n } = props;\n const [map, setMap] = React.useState(() => new Map());\n const register = React.useCallback(node => {\n setMap(prevMap => new Map(prevMap).set(node, null));\n }, []);\n const unregister = React.useCallback(node => {\n setMap(prevMap => {\n const map = new Map(prevMap);\n map.delete(node);\n return map;\n });\n }, []);\n index(() => {\n const newMap = new Map(map);\n const nodes = Array.from(newMap.keys()).sort(sortByDocumentPosition);\n nodes.forEach((node, index) => {\n newMap.set(node, index);\n });\n if (!areMapsEqual(map, newMap)) {\n setMap(newMap);\n }\n }, [map]);\n return /*#__PURE__*/React.createElement(FloatingListContext.Provider, {\n value: React.useMemo(() => ({\n register,\n unregister,\n map,\n elementsRef,\n labelsRef\n }), [register, unregister, map, elementsRef, labelsRef])\n }, children);\n}\n/**\n * Used to register a list item and its index (DOM position) in the\n * `FloatingList`.\n * @see https://floating-ui.com/docs/FloatingList#uselistitem\n */\nfunction useListItem(props) {\n if (props === void 0) {\n props = {};\n }\n const {\n label\n } = props;\n const {\n register,\n unregister,\n map,\n elementsRef,\n labelsRef\n } = React.useContext(FloatingListContext);\n const [index$1, setIndex] = React.useState(null);\n const componentRef = React.useRef(null);\n const ref = React.useCallback(node => {\n componentRef.current = node;\n if (index$1 !== null) {\n elementsRef.current[index$1] = node;\n if (labelsRef) {\n var _node$textContent;\n const isLabelDefined = label !== undefined;\n labelsRef.current[index$1] = isLabelDefined ? label : (_node$textContent = node == null ? void 0 : node.textContent) != null ? _node$textContent : null;\n }\n }\n }, [index$1, elementsRef, labelsRef, label]);\n index(() => {\n const node = componentRef.current;\n if (node) {\n register(node);\n return () => {\n unregister(node);\n };\n }\n }, [register, unregister]);\n index(() => {\n const index = componentRef.current ? map.get(componentRef.current) : null;\n if (index != null) {\n setIndex(index);\n }\n }, [map]);\n return React.useMemo(() => ({\n ref,\n index: index$1 == null ? -1 : index$1\n }), [index$1, ref]);\n}\n\nfunction renderJsx(render, computedProps) {\n if (typeof render === 'function') {\n return render(computedProps);\n }\n if (render) {\n return /*#__PURE__*/React.cloneElement(render, computedProps);\n }\n return /*#__PURE__*/React.createElement(\"div\", computedProps);\n}\nconst CompositeContext = /*#__PURE__*/React.createContext({\n activeIndex: 0,\n onNavigate: () => {}\n});\nconst horizontalKeys = [ARROW_LEFT, ARROW_RIGHT];\nconst verticalKeys = [ARROW_UP, ARROW_DOWN];\nconst allKeys = [...horizontalKeys, ...verticalKeys];\n\n/**\n * Creates a single tab stop whose items are navigated by arrow keys, which\n * provides list navigation outside of floating element contexts.\n *\n * This is useful to enable navigation of a list of items that aren’t part of a\n * floating element. A menubar is an example of a composite, with each reference\n * element being an item.\n * @see https://floating-ui.com/docs/Composite\n */\nconst Composite = /*#__PURE__*/React.forwardRef(function Composite(props, forwardedRef) {\n const {\n render,\n orientation = 'both',\n loop = true,\n rtl = false,\n cols = 1,\n disabledIndices,\n activeIndex: externalActiveIndex,\n onNavigate: externalSetActiveIndex,\n itemSizes,\n dense = false,\n ...domProps\n } = props;\n const [internalActiveIndex, internalSetActiveIndex] = React.useState(0);\n const activeIndex = externalActiveIndex != null ? externalActiveIndex : internalActiveIndex;\n const onNavigate = useEffectEvent(externalSetActiveIndex != null ? externalSetActiveIndex : internalSetActiveIndex);\n const elementsRef = React.useRef([]);\n const renderElementProps = render && typeof render !== 'function' ? render.props : {};\n const contextValue = React.useMemo(() => ({\n activeIndex,\n onNavigate\n }), [activeIndex, onNavigate]);\n const isGrid = cols > 1;\n function handleKeyDown(event) {\n if (!allKeys.includes(event.key)) return;\n let nextIndex = activeIndex;\n const minIndex = getMinIndex(elementsRef, disabledIndices);\n const maxIndex = getMaxIndex(elementsRef, disabledIndices);\n const horizontalEndKey = rtl ? ARROW_LEFT : ARROW_RIGHT;\n const horizontalStartKey = rtl ? ARROW_RIGHT : ARROW_LEFT;\n if (isGrid) {\n const sizes = itemSizes || Array.from({\n length: elementsRef.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 = buildCellMap(sizes, cols, dense);\n const minGridIndex = cellMap.findIndex(index => index != null && !isDisabled(elementsRef.current, index, disabledIndices));\n // last enabled index\n const maxGridIndex = cellMap.reduce((foundIndex, index, cellIndex) => index != null && !isDisabled(elementsRef.current, index, disabledIndices) ? cellIndex : foundIndex, -1);\n const maybeNextIndex = cellMap[getGridNavigatedIndex({\n current: cellMap.map(itemIndex => itemIndex ? elementsRef.current[itemIndex] : null)\n }, {\n event,\n orientation,\n loop,\n rtl,\n cols,\n // treat undefined (empty grid spaces) as disabled indices so we\n // don't end up in them\n disabledIndices: getCellIndices([...(disabledIndices || elementsRef.current.map((_, index) => isDisabled(elementsRef.current, index) ? index : undefined)), undefined], cellMap),\n minIndex: minGridIndex,\n maxIndex: maxGridIndex,\n prevIndex: getCellIndexOfCorner(activeIndex > maxIndex ? minIndex : activeIndex, sizes, cellMap, cols,\n // use a corner matching the edge closest to the direction we're\n // moving in so we don't end up in the same item. Prefer\n // top/left over bottom/right.\n event.key === ARROW_DOWN ? 'bl' : event.key === horizontalEndKey ? 'tr' : 'tl')\n })];\n if (maybeNextIndex != null) {\n nextIndex = maybeNextIndex;\n }\n }\n const toEndKeys = {\n horizontal: [horizontalEndKey],\n vertical: [ARROW_DOWN],\n both: [horizontalEndKey, ARROW_DOWN]\n }[orientation];\n const toStartKeys = {\n horizontal: [horizontalStartKey],\n vertical: [ARROW_UP],\n both: [horizontalStartKey, ARROW_UP]\n }[orientation];\n const preventedKeys = isGrid ? allKeys : {\n horizontal: horizontalKeys,\n vertical: verticalKeys,\n both: allKeys\n }[orientation];\n if (nextIndex === activeIndex && [...toEndKeys, ...toStartKeys].includes(event.key)) {\n if (loop && nextIndex === maxIndex && toEndKeys.includes(event.key)) {\n nextIndex = minIndex;\n } else if (loop && nextIndex === minIndex && toStartKeys.includes(event.key)) {\n nextIndex = maxIndex;\n } else {\n nextIndex = findNonDisabledIndex(elementsRef, {\n startingIndex: nextIndex,\n decrement: toStartKeys.includes(event.key),\n disabledIndices\n });\n }\n }\n if (nextIndex !== activeIndex && !isIndexOutOfBounds(elementsRef, nextIndex)) {\n var _elementsRef$current$;\n event.stopPropagation();\n if (preventedKeys.includes(event.key)) {\n event.preventDefault();\n }\n onNavigate(nextIndex);\n (_elementsRef$current$ = elementsRef.current[nextIndex]) == null || _elementsRef$current$.focus();\n }\n }\n const computedProps = {\n ...domProps,\n ...renderElementProps,\n ref: forwardedRef,\n 'aria-orientation': orientation === 'both' ? undefined : orientation,\n onKeyDown(e) {\n domProps.onKeyDown == null || domProps.onKeyDown(e);\n renderElementProps.onKeyDown == null || renderElementProps.onKeyDown(e);\n handleKeyDown(e);\n }\n };\n return /*#__PURE__*/React.createElement(CompositeContext.Provider, {\n value: contextValue\n }, /*#__PURE__*/React.createElement(FloatingList, {\n elementsRef: elementsRef\n }, renderJsx(render, computedProps)));\n});\n/**\n * @see https://floating-ui.com/docs/Composite\n */\nconst CompositeItem = /*#__PURE__*/React.forwardRef(function CompositeItem(props, forwardedRef) {\n const {\n render,\n ...domProps\n } = props;\n const renderElementProps = render && typeof render !== 'function' ? render.props : {};\n const {\n activeIndex,\n onNavigate\n } = React.useContext(CompositeContext);\n const {\n ref,\n index\n } = useListItem();\n const mergedRef = useMergeRefs([ref, forwardedRef, renderElementProps.ref]);\n const isActive = activeIndex === index;\n const computedProps = {\n ...domProps,\n ...renderElementProps,\n ref: mergedRef,\n tabIndex: isActive ? 0 : -1,\n 'data-active': isActive ? '' : undefined,\n onFocus(e) {\n domProps.onFocus == null || domProps.onFocus(e);\n renderElementProps.onFocus == null || renderElementProps.onFocus(e);\n onNavigate(index);\n }\n };\n return renderJsx(render, computedProps);\n});\n\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\n\nlet serverHandoffComplete = false;\nlet count = 0;\nconst genId = () => // Ensure the id is unique with multiple independent versions of Floating UI\n// on <React 18\n\"floating-ui-\" + Math.random().toString(36).slice(2, 6) + count++;\nfunction useFloatingId() {\n const [id, setId] = React.useState(() => serverHandoffComplete ? genId() : undefined);\n index(() => {\n if (id == null) {\n setId(genId());\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n React.useEffect(() => {\n serverHandoffComplete = true;\n }, []);\n return id;\n}\nconst useReactId = SafeReact.useId;\n\n/**\n * Uses React 18's built-in `useId()` when available, or falls back to a\n * slightly less performant (requiring a double render) implementation for\n * earlier React versions.\n * @see https://floating-ui.com/docs/react-utils#useid\n */\nconst useId = useReactId || useFloatingId;\n\nlet devMessageSet;\nif (process.env.NODE_ENV !== \"production\") {\n devMessageSet = /*#__PURE__*/new Set();\n}\nfunction warn() {\n var _devMessageSet;\n for (var _len = arguments.length, messages = new Array(_len), _key = 0; _key < _len; _key++) {\n messages[_key] = arguments[_key];\n }\n const message = \"Floating UI: \" + messages.join(' ');\n if (!((_devMessageSet = devMessageSet) != null && _devMessageSet.has(message))) {\n var _devMessageSet2;\n (_devMessageSet2 = devMessageSet) == null || _devMessageSet2.add(message);\n console.warn(message);\n }\n}\nfunction error() {\n var _devMessageSet3;\n for (var _len2 = arguments.length, messages = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n messages[_key2] = arguments[_key2];\n }\n const message = \"Floating UI: \" + messages.join(' ');\n if (!((_devMessageSet3 = devMessageSet) != null && _devMessageSet3.has(message))) {\n var _devMessageSet4;\n (_devMessageSet4 = devMessageSet) == null || _devMessageSet4.add(message);\n console.error(message);\n }\n}\n\n/**\n * Renders a pointing arrow triangle.\n * @see https://floating-ui.com/docs/FloatingArrow\n */\nconst FloatingArrow = /*#__PURE__*/React.forwardRef(function FloatingArrow(props, ref) {\n const {\n context: {\n placement,\n elements: {\n floating\n },\n middlewareData: {\n arrow,\n shift\n }\n },\n width = 14,\n height = 7,\n tipRadius = 0,\n strokeWidth = 0,\n staticOffset,\n stroke,\n d,\n style: {\n transform,\n ...restStyle\n } = {},\n ...rest\n } = props;\n if (process.env.NODE_ENV !== \"production\") {\n if (!ref) {\n warn('The `ref` prop is required for `FloatingArrow`.');\n }\n }\n const clipPathId = useId();\n const [isRTL, setIsRTL] = React.useState(false);\n\n // https://github.com/floating-ui/floating-ui/issues/2932\n index(() => {\n if (!floating) return;\n const isRTL = getComputedStyle(floating).direction === 'rtl';\n if (isRTL) {\n setIsRTL(true);\n }\n }, [floating]);\n if (!floating) {\n return null;\n }\n const [side, alignment] = placement.split('-');\n const isVerticalSide = side === 'top' || side === 'bottom';\n let computedStaticOffset = staticOffset;\n if (isVerticalSide && shift != null && shift.x || !isVerticalSide && shift != null && shift.y) {\n computedStaticOffset = null;\n }\n\n // Strokes must be double the border width, this ensures the stroke's width\n // works as you'd expect.\n const computedStrokeWidth = strokeWidth * 2;\n const halfStrokeWidth = computedStrokeWidth / 2;\n const svgX = width / 2 * (tipRadius / -8 + 1);\n const svgY = height / 2 * tipRadius / 4;\n const isCustomShape = !!d;\n const yOffsetProp = computedStaticOffset && alignment === 'end' ? 'bottom' : 'top';\n let xOffsetProp = computedStaticOffset && alignment === 'end' ? 'right' : 'left';\n if (computedStaticOffset && isRTL) {\n xOffsetProp = alignment === 'end' ? 'left' : 'right';\n }\n const arrowX = (arrow == null ? void 0 : arrow.x) != null ? computedStaticOffset || arrow.x : '';\n const arrowY = (arrow == null ? void 0 : arrow.y) != null ? computedStaticOffset || arrow.y : '';\n const dValue = d || 'M0,0' + (\" H\" + width) + (\" L\" + (width - svgX) + \",\" + (height - svgY)) + (\" Q\" + width / 2 + \",\" + height + \" \" + svgX + \",\" + (height - svgY)) + ' Z';\n const rotation = {\n top: isCustomShape ? 'rotate(180deg)' : '',\n left: isCustomShape ? 'rotate(90deg)' : 'rotate(-90deg)',\n bottom: isCustomShape ? '' : 'rotate(180deg)',\n right: isCustomShape ? 'rotate(-90deg)' : 'rotate(90deg)'\n }[side];\n return /*#__PURE__*/React.createElement(\"svg\", _extends({}, rest, {\n \"aria-hidden\": true,\n ref: ref,\n width: isCustomShape ? width : width + computedStrokeWidth,\n height: width,\n viewBox: \"0 0 \" + width + \" \" + (height > width ? height : width),\n style: {\n position: 'absolute',\n pointerEvents: 'none',\n [xOffsetProp]: arrowX,\n [yOffsetProp]: arrowY,\n [side]: isVerticalSide || isCustomShape ? '100%' : \"calc(100% - \" + computedStrokeWidth / 2 + \"px)\",\n transform: [rotation, transform].filter(t => !!t).join(' '),\n ...restStyle\n }\n }), computedStrokeWidth > 0 && /*#__PURE__*/React.createElement(\"path\", {\n clipPath: \"url(#\" + clipPathId + \")\",\n fill: \"none\",\n stroke: stroke\n // Account for the stroke on the fill path rendered below.\n ,\n strokeWidth: computedStrokeWidth + (d ? 0 : 1),\n d: dValue\n }), /*#__PURE__*/React.createElement(\"path\", {\n stroke: computedStrokeWidth && !d ? rest.fill : 'none',\n d: dValue\n }), /*#__PURE__*/React.createElement(\"clipPath\", {\n id: clipPathId\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: -halfStrokeWidth,\n y: halfStrokeWidth * (isCustomShape ? -1 : 1),\n width: width + computedStrokeWidth,\n height: width\n })));\n});\n\nfunction createPubSub() {\n const map = new Map();\n return {\n emit(event, data) {\n var _map$get;\n (_map$get = map.get(event)) == null || _map$get.forEach(handler => handler(data));\n },\n on(event, listener) {\n map.set(event, [...(map.get(event) || []), listener]);\n },\n off(event, listener) {\n var _map$get2;\n map.set(event, ((_map$get2 = map.get(event)) == null ? void 0 : _map$get2.filter(l => l !== listener)) || []);\n }\n };\n}\n\nconst FloatingNodeContext = /*#__PURE__*/React.createContext(null);\nconst FloatingTreeContext = /*#__PURE__*/React.createContext(null);\n\n/**\n * Returns the parent node id for nested floating elements, if available.\n * Returns `null` for top-level floating elements.\n */\nconst useFloatingParentNodeId = () => {\n var _React$useContext;\n return ((_React$useContext = React.useContext(FloatingNodeContext)) == null ? void 0 : _React$useContext.id) || null;\n};\n\n/**\n * Returns the nearest floating tree context, if available.\n */\nconst useFloatingTree = () => React.useContext(FloatingTreeContext);\n\n/**\n * Registers a node into the `FloatingTree`, returning its id.\n * @see https://floating-ui.com/docs/FloatingTree\n */\nfunction useFloatingNodeId(customParentId) {\n const id = useId();\n const tree = useFloatingTree();\n const reactParentId = useFloatingParentNodeId();\n const parentId = customParentId || reactParentId;\n index(() => {\n const node = {\n id,\n parentId\n };\n tree == null || tree.addNode(node);\n return () => {\n tree == null || tree.removeNode(node);\n };\n }, [tree, id, parentId]);\n return id;\n}\n/**\n * Provides parent node context for nested floating elements.\n * @see https://floating-ui.com/docs/FloatingTree\n */\nfunction FloatingNode(props) {\n const {\n children,\n id\n } = props;\n const parentId = useFloatingParentNodeId();\n return /*#__PURE__*/React.createElement(FloatingNodeContext.Provider, {\n value: React.useMemo(() => ({\n id,\n parentId\n }), [id, parentId])\n }, children);\n}\n/**\n * Provides context for nested floating elements when they are not children of\n * each other on the DOM.\n * This is not necessary in all cases, except when there must be explicit communication between parent and child floating elements. It is necessary for:\n * - The `bubbles` option in the `useDismiss()` Hook\n * - Nested virtual list navigation\n * - Nested floating elements that each open on hover\n * - Custom communication between parent and child floating elements\n * @see https://floating-ui.com/docs/FloatingTree\n */\nfunction FloatingTree(props) {\n const {\n children\n } = props;\n const nodesRef = React.useRef([]);\n const addNode = React.useCallback(node => {\n nodesRef.current = [...nodesRef.current, node];\n }, []);\n const removeNode = React.useCallback(node => {\n nodesRef.current = nodesRef.current.filter(n => n !== node);\n }, []);\n const events = React.useState(() => createPubSub())[0];\n return /*#__PURE__*/React.createElement(FloatingTreeContext.Provider, {\n value: React.useMemo(() => ({\n nodesRef,\n addNode,\n removeNode,\n events\n }), [addNode, removeNode, events])\n }, children);\n}\n\nfunction createAttribute(name) {\n return \"data-floating-ui-\" + name;\n}\n\nfunction useLatestRef(value) {\n const ref = useRef(value);\n index(() => {\n ref.current = value;\n });\n return ref;\n}\n\nconst safePolygonIdentifier = /*#__PURE__*/createAttribute('safe-polygon');\nfunction getDelay(value, prop, pointerType) {\n if (pointerType && !isMouseLikePointerType(pointerType)) {\n return 0;\n }\n if (typeof value === 'number') {\n return value;\n }\n return value == null ? void 0 : value[prop];\n}\n/**\n * Opens the floating element while hovering over the reference element, like\n * CSS `:hover`.\n * @see https://floating-ui.com/docs/useHover\n */\nfunction useHover(context, props) {\n if (props === void 0) {\n props = {};\n }\n const {\n open,\n onOpenChange,\n dataRef,\n events,\n elements\n } = context;\n const {\n enabled = true,\n delay = 0,\n handleClose = null,\n mouseOnly = false,\n restMs = 0,\n move = true\n } = props;\n const tree = useFloatingTree();\n const parentId = useFloatingParentNodeId();\n const handleCloseRef = useLatestRef(handleClose);\n const delayRef = useLatestRef(delay);\n const openRef = useLatestRef(open);\n const pointerTypeRef = React.useRef();\n const timeoutRef = React.useRef(-1);\n const handlerRef = React.useRef();\n const restTimeoutRef = React.useRef(-1);\n const blockMouseMoveRef = React.useRef(true);\n const performedPointerEventsMutationRef = React.useRef(false);\n const unbindMouseMoveRef = React.useRef(() => {});\n const restTimeoutPendingRef = React.useRef(false);\n const isHoverOpen = React.useCallback(() => {\n var _dataRef$current$open;\n const type = (_dataRef$current$open = dataRef.current.openEvent) == null ? void 0 : _dataRef$current$open.type;\n return (type == null ? void 0 : type.includes('mouse')) && type !== 'mousedown';\n }, [dataRef]);\n\n // When closing before opening, clear the delay timeouts to cancel it\n // from showing.\n React.useEffect(() => {\n if (!enabled) return;\n function onOpenChange(_ref) {\n let {\n open\n } = _ref;\n if (!open) {\n clearTimeout(timeoutRef.current);\n clearTimeout(restTimeoutRef.current);\n blockMouseMoveRef.current = true;\n restTimeoutPendingRef.current = false;\n }\n }\n events.on('openchange', onOpenChange);\n return () => {\n events.off('openchange', onOpenChange);\n };\n }, [enabled, events]);\n React.useEffect(() => {\n if (!enabled) return;\n if (!handleCloseRef.current) return;\n if (!open) return;\n function onLeave(event) {\n if (isHoverOpen()) {\n onOpenChange(false, event, 'hover');\n }\n }\n const html = getDocument(elements.floating).documentElement;\n html.addEventListener('mouseleave', onLeave);\n return () => {\n html.removeEventListener('mouseleave', onLeave);\n };\n }, [elements.floating, open, onOpenChange, enabled, handleCloseRef, isHoverOpen]);\n const closeWithDelay = React.useCallback(function (event, runElseBranch, reason) {\n if (runElseBranch === void 0) {\n runElseBranch = true;\n }\n if (reason === void 0) {\n reason = 'hover';\n }\n const closeDelay = getDelay(delayRef.current, 'close', pointerTypeRef.current);\n if (closeDelay && !handlerRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = window.setTimeout(() => onOpenChange(false, event, reason), closeDelay);\n } else if (runElseBranch) {\n clearTimeout(timeoutRef.current);\n onOpenChange(false, event, reason);\n }\n }, [delayRef, onOpenChange]);\n const cleanupMouseMoveHandler = useEffectEvent(() => {\n unbindMouseMoveRef.current();\n handlerRef.current = undefined;\n });\n const clearPointerEvents = useEffectEvent(() => {\n if (performedPointerEventsMutationRef.current) {\n const body = getDocument(elements.floating).body;\n body.style.pointerEvents = '';\n body.removeAttribute(safePolygonIdentifier);\n performedPointerEventsMutationRef.current = false;\n }\n });\n const isClickLikeOpenEvent = useEffectEvent(() => {\n return dataRef.current.openEvent ? ['click', 'mousedown'].includes(dataRef.current.openEvent.type) : false;\n });\n\n // Registering the mouse events on the reference directly to bypass React's\n // delegation system. If the cursor was on a disabled element and then entered\n // the reference (no gap), `mouseenter` doesn't fire in the delegation system.\n React.useEffect(() => {\n if (!enabled) return;\n function onMouseEnter(event) {\n clearTimeout(timeoutRef.current);\n blockMouseMoveRef.current = false;\n if (mouseOnly && !isMouseLikePointerType(pointerTypeRef.current) || restMs > 0 && !getDelay(delayRef.current, 'open')) {\n return;\n }\n const openDelay = getDelay(delayRef.current, 'open', pointerTypeRef.current);\n if (openDelay) {\n timeoutRef.current = window.setTimeout(() => {\n if (!openRef.current) {\n onOpenChange(true, event, 'hover');\n }\n }, openDelay);\n } else if (!open) {\n onOpenChange(true, event, 'hover');\n }\n }\n function onMouseLeave(event) {\n if (isClickLikeOpenEvent()) return;\n unbindMouseMoveRef.current();\n const doc = getDocument(elements.floating);\n clearTimeout(restTimeoutRef.current);\n restTimeoutPendingRef.current = false;\n if (handleCloseRef.current && dataRef.current.floatingContext) {\n // Prevent clearing `onScrollMouseLeave` timeout.\n if (!open) {\n clearTimeout(timeoutRef.current);\n }\n handlerRef.current = handleCloseRef.current({\n ...dataRef.current.floatingContext,\n tree,\n x: event.clientX,\n y: event.clientY,\n onClose() {\n clearPointerEvents();\n cleanupMouseMoveHandler();\n if (!isClickLikeOpenEvent()) {\n closeWithDelay(event, true, 'safe-polygon');\n }\n }\n });\n const handler = handlerRef.current;\n doc.addEventListener('mousemove', handler);\n unbindMouseMoveRef.current = () => {\n doc.removeEventListener('mousemove', handler);\n };\n return;\n }\n\n // Allow interactivity without `safePolygon` on touch devices. With a\n // pointer, a short close delay is an alternative, so it should work\n // consistently.\n const shouldClose = pointerTypeRef.current === 'touch' ? !contains(elements.floating, event.relatedTarget) : true;\n if (shouldClose) {\n closeWithDelay(event);\n }\n }\n\n // Ensure the floating element closes after scrolling even if the pointer\n // did not move.\n // https://github.com/floating-ui/floating-ui/discussions/1692\n function onScrollMouseLeave(event) {\n if (isClickLikeOpenEvent()) return;\n if (!dataRef.current.floatingContext) return;\n handleCloseRef.current == null || handleCloseRef.current({\n ...dataRef.current.floatingContext,\n tree,\n x: event.clientX,\n y: event.clientY,\n onClose() {\n clearPointerEvents();\n cleanupMouseMoveHandler();\n if (!isClickLikeOpenEvent()) {\n closeWithDelay(event);\n }\n }\n })(event);\n }\n if (isElement(elements.domReference)) {\n var _elements$floating;\n const ref = elements.domReference;\n open && ref.addEventListener('mouseleave', onScrollMouseLeave);\n (_elements$floating = elements.floating) == null || _elements$floating.addEventListener('mouseleave', onScrollMouseLeave);\n move && ref.addEventListener('mousemove', onMouseEnter, {\n once: true\n });\n ref.addEventListener('mouseenter', onMouseEnter);\n ref.addEventListener('mouseleave', onMouseLeave);\n return () => {\n var _elements$floating2;\n open && ref.removeEventListener('mouseleave', onScrollMouseLeave);\n (_elements$floating2 = elements.floating) == null || _elements$floating2.removeEventListener('mouseleave', onScrollMouseLeave);\n move && ref.removeEventListener('mousemove', onMouseEnter);\n ref.removeEventListener('mouseenter', onMouseEnter);\n ref.removeEventListener('mouseleave', onMouseLeave);\n };\n }\n }, [elements, enabled, context, mouseOnly, restMs, move, closeWithDelay, cleanupMouseMoveHandler, clearPointerEvents, onOpenChange, open, openRef, tree, delayRef, handleCloseRef, dataRef, isClickLikeOpenEvent]);\n\n // Block pointer-events of every element other than the reference and floating\n // while the floating element is open and has a `handleClose` handler. Also\n // handles nested floating elements.\n // https://github.com/floating-ui/floating-ui/issues/1722\n index(() => {\n var _handleCloseRef$curre;\n if (!enabled) return;\n if (open && (_handleCloseRef$curre = handleCloseRef.current) != null && _handleCloseRef$curre.__options.blockPointerEvents && isHoverOpen()) {\n performedPointerEventsMutationRef.current = true;\n const floatingEl = elements.floating;\n if (isElement(elements.domReference) && floatingEl) {\n var _tree$nodesRef$curren;\n const body = getDocument(elements.floating).body;\n body.setAttribute(safePolygonIdentifier, '');\n const ref = elements.domReference;\n const parentFloating = tree == null || (_tree$nodesRef$curren = tree.nodesRef.current.find(node => node.id === parentId)) == null || (_tree$nodesRef$curren = _tree$nodesRef$curren.context) == null ? void 0 : _tree$nodesRef$curren.elements.floating;\n if (parentFloating) {\n parentFloating.style.pointerEvents = '';\n }\n body.style.pointerEvents = 'none';\n ref.style.pointerEvents = 'auto';\n floatingEl.style.pointerEvents = 'auto';\n return () => {\n body.style.pointerEvents = '';\n ref.style.pointerEvents = '';\n floatingEl.style.pointerEvents = '';\n };\n }\n }\n }, [enabled, open, parentId, elements, tree, handleCloseRef, isHoverOpen]);\n index(() => {\n if (!open) {\n pointerTypeRef.current = undefined;\n restTimeoutPendingRef.current = false;\n cleanupMouseMoveHandler();\n clearPointerEvents();\n }\n }, [open, cleanupMouseMoveHandler, clearPointerEvents]);\n React.useEffect(() => {\n return () => {\n cleanupMouseMoveHandler();\n clearTimeout(timeoutRef.current);\n clearTimeout(restTimeoutRef.current);\n clearPointerEvents();\n };\n }, [enabled, elements.domReference, cleanupMouseMoveHandler, clearPointerEvents]);\n const reference = React.useMemo(() => {\n function setPointerRef(event) {\n pointerTypeRef.current = event.pointerType;\n }\n return {\n onPointerDown: setPointerRef,\n onPointerEnter: setPointerRef,\n onMouseMove(event) {\n const {\n nativeEvent\n } = event;\n function handleMouseMove() {\n if (!blockMouseMoveRef.current && !openRef.current) {\n onOpenChange(true, nativeEvent, 'hover');\n }\n }\n if (mouseOnly && !isMouseLikePointerType(pointerTypeRef.current)) {\n return;\n }\n if (open || restMs === 0) {\n return;\n }\n\n // Ignore insignificant movements to account for tremors.\n if (restTimeoutPendingRef.current && event.movementX ** 2 + event.movementY ** 2 < 2) {\n return;\n }\n clearTimeout(restTimeoutRef.current);\n if (pointerTypeRef.current === 'touch') {\n handleMouseMove();\n } else {\n restTimeoutPendingRef.current = true;\n restTimeoutRef.current = window.setTimeout(handleMouseMove, restMs);\n }\n }\n };\n }, [mouseOnly, onOpenChange, open, openRef, restMs]);\n const floating = React.useMemo(() => ({\n onMouseEnter() {\n clearTimeout(timeoutRef.current);\n },\n onMouseLeave(event) {\n if (!isClickLikeOpenEvent()) {\n closeWithDelay(event.nativeEvent, false);\n }\n }\n }), [closeWithDelay, isClickLikeOpenEvent]);\n return React.useMemo(() => enabled ? {\n reference,\n floating\n } : {}, [enabled, reference, floating]);\n}\n\nconst NOOP = () => {};\nconst FloatingDelayGroupContext = /*#__PURE__*/React.createContext({\n delay: 0,\n initialDelay: 0,\n timeoutMs: 0,\n currentId: null,\n setCurrentId: NOOP,\n setState: NOOP,\n isInstantPhase: false\n});\n\n/**\n * @deprecated\n * Use the return value of `useDelayGroup()` instead.\n */\nconst useDelayGroupContext = () => React.useContext(FloatingDelayGroupContext);\n/**\n * Provides context for a group of floating elements that should share a\n * `delay`.\n * @see https://floating-ui.com/docs/FloatingDelayGroup\n */\nfunction FloatingDelayGroup(props) {\n const {\n children,\n delay,\n timeoutMs = 0\n } = props;\n const [state, setState] = React.useReducer((prev, next) => ({\n ...prev,\n ...next\n }), {\n delay,\n timeoutMs,\n initialDelay: delay,\n currentId: null,\n isInstantPhase: false\n });\n const initialCurrentIdRef = React.useRef(null);\n const setCurrentId = React.useCallback(currentId => {\n setState({\n currentId\n });\n }, []);\n index(() => {\n if (state.currentId) {\n if (initialCurrentIdRef.current === null) {\n initialCurrentIdRef.current = state.currentId;\n } else if (!state.isInstantPhase) {\n setState({\n isInstantPhase: true\n });\n }\n } else {\n if (state.isInstantPhase) {\n setState({\n isInstantPhase: false\n });\n }\n initialCurrentIdRef.current = null;\n }\n }, [state.currentId, state.isInstantPhase]);\n return /*#__PURE__*/React.createElement(FloatingDelayGroupContext.Provider, {\n value: React.useMemo(() => ({\n ...state,\n setState,\n setCurrentId\n }), [state, setCurrentId])\n }, children);\n}\n/**\n * Enables grouping when called inside a component that's a child of a\n * `FloatingDelayGroup`.\n * @see https://floating-ui.com/docs/FloatingDelayGroup\n */\nfunction useDelayGroup(context, options) {\n if (options === void 0) {\n options = {};\n }\n const {\n open,\n onOpenChange,\n floatingId\n } = context;\n const {\n id: optionId,\n enabled = true\n } = options;\n const id = optionId != null ? optionId : floatingId;\n const groupContext = useDelayGroupContext();\n const {\n currentId,\n setCurrentId,\n initialDelay,\n setState,\n timeoutMs\n } = groupContext;\n index(() => {\n if (!enabled) return;\n if (!currentId) return;\n setState({\n delay: {\n open: 1,\n close: getDelay(initialDelay, 'close')\n }\n });\n if (currentId !== id) {\n onOpenChange(false);\n }\n }, [enabled, id, onOpenChange, setState, currentId, initialDelay]);\n index(() => {\n function unset() {\n onOpenChange(false);\n setState({\n delay: initialDelay,\n currentId: null\n });\n }\n if (!enabled) return;\n if (!currentId) return;\n if (!open && currentId === id) {\n if (timeoutMs) {\n const timeout = window.setTimeout(unset, timeoutMs);\n return () => {\n clearTimeout(timeout);\n };\n }\n unset();\n }\n }, [enabled, open, setState, currentId, id, onOpenChange, initialDelay, timeoutMs]);\n index(() => {\n if (!enabled) return;\n if (setCurrentId === NOOP || !open) return;\n setCurrentId(id);\n }, [enabled, open, setCurrentId, id]);\n return groupContext;\n}\n\nlet rafId = 0;\nfunction enqueueFocus(el, options) {\n if (options === void 0) {\n options = {};\n }\n const {\n preventScroll = false,\n cancelPrevious = true,\n sync = false\n } = options;\n cancelPrevious && cancelAnimationFrame(rafId);\n const exec = () => el == null ? void 0 : el.focus({\n preventScroll\n });\n if (sync) {\n exec();\n } else {\n rafId = requestAnimationFrame(exec);\n }\n}\n\nfunction getAncestors(nodes, id) {\n var _nodes$find;\n let allAncestors = [];\n let currentParentId = (_nodes$find = nodes.find(node => node.id === id)) == null ? void 0 : _nodes$find.parentId;\n while (currentParentId) {\n const currentNode = nodes.find(node => node.id === currentParentId);\n currentParentId = currentNode == null ? void 0 : currentNode.parentId;\n if (currentNode) {\n allAncestors = allAncestors.concat(currentNode);\n }\n }\n return allAncestors;\n}\n\nfunction getChildren(nodes, id) {\n let allChildren = nodes.filter(node => {\n var _node$context;\n return node.parentId === id && ((_node$context = node.context) == null ? void 0 : _node$context.open);\n });\n let currentChildren = allChildren;\n while (currentChildren.length) {\n currentChildren = nodes.filter(node => {\n var _currentChildren;\n return (_currentChildren = currentChildren) == null ? void 0 : _currentChildren.some(n => {\n var _node$context2;\n return node.parentId === n.id && ((_node$context2 = node.context) == null ? void 0 : _node$context2.open);\n });\n });\n allChildren = allChildren.concat(currentChildren);\n }\n return allChildren;\n}\nfunction getDeepestNode(nodes, id) {\n let deepestNodeId;\n let maxDepth = -1;\n function findDeepest(nodeId, depth) {\n if (depth > maxDepth) {\n deepestNodeId = nodeId;\n maxDepth = depth;\n }\n const children = getChildren(nodes, nodeId);\n children.forEach(child => {\n findDeepest(child.id, depth + 1);\n });\n }\n findDeepest(id, 0);\n return nodes.find(node => node.id === deepestNodeId);\n}\n\n// Modified to add conditional `aria-hidden` support:\n// https://github.com/theKashey/aria-hidden/blob/9220c8f4a4fd35f63bee5510a9f41a37264382d4/src/index.ts\nlet counterMap = /*#__PURE__*/new WeakMap();\nlet uncontrolledElementsSet = /*#__PURE__*/new WeakSet();\nlet markerMap = {};\nlet lockCount$1 = 0;\nconst supportsInert = () => typeof HTMLElement !== 'undefined' && 'inert' in HTMLElement.prototype;\nconst unwrapHost = node => node && (node.host || unwrapHost(node.parentNode));\nconst correctElements = (parent, targets) => targets.map(target => {\n if (parent.contains(target)) {\n return target;\n }\n const correctedTarget = unwrapHost(target);\n if (parent.contains(correctedTarget)) {\n return correctedTarget;\n }\n return null;\n}).filter(x => x != null);\nfunction applyAttributeToOthers(uncorrectedAvoidElements, body, ariaHidden, inert) {\n const markerName = 'data-floating-ui-inert';\n const controlAttribute = inert ? 'inert' : ariaHidden ? 'aria-hidden' : null;\n const avoidElements = correctElements(body, uncorrectedAvoidElements);\n const elementsToKeep = new Set();\n const elementsToStop = new Set(avoidElements);\n const hiddenElements = [];\n if (!markerMap[markerName]) {\n markerMap[markerName] = new WeakMap();\n }\n const markerCounter = markerMap[markerName];\n avoidElements.forEach(keep);\n deep(body);\n elementsToKeep.clear();\n function keep(el) {\n if (!el || elementsToKeep.has(el)) {\n return;\n }\n elementsToKeep.add(el);\n el.parentNode && keep(el.parentNode);\n }\n function deep(parent) {\n if (!parent || elementsToStop.has(parent)) {\n return;\n }\n [].forEach.call(parent.children, node => {\n if (getNodeName(node) === 'script') return;\n if (elementsToKeep.has(node)) {\n deep(node);\n } else {\n const attr = controlAttribute ? node.getAttribute(controlAttribute) : null;\n const alreadyHidden = attr !== null && attr !== 'false';\n const counterValue = (counterMap.get(node) || 0) + 1;\n const markerValue = (markerCounter.get(node) || 0) + 1;\n counterMap.set(node, counterValue);\n markerCounter.set(node, markerValue);\n hiddenElements.push(node);\n if (counterValue === 1 && alreadyHidden) {\n uncontrolledElementsSet.add(node);\n }\n if (markerValue === 1) {\n node.setAttribute(markerName, '');\n }\n if (!alreadyHidden && controlAttribute) {\n node.setAttribute(controlAttribute, 'true');\n }\n }\n });\n }\n lockCount$1++;\n return () => {\n hiddenElements.forEach(element => {\n const counterValue = (counterMap.get(element) || 0) - 1;\n const markerValue = (markerCounter.get(element) || 0) - 1;\n counterMap.set(element, counterValue);\n markerCounter.set(element, markerValue);\n if (!counterValue) {\n if (!uncontrolledElementsSet.has(element) && controlAttribute) {\n element.removeAttribute(controlAttribute);\n }\n uncontrolledElementsSet.delete(element);\n }\n if (!markerValue) {\n element.removeAttribute(markerName);\n }\n });\n lockCount$1--;\n if (!lockCount$1) {\n counterMap = new WeakMap();\n counterMap = new WeakMap();\n uncontrolledElementsSet = new WeakSet();\n markerMap = {};\n }\n };\n}\nfunction markOthers(avoidElements, ariaHidden, inert) {\n if (ariaHidden === void 0) {\n ariaHidden = false;\n }\n if (inert === void 0) {\n inert = false;\n }\n const body = getDocument(avoidElements[0]).body;\n return applyAttributeToOthers(avoidElements.concat(Array.from(body.querySelectorAll('[aria-live]'))), body, ariaHidden, inert);\n}\n\nconst getTabbableOptions = () => ({\n getShadowRoot: true,\n displayCheck:\n // JSDOM does not support the `tabbable` library. To solve this we can\n // check if `ResizeObserver` is a real function (not polyfilled), which\n // determines if the current environment is JSDOM-like.\n typeof ResizeObserver === 'function' && ResizeObserver.toString().includes('[native code]') ? 'full' : 'none'\n});\nfunction getTabbableIn(container, direction) {\n const allTabbable = tabbable(container, getTabbableOptions());\n if (direction === 'prev') {\n allTabbable.reverse();\n }\n const activeIndex = allTabbable.indexOf(activeElement(getDocument(container)));\n const nextTabbableElements = allTabbable.slice(activeIndex + 1);\n return nextTabbableElements[0];\n}\nfunction getNextTabbable() {\n return getTabbableIn(document.body, 'next');\n}\nfunction getPreviousTabbable() {\n return getTabbableIn(document.body, 'prev');\n}\nfunction isOutsideEvent(event, container) {\n const containerElement = container || event.currentTarget;\n const relatedTarget = event.relatedTarget;\n return !relatedTarget || !contains(containerElement, relatedTarget);\n}\nfunction disableFocusInside(container) {\n const tabbableElements = tabbable(container, getTabbableOptions());\n tabbableElements.forEach(element => {\n element.dataset.tabindex = element.getAttribute('tabindex') || '';\n element.setAttribute('tabindex', '-1');\n });\n}\nfunction enableFocusInside(container) {\n const elements = container.querySelectorAll('[data-tabindex]');\n elements.forEach(element => {\n const tabindex = element.dataset.tabindex;\n delete element.dataset.tabindex;\n if (tabindex) {\n element.setAttribute('tabindex', tabindex);\n } else {\n element.removeAttribute('tabindex');\n }\n });\n}\n\n// See Diego Haz's Sandbox for making this logic work well on Safari/iOS:\n// https://codesandbox.io/s/tabbable-portal-f4tng?file=/src/FocusTrap.tsx\n\nconst HIDDEN_STYLES = {\n border: 0,\n clip: 'rect(0 0 0 0)',\n height: '1px',\n margin: '-1px',\n overflow: 'hidden',\n padding: 0,\n position: 'fixed',\n whiteSpace: 'nowrap',\n width: '1px',\n top: 0,\n left: 0\n};\nlet timeoutId;\nfunction setActiveElementOnTab(event) {\n if (event.key === 'Tab') {\n event.target;\n clearTimeout(timeoutId);\n }\n}\nconst FocusGuard = /*#__PURE__*/React.forwardRef(function FocusGuard(props, ref) {\n const [role, setRole] = React.useState();\n index(() => {\n if (isSafari()) {\n // Unlike other screen readers such as NVDA and JAWS, the virtual cursor\n // on VoiceOver does trigger the onFocus event, so we can use the focus\n // trap element. On Safari, only buttons trigger the onFocus event.\n // NB: \"group\" role in the Sandbox no longer appears to work, must be a\n // button role.\n setRole('button');\n }\n document.addEventListener('keydown', setActiveElementOnTab);\n return () => {\n document.removeEventListener('keydown', setActiveElementOnTab);\n };\n }, []);\n const restProps = {\n ref,\n tabIndex: 0,\n // Role is only for VoiceOver\n role,\n 'aria-hidden': role ? undefined : true,\n [createAttribute('focus-guard')]: '',\n style: HIDDEN_STYLES\n };\n return /*#__PURE__*/React.createElement(\"span\", _extends({}, props, restProps));\n});\n\nconst PortalContext = /*#__PURE__*/React.createContext(null);\nconst attr = /*#__PURE__*/createAttribute('portal');\n/**\n * @see https://floating-ui.com/docs/FloatingPortal#usefloatingportalnode\n */\nfunction useFloatingPortalNode(props) {\n if (props === void 0) {\n props = {};\n }\n const {\n id,\n root\n } = props;\n const uniqueId = useId();\n const portalContext = usePortalContext();\n const [portalNode, setPortalNode] = React.useState(null);\n const portalNodeRef = React.useRef(null);\n index(() => {\n return () => {\n portalNode == null || portalNode.remove();\n // Allow the subsequent layout effects to create a new node on updates.\n // The portal node will still be cleaned up on unmount.\n // https://github.com/floating-ui/floating-ui/issues/2454\n queueMicrotask(() => {\n portalNodeRef.current = null;\n });\n };\n }, [portalNode]);\n index(() => {\n // Wait for the uniqueId to be generated before creating the portal node in\n // React <18 (using `useFloatingId` instead of the native `useId`).\n // https://github.com/floating-ui/floating-ui/issues/2778\n if (!uniqueId) return;\n if (portalNodeRef.current) return;\n const existingIdRoot = id ? document.getElementById(id) : null;\n if (!existingIdRoot) return;\n const subRoot = document.createElement('div');\n subRoot.id = uniqueId;\n subRoot.setAttribute(attr, '');\n existingIdRoot.appendChild(subRoot);\n portalNodeRef.current = subRoot;\n setPortalNode(subRoot);\n }, [id, uniqueId]);\n index(() => {\n // Wait for the root to exist before creating the portal node. The root must\n // be stored in state, not a ref, for this to work reactively.\n if (root === null) return;\n if (!uniqueId) return;\n if (portalNodeRef.current) return;\n let container = root || (portalContext == null ? void 0 : portalContext.portalNode);\n if (container && !isElement(container)) container = container.current;\n container = container || document.body;\n let idWrapper = null;\n if (id) {\n idWrapper = document.createElement('div');\n idWrapper.id = id;\n container.appendChild(idWrapper);\n }\n const subRoot = document.createElement('div');\n subRoot.id = uniqueId;\n subRoot.setAttribute(attr, '');\n container = idWrapper || container;\n container.appendChild(subRoot);\n portalNodeRef.current = subRoot;\n setPortalNode(subRoot);\n }, [id, root, uniqueId, portalContext]);\n return portalNode;\n}\n/**\n * Portals the floating element into a given container element — by default,\n * outside of the app root and into the body.\n * This is necessary to ensure the floating element can appear outside any\n * potential parent containers that cause clipping (such as `overflow: hidden`),\n * while retaining its location in the React tree.\n * @see https://floating-ui.com/docs/FloatingPortal\n */\nfunction FloatingPortal(props) {\n const {\n children,\n id,\n root,\n preserveTabOrder = true\n } = props;\n const portalNode = useFloatingPortalNode({\n id,\n root\n });\n const [focusManagerState, setFocusManagerState] = React.useState(null);\n const beforeOutsideRef = React.useRef(null);\n const afterOutsideRef = React.useRef(null);\n const beforeInsideRef = React.useRef(null);\n const afterInsideRef = React.useRef(null);\n const modal = focusManagerState == null ? void 0 : focusManagerState.modal;\n const open = focusManagerState == null ? void 0 : focusManagerState.open;\n const shouldRenderGuards =\n // The FocusManager and therefore floating element are currently open/\n // rendered.\n !!focusManagerState &&\n // Guards are only for non-modal focus management.\n !focusManagerState.modal &&\n // Don't render if unmount is transitioning.\n focusManagerState.open && preserveTabOrder && !!(root || portalNode);\n\n // https://codesandbox.io/s/tabbable-portal-f4tng?file=/src/TabbablePortal.tsx\n React.useEffect(() => {\n if (!portalNode || !preserveTabOrder || modal) {\n return;\n }\n\n // Make sure elements inside the portal element are tabbable only when the\n // portal has already been focused, either by tabbing into a focus trap\n // element outside or using the mouse.\n function onFocus(event) {\n if (portalNode && isOutsideEvent(event)) {\n const focusing = event.type === 'focusin';\n const manageFocus = focusing ? enableFocusInside : disableFocusInside;\n manageFocus(portalNode);\n }\n }\n // Listen to the event on the capture phase so they run before the focus\n // trap elements onFocus prop is called.\n portalNode.addEventListener('focusin', onFocus, true);\n portalNode.addEventListener('focusout', onFocus, true);\n return () => {\n portalNode.removeEventListener('focusin', onFocus, true);\n portalNode.removeEventListener('focusout', onFocus, true);\n };\n }, [portalNode, preserveTabOrder, modal]);\n React.useEffect(() => {\n if (!portalNode) return;\n if (open) return;\n enableFocusInside(portalNode);\n }, [open, portalNode]);\n return /*#__PURE__*/React.createElement(PortalContext.Provider, {\n value: React.useMemo(() => ({\n preserveTabOrder,\n beforeOutsideRef,\n afterOutsideRef,\n beforeInsideRef,\n afterInsideRef,\n portalNode,\n setFocusManagerState\n }), [preserveTabOrder, portalNode])\n }, shouldRenderGuards && portalNode && /*#__PURE__*/React.createElement(FocusGuard, {\n \"data-type\": \"outside\",\n ref: beforeOutsideRef,\n onFocus: event => {\n if (isOutsideEvent(event, portalNode)) {\n var _beforeInsideRef$curr;\n (_beforeInsideRef$curr = beforeInsideRef.current) == null || _beforeInsideRef$curr.focus();\n } else {\n const prevTabbable = getPreviousTabbable() || (focusManagerState == null ? void 0 : focusManagerState.refs.domReference.current);\n prevTabbable == null || prevTabbable.focus();\n }\n }\n }), shouldRenderGuards && portalNode && /*#__PURE__*/React.createElement(\"span\", {\n \"aria-owns\": portalNode.id,\n style: HIDDEN_STYLES\n }), portalNode && /*#__PURE__*/ReactDOM.createPortal(children, portalNode), shouldRenderGuards && portalNode && /*#__PURE__*/React.createElement(FocusGuard, {\n \"data-type\": \"outside\",\n ref: afterOutsideRef,\n onFocus: event => {\n if (isOutsideEvent(event, portalNode)) {\n var _afterInsideRef$curre;\n (_afterInsideRef$curre = afterInsideRef.current) == null || _afterInsideRef$curre.focus();\n } else {\n const nextTabbable = getNextTabbable() || (focusManagerState == null ? void 0 : focusManagerState.refs.domReference.current);\n nextTabbable == null || nextTabbable.focus();\n (focusManagerState == null ? void 0 : focusManagerState.closeOnFocusOut) && (focusManagerState == null ? void 0 : focusManagerState.onOpenChange(false, event.nativeEvent, 'focus-out'));\n }\n }\n }));\n}\nconst usePortalContext = () => React.useContext(PortalContext);\n\nconst FOCUSABLE_ATTRIBUTE = 'data-floating-ui-focusable';\nfunction getFloatingFocusElement(floatingElement) {\n if (!floatingElement) {\n return null;\n }\n // Try to find the element that has `{...getFloatingProps()}` spread on it.\n // This indicates the floating element is acting as a positioning wrapper, and\n // so focus should be managed on the child element with the event handlers and\n // aria props.\n return floatingElement.hasAttribute(FOCUSABLE_ATTRIBUTE) ? floatingElement : floatingElement.querySelector(\"[\" + FOCUSABLE_ATTRIBUTE + \"]\") || floatingElement;\n}\n\nconst LIST_LIMIT = 20;\nlet previouslyFocusedElements = [];\nfunction addPreviouslyFocusedElement(element) {\n previouslyFocusedElements = previouslyFocusedElements.filter(el => el.isConnected);\n let tabbableEl = element;\n if (!tabbableEl || getNodeName(tabbableEl) === 'body') return;\n if (!isTabbable(tabbableEl, getTabbableOptions())) {\n const tabbableChild = tabbable(tabbableEl, getTabbableOptions())[0];\n if (tabbableChild) {\n tabbableEl = tabbableChild;\n }\n }\n previouslyFocusedElements.push(tabbableEl);\n if (previouslyFocusedElements.length > LIST_LIMIT) {\n previouslyFocusedElements = previouslyFocusedElements.slice(-LIST_LIMIT);\n }\n}\nfunction getPreviouslyFocusedElement() {\n return previouslyFocusedElements.slice().reverse().find(el => el.isConnected);\n}\nconst VisuallyHiddenDismiss = /*#__PURE__*/React.forwardRef(function VisuallyHiddenDismiss(props, ref) {\n return /*#__PURE__*/React.createElement(\"button\", _extends({}, props, {\n type: \"button\",\n ref: ref,\n tabIndex: -1,\n style: HIDDEN_STYLES\n }));\n});\n/**\n * Provides focus management for the floating element.\n * @see https://floating-ui.com/docs/FloatingFocusManager\n */\nfunction FloatingFocusManager(props) {\n const {\n context,\n children,\n disabled = false,\n order = ['content'],\n guards: _guards = true,\n initialFocus = 0,\n returnFocus = true,\n restoreFocus = false,\n modal = true,\n visuallyHiddenDismiss = false,\n closeOnFocusOut = true\n } = props;\n const {\n open,\n refs,\n nodeId,\n onOpenChange,\n events,\n dataRef,\n floatingId,\n elements: {\n domReference,\n floating\n }\n } = context;\n const ignoreInitialFocus = typeof initialFocus === 'number' && initialFocus < 0;\n // If the reference is a combobox and is typeable (e.g. input/textarea),\n // there are different focus semantics. The guards should not be rendered, but\n // aria-hidden should be applied to all nodes still. Further, the visually\n // hidden dismiss button should only appear at the end of the list, not the\n // start.\n const isUntrappedTypeableCombobox = isTypeableCombobox(domReference) && ignoreInitialFocus;\n\n // Force the guards to be rendered if the `inert` attribute is not supported.\n const guards = supportsInert() ? _guards : true;\n const orderRef = useLatestRef(order);\n const initialFocusRef = useLatestRef(initialFocus);\n const returnFocusRef = useLatestRef(returnFocus);\n const tree = useFloatingTree();\n const portalContext = usePortalContext();\n const startDismissButtonRef = React.useRef(null);\n const endDismissButtonRef = React.useRef(null);\n const preventReturnFocusRef = React.useRef(false);\n const isPointerDownRef = React.useRef(false);\n const tabbableIndexRef = React.useRef(-1);\n const isInsidePortal = portalContext != null;\n const floatingFocusElement = getFloatingFocusElement(floating);\n const getTabbableContent = useEffectEvent(function (container) {\n if (container === void 0) {\n container = floatingFocusElement;\n }\n return container ? tabbable(container, getTabbableOptions()) : [];\n });\n const getTabbableElements = useEffectEvent(container => {\n const content = getTabbableContent(container);\n return orderRef.current.map(type => {\n if (domReference && type === 'reference') {\n return domReference;\n }\n if (floatingFocusElement && type === 'floating') {\n return floatingFocusElement;\n }\n return content;\n }).filter(Boolean).flat();\n });\n React.useEffect(() => {\n if (disabled) return;\n if (!modal) return;\n function onKeyDown(event) {\n if (event.key === 'Tab') {\n // The focus guards have nothing to focus, so we need to stop the event.\n if (contains(floatingFocusElement, activeElement(getDocument(floatingFocusElement))) && getTabbableContent().length === 0 && !isUntrappedTypeableCombobox) {\n stopEvent(event);\n }\n const els = getTabbableElements();\n const target = getTarget(event);\n if (orderRef.current[0] === 'reference' && target === domReference) {\n stopEvent(event);\n if (event.shiftKey) {\n enqueueFocus(els[els.length - 1]);\n } else {\n enqueueFocus(els[1]);\n }\n }\n if (orderRef.current[1] === 'floating' && target === floatingFocusElement && event.shiftKey) {\n stopEvent(event);\n enqueueFocus(els[0]);\n }\n }\n }\n const doc = getDocument(floatingFocusElement);\n doc.addEventListener('keydown', onKeyDown);\n return () => {\n doc.removeEventListener('keydown', onKeyDown);\n };\n }, [disabled, domReference, floatingFocusElement, modal, orderRef, isUntrappedTypeableCombobox, getTabbableContent, getTabbableElements]);\n React.useEffect(() => {\n if (disabled) return;\n if (!floating) return;\n function handleFocusIn(event) {\n const target = getTarget(event);\n const tabbableContent = getTabbableContent();\n const tabbableIndex = tabbableContent.indexOf(target);\n if (tabbableIndex !== -1) {\n tabbableIndexRef.current = tabbableIndex;\n }\n }\n floating.addEventListener('focusin', handleFocusIn);\n return () => {\n floating.removeEventListener('focusin', handleFocusIn);\n };\n }, [disabled, floating, getTabbableContent]);\n React.useEffect(() => {\n if (disabled) return;\n if (!closeOnFocusOut) return;\n\n // In Safari, buttons lose focus when pressing them.\n function handlePointerDown() {\n isPointerDownRef.current = true;\n setTimeout(() => {\n isPointerDownRef.current = false;\n });\n }\n function handleFocusOutside(event) {\n const relatedTarget = event.relatedTarget;\n queueMicrotask(() => {\n const movedToUnrelatedNode = !(contains(domReference, relatedTarget) || contains(floating, relatedTarget) || contains(relatedTarget, floating) || contains(portalContext == null ? void 0 : portalContext.portalNode, relatedTarget) || relatedTarget != null && relatedTarget.hasAttribute(createAttribute('focus-guard')) || tree && (getChildren(tree.nodesRef.current, nodeId).find(node => {\n var _node$context, _node$context2;\n return contains((_node$context = node.context) == null ? void 0 : _node$context.elements.floating, relatedTarget) || contains((_node$context2 = node.context) == null ? void 0 : _node$context2.elements.domReference, relatedTarget);\n }) || getAncestors(tree.nodesRef.current, nodeId).find(node => {\n var _node$context3, _node$context4;\n return ((_node$context3 = node.context) == null ? void 0 : _node$context3.elements.floating) === relatedTarget || ((_node$context4 = node.context) == null ? void 0 : _node$context4.elements.domReference) === relatedTarget;\n })));\n\n // Restore focus to the previous tabbable element index to prevent\n // focus from being lost outside the floating tree.\n if (restoreFocus && movedToUnrelatedNode && activeElement(getDocument(floatingFocusElement)) === getDocument(floatingFocusElement).body) {\n // Let `FloatingPortal` effect knows that focus is still inside the\n // floating tree.\n if (isHTMLElement(floatingFocusElement)) {\n floatingFocusElement.focus();\n }\n const prevTabbableIndex = tabbableIndexRef.current;\n const tabbableContent = getTabbableContent();\n const nodeToFocus = tabbableContent[prevTabbableIndex] || tabbableContent[tabbableContent.length - 1] || floatingFocusElement;\n if (isHTMLElement(nodeToFocus)) {\n nodeToFocus.focus();\n }\n }\n\n // Focus did not move inside the floating tree, and there are no tabbable\n // portal guards to handle closing.\n if ((isUntrappedTypeableCombobox ? true : !modal) && relatedTarget && movedToUnrelatedNode && !isPointerDownRef.current &&\n // Fix React 18 Strict Mode returnFocus due to double rendering.\n relatedTarget !== getPreviouslyFocusedElement()) {\n preventReturnFocusRef.current = true;\n onOpenChange(false, event, 'focus-out');\n }\n });\n }\n if (floating && isHTMLElement(domReference)) {\n domReference.addEventListener('focusout', handleFocusOutside);\n domReference.addEventListener('pointerdown', handlePointerDown);\n floating.addEventListener('focusout', handleFocusOutside);\n return () => {\n domReference.removeEventListener('focusout', handleFocusOutside);\n domReference.removeEventListener('pointerdown', handlePointerDown);\n floating.removeEventListener('focusout', handleFocusOutside);\n };\n }\n }, [disabled, domReference, floating, floatingFocusElement, modal, nodeId, tree, portalContext, onOpenChange, closeOnFocusOut, restoreFocus, getTabbableContent, isUntrappedTypeableCombobox]);\n React.useEffect(() => {\n var _portalContext$portal;\n if (disabled) return;\n\n // Don't hide portals nested within the parent portal.\n const portalNodes = Array.from((portalContext == null || (_portalContext$portal = portalContext.portalNode) == null ? void 0 : _portalContext$portal.querySelectorAll(\"[\" + createAttribute('portal') + \"]\")) || []);\n if (floating) {\n const insideElements = [floating, ...portalNodes, startDismissButtonRef.current, endDismissButtonRef.current, orderRef.current.includes('reference') || isUntrappedTypeableCombobox ? domReference : null].filter(x => x != null);\n const cleanup = modal || isUntrappedTypeableCombobox ? markOthers(insideElements, guards, !guards) : markOthers(insideElements);\n return () => {\n cleanup();\n };\n }\n }, [disabled, domReference, floating, modal, orderRef, portalContext, isUntrappedTypeableCombobox, guards]);\n index(() => {\n if (disabled || !isHTMLElement(floatingFocusElement)) return;\n const doc = getDocument(floatingFocusElement);\n const previouslyFocusedElement = activeElement(doc);\n\n // Wait for any layout effect state setters to execute to set `tabIndex`.\n queueMicrotask(() => {\n const focusableElements = getTabbableElements(floatingFocusElement);\n const initialFocusValue = initialFocusRef.current;\n const elToFocus = (typeof initialFocusValue === 'number' ? focusableElements[initialFocusValue] : initialFocusValue.current) || floatingFocusElement;\n const focusAlreadyInsideFloatingEl = contains(floatingFocusElement, previouslyFocusedElement);\n if (!ignoreInitialFocus && !focusAlreadyInsideFloatingEl && open) {\n enqueueFocus(elToFocus, {\n preventScroll: elToFocus === floatingFocusElement\n });\n }\n });\n }, [disabled, open, floatingFocusElement, ignoreInitialFocus, getTabbableElements, initialFocusRef]);\n index(() => {\n if (disabled || !floatingFocusElement) return;\n let preventReturnFocusScroll = false;\n const doc = getDocument(floatingFocusElement);\n const previouslyFocusedElement = activeElement(doc);\n const contextData = dataRef.current;\n let openEvent = contextData.openEvent;\n addPreviouslyFocusedElement(previouslyFocusedElement);\n\n // Dismissing via outside press should always ignore `returnFocus` to\n // prevent unwanted scrolling.\n function onOpenChange(_ref) {\n let {\n open,\n reason,\n event,\n nested\n } = _ref;\n if (open) {\n openEvent = event;\n }\n if (reason === 'escape-key' && refs.domReference.current) {\n addPreviouslyFocusedElement(refs.domReference.current);\n }\n if (reason === 'hover' && event.type === 'mouseleave') {\n preventReturnFocusRef.current = true;\n }\n if (reason !== 'outside-press') return;\n if (nested) {\n preventReturnFocusRef.current = false;\n preventReturnFocusScroll = true;\n } else {\n preventReturnFocusRef.current = !(isVirtualClick(event) || isVirtualPointerEvent(event));\n }\n }\n events.on('openchange', onOpenChange);\n const fallbackEl = doc.createElement('span');\n fallbackEl.setAttribute('tabindex', '-1');\n fallbackEl.setAttribute('aria-hidden', 'true');\n Object.assign(fallbackEl.style, HIDDEN_STYLES);\n if (isInsidePortal && domReference) {\n domReference.insertAdjacentElement('afterend', fallbackEl);\n }\n function getReturnElement() {\n if (typeof returnFocusRef.current === 'boolean') {\n return getPreviouslyFocusedElement() || fallbackEl;\n }\n return returnFocusRef.current.current || fallbackEl;\n }\n return () => {\n events.off('openchange', onOpenChange);\n const activeEl = activeElement(doc);\n const isFocusInsideFloatingTree = contains(floating, activeEl) || tree && getChildren(tree.nodesRef.current, nodeId).some(node => {\n var _node$context5;\n return contains((_node$context5 = node.context) == null ? void 0 : _node$context5.elements.floating, activeEl);\n });\n const shouldFocusReference = isFocusInsideFloatingTree || openEvent && ['click', 'mousedown'].includes(openEvent.type);\n if (shouldFocusReference && refs.domReference.current) {\n addPreviouslyFocusedElement(refs.domReference.current);\n }\n const returnElement = getReturnElement();\n queueMicrotask(() => {\n if (\n // eslint-disable-next-line react-hooks/exhaustive-deps\n returnFocusRef.current && !preventReturnFocusRef.current && isHTMLElement(returnElement) && (\n // If the focus moved somewhere else after mount, avoid returning focus\n // since it likely entered a different element which should be\n // respected: https://github.com/floating-ui/floating-ui/issues/2607\n returnElement !== activeEl && activeEl !== doc.body ? isFocusInsideFloatingTree : true)) {\n returnElement.focus({\n preventScroll: preventReturnFocusScroll\n });\n }\n fallbackEl.remove();\n });\n };\n }, [disabled, floating, floatingFocusElement, returnFocusRef, dataRef, refs, events, tree, nodeId, isInsidePortal, domReference]);\n React.useEffect(() => {\n // The `returnFocus` cleanup behavior is inside a microtask; ensure we\n // wait for it to complete before resetting the flag.\n queueMicrotask(() => {\n preventReturnFocusRef.current = false;\n });\n }, [disabled]);\n\n // Synchronize the `context` & `modal` value to the FloatingPortal context.\n // It will decide whether or not it needs to render its own guards.\n index(() => {\n if (disabled) return;\n if (!portalContext) return;\n portalContext.setFocusManagerState({\n modal,\n closeOnFocusOut,\n open,\n onOpenChange,\n refs\n });\n return () => {\n portalContext.setFocusManagerState(null);\n };\n }, [disabled, portalContext, modal, open, onOpenChange, refs, closeOnFocusOut]);\n index(() => {\n if (disabled) return;\n if (!floatingFocusElement) return;\n if (typeof MutationObserver !== 'function') return;\n if (ignoreInitialFocus) return;\n const handleMutation = () => {\n const tabIndex = floatingFocusElement.getAttribute('tabindex');\n const tabbableContent = getTabbableContent();\n const activeEl = activeElement(getDocument(floating));\n const tabbableIndex = tabbableContent.indexOf(activeEl);\n if (tabbableIndex !== -1) {\n tabbableIndexRef.current = tabbableIndex;\n }\n if (orderRef.current.includes('floating') || activeEl !== refs.domReference.current && tabbableContent.length === 0) {\n if (tabIndex !== '0') {\n floatingFocusElement.setAttribute('tabindex', '0');\n }\n } else if (tabIndex !== '-1') {\n floatingFocusElement.setAttribute('tabindex', '-1');\n }\n };\n handleMutation();\n const observer = new MutationObserver(handleMutation);\n observer.observe(floatingFocusElement, {\n childList: true,\n subtree: true,\n attributes: true\n });\n return () => {\n observer.disconnect();\n };\n }, [disabled, floating, floatingFocusElement, refs, orderRef, getTabbableContent, ignoreInitialFocus]);\n function renderDismissButton(location) {\n if (disabled || !visuallyHiddenDismiss || !modal) {\n return null;\n }\n return /*#__PURE__*/React.createElement(VisuallyHiddenDismiss, {\n ref: location === 'start' ? startDismissButtonRef : endDismissButtonRef,\n onClick: event => onOpenChange(false, event.nativeEvent)\n }, typeof visuallyHiddenDismiss === 'string' ? visuallyHiddenDismiss : 'Dismiss');\n }\n const shouldRenderGuards = !disabled && guards && (modal ? !isUntrappedTypeableCombobox : true) && (isInsidePortal || modal);\n return /*#__PURE__*/React.createElement(React.Fragment, null, shouldRenderGuards && /*#__PURE__*/React.createElement(FocusGuard, {\n \"data-type\": \"inside\",\n ref: portalContext == null ? void 0 : portalContext.beforeInsideRef,\n onFocus: event => {\n if (modal) {\n const els = getTabbableElements();\n enqueueFocus(order[0] === 'reference' ? els[0] : els[els.length - 1]);\n } else if (portalContext != null && portalContext.preserveTabOrder && portalContext.portalNode) {\n preventReturnFocusRef.current = false;\n if (isOutsideEvent(event, portalContext.portalNode)) {\n const nextTabbable = getNextTabbable() || domReference;\n nextTabbable == null || nextTabbable.focus();\n } else {\n var _portalContext$before;\n (_portalContext$before = portalContext.beforeOutsideRef.current) == null || _portalContext$before.focus();\n }\n }\n }\n }), !isUntrappedTypeableCombobox && renderDismissButton('start'), children, renderDismissButton('end'), shouldRenderGuards && /*#__PURE__*/React.createElement(FocusGuard, {\n \"data-type\": \"inside\",\n ref: portalContext == null ? void 0 : portalContext.afterInsideRef,\n onFocus: event => {\n if (modal) {\n enqueueFocus(getTabbableElements()[0]);\n } else if (portalContext != null && portalContext.preserveTabOrder && portalContext.portalNode) {\n if (closeOnFocusOut) {\n preventReturnFocusRef.current = true;\n }\n if (isOutsideEvent(event, portalContext.portalNode)) {\n const prevTabbable = getPreviousTabbable() || domReference;\n prevTabbable == null || prevTabbable.focus();\n } else {\n var _portalContext$afterO;\n (_portalContext$afterO = portalContext.afterOutsideRef.current) == null || _portalContext$afterO.focus();\n }\n }\n }\n }));\n}\n\nlet lockCount = 0;\nfunction enableScrollLock() {\n const isIOS = /iP(hone|ad|od)|iOS/.test(getPlatform());\n const bodyStyle = document.body.style;\n // RTL <body> scrollbar\n const scrollbarX = Math.round(document.documentElement.getBoundingClientRect().left) + document.documentElement.scrollLeft;\n const paddingProp = scrollbarX ? 'paddingLeft' : 'paddingRight';\n const scrollbarWidth = window.innerWidth - document.documentElement.clientWidth;\n const scrollX = bodyStyle.left ? parseFloat(bodyStyle.left) : window.scrollX;\n const scrollY = bodyStyle.top ? parseFloat(bodyStyle.top) : window.scrollY;\n bodyStyle.overflow = 'hidden';\n if (scrollbarWidth) {\n bodyStyle[paddingProp] = scrollbarWidth + \"px\";\n }\n\n // Only iOS doesn't respect `overflow: hidden` on document.body, and this\n // technique has fewer side effects.\n if (isIOS) {\n var _window$visualViewpor, _window$visualViewpor2;\n // iOS 12 does not support `visualViewport`.\n const offsetLeft = ((_window$visualViewpor = window.visualViewport) == null ? void 0 : _window$visualViewpor.offsetLeft) || 0;\n const offsetTop = ((_window$visualViewpor2 = window.visualViewport) == null ? void 0 : _window$visualViewpor2.offsetTop) || 0;\n Object.assign(bodyStyle, {\n position: 'fixed',\n top: -(scrollY - Math.floor(offsetTop)) + \"px\",\n left: -(scrollX - Math.floor(offsetLeft)) + \"px\",\n right: '0'\n });\n }\n return () => {\n Object.assign(bodyStyle, {\n overflow: '',\n [paddingProp]: ''\n });\n if (isIOS) {\n Object.assign(bodyStyle, {\n position: '',\n top: '',\n left: '',\n right: ''\n });\n window.scrollTo(scrollX, scrollY);\n }\n };\n}\nlet cleanup = () => {};\n\n/**\n * Provides base styling for a fixed overlay element to dim content or block\n * pointer events behind a floating element.\n * It's a regular `<div>`, so it can be styled via any CSS solution you prefer.\n * @see https://floating-ui.com/docs/FloatingOverlay\n */\nconst FloatingOverlay = /*#__PURE__*/React.forwardRef(function FloatingOverlay(props, ref) {\n const {\n lockScroll = false,\n ...rest\n } = props;\n index(() => {\n if (!lockScroll) return;\n lockCount++;\n if (lockCount === 1) {\n cleanup = enableScrollLock();\n }\n return () => {\n lockCount--;\n if (lockCount === 0) {\n cleanup();\n }\n };\n }, [lockScroll]);\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: ref\n }, rest, {\n style: {\n position: 'fixed',\n overflow: 'auto',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...rest.style\n }\n }));\n});\n\nfunction isButtonTarget(event) {\n return isHTMLElement(event.target) && event.target.tagName === 'BUTTON';\n}\nfunction isSpaceIgnored(element) {\n return isTypeableElement(element);\n}\n/**\n * Opens or closes the floating element when clicking the reference element.\n * @see https://floating-ui.com/docs/useClick\n */\nfunction useClick(context, props) {\n if (props === void 0) {\n props = {};\n }\n const {\n open,\n onOpenChange,\n dataRef,\n elements: {\n domReference\n }\n } = context;\n const {\n enabled = true,\n event: eventOption = 'click',\n toggle = true,\n ignoreMouse = false,\n keyboardHandlers = true,\n stickIfOpen = true\n } = props;\n const pointerTypeRef = React.useRef();\n const didKeyDownRef = React.useRef(false);\n const reference = React.useMemo(() => ({\n onPointerDown(event) {\n pointerTypeRef.current = event.pointerType;\n },\n onMouseDown(event) {\n const pointerType = pointerTypeRef.current;\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) return;\n if (eventOption === 'click') return;\n if (isMouseLikePointerType(pointerType, true) && ignoreMouse) return;\n if (open && toggle && (dataRef.current.openEvent && stickIfOpen ? dataRef.current.openEvent.type === 'mousedown' : true)) {\n onOpenChange(false, event.nativeEvent, 'click');\n } else {\n // Prevent stealing focus from the floating element\n event.preventDefault();\n onOpenChange(true, event.nativeEvent, 'click');\n }\n },\n onClick(event) {\n const pointerType = pointerTypeRef.current;\n if (eventOption === 'mousedown' && pointerTypeRef.current) {\n pointerTypeRef.current = undefined;\n return;\n }\n if (isMouseLikePointerType(pointerType, true) && ignoreMouse) return;\n if (open && toggle && (dataRef.current.openEvent && stickIfOpen ? dataRef.current.openEvent.type === 'click' : true)) {\n onOpenChange(false, event.nativeEvent, 'click');\n } else {\n onOpenChange(true, event.nativeEvent, 'click');\n }\n },\n onKeyDown(event) {\n pointerTypeRef.current = undefined;\n if (event.defaultPrevented || !keyboardHandlers || isButtonTarget(event)) {\n return;\n }\n if (event.key === ' ' && !isSpaceIgnored(domReference)) {\n // Prevent scrolling\n event.preventDefault();\n didKeyDownRef.current = true;\n }\n if (event.key === 'Enter') {\n if (open && toggle) {\n onOpenChange(false, event.nativeEvent, 'click');\n } else {\n onOpenChange(true, event.nativeEvent, 'click');\n }\n }\n },\n onKeyUp(event) {\n if (event.defaultPrevented || !keyboardHandlers || isButtonTarget(event) || isSpaceIgnored(domReference)) {\n return;\n }\n if (event.key === ' ' && didKeyDownRef.current) {\n didKeyDownRef.current = false;\n if (open && toggle) {\n onOpenChange(false, event.nativeEvent, 'click');\n } else {\n onOpenChange(true, event.nativeEvent, 'click');\n }\n }\n }\n }), [dataRef, domReference, eventOption, ignoreMouse, keyboardHandlers, onOpenChange, open, stickIfOpen, toggle]);\n return React.useMemo(() => enabled ? {\n reference\n } : {}, [enabled, reference]);\n}\n\nfunction createVirtualElement(domElement, data) {\n let offsetX = null;\n let offsetY = null;\n let isAutoUpdateEvent = false;\n return {\n contextElement: domElement || undefined,\n getBoundingClientRect() {\n var _data$dataRef$current;\n const domRect = (domElement == null ? void 0 : domElement.getBoundingClientRect()) || {\n width: 0,\n height: 0,\n x: 0,\n y: 0\n };\n const isXAxis = data.axis === 'x' || data.axis === 'both';\n const isYAxis = data.axis === 'y' || data.axis === 'both';\n const canTrackCursorOnAutoUpdate = ['mouseenter', 'mousemove'].includes(((_data$dataRef$current = data.dataRef.current.openEvent) == null ? void 0 : _data$dataRef$current.type) || '') && data.pointerType !== 'touch';\n let width = domRect.width;\n let height = domRect.height;\n let x = domRect.x;\n let y = domRect.y;\n if (offsetX == null && data.x && isXAxis) {\n offsetX = domRect.x - data.x;\n }\n if (offsetY == null && data.y && isYAxis) {\n offsetY = domRect.y - data.y;\n }\n x -= offsetX || 0;\n y -= offsetY || 0;\n width = 0;\n height = 0;\n if (!isAutoUpdateEvent || canTrackCursorOnAutoUpdate) {\n width = data.axis === 'y' ? domRect.width : 0;\n height = data.axis === 'x' ? domRect.height : 0;\n x = isXAxis && data.x != null ? data.x : x;\n y = isYAxis && data.y != null ? data.y : y;\n } else if (isAutoUpdateEvent && !canTrackCursorOnAutoUpdate) {\n height = data.axis === 'x' ? domRect.height : height;\n width = data.axis === 'y' ? domRect.width : width;\n }\n isAutoUpdateEvent = true;\n return {\n width,\n height,\n x,\n y,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x\n };\n }\n };\n}\nfunction isMouseBasedEvent(event) {\n return event != null && event.clientX != null;\n}\n/**\n * Positions the floating element relative to a client point (in the viewport),\n * such as the mouse position. By default, it follows the mouse cursor.\n * @see https://floating-ui.com/docs/useClientPoint\n */\nfunction useClientPoint(context, props) {\n if (props === void 0) {\n props = {};\n }\n const {\n open,\n dataRef,\n elements: {\n floating,\n domReference\n },\n refs\n } = context;\n const {\n enabled = true,\n axis = 'both',\n x = null,\n y = null\n } = props;\n const initialRef = React.useRef(false);\n const cleanupListenerRef = React.useRef(null);\n const [pointerType, setPointerType] = React.useState();\n const [reactive, setReactive] = React.useState([]);\n const setReference = useEffectEvent((x, y) => {\n if (initialRef.current) return;\n\n // Prevent setting if the open event was not a mouse-like one\n // (e.g. focus to open, then hover over the reference element).\n // Only apply if the event exists.\n if (dataRef.current.openEvent && !isMouseBasedEvent(dataRef.current.openEvent)) {\n return;\n }\n refs.setPositionReference(createVirtualElement(domReference, {\n x,\n y,\n axis,\n dataRef,\n pointerType\n }));\n });\n const handleReferenceEnterOrMove = useEffectEvent(event => {\n if (x != null || y != null) return;\n if (!open) {\n setReference(event.clientX, event.clientY);\n } else if (!cleanupListenerRef.current) {\n // If there's no cleanup, there's no listener, but we want to ensure\n // we add the listener if the cursor landed on the floating element and\n // then back on the reference (i.e. it's interactive).\n setReactive([]);\n }\n });\n\n // If the pointer is a mouse-like pointer, we want to continue following the\n // mouse even if the floating element is transitioning out. On touch\n // devices, this is undesirable because the floating element will move to\n // the dismissal touch point.\n const openCheck = isMouseLikePointerType(pointerType) ? floating : open;\n const addListener = React.useCallback(() => {\n // Explicitly specified `x`/`y` coordinates shouldn't add a listener.\n if (!openCheck || !enabled || x != null || y != null) return;\n const win = getWindow(floating);\n function handleMouseMove(event) {\n const target = getTarget(event);\n if (!contains(floating, target)) {\n setReference(event.clientX, event.clientY);\n } else {\n win.removeEventListener('mousemove', handleMouseMove);\n cleanupListenerRef.current = null;\n }\n }\n if (!dataRef.current.openEvent || isMouseBasedEvent(dataRef.current.openEvent)) {\n win.addEventListener('mousemove', handleMouseMove);\n const cleanup = () => {\n win.removeEventListener('mousemove', handleMouseMove);\n cleanupListenerRef.current = null;\n };\n cleanupListenerRef.current = cleanup;\n return cleanup;\n }\n refs.setPositionReference(domReference);\n }, [openCheck, enabled, x, y, floating, dataRef, refs, domReference, setReference]);\n React.useEffect(() => {\n return addListener();\n }, [addListener, reactive]);\n React.useEffect(() => {\n if (enabled && !floating) {\n initialRef.current = false;\n }\n }, [enabled, floating]);\n React.useEffect(() => {\n if (!enabled && open) {\n initialRef.current = true;\n }\n }, [enabled, open]);\n index(() => {\n if (enabled && (x != null || y != null)) {\n initialRef.current = false;\n setReference(x, y);\n }\n }, [enabled, x, y, setReference]);\n const reference = React.useMemo(() => {\n function setPointerTypeRef(_ref) {\n let {\n pointerType\n } = _ref;\n setPointerType(pointerType);\n }\n return {\n onPointerDown: setPointerTypeRef,\n onPointerEnter: setPointerTypeRef,\n onMouseMove: handleReferenceEnterOrMove,\n onMouseEnter: handleReferenceEnterOrMove\n };\n }, [handleReferenceEnterOrMove]);\n return React.useMemo(() => enabled ? {\n reference\n } : {}, [enabled, reference]);\n}\n\nconst bubbleHandlerKeys = {\n pointerdown: 'onPointerDown',\n mousedown: 'onMouseDown',\n click: 'onClick'\n};\nconst captureHandlerKeys = {\n pointerdown: 'onPointerDownCapture',\n mousedown: 'onMouseDownCapture',\n click: 'onClickCapture'\n};\nconst normalizeProp = normalizable => {\n var _normalizable$escapeK, _normalizable$outside;\n return {\n escapeKey: typeof normalizable === 'boolean' ? normalizable : (_normalizable$escapeK = normalizable == null ? void 0 : normalizable.escapeKey) != null ? _normalizable$escapeK : false,\n outsidePress: typeof normalizable === 'boolean' ? normalizable : (_normalizable$outside = normalizable == null ? void 0 : normalizable.outsidePress) != null ? _normalizable$outside : true\n };\n};\n/**\n * Closes the floating element when a dismissal is requested — by default, when\n * the user presses the `escape` key or outside of the floating element.\n * @see https://floating-ui.com/docs/useDismiss\n */\nfunction useDismiss(context, props) {\n if (props === void 0) {\n props = {};\n }\n const {\n open,\n onOpenChange,\n elements,\n dataRef\n } = context;\n const {\n enabled = true,\n escapeKey = true,\n outsidePress: unstable_outsidePress = true,\n outsidePressEvent = 'pointerdown',\n referencePress = false,\n referencePressEvent = 'pointerdown',\n ancestorScroll = false,\n bubbles,\n capture\n } = props;\n const tree = useFloatingTree();\n const outsidePressFn = useEffectEvent(typeof unstable_outsidePress === 'function' ? unstable_outsidePress : () => false);\n const outsidePress = typeof unstable_outsidePress === 'function' ? outsidePressFn : unstable_outsidePress;\n const insideReactTreeRef = React.useRef(false);\n const endedOrStartedInsideRef = React.useRef(false);\n const {\n escapeKey: escapeKeyBubbles,\n outsidePress: outsidePressBubbles\n } = normalizeProp(bubbles);\n const {\n escapeKey: escapeKeyCapture,\n outsidePress: outsidePressCapture\n } = normalizeProp(capture);\n const isComposingRef = React.useRef(false);\n const closeOnEscapeKeyDown = useEffectEvent(event => {\n var _dataRef$current$floa;\n if (!open || !enabled || !escapeKey || event.key !== 'Escape') {\n return;\n }\n\n // Wait until IME is settled. Pressing `Escape` while composing should\n // close the compose menu, but not the floating element.\n if (isComposingRef.current) {\n return;\n }\n const nodeId = (_dataRef$current$floa = dataRef.current.floatingContext) == null ? void 0 : _dataRef$current$floa.nodeId;\n const children = tree ? getChildren(tree.nodesRef.current, nodeId) : [];\n if (!escapeKeyBubbles) {\n event.stopPropagation();\n if (children.length > 0) {\n let shouldDismiss = true;\n children.forEach(child => {\n var _child$context;\n if ((_child$context = child.context) != null && _child$context.open && !child.context.dataRef.current.__escapeKeyBubbles) {\n shouldDismiss = false;\n return;\n }\n });\n if (!shouldDismiss) {\n return;\n }\n }\n }\n onOpenChange(false, isReactEvent(event) ? event.nativeEvent : event, 'escape-key');\n });\n const closeOnEscapeKeyDownCapture = useEffectEvent(event => {\n var _getTarget2;\n const callback = () => {\n var _getTarget;\n closeOnEscapeKeyDown(event);\n (_getTarget = getTarget(event)) == null || _getTarget.removeEventListener('keydown', callback);\n };\n (_getTarget2 = getTarget(event)) == null || _getTarget2.addEventListener('keydown', callback);\n });\n const closeOnPressOutside = useEffectEvent(event => {\n var _dataRef$current$floa2;\n // Given developers can stop the propagation of the synthetic event,\n // we can only be confident with a positive value.\n const insideReactTree = insideReactTreeRef.current;\n insideReactTreeRef.current = false;\n\n // When click outside is lazy (`click` event), handle dragging.\n // Don't close if:\n // - The click started inside the floating element.\n // - The click ended inside the floating element.\n const endedOrStartedInside = endedOrStartedInsideRef.current;\n endedOrStartedInsideRef.current = false;\n if (outsidePressEvent === 'click' && endedOrStartedInside) {\n return;\n }\n if (insideReactTree) {\n return;\n }\n if (typeof outsidePress === 'function' && !outsidePress(event)) {\n return;\n }\n const target = getTarget(event);\n const inertSelector = \"[\" + createAttribute('inert') + \"]\";\n const markers = getDocument(elements.floating).querySelectorAll(inertSelector);\n let targetRootAncestor = isElement(target) ? target : null;\n while (targetRootAncestor && !isLastTraversableNode(targetRootAncestor)) {\n const nextParent = getParentNode(targetRootAncestor);\n if (isLastTraversableNode(nextParent) || !isElement(nextParent)) {\n break;\n }\n targetRootAncestor = nextParent;\n }\n\n // Check if the click occurred on a third-party element injected after the\n // floating element rendered.\n if (markers.length && isElement(target) && !isRootElement(target) &&\n // Clicked on a direct ancestor (e.g. FloatingOverlay).\n !contains(target, elements.floating) &&\n // If the target root element contains none of the markers, then the\n // element was injected after the floating element rendered.\n Array.from(markers).every(marker => !contains(targetRootAncestor, marker))) {\n return;\n }\n\n // Check if the click occurred on the scrollbar\n if (isHTMLElement(target) && floating) {\n // In Firefox, `target.scrollWidth > target.clientWidth` for inline\n // elements.\n const canScrollX = target.clientWidth > 0 && target.scrollWidth > target.clientWidth;\n const canScrollY = target.clientHeight > 0 && target.scrollHeight > target.clientHeight;\n let xCond = canScrollY && event.offsetX > target.clientWidth;\n\n // In some browsers it is possible to change the <body> (or window)\n // scrollbar to the left side, but is very rare and is difficult to\n // check for. Plus, for modal dialogs with backdrops, it is more\n // important that the backdrop is checked but not so much the window.\n if (canScrollY) {\n const isRTL = getComputedStyle(target).direction === 'rtl';\n if (isRTL) {\n xCond = event.offsetX <= target.offsetWidth - target.clientWidth;\n }\n }\n if (xCond || canScrollX && event.offsetY > target.clientHeight) {\n return;\n }\n }\n const nodeId = (_dataRef$current$floa2 = dataRef.current.floatingContext) == null ? void 0 : _dataRef$current$floa2.nodeId;\n const targetIsInsideChildren = tree && getChildren(tree.nodesRef.current, nodeId).some(node => {\n var _node$context;\n return isEventTargetWithin(event, (_node$context = node.context) == null ? void 0 : _node$context.elements.floating);\n });\n if (isEventTargetWithin(event, elements.floating) || isEventTargetWithin(event, elements.domReference) || targetIsInsideChildren) {\n return;\n }\n const children = tree ? getChildren(tree.nodesRef.current, nodeId) : [];\n if (children.length > 0) {\n let shouldDismiss = true;\n children.forEach(child => {\n var _child$context2;\n if ((_child$context2 = child.context) != null && _child$context2.open && !child.context.dataRef.current.__outsidePressBubbles) {\n shouldDismiss = false;\n return;\n }\n });\n if (!shouldDismiss) {\n return;\n }\n }\n onOpenChange(false, event, 'outside-press');\n });\n const closeOnPressOutsideCapture = useEffectEvent(event => {\n var _getTarget4;\n const callback = () => {\n var _getTarget3;\n closeOnPressOutside(event);\n (_getTarget3 = getTarget(event)) == null || _getTarget3.removeEventListener(outsidePressEvent, callback);\n };\n (_getTarget4 = getTarget(event)) == null || _getTarget4.addEventListener(outsidePressEvent, callback);\n });\n React.useEffect(() => {\n if (!open || !enabled) {\n return;\n }\n dataRef.current.__escapeKeyBubbles = escapeKeyBubbles;\n dataRef.current.__outsidePressBubbles = outsidePressBubbles;\n let compositionTimeout = -1;\n function onScroll(event) {\n onOpenChange(false, event, 'ancestor-scroll');\n }\n function handleCompositionStart() {\n window.clearTimeout(compositionTimeout);\n isComposingRef.current = true;\n }\n function handleCompositionEnd() {\n // Safari fires `compositionend` before `keydown`, so we need to wait\n // until the next tick to set `isComposing` to `false`.\n // https://bugs.webkit.org/show_bug.cgi?id=165004\n compositionTimeout = window.setTimeout(() => {\n isComposingRef.current = false;\n },\n // 0ms or 1ms don't work in Safari. 5ms appears to consistently work.\n // Only apply to WebKit for the test to remain 0ms.\n isWebKit() ? 5 : 0);\n }\n const doc = getDocument(elements.floating);\n if (escapeKey) {\n doc.addEventListener('keydown', escapeKeyCapture ? closeOnEscapeKeyDownCapture : closeOnEscapeKeyDown, escapeKeyCapture);\n doc.addEventListener('compositionstart', handleCompositionStart);\n doc.addEventListener('compositionend', handleCompositionEnd);\n }\n outsidePress && doc.addEventListener(outsidePressEvent, outsidePressCapture ? closeOnPressOutsideCapture : closeOnPressOutside, outsidePressCapture);\n let ancestors = [];\n if (ancestorScroll) {\n if (isElement(elements.domReference)) {\n ancestors = getOverflowAncestors(elements.domReference);\n }\n if (isElement(elements.floating)) {\n ancestors = ancestors.concat(getOverflowAncestors(elements.floating));\n }\n if (!isElement(elements.reference) && elements.reference && elements.reference.contextElement) {\n ancestors = ancestors.concat(getOverflowAncestors(elements.reference.contextElement));\n }\n }\n\n // Ignore the visual viewport for scrolling dismissal (allow pinch-zoom)\n ancestors = ancestors.filter(ancestor => {\n var _doc$defaultView;\n return ancestor !== ((_doc$defaultView = doc.defaultView) == null ? void 0 : _doc$defaultView.visualViewport);\n });\n ancestors.forEach(ancestor => {\n ancestor.addEventListener('scroll', onScroll, {\n passive: true\n });\n });\n return () => {\n if (escapeKey) {\n doc.removeEventListener('keydown', escapeKeyCapture ? closeOnEscapeKeyDownCapture : closeOnEscapeKeyDown, escapeKeyCapture);\n doc.removeEventListener('compositionstart', handleCompositionStart);\n doc.removeEventListener('compositionend', handleCompositionEnd);\n }\n outsidePress && doc.removeEventListener(outsidePressEvent, outsidePressCapture ? closeOnPressOutsideCapture : closeOnPressOutside, outsidePressCapture);\n ancestors.forEach(ancestor => {\n ancestor.removeEventListener('scroll', onScroll);\n });\n window.clearTimeout(compositionTimeout);\n };\n }, [dataRef, elements, escapeKey, outsidePress, outsidePressEvent, open, onOpenChange, ancestorScroll, enabled, escapeKeyBubbles, outsidePressBubbles, closeOnEscapeKeyDown, escapeKeyCapture, closeOnEscapeKeyDownCapture, closeOnPressOutside, outsidePressCapture, closeOnPressOutsideCapture]);\n React.useEffect(() => {\n insideReactTreeRef.current = false;\n }, [outsidePress, outsidePressEvent]);\n const reference = React.useMemo(() => ({\n onKeyDown: closeOnEscapeKeyDown,\n [bubbleHandlerKeys[referencePressEvent]]: event => {\n if (referencePress) {\n onOpenChange(false, event.nativeEvent, 'reference-press');\n }\n }\n }), [closeOnEscapeKeyDown, onOpenChange, referencePress, referencePressEvent]);\n const floating = React.useMemo(() => ({\n onKeyDown: closeOnEscapeKeyDown,\n onMouseDown() {\n endedOrStartedInsideRef.current = true;\n },\n onMouseUp() {\n endedOrStartedInsideRef.current = true;\n },\n [captureHandlerKeys[outsidePressEvent]]: () => {\n insideReactTreeRef.current = true;\n }\n }), [closeOnEscapeKeyDown, outsidePressEvent]);\n return React.useMemo(() => enabled ? {\n reference,\n floating\n } : {}, [enabled, reference, floating]);\n}\n\nfunction useFloatingRootContext(options) {\n const {\n open = false,\n onOpenChange: onOpenChangeProp,\n elements: elementsProp\n } = options;\n const floatingId = useId();\n const dataRef = React.useRef({});\n const [events] = React.useState(() => createPubSub());\n const nested = useFloatingParentNodeId() != null;\n if (process.env.NODE_ENV !== \"production\") {\n const optionDomReference = elementsProp.reference;\n if (optionDomReference && !isElement(optionDomReference)) {\n error('Cannot pass a virtual element to the `elements.reference` option,', 'as it must be a real DOM element. Use `refs.setPositionReference()`', 'instead.');\n }\n }\n const [positionReference, setPositionReference] = React.useState(elementsProp.reference);\n const onOpenChange = useEffectEvent((open, event, reason) => {\n dataRef.current.openEvent = open ? event : undefined;\n events.emit('openchange', {\n open,\n event,\n reason,\n nested\n });\n onOpenChangeProp == null || onOpenChangeProp(open, event, reason);\n });\n const refs = React.useMemo(() => ({\n setPositionReference\n }), []);\n const elements = React.useMemo(() => ({\n reference: positionReference || elementsProp.reference || null,\n floating: elementsProp.floating || null,\n domReference: elementsProp.reference\n }), [positionReference, elementsProp.reference, elementsProp.floating]);\n return React.useMemo(() => ({\n dataRef,\n open,\n onOpenChange,\n elements,\n events,\n floatingId,\n refs\n }), [open, onOpenChange, elements, events, floatingId, refs]);\n}\n\n/**\n * Provides data to position a floating element and context to add interactions.\n * @see https://floating-ui.com/docs/useFloating\n */\nfunction useFloating(options) {\n if (options === void 0) {\n options = {};\n }\n const {\n nodeId\n } = options;\n const internalRootContext = useFloatingRootContext({\n ...options,\n elements: {\n reference: null,\n floating: null,\n ...options.elements\n }\n });\n const rootContext = options.rootContext || internalRootContext;\n const computedElements = rootContext.elements;\n const [_domReference, setDomReference] = React.useState(null);\n const [positionReference, _setPositionReference] = React.useState(null);\n const optionDomReference = computedElements == null ? void 0 : computedElements.domReference;\n const domReference = optionDomReference || _domReference;\n const domReferenceRef = React.useRef(null);\n const tree = useFloatingTree();\n index(() => {\n if (domReference) {\n domReferenceRef.current = domReference;\n }\n }, [domReference]);\n const position = useFloating$1({\n ...options,\n elements: {\n ...computedElements,\n ...(positionReference && {\n reference: positionReference\n })\n }\n });\n const setPositionReference = React.useCallback(node => {\n const computedPositionReference = isElement(node) ? {\n getBoundingClientRect: () => node.getBoundingClientRect(),\n contextElement: node\n } : node;\n // Store the positionReference in state if the DOM reference is specified externally via the\n // `elements.reference` option. This ensures that it won't be overridden on future renders.\n _setPositionReference(computedPositionReference);\n position.refs.setReference(computedPositionReference);\n }, [position.refs]);\n const setReference = React.useCallback(node => {\n if (isElement(node) || node === null) {\n domReferenceRef.current = node;\n setDomReference(node);\n }\n\n // Backwards-compatibility for passing a virtual element to `reference`\n // after it has set the DOM reference.\n if (isElement(position.refs.reference.current) || position.refs.reference.current === null ||\n // Don't allow setting virtual elements using the old technique back to\n // `null` to support `positionReference` + an unstable `reference`\n // callback ref.\n node !== null && !isElement(node)) {\n position.refs.setReference(node);\n }\n }, [position.refs]);\n const refs = React.useMemo(() => ({\n ...position.refs,\n setReference,\n setPositionReference,\n domReference: domReferenceRef\n }), [position.refs, setReference, setPositionReference]);\n const elements = React.useMemo(() => ({\n ...position.elements,\n domReference: domReference\n }), [position.elements, domReference]);\n const context = React.useMemo(() => ({\n ...position,\n ...rootContext,\n refs,\n elements,\n nodeId\n }), [position, refs, elements, nodeId, rootContext]);\n index(() => {\n rootContext.dataRef.current.floatingContext = context;\n const node = tree == null ? void 0 : tree.nodesRef.current.find(node => node.id === nodeId);\n if (node) {\n node.context = context;\n }\n });\n return React.useMemo(() => ({\n ...position,\n context,\n refs,\n elements\n }), [position, refs, elements, context]);\n}\n\n/**\n * Opens the floating element while the reference element has focus, like CSS\n * `:focus`.\n * @see https://floating-ui.com/docs/useFocus\n */\nfunction useFocus(context, props) {\n if (props === void 0) {\n props = {};\n }\n const {\n open,\n onOpenChange,\n events,\n dataRef,\n elements\n } = context;\n const {\n enabled = true,\n visibleOnly = true\n } = props;\n const blockFocusRef = React.useRef(false);\n const timeoutRef = React.useRef();\n const keyboardModalityRef = React.useRef(true);\n React.useEffect(() => {\n if (!enabled) return;\n const win = getWindow(elements.domReference);\n\n // If the reference was focused and the user left the tab/window, and the\n // floating element was not open, the focus should be blocked when they\n // return to the tab/window.\n function onBlur() {\n if (!open && isHTMLElement(elements.domReference) && elements.domReference === activeElement(getDocument(elements.domReference))) {\n blockFocusRef.current = true;\n }\n }\n function onKeyDown() {\n keyboardModalityRef.current = true;\n }\n win.addEventListener('blur', onBlur);\n win.addEventListener('keydown', onKeyDown, true);\n return () => {\n win.removeEventListener('blur', onBlur);\n win.removeEventListener('keydown', onKeyDown, true);\n };\n }, [elements.domReference, open, enabled]);\n React.useEffect(() => {\n if (!enabled) return;\n function onOpenChange(_ref) {\n let {\n reason\n } = _ref;\n if (reason === 'reference-press' || reason === 'escape-key') {\n blockFocusRef.current = true;\n }\n }\n events.on('openchange', onOpenChange);\n return () => {\n events.off('openchange', onOpenChange);\n };\n }, [events, enabled]);\n React.useEffect(() => {\n return () => {\n clearTimeout(timeoutRef.current);\n };\n }, []);\n const reference = React.useMemo(() => ({\n onPointerDown(event) {\n if (isVirtualPointerEvent(event.nativeEvent)) return;\n keyboardModalityRef.current = false;\n },\n onMouseLeave() {\n blockFocusRef.current = false;\n },\n onFocus(event) {\n if (blockFocusRef.current) return;\n const target = getTarget(event.nativeEvent);\n if (visibleOnly && isElement(target)) {\n try {\n // Mac Safari unreliably matches `:focus-visible` on the reference\n // if focus was outside the page initially - use the fallback\n // instead.\n if (isSafari() && isMac()) throw Error();\n if (!target.matches(':focus-visible')) return;\n } catch (e) {\n // Old browsers will throw an error when using `:focus-visible`.\n if (!keyboardModalityRef.current && !isTypeableElement(target)) {\n return;\n }\n }\n }\n onOpenChange(true, event.nativeEvent, 'focus');\n },\n onBlur(event) {\n blockFocusRef.current = false;\n const relatedTarget = event.relatedTarget;\n const nativeEvent = event.nativeEvent;\n\n // Hit the non-modal focus management portal guard. Focus will be\n // moved into the floating element immediately after.\n const movedToFocusGuard = isElement(relatedTarget) && relatedTarget.hasAttribute(createAttribute('focus-guard')) && relatedTarget.getAttribute('data-type') === 'outside';\n\n // Wait for the window blur listener to fire.\n timeoutRef.current = window.setTimeout(() => {\n var _dataRef$current$floa;\n const activeEl = activeElement(elements.domReference ? elements.domReference.ownerDocument : document);\n\n // Focus left the page, keep it open.\n if (!relatedTarget && activeEl === elements.domReference) return;\n\n // When focusing the reference element (e.g. regular click), then\n // clicking into the floating element, prevent it from hiding.\n // Note: it must be focusable, e.g. `tabindex=\"-1\"`.\n // We can not rely on relatedTarget to point to the correct element\n // as it will only point to the shadow host of the newly focused element\n // and not the element that actually has received focus if it is located\n // inside a shadow root.\n if (contains((_dataRef$current$floa = dataRef.current.floatingContext) == null ? void 0 : _dataRef$current$floa.refs.floating.current, activeEl) || contains(elements.domReference, activeEl) || movedToFocusGuard) {\n return;\n }\n onOpenChange(false, nativeEvent, 'focus');\n });\n }\n }), [dataRef, elements.domReference, onOpenChange, visibleOnly]);\n return React.useMemo(() => enabled ? {\n reference\n } : {}, [enabled, reference]);\n}\n\nconst ACTIVE_KEY = 'active';\nconst SELECTED_KEY = 'selected';\nfunction mergeProps(userProps, propsList, elementKey) {\n const map = new Map();\n const isItem = elementKey === 'item';\n let domUserProps = userProps;\n if (isItem && userProps) {\n const {\n [ACTIVE_KEY]: _,\n [SELECTED_KEY]: __,\n ...validProps\n } = userProps;\n domUserProps = validProps;\n }\n return {\n ...(elementKey === 'floating' && {\n tabIndex: -1,\n [FOCUSABLE_ATTRIBUTE]: ''\n }),\n ...domUserProps,\n ...propsList.map(value => {\n const propsOrGetProps = value ? value[elementKey] : null;\n if (typeof propsOrGetProps === 'function') {\n return userProps ? propsOrGetProps(userProps) : null;\n }\n return propsOrGetProps;\n }).concat(userProps).reduce((acc, props) => {\n if (!props) {\n return acc;\n }\n Object.entries(props).forEach(_ref => {\n let [key, value] = _ref;\n if (isItem && [ACTIVE_KEY, SELECTED_KEY].includes(key)) {\n return;\n }\n if (key.indexOf('on') === 0) {\n if (!map.has(key)) {\n map.set(key, []);\n }\n if (typeof value === 'function') {\n var _map$get;\n (_map$get = map.get(key)) == null || _map$get.push(value);\n acc[key] = function () {\n var _map$get2;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return (_map$get2 = map.get(key)) == null ? void 0 : _map$get2.map(fn => fn(...args)).find(val => val !== undefined);\n };\n }\n } else {\n acc[key] = value;\n }\n });\n return acc;\n }, {})\n };\n}\n/**\n * Merges an array of interaction hooks' props into prop getters, allowing\n * event handler functions to be composed together without overwriting one\n * another.\n * @see https://floating-ui.com/docs/useInteractions\n */\nfunction useInteractions(propsList) {\n if (propsList === void 0) {\n propsList = [];\n }\n const referenceDeps = propsList.map(key => key == null ? void 0 : key.reference);\n const floatingDeps = propsList.map(key => key == null ? void 0 : key.floating);\n const itemDeps = propsList.map(key => key == null ? void 0 : key.item);\n const getReferenceProps = React.useCallback(userProps => mergeProps(userProps, propsList, 'reference'),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n referenceDeps);\n const getFloatingProps = React.useCallback(userProps => mergeProps(userProps, propsList, 'floating'),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n floatingDeps);\n const getItemProps = React.useCallback(userProps => mergeProps(userProps, propsList, 'item'),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n itemDeps);\n return React.useMemo(() => ({\n getReferenceProps,\n getFloatingProps,\n getItemProps\n }), [getReferenceProps, getFloatingProps, getItemProps]);\n}\n\nlet isPreventScrollSupported = false;\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) {\n const vertical = rtl ? key === ARROW_RIGHT : key === ARROW_LEFT;\n const horizontal = key === ARROW_UP;\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 */\nfunction useListNavigation(context, props) {\n const {\n open,\n onOpenChange,\n elements\n } = context;\n const {\n listRef,\n activeIndex,\n onNavigate: unstable_onNavigate = () => {},\n enabled = true,\n selectedIndex = null,\n allowEscape = false,\n loop = 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 cols = 1,\n scrollItemIntoView = true,\n virtualItemRef,\n itemSizes,\n dense = false\n } = props;\n if (process.env.NODE_ENV !== \"production\") {\n if (allowEscape) {\n if (!loop) {\n warn('`useListNavigation` looping must be enabled to allow escaping.');\n }\n if (!virtual) {\n warn('`useListNavigation` must be virtual to allow escaping.');\n }\n }\n if (orientation === 'vertical' && cols > 1) {\n warn('In grid list navigation mode (`cols` > 1), the `orientation` should', 'be either \"horizontal\" or \"both\".');\n }\n }\n const floatingFocusElement = getFloatingFocusElement(elements.floating);\n const floatingFocusElementRef = useLatestRef(floatingFocusElement);\n const parentId = useFloatingParentNodeId();\n const tree = useFloatingTree();\n const onNavigate = useEffectEvent(unstable_onNavigate);\n const typeableComboboxReference = isTypeableCombobox(elements.domReference);\n const focusItemOnOpenRef = React.useRef(focusItemOnOpen);\n const indexRef = React.useRef(selectedIndex != null ? selectedIndex : -1);\n const keyRef = React.useRef(null);\n const isPointerModalityRef = React.useRef(true);\n const previousOnNavigateRef = React.useRef(onNavigate);\n const previousMountedRef = React.useRef(!!elements.floating);\n const previousOpenRef = React.useRef(open);\n const forceSyncFocus = React.useRef(false);\n const forceScrollIntoViewRef = React.useRef(false);\n const disabledIndicesRef = useLatestRef(disabledIndices);\n const latestOpenRef = useLatestRef(open);\n const scrollItemIntoViewRef = useLatestRef(scrollItemIntoView);\n const selectedIndexRef = useLatestRef(selectedIndex);\n const [activeId, setActiveId] = React.useState();\n const [virtualId, setVirtualId] = React.useState();\n const focusItem = useEffectEvent(function (listRef, indexRef, forceScrollIntoView) {\n if (forceScrollIntoView === void 0) {\n forceScrollIntoView = false;\n }\n function runFocus(item) {\n if (virtual) {\n setActiveId(item.id);\n tree == null || tree.events.emit('virtualfocus', item);\n if (virtualItemRef) {\n virtualItemRef.current = item;\n }\n } else {\n enqueueFocus(item, {\n preventScroll: true,\n // Mac Safari does not move the virtual cursor unless the focus call\n // is sync. However, for the very first focus call, we need to wait\n // for the position to be ready in order to prevent unwanted\n // scrolling. This means the virtual cursor will not move to the first\n // item when first opening the floating element, but will on\n // subsequent calls. `preventScroll` is supported in modern Safari,\n // so we can use that instead.\n // iOS Safari must be async or the first item will not be focused.\n sync: isMac() && isSafari() ? isPreventScrollSupported || forceSyncFocus.current : false\n });\n }\n }\n const initialItem = listRef.current[indexRef.current];\n if (initialItem) {\n runFocus(initialItem);\n }\n requestAnimationFrame(() => {\n const waitedItem = listRef.current[indexRef.current] || initialItem;\n if (!waitedItem) return;\n if (!initialItem) {\n runFocus(waitedItem);\n }\n const scrollIntoViewOptions = scrollItemIntoViewRef.current;\n const shouldScrollIntoView = scrollIntoViewOptions && 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 == null || waitedItem.scrollIntoView(typeof scrollIntoViewOptions === 'boolean' ? {\n block: 'nearest',\n inline: 'nearest'\n } : scrollIntoViewOptions);\n }\n });\n });\n index(() => {\n document.createElement('div').focus({\n get preventScroll() {\n isPreventScrollSupported = true;\n return false;\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 index(() => {\n if (!enabled) return;\n if (open && elements.floating) {\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 indexRef.current = selectedIndex;\n onNavigate(selectedIndex);\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(null);\n }\n }, [enabled, open, elements.floating, selectedIndex, onNavigate]);\n\n // Sync `activeIndex` to be the focused item while the floating element is\n // open.\n index(() => {\n if (!enabled) return;\n if (open && elements.floating) {\n if (activeIndex == null) {\n forceSyncFocus.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(listRef, indexRef);\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++;\n } else {\n indexRef.current = keyRef.current == null || isMainOrientationToEndKey(keyRef.current, orientation, rtl) || nested ? getMinIndex(listRef, disabledIndicesRef.current) : getMaxIndex(listRef, disabledIndicesRef.current);\n keyRef.current = null;\n onNavigate(indexRef.current);\n }\n };\n waitForListPopulated();\n }\n } else if (!isIndexOutOfBounds(listRef, activeIndex)) {\n indexRef.current = activeIndex;\n focusItem(listRef, indexRef, forceScrollIntoViewRef.current);\n forceScrollIntoViewRef.current = false;\n }\n }\n }, [enabled, open, elements.floating, 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 index(() => {\n var _nodes$find;\n if (!enabled || elements.floating || !tree || virtual || !previousMountedRef.current) {\n return;\n }\n const nodes = tree.nodesRef.current;\n const parent = (_nodes$find = nodes.find(node => node.id === parentId)) == null || (_nodes$find = _nodes$find.context) == null ? void 0 : _nodes$find.elements.floating;\n const activeEl = activeElement(getDocument(elements.floating));\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, elements.floating, tree, parentId, virtual]);\n index(() => {\n if (!enabled) return;\n if (!tree) return;\n if (!virtual) return;\n if (parentId) return;\n function handleVirtualFocus(item) {\n setVirtualId(item.id);\n if (virtualItemRef) {\n virtualItemRef.current = item;\n }\n }\n tree.events.on('virtualfocus', handleVirtualFocus);\n return () => {\n tree.events.off('virtualfocus', handleVirtualFocus);\n };\n }, [enabled, tree, virtual, parentId, virtualItemRef]);\n index(() => {\n previousOnNavigateRef.current = onNavigate;\n previousMountedRef.current = !!elements.floating;\n });\n index(() => {\n if (!open) {\n keyRef.current = null;\n }\n }, [open]);\n index(() => {\n previousOpenRef.current = open;\n }, [open]);\n const hasActiveIndex = activeIndex != null;\n const item = React.useMemo(() => {\n function syncCurrentTarget(currentTarget) {\n if (!open) return;\n const index = listRef.current.indexOf(currentTarget);\n if (index !== -1) {\n onNavigate(index);\n }\n }\n const props = {\n onFocus(_ref) {\n let {\n currentTarget\n } = _ref;\n syncCurrentTarget(currentTarget);\n },\n onClick: _ref2 => {\n let {\n currentTarget\n } = _ref2;\n return currentTarget.focus({\n preventScroll: true\n });\n },\n // Safari\n ...(focusItemOnHover && {\n onMouseMove(_ref3) {\n let {\n currentTarget\n } = _ref3;\n syncCurrentTarget(currentTarget);\n },\n onPointerLeave(_ref4) {\n let {\n pointerType\n } = _ref4;\n if (!isPointerModalityRef.current || pointerType === 'touch') {\n return;\n }\n indexRef.current = -1;\n focusItem(listRef, indexRef);\n onNavigate(null);\n if (!virtual) {\n enqueueFocus(floatingFocusElementRef.current, {\n preventScroll: true\n });\n }\n }\n })\n };\n return props;\n }, [open, floatingFocusElementRef, focusItem, focusItemOnHover, listRef, onNavigate, virtual]);\n const commonOnKeyDown = useEffectEvent(event => {\n isPointerModalityRef.current = false;\n forceSyncFocus.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)) {\n stopEvent(event);\n onOpenChange(false, event.nativeEvent, 'list-navigation');\n if (isHTMLElement(elements.domReference)) {\n if (virtual) {\n tree == null || tree.events.emit('virtualfocus', elements.domReference);\n } else {\n elements.domReference.focus();\n }\n }\n return;\n }\n const currentIndex = indexRef.current;\n const minIndex = getMinIndex(listRef, disabledIndices);\n const maxIndex = getMaxIndex(listRef, disabledIndices);\n if (!typeableComboboxReference) {\n if (event.key === 'Home') {\n stopEvent(event);\n indexRef.current = minIndex;\n onNavigate(indexRef.current);\n }\n if (event.key === 'End') {\n stopEvent(event);\n indexRef.current = maxIndex;\n onNavigate(indexRef.current);\n }\n }\n\n // Grid navigation.\n if (cols > 1) {\n const sizes = itemSizes || 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 = buildCellMap(sizes, cols, dense);\n const minGridIndex = cellMap.findIndex(index => index != null && !isDisabled(listRef.current, index, disabledIndices));\n // last enabled index\n const maxGridIndex = cellMap.reduce((foundIndex, index, cellIndex) => index != null && !isDisabled(listRef.current, 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 loop,\n rtl,\n cols,\n // treat undefined (empty grid spaces) as disabled indices so we\n // don't end up in them\n disabledIndices: getCellIndices([...(disabledIndices || listRef.current.map((_, index) => isDisabled(listRef.current, index) ? index : undefined)), undefined], cellMap),\n minIndex: minGridIndex,\n maxIndex: maxGridIndex,\n prevIndex: getCellIndexOfCorner(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 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(indexRef.current);\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(indexRef.current);\n return;\n }\n if (isMainOrientationToEndKey(event.key, orientation, rtl)) {\n if (loop) {\n indexRef.current = currentIndex >= maxIndex ? allowEscape && currentIndex !== listRef.current.length ? -1 : minIndex : findNonDisabledIndex(listRef, {\n startingIndex: currentIndex,\n disabledIndices\n });\n } else {\n indexRef.current = Math.min(maxIndex, findNonDisabledIndex(listRef, {\n startingIndex: currentIndex,\n disabledIndices\n }));\n }\n } else {\n if (loop) {\n indexRef.current = currentIndex <= minIndex ? allowEscape && currentIndex !== -1 ? listRef.current.length : maxIndex : findNonDisabledIndex(listRef, {\n startingIndex: currentIndex,\n decrement: true,\n disabledIndices\n });\n } else {\n indexRef.current = Math.max(minIndex, findNonDisabledIndex(listRef, {\n startingIndex: currentIndex,\n decrement: true,\n disabledIndices\n }));\n }\n }\n if (isIndexOutOfBounds(listRef, indexRef.current)) {\n onNavigate(null);\n } else {\n onNavigate(indexRef.current);\n }\n }\n });\n const ariaActiveDescendantProp = React.useMemo(() => {\n return virtual && open && hasActiveIndex && {\n 'aria-activedescendant': virtualId || activeId\n };\n }, [virtual, open, hasActiveIndex, virtualId, activeId]);\n const floating = React.useMemo(() => {\n return {\n 'aria-orientation': orientation === 'both' ? undefined : orientation,\n ...(!isTypeableCombobox(elements.domReference) && ariaActiveDescendantProp),\n onKeyDown: commonOnKeyDown,\n onPointerMove() {\n isPointerModalityRef.current = true;\n }\n };\n }, [ariaActiveDescendantProp, commonOnKeyDown, elements.domReference, orientation]);\n const reference = React.useMemo(() => {\n function checkVirtualMouse(event) {\n if (focusItemOnOpen === 'auto' && isVirtualClick(event.nativeEvent)) {\n focusItemOnOpenRef.current = true;\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 ...ariaActiveDescendantProp,\n onKeyDown(event) {\n isPointerModalityRef.current = false;\n const isArrowKey = event.key.startsWith('Arrow');\n const isHomeOrEndKey = ['Home', 'End'].includes(event.key);\n const isMoveKey = isArrowKey || isHomeOrEndKey;\n const isCrossOpenKey = isCrossOrientationOpenKey(event.key, orientation, rtl);\n const isCrossCloseKey = isCrossOrientationCloseKey(event.key, orientation, rtl);\n const isMainKey = isMainOrientationKey(event.key, orientation);\n const isNavigationKey = (nested ? isCrossOpenKey : isMainKey) || event.key === 'Enter' || event.key.trim() === '';\n if (virtual && open) {\n const rootNode = tree == null ? void 0 : tree.nodesRef.current.find(node => node.parentId == null);\n const deepestNode = tree && rootNode ? getDeepestNode(tree.nodesRef.current, rootNode.id) : null;\n if (isMoveKey && deepestNode && virtualItemRef) {\n const eventObject = new KeyboardEvent('keydown', {\n key: event.key,\n bubbles: true\n });\n if (isCrossOpenKey || isCrossCloseKey) {\n var _deepestNode$context, _deepestNode$context2;\n const isCurrentTarget = ((_deepestNode$context = deepestNode.context) == null ? void 0 : _deepestNode$context.elements.domReference) === event.currentTarget;\n const dispatchItem = isCrossCloseKey && !isCurrentTarget ? (_deepestNode$context2 = deepestNode.context) == null ? void 0 : _deepestNode$context2.elements.domReference : isCrossOpenKey ? listRef.current.find(item => (item == null ? void 0 : item.id) === activeId) : null;\n if (dispatchItem) {\n stopEvent(event);\n dispatchItem.dispatchEvent(eventObject);\n setVirtualId(undefined);\n }\n }\n if ((isMainKey || isHomeOrEndKey) && deepestNode.context) {\n if (deepestNode.context.open && deepestNode.parentId && event.currentTarget !== deepestNode.context.elements.domReference) {\n var _deepestNode$context$;\n stopEvent(event);\n (_deepestNode$context$ = deepestNode.context.elements.domReference) == null || _deepestNode$context$.dispatchEvent(eventObject);\n return;\n }\n }\n }\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 (!open && !openOnArrowKeyDown && isArrowKey) {\n return;\n }\n if (isNavigationKey) {\n keyRef.current = nested && isMainKey ? null : event.key;\n }\n if (nested) {\n if (isCrossOpenKey) {\n stopEvent(event);\n if (open) {\n indexRef.current = getMinIndex(listRef, disabledIndicesRef.current);\n onNavigate(indexRef.current);\n } else {\n onOpenChange(true, event.nativeEvent, 'list-navigation');\n }\n }\n return;\n }\n if (isMainKey) {\n if (selectedIndex != null) {\n indexRef.current = selectedIndex;\n }\n stopEvent(event);\n if (!open && openOnArrowKeyDown) {\n onOpenChange(true, event.nativeEvent, 'list-navigation');\n } else {\n commonOnKeyDown(event);\n }\n if (open) {\n onNavigate(indexRef.current);\n }\n }\n },\n onFocus() {\n if (open && !virtual) {\n onNavigate(null);\n }\n },\n onPointerDown: checkVirtualPointer,\n onMouseDown: checkVirtualMouse,\n onClick: checkVirtualMouse\n };\n }, [activeId, ariaActiveDescendantProp, commonOnKeyDown, disabledIndicesRef, focusItemOnOpen, listRef, nested, onNavigate, onOpenChange, open, openOnArrowKeyDown, orientation, rtl, selectedIndex, tree, virtual, virtualItemRef]);\n return React.useMemo(() => enabled ? {\n reference,\n floating,\n item\n } : {}, [enabled, reference, floating, item]);\n}\n\nconst componentRoleToAriaRoleMap = /*#__PURE__*/new Map([['select', 'listbox'], ['combobox', 'listbox'], ['label', false]]);\n\n/**\n * Adds base screen reader props to the reference and floating elements for a\n * given floating element `role`.\n * @see https://floating-ui.com/docs/useRole\n */\nfunction useRole(context, props) {\n var _componentRoleToAriaR;\n if (props === void 0) {\n props = {};\n }\n const {\n open,\n floatingId\n } = context;\n const {\n enabled = true,\n role = 'dialog'\n } = props;\n const ariaRole = (_componentRoleToAriaR = componentRoleToAriaRoleMap.get(role)) != null ? _componentRoleToAriaR : role;\n const referenceId = useId();\n const parentId = useFloatingParentNodeId();\n const isNested = parentId != null;\n const reference = React.useMemo(() => {\n if (ariaRole === 'tooltip' || role === 'label') {\n return {\n [\"aria-\" + (role === 'label' ? 'labelledby' : 'describedby')]: open ? floatingId : undefined\n };\n }\n return {\n 'aria-expanded': open ? 'true' : 'false',\n 'aria-haspopup': ariaRole === 'alertdialog' ? 'dialog' : ariaRole,\n 'aria-controls': open ? floatingId : undefined,\n ...(ariaRole === 'listbox' && {\n role: 'combobox'\n }),\n ...(ariaRole === 'menu' && {\n id: referenceId\n }),\n ...(ariaRole === 'menu' && isNested && {\n role: 'menuitem'\n }),\n ...(role === 'select' && {\n 'aria-autocomplete': 'none'\n }),\n ...(role === 'combobox' && {\n 'aria-autocomplete': 'list'\n })\n };\n }, [ariaRole, floatingId, isNested, open, referenceId, role]);\n const floating = React.useMemo(() => {\n const floatingProps = {\n id: floatingId,\n ...(ariaRole && {\n role: ariaRole\n })\n };\n if (ariaRole === 'tooltip' || role === 'label') {\n return floatingProps;\n }\n return {\n ...floatingProps,\n ...(ariaRole === 'menu' && {\n 'aria-labelledby': referenceId\n })\n };\n }, [ariaRole, floatingId, referenceId, role]);\n const item = React.useCallback(_ref => {\n let {\n active,\n selected\n } = _ref;\n const commonProps = {\n role: 'option',\n ...(active && {\n id: floatingId + \"-option\"\n })\n };\n\n // For `menu`, we are unable to tell if the item is a `menuitemradio`\n // or `menuitemcheckbox`. For backwards-compatibility reasons, also\n // avoid defaulting to `menuitem` as it may overwrite custom role props.\n switch (role) {\n case 'select':\n return {\n ...commonProps,\n 'aria-selected': active && selected\n };\n case 'combobox':\n {\n return {\n ...commonProps,\n ...(active && {\n 'aria-selected': true\n })\n };\n }\n }\n return {};\n }, [floatingId, role]);\n return React.useMemo(() => enabled ? {\n reference,\n floating,\n item\n } : {}, [enabled, reference, floating, item]);\n}\n\n// Converts a JS style key like `backgroundColor` to a CSS transition-property\n// like `background-color`.\nconst camelCaseToKebabCase = str => str.replace(/[A-Z]+(?![a-z])|[A-Z]/g, ($, ofs) => (ofs ? '-' : '') + $.toLowerCase());\nfunction execWithArgsOrReturn(valueOrFn, args) {\n return typeof valueOrFn === 'function' ? valueOrFn(args) : valueOrFn;\n}\nfunction useDelayUnmount(open, durationMs) {\n const [isMounted, setIsMounted] = React.useState(open);\n if (open && !isMounted) {\n setIsMounted(true);\n }\n React.useEffect(() => {\n if (!open && isMounted) {\n const timeout = setTimeout(() => setIsMounted(false), durationMs);\n return () => clearTimeout(timeout);\n }\n }, [open, isMounted, durationMs]);\n return isMounted;\n}\n/**\n * Provides a status string to apply CSS transitions to a floating element,\n * correctly handling placement-aware transitions.\n * @see https://floating-ui.com/docs/useTransition#usetransitionstatus\n */\nfunction useTransitionStatus(context, props) {\n if (props === void 0) {\n props = {};\n }\n const {\n open,\n elements: {\n floating\n }\n } = context;\n const {\n duration = 250\n } = props;\n const isNumberDuration = typeof duration === 'number';\n const closeDuration = (isNumberDuration ? duration : duration.close) || 0;\n const [status, setStatus] = React.useState('unmounted');\n const isMounted = useDelayUnmount(open, closeDuration);\n if (!isMounted && status === 'close') {\n setStatus('unmounted');\n }\n index(() => {\n if (!floating) return;\n if (open) {\n setStatus('initial');\n const frame = requestAnimationFrame(() => {\n setStatus('open');\n });\n return () => {\n cancelAnimationFrame(frame);\n };\n }\n setStatus('close');\n }, [open, floating]);\n return {\n isMounted,\n status\n };\n}\n/**\n * Provides styles to apply CSS transitions to a floating element, correctly\n * handling placement-aware transitions. Wrapper around `useTransitionStatus`.\n * @see https://floating-ui.com/docs/useTransition#usetransitionstyles\n */\nfunction useTransitionStyles(context, props) {\n if (props === void 0) {\n props = {};\n }\n const {\n initial: unstable_initial = {\n opacity: 0\n },\n open: unstable_open,\n close: unstable_close,\n common: unstable_common,\n duration = 250\n } = props;\n const placement = context.placement;\n const side = placement.split('-')[0];\n const fnArgs = React.useMemo(() => ({\n side,\n placement\n }), [side, placement]);\n const isNumberDuration = typeof duration === 'number';\n const openDuration = (isNumberDuration ? duration : duration.open) || 0;\n const closeDuration = (isNumberDuration ? duration : duration.close) || 0;\n const [styles, setStyles] = React.useState(() => ({\n ...execWithArgsOrReturn(unstable_common, fnArgs),\n ...execWithArgsOrReturn(unstable_initial, fnArgs)\n }));\n const {\n isMounted,\n status\n } = useTransitionStatus(context, {\n duration\n });\n const initialRef = useLatestRef(unstable_initial);\n const openRef = useLatestRef(unstable_open);\n const closeRef = useLatestRef(unstable_close);\n const commonRef = useLatestRef(unstable_common);\n index(() => {\n const initialStyles = execWithArgsOrReturn(initialRef.current, fnArgs);\n const closeStyles = execWithArgsOrReturn(closeRef.current, fnArgs);\n const commonStyles = execWithArgsOrReturn(commonRef.current, fnArgs);\n const openStyles = execWithArgsOrReturn(openRef.current, fnArgs) || Object.keys(initialStyles).reduce((acc, key) => {\n acc[key] = '';\n return acc;\n }, {});\n if (status === 'initial') {\n setStyles(styles => ({\n transitionProperty: styles.transitionProperty,\n ...commonStyles,\n ...initialStyles\n }));\n }\n if (status === 'open') {\n setStyles({\n transitionProperty: Object.keys(openStyles).map(camelCaseToKebabCase).join(','),\n transitionDuration: openDuration + \"ms\",\n ...commonStyles,\n ...openStyles\n });\n }\n if (status === 'close') {\n const styles = closeStyles || initialStyles;\n setStyles({\n transitionProperty: Object.keys(styles).map(camelCaseToKebabCase).join(','),\n transitionDuration: closeDuration + \"ms\",\n ...commonStyles,\n ...styles\n });\n }\n }, [closeDuration, closeRef, initialRef, openRef, commonRef, openDuration, status, fnArgs]);\n return {\n isMounted,\n styles\n };\n}\n\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 */\nfunction useTypeahead(context, props) {\n var _ref;\n const {\n open,\n dataRef\n } = context;\n const {\n listRef,\n activeIndex,\n onMatch: unstable_onMatch,\n onTypingChange: unstable_onTypingChange,\n enabled = true,\n findMatch = null,\n resetMs = 750,\n ignoreKeys = [],\n selectedIndex = null\n } = props;\n const timeoutIdRef = React.useRef();\n const stringRef = React.useRef('');\n const prevIndexRef = React.useRef((_ref = selectedIndex != null ? selectedIndex : activeIndex) != null ? _ref : -1);\n const matchIndexRef = React.useRef(null);\n const onMatch = useEffectEvent(unstable_onMatch);\n const onTypingChange = useEffectEvent(unstable_onTypingChange);\n const findMatchRef = useLatestRef(findMatch);\n const ignoreKeysRef = useLatestRef(ignoreKeys);\n index(() => {\n if (open) {\n clearTimeout(timeoutIdRef.current);\n matchIndexRef.current = null;\n stringRef.current = '';\n }\n }, [open]);\n index(() => {\n // Sync arrow key navigation but not typeahead navigation.\n if (open && stringRef.current === '') {\n var _ref2;\n prevIndexRef.current = (_ref2 = selectedIndex != null ? selectedIndex : activeIndex) != null ? _ref2 : -1;\n }\n }, [open, selectedIndex, activeIndex]);\n const setTypingChange = useEffectEvent(value => {\n if (value) {\n if (!dataRef.current.typing) {\n dataRef.current.typing = value;\n onTypingChange(value);\n }\n } else {\n if (dataRef.current.typing) {\n dataRef.current.typing = value;\n onTypingChange(value);\n }\n }\n });\n const onKeyDown = useEffectEvent(event => {\n function getMatchingIndex(list, orderedList, string) {\n const str = findMatchRef.current ? findMatchRef.current(orderedList, string) : orderedList.find(text => (text == null ? void 0 : 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 || ignoreKeysRef.current.includes(event.key) ||\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 // 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 => {\n var _text$, _text$2;\n return text ? ((_text$ = text[0]) == null ? void 0 : _text$.toLocaleLowerCase()) !== ((_text$2 = text[1]) == null ? void 0 : _text$2.toLocaleLowerCase()) : true;\n });\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 clearTimeout(timeoutIdRef.current);\n timeoutIdRef.current = setTimeout(() => {\n stringRef.current = '';\n prevIndexRef.current = matchIndexRef.current;\n setTypingChange(false);\n }, resetMs);\n const prevIndex = 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 onMatch(index);\n matchIndexRef.current = index;\n } else if (event.key !== ' ') {\n stringRef.current = '';\n setTypingChange(false);\n }\n });\n const reference = React.useMemo(() => ({\n onKeyDown\n }), [onKeyDown]);\n const floating = React.useMemo(() => {\n return {\n onKeyDown,\n onKeyUp(event) {\n if (event.key === ' ') {\n setTypingChange(false);\n }\n }\n };\n }, [onKeyDown, setTypingChange]);\n return React.useMemo(() => enabled ? {\n reference,\n floating\n } : {}, [enabled, reference, floating]);\n}\n\nfunction getArgsWithCustomFloatingHeight(state, height) {\n return {\n ...state,\n rects: {\n ...state.rects,\n floating: {\n ...state.rects.floating,\n height\n }\n }\n };\n}\n/**\n * Positions the floating element such that an inner element inside of it is\n * anchored to the reference element.\n * @see https://floating-ui.com/docs/inner\n */\nconst inner = props => ({\n name: 'inner',\n options: props,\n async fn(state) {\n const {\n listRef,\n overflowRef,\n onFallbackChange,\n offset: innerOffset = 0,\n index = 0,\n minItemsVisible = 4,\n referenceOverflowThreshold = 0,\n scrollRef,\n ...detectOverflowOptions\n } = evaluate(props, state);\n const {\n rects,\n elements: {\n floating\n }\n } = state;\n const item = listRef.current[index];\n const scrollEl = (scrollRef == null ? void 0 : scrollRef.current) || floating;\n\n // Valid combinations:\n // 1. Floating element is the scrollRef and has a border (default)\n // 2. Floating element is not the scrollRef, floating element has a border\n // 3. Floating element is not the scrollRef, scrollRef has a border\n // Floating > {...getFloatingProps()} wrapper > scrollRef > items is not\n // allowed as VoiceOver doesn't work.\n const clientTop = floating.clientTop || scrollEl.clientTop;\n const floatingIsBordered = floating.clientTop !== 0;\n const scrollElIsBordered = scrollEl.clientTop !== 0;\n const floatingIsScrollEl = floating === scrollEl;\n if (process.env.NODE_ENV !== \"production\") {\n if (!state.placement.startsWith('bottom')) {\n warn('`placement` side must be \"bottom\" when using the `inner`', 'middleware.');\n }\n }\n if (!item) {\n return {};\n }\n const nextArgs = {\n ...state,\n ...(await offset(-item.offsetTop - floating.clientTop - rects.reference.height / 2 - item.offsetHeight / 2 - innerOffset).fn(state))\n };\n const overflow = await detectOverflow(getArgsWithCustomFloatingHeight(nextArgs, scrollEl.scrollHeight + clientTop + floating.clientTop), detectOverflowOptions);\n const refOverflow = await detectOverflow(nextArgs, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const diffY = max(0, overflow.top);\n const nextY = nextArgs.y + diffY;\n const isScrollable = scrollEl.scrollHeight > scrollEl.clientHeight;\n const rounder = isScrollable ? v => v : round;\n const maxHeight = rounder(max(0, scrollEl.scrollHeight + (floatingIsBordered && floatingIsScrollEl || scrollElIsBordered ? clientTop * 2 : 0) - diffY - max(0, overflow.bottom)));\n scrollEl.style.maxHeight = maxHeight + \"px\";\n scrollEl.scrollTop = diffY;\n\n // There is not enough space, fallback to standard anchored positioning\n if (onFallbackChange) {\n const shouldFallback = scrollEl.offsetHeight < item.offsetHeight * min(minItemsVisible, listRef.current.length) - 1 || refOverflow.top >= -referenceOverflowThreshold || refOverflow.bottom >= -referenceOverflowThreshold;\n ReactDOM.flushSync(() => onFallbackChange(shouldFallback));\n }\n if (overflowRef) {\n overflowRef.current = await detectOverflow(getArgsWithCustomFloatingHeight({\n ...nextArgs,\n y: nextY\n }, scrollEl.offsetHeight + clientTop + floating.clientTop), detectOverflowOptions);\n }\n return {\n y: nextY\n };\n }\n});\n/**\n * Changes the `inner` middleware's `offset` upon a `wheel` event to\n * expand the floating element's height, revealing more list items.\n * @see https://floating-ui.com/docs/inner\n */\nfunction useInnerOffset(context, props) {\n const {\n open,\n elements\n } = context;\n const {\n enabled = true,\n overflowRef,\n scrollRef,\n onChange: unstable_onChange\n } = props;\n const onChange = useEffectEvent(unstable_onChange);\n const controlledScrollingRef = React.useRef(false);\n const prevScrollTopRef = React.useRef(null);\n const initialOverflowRef = React.useRef(null);\n React.useEffect(() => {\n if (!enabled) return;\n function onWheel(e) {\n if (e.ctrlKey || !el || overflowRef.current == null) {\n return;\n }\n const dY = e.deltaY;\n const isAtTop = overflowRef.current.top >= -0.5;\n const isAtBottom = overflowRef.current.bottom >= -0.5;\n const remainingScroll = el.scrollHeight - el.clientHeight;\n const sign = dY < 0 ? -1 : 1;\n const method = dY < 0 ? 'max' : 'min';\n if (el.scrollHeight <= el.clientHeight) {\n return;\n }\n if (!isAtTop && dY > 0 || !isAtBottom && dY < 0) {\n e.preventDefault();\n ReactDOM.flushSync(() => {\n onChange(d => d + Math[method](dY, remainingScroll * sign));\n });\n } else if (/firefox/i.test(getUserAgent())) {\n // Needed to propagate scrolling during momentum scrolling phase once\n // it gets limited by the boundary. UX improvement, not critical.\n el.scrollTop += dY;\n }\n }\n const el = (scrollRef == null ? void 0 : scrollRef.current) || elements.floating;\n if (open && el) {\n el.addEventListener('wheel', onWheel);\n\n // Wait for the position to be ready.\n requestAnimationFrame(() => {\n prevScrollTopRef.current = el.scrollTop;\n if (overflowRef.current != null) {\n initialOverflowRef.current = {\n ...overflowRef.current\n };\n }\n });\n return () => {\n prevScrollTopRef.current = null;\n initialOverflowRef.current = null;\n el.removeEventListener('wheel', onWheel);\n };\n }\n }, [enabled, open, elements.floating, overflowRef, scrollRef, onChange]);\n const floating = React.useMemo(() => ({\n onKeyDown() {\n controlledScrollingRef.current = true;\n },\n onWheel() {\n controlledScrollingRef.current = false;\n },\n onPointerMove() {\n controlledScrollingRef.current = false;\n },\n onScroll() {\n const el = (scrollRef == null ? void 0 : scrollRef.current) || elements.floating;\n if (!overflowRef.current || !el || !controlledScrollingRef.current) {\n return;\n }\n if (prevScrollTopRef.current !== null) {\n const scrollDiff = el.scrollTop - prevScrollTopRef.current;\n if (overflowRef.current.bottom < -0.5 && scrollDiff < -1 || overflowRef.current.top < -0.5 && scrollDiff > 1) {\n ReactDOM.flushSync(() => onChange(d => d + scrollDiff));\n }\n }\n\n // [Firefox] Wait for the height change to have been applied.\n requestAnimationFrame(() => {\n prevScrollTopRef.current = el.scrollTop;\n });\n }\n }), [elements.floating, onChange, overflowRef, scrollRef]);\n return React.useMemo(() => enabled ? {\n floating\n } : {}, [enabled, floating]);\n}\n\nfunction isPointInPolygon(point, polygon) {\n const [x, y] = point;\n let isInside = false;\n const length = polygon.length;\n for (let i = 0, j = length - 1; i < length; j = i++) {\n const [xi, yi] = polygon[i] || [0, 0];\n const [xj, yj] = polygon[j] || [0, 0];\n const intersect = yi >= y !== yj >= y && x <= (xj - xi) * (y - yi) / (yj - yi) + xi;\n if (intersect) {\n isInside = !isInside;\n }\n }\n return isInside;\n}\nfunction isInside(point, rect) {\n return point[0] >= rect.x && point[0] <= rect.x + rect.width && point[1] >= rect.y && point[1] <= rect.y + rect.height;\n}\n/**\n * Generates a safe polygon area that the user can traverse without closing the\n * floating element once leaving the reference element.\n * @see https://floating-ui.com/docs/useHover#safepolygon\n */\nfunction safePolygon(options) {\n if (options === void 0) {\n options = {};\n }\n const {\n buffer = 0.5,\n blockPointerEvents = false,\n requireIntent = true\n } = options;\n let timeoutId;\n let hasLanded = false;\n let lastX = null;\n let lastY = null;\n let lastCursorTime = performance.now();\n function getCursorSpeed(x, y) {\n const currentTime = performance.now();\n const elapsedTime = currentTime - lastCursorTime;\n if (lastX === null || lastY === null || elapsedTime === 0) {\n lastX = x;\n lastY = y;\n lastCursorTime = currentTime;\n return null;\n }\n const deltaX = x - lastX;\n const deltaY = y - lastY;\n const distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n const speed = distance / elapsedTime; // px / ms\n\n lastX = x;\n lastY = y;\n lastCursorTime = currentTime;\n return speed;\n }\n const fn = _ref => {\n let {\n x,\n y,\n placement,\n elements,\n onClose,\n nodeId,\n tree\n } = _ref;\n return function onMouseMove(event) {\n function close() {\n clearTimeout(timeoutId);\n onClose();\n }\n clearTimeout(timeoutId);\n if (!elements.domReference || !elements.floating || placement == null || x == null || y == null) {\n return;\n }\n const {\n clientX,\n clientY\n } = event;\n const clientPoint = [clientX, clientY];\n const target = getTarget(event);\n const isLeave = event.type === 'mouseleave';\n const isOverFloatingEl = contains(elements.floating, target);\n const isOverReferenceEl = contains(elements.domReference, target);\n const refRect = elements.domReference.getBoundingClientRect();\n const rect = elements.floating.getBoundingClientRect();\n const side = placement.split('-')[0];\n const cursorLeaveFromRight = x > rect.right - rect.width / 2;\n const cursorLeaveFromBottom = y > rect.bottom - rect.height / 2;\n const isOverReferenceRect = isInside(clientPoint, refRect);\n const isFloatingWider = rect.width > refRect.width;\n const isFloatingTaller = rect.height > refRect.height;\n const left = (isFloatingWider ? refRect : rect).left;\n const right = (isFloatingWider ? refRect : rect).right;\n const top = (isFloatingTaller ? refRect : rect).top;\n const bottom = (isFloatingTaller ? refRect : rect).bottom;\n if (isOverFloatingEl) {\n hasLanded = true;\n if (!isLeave) {\n return;\n }\n }\n if (isOverReferenceEl) {\n hasLanded = false;\n }\n if (isOverReferenceEl && !isLeave) {\n hasLanded = true;\n return;\n }\n\n // Prevent overlapping floating element from being stuck in an open-close\n // loop: https://github.com/floating-ui/floating-ui/issues/1910\n if (isLeave && isElement(event.relatedTarget) && contains(elements.floating, event.relatedTarget)) {\n return;\n }\n\n // If any nested child is open, abort.\n if (tree && getChildren(tree.nodesRef.current, nodeId).some(_ref2 => {\n let {\n context\n } = _ref2;\n return context == null ? void 0 : context.open;\n })) {\n return;\n }\n\n // If the pointer is leaving from the opposite side, the \"buffer\" logic\n // creates a point where the floating element remains open, but should be\n // ignored.\n // A constant of 1 handles floating point rounding errors.\n if (side === 'top' && y >= refRect.bottom - 1 || side === 'bottom' && y <= refRect.top + 1 || side === 'left' && x >= refRect.right - 1 || side === 'right' && x <= refRect.left + 1) {\n return close();\n }\n\n // Ignore when the cursor is within the rectangular trough between the\n // two elements. Since the triangle is created from the cursor point,\n // which can start beyond the ref element's edge, traversing back and\n // forth from the ref to the floating element can cause it to close. This\n // ensures it always remains open in that case.\n let rectPoly = [];\n switch (side) {\n case 'top':\n rectPoly = [[left, refRect.top + 1], [left, rect.bottom - 1], [right, rect.bottom - 1], [right, refRect.top + 1]];\n break;\n case 'bottom':\n rectPoly = [[left, rect.top + 1], [left, refRect.bottom - 1], [right, refRect.bottom - 1], [right, rect.top + 1]];\n break;\n case 'left':\n rectPoly = [[rect.right - 1, bottom], [rect.right - 1, top], [refRect.left + 1, top], [refRect.left + 1, bottom]];\n break;\n case 'right':\n rectPoly = [[refRect.right - 1, bottom], [refRect.right - 1, top], [rect.left + 1, top], [rect.left + 1, bottom]];\n break;\n }\n function getPolygon(_ref3) {\n let [x, y] = _ref3;\n switch (side) {\n case 'top':\n {\n const cursorPointOne = [isFloatingWider ? x + buffer / 2 : cursorLeaveFromRight ? x + buffer * 4 : x - buffer * 4, y + buffer + 1];\n const cursorPointTwo = [isFloatingWider ? x - buffer / 2 : cursorLeaveFromRight ? x + buffer * 4 : x - buffer * 4, y + buffer + 1];\n const commonPoints = [[rect.left, cursorLeaveFromRight ? rect.bottom - buffer : isFloatingWider ? rect.bottom - buffer : rect.top], [rect.right, cursorLeaveFromRight ? isFloatingWider ? rect.bottom - buffer : rect.top : rect.bottom - buffer]];\n return [cursorPointOne, cursorPointTwo, ...commonPoints];\n }\n case 'bottom':\n {\n const cursorPointOne = [isFloatingWider ? x + buffer / 2 : cursorLeaveFromRight ? x + buffer * 4 : x - buffer * 4, y - buffer];\n const cursorPointTwo = [isFloatingWider ? x - buffer / 2 : cursorLeaveFromRight ? x + buffer * 4 : x - buffer * 4, y - buffer];\n const commonPoints = [[rect.left, cursorLeaveFromRight ? rect.top + buffer : isFloatingWider ? rect.top + buffer : rect.bottom], [rect.right, cursorLeaveFromRight ? isFloatingWider ? rect.top + buffer : rect.bottom : rect.top + buffer]];\n return [cursorPointOne, cursorPointTwo, ...commonPoints];\n }\n case 'left':\n {\n const cursorPointOne = [x + buffer + 1, isFloatingTaller ? y + buffer / 2 : cursorLeaveFromBottom ? y + buffer * 4 : y - buffer * 4];\n const cursorPointTwo = [x + buffer + 1, isFloatingTaller ? y - buffer / 2 : cursorLeaveFromBottom ? y + buffer * 4 : y - buffer * 4];\n const commonPoints = [[cursorLeaveFromBottom ? rect.right - buffer : isFloatingTaller ? rect.right - buffer : rect.left, rect.top], [cursorLeaveFromBottom ? isFloatingTaller ? rect.right - buffer : rect.left : rect.right - buffer, rect.bottom]];\n return [...commonPoints, cursorPointOne, cursorPointTwo];\n }\n case 'right':\n {\n const cursorPointOne = [x - buffer, isFloatingTaller ? y + buffer / 2 : cursorLeaveFromBottom ? y + buffer * 4 : y - buffer * 4];\n const cursorPointTwo = [x - buffer, isFloatingTaller ? y - buffer / 2 : cursorLeaveFromBottom ? y + buffer * 4 : y - buffer * 4];\n const commonPoints = [[cursorLeaveFromBottom ? rect.left + buffer : isFloatingTaller ? rect.left + buffer : rect.right, rect.top], [cursorLeaveFromBottom ? isFloatingTaller ? rect.left + buffer : rect.right : rect.left + buffer, rect.bottom]];\n return [cursorPointOne, cursorPointTwo, ...commonPoints];\n }\n }\n }\n if (isPointInPolygon([clientX, clientY], rectPoly)) {\n return;\n }\n if (hasLanded && !isOverReferenceRect) {\n return close();\n }\n if (!isLeave && requireIntent) {\n const cursorSpeed = getCursorSpeed(event.clientX, event.clientY);\n const cursorSpeedThreshold = 0.1;\n if (cursorSpeed !== null && cursorSpeed < cursorSpeedThreshold) {\n return close();\n }\n }\n if (!isPointInPolygon([clientX, clientY], getPolygon([x, y]))) {\n close();\n } else if (!hasLanded && requireIntent) {\n timeoutId = window.setTimeout(close, 40);\n }\n };\n };\n fn.__options = {\n blockPointerEvents\n };\n return fn;\n}\n\nexport { Composite, CompositeItem, FloatingArrow, FloatingDelayGroup, FloatingFocusManager, FloatingList, FloatingNode, FloatingOverlay, FloatingPortal, FloatingTree, inner, safePolygon, useClick, useClientPoint, useDelayGroup, useDelayGroupContext, useDismiss, useFloating, useFloatingNodeId, useFloatingParentNodeId, useFloatingPortalNode, useFloatingRootContext, useFloatingTree, useFocus, useHover, useId, useInnerOffset, useInteractions, useListItem, useListNavigation, useMergeRefs, useRole, useTransitionStatus, useTransitionStyles, useTypeahead };\n","import{autoUpdate as Z,flip as ee,inner as te,offset as ne,shift as re,size as le,useFloating as oe,useInnerOffset as ie,useInteractions as se}from\"@floating-ui/react\";import*as j from\"react\";import{createContext as _,useCallback as ae,useContext as T,useMemo as R,useRef as ue,useState as v}from\"react\";import{useDisposables as fe}from'../hooks/use-disposables.js';import{useEvent as z}from'../hooks/use-event.js';import{useIsoMorphicEffect as C}from'../hooks/use-iso-morphic-effect.js';import*as pe from'../utils/dom.js';let y=_({styles:void 0,setReference:()=>{},setFloating:()=>{},getReferenceProps:()=>({}),getFloatingProps:()=>({}),slot:{}});y.displayName=\"FloatingContext\";let $=_(null);$.displayName=\"PlacementContext\";function ye(e){return R(()=>e?typeof e==\"string\"?{to:e}:e:null,[e])}function Fe(){return T(y).setReference}function be(){return T(y).getReferenceProps}function Te(){let{getFloatingProps:e,slot:t}=T(y);return ae((...n)=>Object.assign({},e(...n),{\"data-anchor\":t.anchor}),[e,t])}function Re(e=null){e===!1&&(e=null),typeof e==\"string\"&&(e={to:e});let t=T($),n=R(()=>e,[JSON.stringify(e,(l,o)=>{var u;return(u=o==null?void 0:o.outerHTML)!=null?u:o})]);C(()=>{t==null||t(n!=null?n:null)},[t,n]);let r=T(y);return R(()=>[r.setFloating,e?r.styles:{}],[r.setFloating,e,r.styles])}let D=4;function Ae({children:e,enabled:t=!0}){let[n,r]=v(null),[l,o]=v(0),u=ue(null),[f,s]=v(null);ce(f);let i=t&&n!==null&&f!==null,{to:F=\"bottom\",gap:E=0,offset:A=0,padding:c=0,inner:h}=ge(n,f),[a,p=\"center\"]=F.split(\" \");C(()=>{i&&o(0)},[i]);let{refs:b,floatingStyles:S,context:g}=oe({open:i,placement:a===\"selection\"?p===\"center\"?\"bottom\":`bottom-${p}`:p===\"center\"?`${a}`:`${a}-${p}`,strategy:\"absolute\",transform:!1,middleware:[ne({mainAxis:a===\"selection\"?0:E,crossAxis:A}),re({padding:c}),a!==\"selection\"&&ee({padding:c}),a===\"selection\"&&h?te({...h,padding:c,overflowRef:u,offset:l,minItemsVisible:D,referenceOverflowThreshold:c,onFallbackChange(P){var L,N;if(!P)return;let d=g.elements.floating;if(!d)return;let M=parseFloat(getComputedStyle(d).scrollPaddingBottom)||0,I=Math.min(D,d.childElementCount),W=0,B=0;for(let m of(N=(L=g.elements.floating)==null?void 0:L.childNodes)!=null?N:[])if(pe.isHTMLElement(m)){let x=m.offsetTop,k=x+m.clientHeight+M,H=d.scrollTop,U=H+d.clientHeight;if(x>=H&&k<=U)I--;else{B=Math.max(0,Math.min(k,U)-Math.max(x,H)),W=m.clientHeight;break}}I>=1&&o(m=>{let x=W*I-B+M;return m>=x?m:x})}}):null,le({padding:c,apply({availableWidth:P,availableHeight:d,elements:M}){Object.assign(M.floating.style,{overflow:\"auto\",maxWidth:`${P}px`,maxHeight:`min(var(--anchor-max-height, 100vh), ${d}px)`})}})].filter(Boolean),whileElementsMounted:Z}),[w=a,V=p]=g.placement.split(\"-\");a===\"selection\"&&(w=\"selection\");let G=R(()=>({anchor:[w,V].filter(Boolean).join(\" \")}),[w,V]),K=ie(g,{overflowRef:u,onChange:o}),{getReferenceProps:Q,getFloatingProps:X}=se([K]),Y=z(P=>{s(P),b.setFloating(P)});return j.createElement($.Provider,{value:r},j.createElement(y.Provider,{value:{setFloating:Y,setReference:b.setReference,styles:S,getReferenceProps:Q,getFloatingProps:X,slot:G}},e))}function ce(e){C(()=>{if(!e)return;let t=new MutationObserver(()=>{let n=window.getComputedStyle(e).maxHeight,r=parseFloat(n);if(isNaN(r))return;let l=parseInt(n);isNaN(l)||r!==l&&(e.style.maxHeight=`${Math.ceil(r)}px`)});return t.observe(e,{attributes:!0,attributeFilter:[\"style\"]}),()=>{t.disconnect()}},[e])}function ge(e,t){var o,u,f;let n=O((o=e==null?void 0:e.gap)!=null?o:\"var(--anchor-gap, 0)\",t),r=O((u=e==null?void 0:e.offset)!=null?u:\"var(--anchor-offset, 0)\",t),l=O((f=e==null?void 0:e.padding)!=null?f:\"var(--anchor-padding, 0)\",t);return{...e,gap:n,offset:r,padding:l}}function O(e,t,n=void 0){let r=fe(),l=z((s,i)=>{if(s==null)return[n,null];if(typeof s==\"number\")return[s,null];if(typeof s==\"string\"){if(!i)return[n,null];let F=J(s,i);return[F,E=>{let A=q(s);{let c=A.map(h=>window.getComputedStyle(i).getPropertyValue(h));r.requestAnimationFrame(function h(){r.nextFrame(h);let a=!1;for(let[b,S]of A.entries()){let g=window.getComputedStyle(i).getPropertyValue(S);if(c[b]!==g){c[b]=g,a=!0;break}}if(!a)return;let p=J(s,i);F!==p&&(E(p),F=p)})}return r.dispose}]}return[n,null]}),o=R(()=>l(e,t)[0],[e,t]),[u=o,f]=v();return C(()=>{let[s,i]=l(e,t);if(f(s),!!i)return i(f)},[e,t]),u}function q(e){let t=/var\\((.*)\\)/.exec(e);if(t){let n=t[1].indexOf(\",\");if(n===-1)return[t[1]];let r=t[1].slice(0,n).trim(),l=t[1].slice(n+1).trim();return l?[r,...q(l)]:[r]}return[]}function J(e,t){let n=document.createElement(\"div\");t.appendChild(n),n.style.setProperty(\"margin-top\",\"0px\",\"important\"),n.style.setProperty(\"margin-top\",e,\"important\");let r=parseFloat(window.getComputedStyle(n).marginTop)||0;return t.removeChild(n),r}export{Ae as FloatingProvider,Re as useFloatingPanel,Te as useFloatingPanelProps,Fe as useFloatingReference,be as useFloatingReferenceProps,ye as useResolvedAnchor};\n","import r,{cloneElement as l,isValidElement as c,useState as a}from\"react\";function f({children:t,freeze:e},o){let n=u(e,t);return c(n)?l(n,{ref:o}):r.createElement(r.Fragment,null,n)}const s=r.forwardRef(f);function u(t,e){let[o,n]=a(e);return!t&&o!==e&&n(e),t?o:e}export{s as Frozen,u as useFrozenData};\n","import r,{createContext as l,useContext as d}from\"react\";let n=l(null);n.displayName=\"OpenClosedContext\";var i=(e=>(e[e.Open=1]=\"Open\",e[e.Closed=2]=\"Closed\",e[e.Closing=4]=\"Closing\",e[e.Opening=8]=\"Opening\",e))(i||{});function u(){return d(n)}function c({value:o,children:t}){return r.createElement(n.Provider,{value:o},t)}function s({children:o}){return r.createElement(n.Provider,{value:null},o)}export{c as OpenClosedProvider,s as ResetOpenClosedProvider,i as State,u as useOpenClosed};\n","function u(l){throw new Error(\"Unexpected object: \"+l)}var c=(i=>(i[i.First=0]=\"First\",i[i.Previous=1]=\"Previous\",i[i.Next=2]=\"Next\",i[i.Last=3]=\"Last\",i[i.Specific=4]=\"Specific\",i[i.Nothing=5]=\"Nothing\",i))(c||{});function f(l,n){let t=n.resolveItems();if(t.length<=0)return null;let r=n.resolveActiveIndex(),s=r!=null?r:-1;switch(l.focus){case 0:{for(let e=0;e<t.length;++e)if(!n.resolveDisabled(t[e],e,t))return e;return r}case 1:{s===-1&&(s=t.length);for(let e=s-1;e>=0;--e)if(!n.resolveDisabled(t[e],e,t))return e;return r}case 2:{for(let e=s+1;e<t.length;++e)if(!n.resolveDisabled(t[e],e,t))return e;return r}case 3:{for(let e=t.length-1;e>=0;--e)if(!n.resolveDisabled(t[e],e,t))return e;return r}case 4:{for(let e=0;e<t.length;++e)if(n.resolveId(t[e],e,t)===l.id)return e;return r}case 5:return null;default:u(l)}}export{c as Focus,f as calculateActiveIndex};\n","import{useEffect as u,useRef as n}from\"react\";import{microTask as o}from'../utils/micro-task.js';import{useEvent as f}from'./use-event.js';function c(t){let r=f(t),e=n(!1);u(()=>(e.current=!1,()=>{e.current=!0,o(()=>{e.current&&r()})}),[r])}export{c as useOnUnmount};\n","import*as t from\"react\";import{env as f}from'../utils/env.js';function s(){let r=typeof document==\"undefined\";return\"useSyncExternalStore\"in t?(o=>o.useSyncExternalStore)(t)(()=>()=>{},()=>!1,()=>!r):!1}function l(){let r=s(),[e,n]=t.useState(f.isHandoffComplete);return e&&f.isHandoffComplete===!1&&n(!1),t.useEffect(()=>{e!==!0&&n(!0)},[e]),t.useEffect(()=>f.handoff(),[]),r?!1:e}export{l as useServerHandoffComplete};\n","import t,{createContext as r,useContext as c}from\"react\";let e=r(!1);function a(){return c(e)}function l(o){return t.createElement(e.Provider,{value:o.force},o.children)}export{l as ForcePortalRoot,a as usePortalRoot};\n","\"use client\";import i,{Fragment as R,createContext as E,useContext as f,useEffect as A,useMemo as G,useRef as x,useState as b}from\"react\";import{createPortal as H}from\"react-dom\";import{useDisposables as O}from'../../hooks/use-disposables.js';import{useEvent as L}from'../../hooks/use-event.js';import{useOnUnmount as F}from'../../hooks/use-on-unmount.js';import{useOwnerDocument as h}from'../../hooks/use-owner.js';import{useServerHandoffComplete as U}from'../../hooks/use-server-handoff-complete.js';import{optionalRef as N,useSyncRefs as P}from'../../hooks/use-sync-refs.js';import{usePortalRoot as S}from'../../internal/portal-force-root.js';import{env as W}from'../../utils/env.js';import{forwardRefWithAs as T,useRender as d}from'../../utils/render.js';function j(e){let o=S(),l=f(c),[r,p]=b(()=>{var s;if(!o&&l!==null)return(s=l.current)!=null?s:null;if(W.isServer)return null;let t=e==null?void 0:e.getElementById(\"headlessui-portal-root\");if(t)return t;if(e===null)return null;let n=e.createElement(\"div\");return n.setAttribute(\"id\",\"headlessui-portal-root\"),e.body.appendChild(n)});return A(()=>{r!==null&&(e!=null&&e.body.contains(r)||e==null||e.body.appendChild(r))},[r,e]),A(()=>{o||l!==null&&p(l.current)},[l,p,o]),r}let _=R,I=T(function(o,l){let{ownerDocument:r=null,...p}=o,t=x(null),n=P(N(a=>{t.current=a}),l),s=h(t.current),C=r!=null?r:s,u=j(C),y=f(m),g=O(),v=U(),M=d();return F(()=>{var a;u&&u.childNodes.length<=0&&((a=u.parentElement)==null||a.removeChild(u))}),!u||!v?null:H(i.createElement(\"div\",{\"data-headlessui-portal\":\"\",ref:a=>{g.dispose(),y&&a&&g.add(y.register(a))}},M({ourProps:{ref:n},theirProps:p,slot:{},defaultTag:_,name:\"Portal\"})),u)});function D(e,o){let l=P(o),{enabled:r=!0,ownerDocument:p,...t}=e,n=d();return r?i.createElement(I,{...t,ownerDocument:p,ref:l}):n({ourProps:{ref:l},theirProps:t,slot:{},defaultTag:_,name:\"Portal\"})}let J=R,c=E(null);function X(e,o){let{target:l,...r}=e,t={ref:P(o)},n=d();return i.createElement(c.Provider,{value:l},n({ourProps:t,theirProps:r,defaultTag:J,name:\"Popover.Group\"}))}let m=E(null);function oe(){let e=f(m),o=x([]),l=L(t=>(o.current.push(t),e&&e.register(t),()=>r(t))),r=L(t=>{let n=o.current.indexOf(t);n!==-1&&o.current.splice(n,1),e&&e.unregister(t)}),p=G(()=>({register:l,unregister:r,portals:o}),[l,r,o]);return[o,G(()=>function({children:n}){return i.createElement(m.Provider,{value:p},n)},[p])]}let k=T(D),B=T(X),le=Object.assign(k,{Group:B});export{le as Portal,B as PortalGroup,oe as useNestedPortals};\n","import{disposables as r}from'./disposables.js';const c={Idle:{kind:\"Idle\"},Tracked:e=>({kind:\"Tracked\",position:e}),Moved:{kind:\"Moved\"}};function a(e){let t=e.getBoundingClientRect();return`${t.x},${t.y}`}function p(e,t,i){let n=r();if(t.kind===\"Tracked\"){let o=function(){d!==a(e)&&(n.dispose(),i())};var f=o;let{position:d}=t,s=new ResizeObserver(o);s.observe(e),n.add(()=>s.disconnect()),n.addEventListener(window,\"scroll\",o,{passive:!0}),n.addEventListener(window,\"resize\",o)}return()=>n.dispose()}export{c as ElementPositionState,a as computeVisualPosition,p as detectMovement};\n","import*as g from'./dom.js';let a=/([\\u2700-\\u27BF]|[\\uE000-\\uF8FF]|\\uD83C[\\uDC00-\\uDFFF]|\\uD83D[\\uDC00-\\uDFFF]|[\\u2011-\\u26FF]|\\uD83E[\\uDD10-\\uDDFF])/g;function o(e){var l,n;let i=(l=e.innerText)!=null?l:\"\",t=e.cloneNode(!0);if(!g.isHTMLElement(t))return i;let u=!1;for(let f of t.querySelectorAll('[hidden],[aria-hidden],[role=\"img\"]'))f.remove(),u=!0;let r=u?(n=t.innerText)!=null?n:\"\":i;return a.test(r)&&(r=r.replace(a,\"\")),r}function F(e){let i=e.getAttribute(\"aria-label\");if(typeof i==\"string\")return i.trim();let t=e.getAttribute(\"aria-labelledby\");if(t){let u=t.split(\" \").map(r=>{let l=document.getElementById(r);if(l){let n=l.getAttribute(\"aria-label\");return typeof n==\"string\"?n.trim():o(l).trim()}return null}).filter(Boolean);if(u.length>0)return u.join(\", \")}return o(e).trim()}export{F as getTextValue};\n","import{useRef as l}from\"react\";import{getTextValue as i}from'../utils/get-text-value.js';import{useEvent as o}from'./use-event.js';function s(c){let t=l(\"\"),r=l(\"\");return o(()=>{let e=c.current;if(!e)return\"\";let u=e.innerText;if(t.current===u)return r.current;let n=i(e).trim().toLowerCase();return t.current=u,r.current=n,n})}export{s as useTextValue};\n","var T=Object.defineProperty;var y=(e,o,t)=>o in e?T(e,o,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[o]=t;var b=(e,o,t)=>(y(e,typeof o!=\"symbol\"?o+\"\":o,t),t);import{Machine as I,batch as v}from'../../machine.js';import{ActionTypes as R,stackMachines as A}from'../../machines/stack-machine.js';import{Focus as a,calculateActiveIndex as x}from'../../utils/calculate-active-index.js';import{ElementPositionState as S,computeVisualPosition as E,detectMovement as L}from'../../utils/element-movement.js';import{sortByDomNode as M}from'../../utils/focus-management.js';import{match as m}from'../../utils/match.js';var F=(t=>(t[t.Open=0]=\"Open\",t[t.Closed=1]=\"Closed\",t))(F||{}),P=(t=>(t[t.Single=0]=\"Single\",t[t.Multi=1]=\"Multi\",t))(P||{}),C=(t=>(t[t.Pointer=0]=\"Pointer\",t[t.Other=1]=\"Other\",t))(C||{}),k=(r=>(r[r.OpenListbox=0]=\"OpenListbox\",r[r.CloseListbox=1]=\"CloseListbox\",r[r.GoToOption=2]=\"GoToOption\",r[r.Search=3]=\"Search\",r[r.ClearSearch=4]=\"ClearSearch\",r[r.SelectOption=5]=\"SelectOption\",r[r.RegisterOptions=6]=\"RegisterOptions\",r[r.UnregisterOptions=7]=\"UnregisterOptions\",r[r.SetButtonElement=8]=\"SetButtonElement\",r[r.SetOptionsElement=9]=\"SetOptionsElement\",r[r.SortOptions=10]=\"SortOptions\",r[r.MarkButtonAsMoved=11]=\"MarkButtonAsMoved\",r))(k||{});function g(e,o=t=>t){let t=e.activeOptionIndex!==null?e.options[e.activeOptionIndex]:null,n=M(o(e.options.slice()),s=>s.dataRef.current.domRef.current),i=t?n.indexOf(t):null;return i===-1&&(i=null),{options:n,activeOptionIndex:i}}let D={[1](e){if(e.dataRef.current.disabled||e.listboxState===1)return e;let o=e.buttonElement?S.Tracked(E(e.buttonElement)):e.buttonPositionState;return{...e,activeOptionIndex:null,pendingFocus:{focus:a.Nothing},listboxState:1,__demoMode:!1,buttonPositionState:o}},[0](e,o){if(e.dataRef.current.disabled||e.listboxState===0)return e;let t=e.activeOptionIndex,{isSelected:n}=e.dataRef.current,i=e.options.findIndex(s=>n(s.dataRef.current.value));return i!==-1&&(t=i),{...e,frozenValue:!1,pendingFocus:o.focus,listboxState:0,activeOptionIndex:t,__demoMode:!1,buttonPositionState:S.Idle}},[2](e,o){var s,l,c,p,f;if(e.dataRef.current.disabled||e.listboxState===1)return e;let t={...e,searchQuery:\"\",activationTrigger:(s=o.trigger)!=null?s:1,__demoMode:!1};if(o.focus===a.Nothing)return{...t,activeOptionIndex:null};if(o.focus===a.Specific)return{...t,activeOptionIndex:e.options.findIndex(d=>d.id===o.id)};if(o.focus===a.Previous){let d=e.activeOptionIndex;if(d!==null){let O=e.options[d].dataRef.current.domRef,r=x(o,{resolveItems:()=>e.options,resolveActiveIndex:()=>e.activeOptionIndex,resolveId:u=>u.id,resolveDisabled:u=>u.dataRef.current.disabled});if(r!==null){let u=e.options[r].dataRef.current.domRef;if(((l=O.current)==null?void 0:l.previousElementSibling)===u.current||((c=u.current)==null?void 0:c.previousElementSibling)===null)return{...t,activeOptionIndex:r}}}}else if(o.focus===a.Next){let d=e.activeOptionIndex;if(d!==null){let O=e.options[d].dataRef.current.domRef,r=x(o,{resolveItems:()=>e.options,resolveActiveIndex:()=>e.activeOptionIndex,resolveId:u=>u.id,resolveDisabled:u=>u.dataRef.current.disabled});if(r!==null){let u=e.options[r].dataRef.current.domRef;if(((p=O.current)==null?void 0:p.nextElementSibling)===u.current||((f=u.current)==null?void 0:f.nextElementSibling)===null)return{...t,activeOptionIndex:r}}}}let n=g(e),i=x(o,{resolveItems:()=>n.options,resolveActiveIndex:()=>n.activeOptionIndex,resolveId:d=>d.id,resolveDisabled:d=>d.dataRef.current.disabled});return{...t,...n,activeOptionIndex:i}},[3]:(e,o)=>{if(e.dataRef.current.disabled||e.listboxState===1)return e;let n=e.searchQuery!==\"\"?0:1,i=e.searchQuery+o.value.toLowerCase(),l=(e.activeOptionIndex!==null?e.options.slice(e.activeOptionIndex+n).concat(e.options.slice(0,e.activeOptionIndex+n)):e.options).find(p=>{var f;return!p.dataRef.current.disabled&&((f=p.dataRef.current.textValue)==null?void 0:f.startsWith(i))}),c=l?e.options.indexOf(l):-1;return c===-1||c===e.activeOptionIndex?{...e,searchQuery:i}:{...e,searchQuery:i,activeOptionIndex:c,activationTrigger:1}},[4](e){return e.dataRef.current.disabled||e.listboxState===1||e.searchQuery===\"\"?e:{...e,searchQuery:\"\"}},[5](e){return e.dataRef.current.mode===0?{...e,frozenValue:!0}:{...e}},[6]:(e,o)=>{let t=e.options.concat(o.options),n=e.activeOptionIndex;if(e.pendingFocus.focus!==a.Nothing&&(n=x(e.pendingFocus,{resolveItems:()=>t,resolveActiveIndex:()=>e.activeOptionIndex,resolveId:i=>i.id,resolveDisabled:i=>i.dataRef.current.disabled})),e.activeOptionIndex===null){let{isSelected:i}=e.dataRef.current;if(i){let s=t.findIndex(l=>i==null?void 0:i(l.dataRef.current.value));s!==-1&&(n=s)}}return{...e,options:t,activeOptionIndex:n,pendingFocus:{focus:a.Nothing},pendingShouldSort:!0}},[7]:(e,o)=>{let t=e.options,n=[],i=new Set(o.options);for(let[s,l]of t.entries())if(i.has(l.id)&&(n.push(s),i.delete(l.id),i.size===0))break;if(n.length>0){t=t.slice();for(let s of n.reverse())t.splice(s,1)}return{...e,options:t,activationTrigger:1}},[8]:(e,o)=>e.buttonElement===o.element?e:{...e,buttonElement:o.element},[9]:(e,o)=>e.optionsElement===o.element?e:{...e,optionsElement:o.element},[10]:e=>e.pendingShouldSort?{...e,...g(e),pendingShouldSort:!1}:e,[11](e){return e.buttonPositionState.kind!==\"Tracked\"?e:{...e,buttonPositionState:S.Moved}}};class h extends I{constructor(t){super(t);b(this,\"actions\",{onChange:t=>{let{onChange:n,compare:i,mode:s,value:l}=this.state.dataRef.current;return m(s,{[0]:()=>n==null?void 0:n(t),[1]:()=>{let c=l.slice(),p=c.findIndex(f=>i(f,t));return p===-1?c.push(t):c.splice(p,1),n==null?void 0:n(c)}})},registerOption:v(()=>{let t=[],n=new Set;return[(i,s)=>{n.has(s)||(n.add(s),t.push({id:i,dataRef:s}))},()=>(n.clear(),this.send({type:6,options:t.splice(0)}))]}),unregisterOption:v(()=>{let t=[];return[n=>t.push(n),()=>{this.send({type:7,options:t.splice(0)})}]}),goToOption:v(()=>{let t=null;return[(n,i)=>{t={type:2,...n,trigger:i}},()=>t&&this.send(t)]}),closeListbox:()=>{this.send({type:1})},openListbox:t=>{this.send({type:0,focus:t})},selectActiveOption:()=>{var t;if(this.state.activeOptionIndex!==null){let{dataRef:n}=this.state.options[this.state.activeOptionIndex];this.actions.selectOption(n.current.value)}else this.state.dataRef.current.mode===0&&(this.actions.closeListbox(),(t=this.state.buttonElement)==null||t.focus({preventScroll:!0}))},selectOption:t=>{this.send({type:5,value:t})},search:t=>{this.send({type:3,value:t})},clearSearch:()=>{this.send({type:4})},setButtonElement:t=>{this.send({type:8,element:t})},setOptionsElement:t=>{this.send({type:9,element:t})}});b(this,\"selectors\",{activeDescendantId(t){var s;let n=t.activeOptionIndex,i=t.options;return n===null||(s=i[n])==null?void 0:s.id},isActive(t,n){var l;let i=t.activeOptionIndex,s=t.options;return i!==null?((l=s[i])==null?void 0:l.id)===n:!1},hasFrozenValue(t){return t.frozenValue},shouldScrollIntoView(t,n){return t.__demoMode||t.listboxState!==0||t.activationTrigger===0?!1:this.isActive(t,n)},didButtonMove(t){return t.buttonPositionState.kind===\"Moved\"}});this.on(6,()=>{requestAnimationFrame(()=>{this.send({type:10})})});{let n=this.state.id,i=A.get(null);this.disposables.add(i.on(R.Push,s=>{!i.selectors.isTop(s,n)&&this.state.listboxState===0&&this.actions.closeListbox()})),this.on(0,()=>i.actions.push(n)),this.on(1,()=>i.actions.pop(n))}this.disposables.group(n=>{this.on(1,i=>{i.buttonElement&&(n.dispose(),n.add(L(i.buttonElement,i.buttonPositionState,()=>{this.send({type:11})})))})}),this.on(5,(n,i)=>{var s;this.actions.onChange(i.value),this.state.dataRef.current.mode===0&&(this.actions.closeListbox(),(s=this.state.buttonElement)==null||s.focus({preventScroll:!0}))})}static new({id:t,__demoMode:n=!1}){return new h({id:t,dataRef:{current:{}},listboxState:n?0:1,options:[],searchQuery:\"\",activeOptionIndex:null,activationTrigger:1,buttonElement:null,optionsElement:null,pendingShouldSort:!1,pendingFocus:{focus:a.Nothing},frozenValue:!1,__demoMode:n,buttonPositionState:S.Idle})}reduce(t,n){return m(n.type,D,t,n)}}export{k as ActionTypes,C as ActivationTrigger,h as ListboxMachine,F as ListboxStates,P as ValueMode};\n","import{createContext as n,useContext as r,useMemo as i}from\"react\";import{useOnUnmount as s}from'../../hooks/use-on-unmount.js';import{ListboxMachine as a}from'./listbox-machine.js';const c=n(null);function p(o){let e=r(c);if(e===null){let t=new Error(`<${o} /> is missing a parent <Listbox /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(t,u),t}return e}function u({id:o,__demoMode:e=!1}){let t=i(()=>a.new({id:o,__demoMode:e}),[]);return s(()=>t.dispose()),t}export{c as ListboxContext,u as useListboxMachine,p as useListboxMachineContext};\n","\"use client\";import{useFocusRing as Ee}from\"@react-aria/focus\";import{useHover as he}from\"@react-aria/interactions\";import D,{Fragment as ce,createContext as fe,useCallback as K,useContext as Te,useEffect as Ae,useMemo as _e,useRef as ae,useState as Se}from\"react\";import{flushSync as ie}from\"react-dom\";import{useActivePress as De}from'../../hooks/use-active-press.js';import{useByComparator as Re}from'../../hooks/use-by-comparator.js';import{useControllable as Fe}from'../../hooks/use-controllable.js';import{useDefaultValue as Ce}from'../../hooks/use-default-value.js';import{useDisposables as Me}from'../../hooks/use-disposables.js';import{useElementSize as we}from'../../hooks/use-element-size.js';import{useEvent as B}from'../../hooks/use-event.js';import{useHandleToggle as Be}from'../../hooks/use-handle-toggle.js';import{useId as Y}from'../../hooks/use-id.js';import{useInertOthers as Ie}from'../../hooks/use-inert-others.js';import{useIsoMorphicEffect as se}from'../../hooks/use-iso-morphic-effect.js';import{useLatestValue as ke}from'../../hooks/use-latest-value.js';import{useOnDisappear as Ue}from'../../hooks/use-on-disappear.js';import{useOutsideClick as Ne}from'../../hooks/use-outside-click.js';import{useOwnerDocument as be}from'../../hooks/use-owner.js';import{Action as Z,useQuickRelease as He}from'../../hooks/use-quick-release.js';import{useResolveButtonType as Ge}from'../../hooks/use-resolve-button-type.js';import{useScrollLock as Ve}from'../../hooks/use-scroll-lock.js';import{useSlot as z}from'../../hooks/use-slot.js';import{useSyncRefs as X}from'../../hooks/use-sync-refs.js';import{useTextValue as Ke}from'../../hooks/use-text-value.js';import{useTrackedPointer as ze}from'../../hooks/use-tracked-pointer.js';import{transitionDataAttributes as We,useTransition as Xe}from'../../hooks/use-transition.js';import{useDisabled as je}from'../../internal/disabled.js';import{FloatingProvider as Je,useFloatingPanel as Qe,useFloatingPanelProps as $e,useFloatingReference as qe,useFloatingReferenceProps as Ye,useResolvedAnchor as Ze}from'../../internal/floating.js';import{FormFields as et}from'../../internal/form-fields.js';import{useFrozenData as tt}from'../../internal/frozen.js';import{useProvidedId as ot}from'../../internal/id.js';import{OpenClosedProvider as nt,State as ee,useOpenClosed as rt}from'../../internal/open-closed.js';import{stackMachines as lt}from'../../machines/stack-machine.js';import{useSlice as g}from'../../react-glue.js';import{Focus as v}from'../../utils/calculate-active-index.js';import{disposables as at}from'../../utils/disposables.js';import*as it from'../../utils/dom.js';import{Focus as me,FocusableMode as st,focusFrom as pt,isFocusableElement as ut}from'../../utils/focus-management.js';import{attemptSubmit as dt}from'../../utils/form.js';import{match as te}from'../../utils/match.js';import{isActiveElement as ct}from'../../utils/owner.js';import{RenderFeatures as ye,forwardRefWithAs as j,mergeProps as xe,useRender as J}from'../../utils/render.js';import{useDescribedBy as ft}from'../description/description.js';import{Keys as d}from'../keyboard.js';import{Label as Tt,useLabelledBy as bt,useLabels as mt}from'../label/label.js';import{Portal as yt}from'../portal/portal.js';import{ActionTypes as xt,ActivationTrigger as pe,ListboxStates as T,ValueMode as G}from'./listbox-machine.js';import{ListboxContext as Ot,useListboxMachine as Lt,useListboxMachineContext as ue}from'./listbox-machine-glue.js';let oe=fe(null);oe.displayName=\"ListboxDataContext\";function Q(b){let E=Te(oe);if(E===null){let m=new Error(`<${b} /> is missing a parent <Listbox /> component.`);throw Error.captureStackTrace&&Error.captureStackTrace(m,Q),m}return E}let Pt=ce;function gt(b,E){let m=Y(),u=je(),{value:s,defaultValue:a,form:_,name:i,onChange:y,by:o,invalid:x=!1,disabled:O=u||!1,horizontal:l=!1,multiple:t=!1,__demoMode:p=!1,...S}=b;const h=l?\"horizontal\":\"vertical\";let I=X(E),R=Ce(a),[c=t?[]:void 0,L]=Fe(s,y,R),f=Lt({id:m,__demoMode:p}),k=ae({static:!1,hold:!1}),N=ae(new Map),C=Re(o),V=K(P=>te(n.mode,{[G.Multi]:()=>c.some(W=>C(W,P)),[G.Single]:()=>C(c,P)}),[c]),n=z({value:c,disabled:O,invalid:x,mode:t?G.Multi:G.Single,orientation:h,onChange:L,compare:C,isSelected:V,optionsPropsRef:k,listRef:N});se(()=>{f.state.dataRef.current=n},[n]);let F=g(f,P=>P.listboxState),U=lt.get(null),H=g(U,K(P=>U.selectors.isTop(P,m),[U,m])),[A,$]=g(f,P=>[P.buttonElement,P.optionsElement]);Ne(H,[A,$],(P,W)=>{f.send({type:xt.CloseListbox}),ut(W,st.Loose)||(P.preventDefault(),A==null||A.focus())});let r=z({open:F===T.Open,disabled:O,invalid:x,value:c}),[M,ne]=mt({inherit:!0}),re={ref:I},q=K(()=>{if(R!==void 0)return L==null?void 0:L(R)},[L,R]),le=J();return D.createElement(ne,{value:M,props:{htmlFor:A==null?void 0:A.id},slot:{open:F===T.Open,disabled:O}},D.createElement(Je,null,D.createElement(Ot.Provider,{value:f},D.createElement(oe.Provider,{value:n},D.createElement(nt,{value:te(F,{[T.Open]:ee.Open,[T.Closed]:ee.Closed})},i!=null&&c!=null&&D.createElement(et,{disabled:O,data:{[i]:c},form:_,onReset:q}),le({ourProps:re,theirProps:S,slot:r,defaultTag:Pt,name:\"Listbox\"}))))))}let vt=\"button\";function Et(b,E){let m=Y(),u=ot(),s=Q(\"Listbox.Button\"),a=ue(\"Listbox.Button\"),{id:_=u||`headlessui-listbox-button-${m}`,disabled:i=s.disabled||!1,autoFocus:y=!1,...o}=b,x=X(E,qe(),a.actions.setButtonElement),O=Ye(),[l,t,p]=g(a,r=>[r.listboxState,r.buttonElement,r.optionsElement]),S=l===T.Open;He(S,{trigger:t,action:K(r=>{if(t!=null&&t.contains(r.target))return Z.Ignore;let M=r.target.closest('[role=\"option\"]:not([data-disabled])');return it.isHTMLElement(M)?Z.Select(M):p!=null&&p.contains(r.target)?Z.Ignore:Z.Close},[t,p]),close:a.actions.closeListbox,select:a.actions.selectActiveOption});let h=B(r=>{switch(r.key){case d.Enter:dt(r.currentTarget);break;case d.Space:case d.ArrowDown:r.preventDefault(),a.actions.openListbox({focus:s.value?v.Nothing:v.First});break;case d.ArrowUp:r.preventDefault(),a.actions.openListbox({focus:s.value?v.Nothing:v.Last});break}}),I=B(r=>{switch(r.key){case d.Space:r.preventDefault();break}}),R=Be(r=>{var M;a.state.listboxState===T.Open?(ie(()=>a.actions.closeListbox()),(M=a.state.buttonElement)==null||M.focus({preventScroll:!0})):(r.preventDefault(),a.actions.openListbox({focus:v.Nothing}))}),c=B(r=>r.preventDefault()),L=bt([_]),f=ft(),{isFocusVisible:k,focusProps:N}=Ee({autoFocus:y}),{isHovered:C,hoverProps:V}=he({isDisabled:i}),{pressed:n,pressProps:F}=De({disabled:i}),U=z({open:l===T.Open,active:n||l===T.Open,disabled:i,invalid:s.invalid,value:s.value,hover:C,focus:k,autofocus:y}),H=g(a,r=>r.listboxState===T.Open),A=xe(O(),{ref:x,id:_,type:Ge(b,t),\"aria-haspopup\":\"listbox\",\"aria-controls\":p==null?void 0:p.id,\"aria-expanded\":H,\"aria-labelledby\":L,\"aria-describedby\":f,disabled:i||void 0,autoFocus:y,onKeyDown:h,onKeyUp:I,onKeyPress:c},R,N,V,F);return J()({ourProps:A,theirProps:o,slot:U,defaultTag:vt,name:\"Listbox.Button\"})}let Oe=fe(!1),ht=\"div\",At=ye.RenderStrategy|ye.Static;function _t(b,E){let m=Y(),{id:u=`headlessui-listbox-options-${m}`,anchor:s,portal:a=!1,modal:_=!0,transition:i=!1,...y}=b,o=Ze(s),[x,O]=Se(null);o&&(a=!0);let l=Q(\"Listbox.Options\"),t=ue(\"Listbox.Options\"),[p,S,h,I]=g(t,e=>[e.listboxState,e.buttonElement,e.optionsElement,e.__demoMode]),R=be(S),c=be(h),L=rt(),[f,k]=Xe(i,x,L!==null?(L&ee.Open)===ee.Open:p===T.Open);Ue(f,S,t.actions.closeListbox);let N=I?!1:_&&p===T.Open;Ve(N,c);let C=I?!1:_&&p===T.Open;Ie(C,{allowed:K(()=>[S,h],[S,h])});let n=g(t,t.selectors.didButtonMove)?!1:f,F=g(t,t.selectors.hasFrozenValue)&&!b.static,U=tt(F,l.value),H=K(e=>l.compare(U,e),[l.compare,U]),A=g(t,e=>{var de;if(o==null||!((de=o==null?void 0:o.to)!=null&&de.includes(\"selection\")))return null;let w=e.options.findIndex(ve=>H(ve.dataRef.current.value));return w===-1&&(w=0),w}),$=(()=>{if(o==null)return;if(A===null)return{...o,inner:void 0};let e=Array.from(l.listRef.current.values());return{...o,inner:{listRef:{current:e},index:A}}})(),[r,M]=Qe($),ne=$e(),re=X(E,o?r:null,t.actions.setOptionsElement,O),q=Me();Ae(()=>{let e=h;e&&p===T.Open&&(ct(e)||e==null||e.focus({preventScroll:!0}))},[p,h]);let le=B(e=>{var w;switch(q.dispose(),e.key){case d.Space:if(t.state.searchQuery!==\"\")return e.preventDefault(),e.stopPropagation(),t.actions.search(e.key);case d.Enter:e.preventDefault(),e.stopPropagation(),t.actions.selectActiveOption();break;case te(l.orientation,{vertical:d.ArrowDown,horizontal:d.ArrowRight}):return e.preventDefault(),e.stopPropagation(),t.actions.goToOption({focus:v.Next});case te(l.orientation,{vertical:d.ArrowUp,horizontal:d.ArrowLeft}):return e.preventDefault(),e.stopPropagation(),t.actions.goToOption({focus:v.Previous});case d.Home:case d.PageUp:return e.preventDefault(),e.stopPropagation(),t.actions.goToOption({focus:v.First});case d.End:case d.PageDown:return e.preventDefault(),e.stopPropagation(),t.actions.goToOption({focus:v.Last});case d.Escape:e.preventDefault(),e.stopPropagation(),ie(()=>t.actions.closeListbox()),(w=t.state.buttonElement)==null||w.focus({preventScroll:!0});return;case d.Tab:e.preventDefault(),e.stopPropagation(),ie(()=>t.actions.closeListbox()),pt(t.state.buttonElement,e.shiftKey?me.Previous:me.Next);break;default:e.key.length===1&&(t.actions.search(e.key),q.setTimeout(()=>t.actions.clearSearch(),350));break}}),P=g(t,e=>{var w;return(w=e.buttonElement)==null?void 0:w.id}),W=z({open:p===T.Open}),Le=xe(o?ne():{},{id:u,ref:re,\"aria-activedescendant\":g(t,t.selectors.activeDescendantId),\"aria-multiselectable\":l.mode===G.Multi?!0:void 0,\"aria-labelledby\":P,\"aria-orientation\":l.orientation,onKeyDown:le,role:\"listbox\",tabIndex:p===T.Open?0:void 0,style:{...y.style,...M,\"--button-width\":we(f,S,!0).width},...We(k)}),Pe=J(),ge=_e(()=>l.mode===G.Multi?l:{...l,isSelected:H},[l,H]);return D.createElement(yt,{enabled:a?b.static||f:!1,ownerDocument:R},D.createElement(oe.Provider,{value:ge},Pe({ourProps:Le,theirProps:y,slot:W,defaultTag:ht,features:At,visible:n,name:\"Listbox.Options\"})))}let St=\"div\";function Dt(b,E){let m=Y(),{id:u=`headlessui-listbox-option-${m}`,disabled:s=!1,value:a,..._}=b,i=Te(Oe)===!0,y=Q(\"Listbox.Option\"),o=ue(\"Listbox.Option\"),x=g(o,n=>o.selectors.isActive(n,u)),O=y.isSelected(a),l=ae(null),t=Ke(l),p=ke({disabled:s,value:a,domRef:l,get textValue(){return t()}}),S=X(E,l,n=>{n?y.listRef.current.set(u,n):y.listRef.current.delete(u)}),h=g(o,n=>o.selectors.shouldScrollIntoView(n,u));se(()=>{if(h)return at().requestAnimationFrame(()=>{var n,F;(F=(n=l.current)==null?void 0:n.scrollIntoView)==null||F.call(n,{block:\"nearest\"})})},[h,l]),se(()=>{if(!i)return o.actions.registerOption(u,p),()=>o.actions.unregisterOption(u)},[p,u,i]);let I=B(n=>{if(s)return n.preventDefault();o.actions.selectOption(a)}),R=B(()=>{if(s)return o.actions.goToOption({focus:v.Nothing});o.actions.goToOption({focus:v.Specific,id:u})}),c=ze(),L=B(n=>c.update(n)),f=B(n=>{c.wasMoved(n)&&(s||x&&o.state.activationTrigger===pe.Pointer||o.actions.goToOption({focus:v.Specific,id:u},pe.Pointer))}),k=B(n=>{c.wasMoved(n)&&(s||x&&o.state.activationTrigger===pe.Pointer&&o.actions.goToOption({focus:v.Nothing}))}),N=z({active:x,focus:x,selected:O,disabled:s,selectedOption:O&&i}),C=i?{}:{id:u,ref:S,role:\"option\",tabIndex:s===!0?void 0:-1,\"aria-disabled\":s===!0?!0:void 0,\"aria-selected\":O,disabled:void 0,onClick:I,onFocus:R,onPointerEnter:L,onMouseEnter:L,onPointerMove:f,onMouseMove:f,onPointerLeave:k,onMouseLeave:k},V=J();return!O&&i?null:V({ourProps:C,theirProps:_,slot:N,defaultTag:St,name:\"Listbox.Option\"})}let Rt=ce;function Ft(b,E){let{options:m,placeholder:u,...s}=b,_={ref:X(E)},i=Q(\"ListboxSelectedOption\"),y=z({}),o=i.value===void 0||i.value===null||i.mode===G.Multi&&Array.isArray(i.value)&&i.value.length===0,x=J();return D.createElement(Oe.Provider,{value:!0},x({ourProps:_,theirProps:{...s,children:D.createElement(D.Fragment,null,u&&o?u:m)},slot:y,defaultTag:Rt,name:\"ListboxSelectedOption\"}))}let Ct=j(gt),Mt=j(Et),wt=Tt,Bt=j(_t),It=j(Dt),kt=j(Ft),Mo=Object.assign(Ct,{Button:Mt,Label:wt,Options:Bt,Option:It,SelectedOption:kt});export{Mo as Listbox,Mt as ListboxButton,wt as ListboxLabel,It as ListboxOption,Bt as ListboxOptions,kt as ListboxSelectedOption};\n","import { useQuery, UseQueryResult } from '@tanstack/react-query'\nimport { useWallet } from '@txnlab/use-wallet-react'\nimport algosdk from 'algosdk'\n\n/**\n * Custom hook to fetch account information for Algorand address\n *\n * @param options.enabled Whether to enable the account lookup (defaults to true)\n * @returns Account information query result\n */\nexport function useAccountInfo(\n options: { enabled?: boolean } = {},\n): UseQueryResult<algosdk.modelsv2.Account | null> {\n const { activeAddress, algodClient } = useWallet()\n const { enabled = true } = options\n\n return useQuery({\n queryKey: ['account-info', activeAddress],\n queryFn: async () => {\n if (!activeAddress || !algodClient) return null\n\n try {\n const accountInfo = await algodClient\n .accountInformation(activeAddress)\n .do()\n // Return the entire accountInfo object\n return accountInfo\n } catch (error) {\n throw new Error(`Error fetching account information: ${error}`)\n }\n },\n enabled: enabled && !!activeAddress && !!algodClient,\n refetchOnWindowFocus: true,\n })\n}\n","import React from 'react'\n\nimport { usePlugins } from './PluginContext'\n\nimport type { MenuRenderContext, MenuSlot } from './types'\n\n/**\n * Renders plugin menu items for a given slot.\n * Place this component at each named slot position in ConnectedWalletMenu.\n */\nexport function PluginSlot({\n slot,\n ctx,\n}: {\n slot: MenuSlot\n ctx: MenuRenderContext\n}) {\n const { menuItemsBySlot } = usePlugins()\n const items = menuItemsBySlot[slot]\n\n if (!items || items.length === 0) return null\n\n return (\n <>\n {items\n .filter((item) => !item.enabled || item.enabled(ctx))\n .map((item) => (\n <React.Fragment key={item.key}>{item.render(ctx)}</React.Fragment>\n ))}\n </>\n )\n}\n","import { cn } from '../utils'\n\ninterface AlgoSymbolProps {\n className?: string\n /**\n * Size relative to current font size (1em = 100%)\n * @default 0.85\n */\n scale?: number\n}\n\nexport function AlgoSymbol({ className, scale = 0.85 }: AlgoSymbolProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n className={cn('inline-block align-baseline', className)}\n style={{\n width: `${scale}em`,\n height: `${scale}em`,\n }}\n aria-label=\"Algorand\"\n fill=\"currentColor\"\n >\n <path d=\"M23.98 23.99h-3.75l-2.44-9.07-5.25 9.07H8.34l8.1-14.04-1.3-4.88L4.22 24H.02L13.88 0h3.67l1.61 5.96h3.79l-2.59 4.5 3.62 13.53z\" />\n </svg>\n )\n}\n","import {\n useFloating,\n useClick,\n useDismiss,\n useInteractions,\n FloatingFocusManager,\n FloatingPortal,\n offset,\n flip,\n shift,\n autoUpdate,\n useId,\n} from '@floating-ui/react'\nimport {\n Label,\n Listbox,\n ListboxButton,\n ListboxOption,\n ListboxOptions,\n} from '@headlessui/react'\nimport { QueryClientProvider } from '@tanstack/react-query'\nimport { useWallet } from '@txnlab/use-wallet-react'\nimport { formatNumber, formatShortAddress } from '@txnlab/utils-ts'\nimport React, { ReactElement, RefObject, useState } from 'react'\n\nimport { useAccountInfo } from '../hooks/useAccountInfo'\nimport { useNfd } from '../hooks/useNfd'\nimport { usePlugins } from '../plugins/PluginContext'\nimport { PluginSlot } from '../plugins/PluginSlot'\nimport { useWalletUI } from '../providers/WalletUIProvider'\n\nimport { AlgoSymbol } from './AlgoSymbol'\nimport { ConnectedWalletButton } from './ConnectedWalletButton'\nimport { NfdAvatar } from './NfdAvatar'\n\nimport type { MenuRenderContext } from '../plugins/types'\n\n// A more specific type for the children that includes ref\ntype RefableElement = ReactElement & {\n ref?: RefObject<HTMLElement> | ((instance: HTMLElement | null) => void)\n}\n\nexport interface ConnectedWalletMenuProps {\n children?: RefableElement\n}\n\nfunction ConnectedWalletMenuContent({ children }: ConnectedWalletMenuProps) {\n const { activeAddress, activeWallet } = useWallet()\n const { theme, resolvedTheme } = useWalletUI()\n const { openDialog, closeDialog, panels } = usePlugins()\n const [isOpen, setIsOpen] = useState(false)\n const [activePanel, setActivePanel] = useState<string | null>(null)\n const [isCopied, setIsCopied] = useState(false)\n const [showAvailableBalance, setShowAvailableBalance] = useState(() => {\n // Try to get the stored preference from localStorage\n const stored = localStorage.getItem('uwui:balance-preference')\n return stored ? stored === 'available' : false\n })\n\n // Determine the data-theme attribute for the portal\n // Only set explicit themes, let 'system' use media query fallback\n const dataTheme = theme === 'system' ? undefined : theme\n\n // NFD for the active address\n const nfdQuery = useNfd({ enabled: !!activeAddress })\n const nfdName = nfdQuery.data?.name ?? null\n\n // Get account info for balance display\n const { data: accountInfo } = useAccountInfo({ enabled: !!activeAddress })\n\n // Calculate full and available balance\n const totalBalance = React.useMemo(() => {\n if (!accountInfo || accountInfo.amount === undefined) {\n return null\n }\n return Number(accountInfo.amount) / 1_000_000\n }, [accountInfo])\n\n const availableBalance = React.useMemo(() => {\n if (\n !accountInfo ||\n accountInfo.amount === undefined ||\n accountInfo.minBalance === undefined\n ) {\n return null\n }\n const available =\n Number(accountInfo.amount) - Number(accountInfo.minBalance)\n return Math.max(0, available / 1_000_000)\n }, [accountInfo])\n\n // Use appropriate balance based on toggle state\n const displayBalance = showAvailableBalance ? availableBalance : totalBalance\n\n const { refs, floatingStyles, context } = useFloating({\n open: isOpen,\n onOpenChange: (open) => {\n setIsOpen(open)\n if (!open) setActivePanel(null)\n },\n placement: 'bottom-end',\n middleware: [offset(8), flip(), shift()],\n whileElementsMounted: autoUpdate,\n })\n\n const click = useClick(context)\n const dismiss = useDismiss(context, { outsidePressEvent: 'mousedown' })\n const { getReferenceProps, getFloatingProps } = useInteractions([\n click,\n dismiss,\n ])\n\n const labelId = useId()\n\n const handleCopyAddress = () => {\n if (activeAddress) {\n navigator.clipboard.writeText(activeAddress)\n setIsCopied(true)\n setTimeout(() => setIsCopied(false), 2000)\n }\n }\n\n const handleDisconnect = async () => {\n if (activeWallet) {\n try {\n await activeWallet.disconnect()\n setIsOpen(false)\n } catch (error) {\n console.error('Error disconnecting wallet:', error)\n }\n }\n }\n\n const handleAccountChange = (accountAddress: string) => {\n if (activeWallet && activeWallet.setActiveAccount) {\n activeWallet.setActiveAccount(accountAddress)\n }\n }\n\n const toggleBalanceView = () => {\n const newValue = !showAvailableBalance\n setShowAvailableBalance(newValue)\n // Store the preference in localStorage\n localStorage.setItem(\n 'uwui:balance-preference',\n newValue ? 'available' : 'total',\n )\n }\n\n // Build plugin render context with real closeMenu and dialog control\n const pluginCtx = React.useMemo<MenuRenderContext>(\n () => ({\n activeAddress,\n activeWallet,\n theme,\n resolvedTheme,\n closeMenu: () => setIsOpen(false),\n openDialog,\n closeDialog,\n setActivePanel,\n activePanel,\n }),\n [\n activeAddress,\n activeWallet,\n theme,\n resolvedTheme,\n openDialog,\n closeDialog,\n activePanel,\n ],\n )\n\n // Filter panels by enabled state\n const enabledPanels = React.useMemo(\n () => panels.filter((p) => !p.enabled || p.enabled(pluginCtx)),\n [panels, pluginCtx],\n )\n\n // Find the currently active panel definition\n const currentPanel = activePanel\n ? panels.find((p) => p.key === activePanel)\n : null\n\n // If no children are provided, create the default connected button\n const triggerElement = children || <ConnectedWalletButton />\n\n // Clone the trigger element with the reference props\n const trigger = React.cloneElement(\n triggerElement,\n getReferenceProps({ ref: refs.setReference }),\n )\n\n return (\n <>\n {trigger}\n {isOpen && (\n <FloatingPortal>\n <FloatingFocusManager context={context} modal={false}>\n <div data-wallet-theme data-wallet-ui data-theme={dataTheme}>\n <div\n ref={refs.setFloating}\n style={floatingStyles}\n {...getFloatingProps()}\n role=\"menu\"\n aria-labelledby={labelId}\n className=\"z-50 w-80 rounded-xl bg-[var(--wui-color-bg)] shadow-xl border border-[var(--wui-color-border)]\"\n >\n <div className=\"p-4\">\n {currentPanel ? (\n /* Panel view */\n <>\n <div className=\"flex items-center gap-2 mb-3\">\n <button\n onClick={() => setActivePanel(null)}\n className=\"p-1 rounded-md hover:bg-[var(--wui-color-bg-secondary)] transition-colors text-[var(--wui-color-text-secondary)]\"\n aria-label=\"Back to menu\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m15 18-6-6 6-6\" />\n </svg>\n </button>\n <h3 className=\"text-sm font-medium text-[var(--wui-color-text)]\">\n {currentPanel.label}\n </h3>\n </div>\n {currentPanel.render({\n ctx: pluginCtx,\n goBack: () => setActivePanel(null),\n })}\n </>\n ) : (\n /* Main menu view */\n <>\n <div className=\"flex items-center gap-3 mb-4\">\n <div className=\"h-12 w-12 overflow-hidden\">\n <NfdAvatar\n nfd={nfdQuery.data}\n alt={`${nfdName || activeAddress} avatar`}\n size={48}\n />\n </div>\n <div>\n <h3\n id={labelId}\n className=\"text-lg font-bold text-[var(--wui-color-text)] max-w-[220px] truncate wallet-custom-font\"\n >\n {nfdName ||\n (activeAddress\n ? formatShortAddress(activeAddress, 6, 4)\n : 'My Wallet')}\n </h3>\n {nfdName && activeAddress && (\n <p className=\"text-sm text-[var(--wui-color-text-secondary)]\">\n {formatShortAddress(activeAddress, 6, 4)}\n </p>\n )}\n </div>\n </div>\n\n {/* Balance display with toggle */}\n <div className=\"mb-4 bg-[var(--wui-color-bg-secondary)] rounded-lg p-3\">\n <div className=\"flex justify-between items-center\">\n {displayBalance !== null && (\n <span className=\"text-base font-medium text-[var(--wui-color-text)] flex items-center gap-1\">\n {formatNumber(displayBalance, {\n fractionDigits: 4,\n })}\n <AlgoSymbol />\n </span>\n )}\n <button\n onClick={toggleBalanceView}\n className=\"flex items-center gap-1 text-sm text-[var(--wui-color-text-secondary)] bg-[var(--wui-color-bg-tertiary)] py-1 pl-2.5 pr-2 rounded-md hover:brightness-90 transition-all focus:outline-none\"\n title={\n showAvailableBalance\n ? 'Show total balance'\n : 'Show available balance'\n }\n >\n {showAvailableBalance ? 'Available' : 'Total'}\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"10\"\n height=\"10\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"ml-0.5 opacity-80\"\n >\n <path d=\"m17 10-5-5-5 5\" />\n <path d=\"m17 14-5 5-5-5\" />\n </svg>\n </button>\n </div>\n </div>\n\n <PluginSlot slot=\"after-balance\" ctx={pluginCtx} />\n\n {/* Account selector (when multiple accounts available) */}\n {activeWallet &&\n activeWallet.accounts &&\n activeWallet.accounts.length > 1 && (\n <div className=\"mb-4\">\n <Listbox\n value={activeAddress || ''}\n onChange={handleAccountChange}\n >\n <Label className=\"block text-sm font-medium text-[var(--wui-color-text-secondary)] mb-1\">\n Select Account\n </Label>\n <div className=\"relative mt-1\">\n <ListboxButton className=\"grid w-full cursor-default grid-cols-1 rounded-lg border border-[var(--wui-color-border)] bg-[var(--wui-color-bg-secondary)] py-2 px-3 text-left text-[var(--wui-color-text)] shadow-sm focus:outline-none focus:ring-2 focus:ring-[var(--wui-color-primary)] focus:border-transparent text-sm\">\n <span className=\"col-start-1 row-start-1 truncate pr-8\">\n {activeAddress\n ? formatShortAddress(activeAddress, 6, 4)\n : 'Select account'}\n </span>\n <span className=\"col-start-1 row-start-1 self-center justify-self-end\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n className=\"text-[var(--wui-color-text-secondary)]\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M4 6L8 10L12 6\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </span>\n </ListboxButton>\n <ListboxOptions\n transition\n className=\"absolute z-10 mt-1 max-h-60 w-full overflow-auto rounded-md bg-[var(--wui-color-bg-secondary)] py-1 shadow-lg ring-1 ring-black/5 focus:outline-none text-sm data-[closed]:data-[leave]:opacity-0 data-[leave]:transition data-[leave]:duration-100 data-[leave]:ease-in\"\n >\n {activeWallet.accounts.map((account) => (\n <ListboxOption\n key={account.address}\n value={account.address}\n className=\"group relative cursor-default select-none py-2 pl-3 pr-9 text-[var(--wui-color-text)] data-[focus]:bg-[var(--wui-color-bg-hover)] data-[focus]:outline-none\"\n >\n <span className=\"block truncate font-normal group-data-[selected]:font-medium\">\n {formatShortAddress(\n account.address,\n 6,\n 4,\n )}\n </span>\n <span className=\"absolute inset-y-0 right-0 flex items-center pr-3 text-[var(--wui-color-primary)] group-[&:not([data-selected])]:hidden\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n className=\"h-5 w-5\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M13.3334 4L6.00008 11.3333L2.66675 8\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </span>\n </ListboxOption>\n ))}\n </ListboxOptions>\n </div>\n </Listbox>\n </div>\n )}\n\n <PluginSlot slot=\"after-accounts\" ctx={pluginCtx} />\n\n {/* Divider */}\n <div className=\"border-t border-[var(--wui-color-border)] mt-2 mb-2\" />\n\n {/* Wallet info section */}\n {activeWallet && (\n <div className=\"mb-2 flex items-center gap-2 px-1 py-0.5\">\n <div className=\"h-5 w-5 overflow-hidden rounded flex items-center justify-center\">\n {activeWallet.metadata.icon ? (\n <img\n src={activeWallet.metadata.icon}\n alt={`${activeWallet.metadata.name} icon`}\n className=\"max-w-full max-h-full\"\n />\n ) : (\n <div className=\"h-5 w-5 rounded-full bg-[var(--wui-color-bg-tertiary)] flex items-center justify-center\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"h-3 w-3 text-[var(--wui-color-text-tertiary)]\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M17 9c0-.55-.45-1-1-1h-4c-.55 0-1 .45-1 1v8c0 .55.45 1 1 1h4c.55 0 1-.45 1-1V9zm-1 0v8h-4V9h4zM8 4c0-.55-.45-1-1-1H3c-.55 0-1 .45-1 1v13c0 .55.45 1 1 1h4c.55 0 1-.45 1-1V4zM3 3h4v14H3V3z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </div>\n )}\n </div>\n <p className=\"text-sm text-[var(--wui-color-text-secondary)]\">\n {activeWallet.metadata.name}\n </p>\n </div>\n )}\n\n <PluginSlot slot=\"after-wallet-info\" ctx={pluginCtx} />\n\n <PluginSlot slot=\"before-actions\" ctx={pluginCtx} />\n\n {/* Plugin panel triggers */}\n {enabledPanels.length > 0 && (\n <div className=\"flex flex-col gap-1 mb-2\">\n {enabledPanels.map((panel) => (\n <button\n key={panel.key}\n onClick={() => setActivePanel(panel.key)}\n className=\"w-full flex items-center justify-between py-2 px-2 rounded-lg text-sm text-[var(--wui-color-text)] hover:bg-[var(--wui-color-bg-secondary)] transition-colors\"\n >\n <span className=\"flex items-center gap-2\">\n {panel.icon && (\n <panel.icon className=\"h-4 w-4 text-[var(--wui-color-text-secondary)]\" />\n )}\n {panel.label}\n </span>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"text-[var(--wui-color-text-tertiary)]\"\n >\n <path d=\"m9 18 6-6-6-6\" />\n </svg>\n </button>\n ))}\n </div>\n )}\n\n {/* Divider */}\n <div className=\"border-t border-[var(--wui-color-border)] mb-3 mt-2\" />\n\n {/* Action buttons */}\n <div className=\"flex gap-2\">\n {/* Copy Address Button */}\n <button\n onClick={handleCopyAddress}\n className=\"flex-1 py-2 px-4 bg-[var(--wui-color-bg-tertiary)] text-[var(--wui-color-text-secondary)] font-medium rounded-xl hover:brightness-90 transition-all text-sm flex items-center justify-center\"\n title=\"Copy address\"\n >\n {isCopied ? (\n <>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"h-4 w-4 text-green-500 mr-1.5\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\"\n clipRule=\"evenodd\"\n />\n </svg>\n Copied\n </>\n ) : (\n <>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"h-4 w-4 mr-1.5\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path d=\"M8 3a1 1 0 011-1h2a1 1 0 110 2H9a1 1 0 01-1-1z\" />\n <path d=\"M6 3a2 2 0 00-2 2v11a2 2 0 002 2h8a2 2 0 002-2V5a2 2 0 00-2-2 3 3 0 01-3 3H9a3 3 0 01-3-3z\" />\n </svg>\n Copy\n </>\n )}\n </button>\n\n <PluginSlot slot=\"actions\" ctx={pluginCtx} />\n\n {/* Disconnect Button */}\n <button\n onClick={handleDisconnect}\n className=\"flex-1 py-2 px-4 bg-[var(--wui-color-danger-bg)] text-[var(--wui-color-danger-text)] font-medium rounded-xl hover:bg-[var(--wui-color-danger-bg-hover)] transition-colors text-sm\"\n >\n Disconnect\n </button>\n </div>\n </>\n )}\n </div>\n </div>\n </div>\n </FloatingFocusManager>\n </FloatingPortal>\n )}\n </>\n )\n}\n\n// Need to provide the QueryClientProvider here because FloatingPortal breaks context inheritance\nexport function ConnectedWalletMenu(props: ConnectedWalletMenuProps) {\n const { queryClient } = useWalletUI()\n\n return (\n <QueryClientProvider client={queryClient}>\n <ConnectedWalletMenuContent {...props} />\n </QueryClientProvider>\n )\n}\n","import { useWallet } from '@txnlab/use-wallet-react'\nimport React from 'react'\n\nimport { ConnectedWalletButton } from './ConnectedWalletButton'\nimport { ConnectedWalletMenu } from './ConnectedWalletMenu'\nimport { type ButtonSize, ConnectWalletButton } from './ConnectWalletButton'\nimport { ConnectWalletMenu } from './ConnectWalletMenu'\n\nexport interface WalletButtonProps {\n /** Size variant for the button */\n size?: ButtonSize\n /** Additional CSS classes to apply to the button */\n className?: string\n /** Inline styles to apply to the button (can include CSS variable overrides) */\n style?: React.CSSProperties\n}\n\nexport function WalletButton({ size, className, style }: WalletButtonProps) {\n const { activeAddress } = useWallet()\n\n // If connected, show the connected wallet menu\n if (activeAddress) {\n return (\n <ConnectedWalletMenu>\n <ConnectedWalletButton size={size} className={className} style={style} />\n </ConnectedWalletMenu>\n )\n }\n\n // If not connected, show the ConnectWalletMenu with customized button\n return (\n <ConnectWalletMenu>\n <ConnectWalletButton size={size} className={className} style={style} />\n </ConnectWalletMenu>\n )\n}\n","import { initializeFonts } from './utils/fontLoader'\n\nexport { ConnectWalletButton } from './components/ConnectWalletButton'\nexport type { ButtonSize } from './components/ConnectWalletButton'\nexport { ConnectWalletMenu } from './components/ConnectWalletMenu'\nexport { ConnectedWalletButton } from './components/ConnectedWalletButton'\nexport { ConnectedWalletMenu } from './components/ConnectedWalletMenu'\nexport { WalletButton } from './components/WalletButton'\nexport { WalletList } from './components/WalletList'\nexport { NfdAvatar } from './components/NfdAvatar'\n\n// Hooks\nexport { useNfd } from './hooks/useNfd'\nexport type { NfdRecord, NfdLookupResponse } from './hooks/useNfd'\nexport { useAccountInfo } from './hooks/useAccountInfo'\nexport { useResolvedTheme } from './hooks/useResolvedTheme'\nexport type { Theme, ResolvedTheme } from './hooks/useResolvedTheme'\n\n// Providers\nexport { WalletUIProvider, useWalletUI } from './providers/WalletUIProvider'\n\n// Plugin system\nexport { usePlugins } from './plugins/PluginContext'\nexport type {\n MenuRenderContext,\n MenuSlot,\n PluginDialog,\n PluginLifecycleHooks,\n PluginMenuItem,\n PluginPanel,\n PluginRenderContext,\n WalletUIPlugin,\n} from './plugins/types'\n\n// Initialize custom fonts\ninitializeFonts()\n"],"names":["injectFonts","performFontInjection","style","fontUrl","_documentCurrentScript","urlError","error","initializeFonts","r","f","clsx","concatArrays","array1","array2","combinedArray","i","createClassValidatorObject","classGroupId","validator","createClassPartObject","nextPart","validators","CLASS_PART_SEPARATOR","EMPTY_CONFLICTS","ARBITRARY_PROPERTY_PREFIX","createClassGroupUtils","config","classMap","createClassMap","conflictingClassGroups","conflictingClassGroupModifiers","className","getGroupIdForArbitraryProperty","classParts","startIndex","getGroupRecursive","hasPostfixModifier","modifierConflicts","baseConflicts","classPartObject","currentClassPart","nextClassPartObject","result","classRest","validatorsLength","validatorObj","content","colonIndex","property","theme","classGroups","processClassGroups","group","processClassesRecursively","classGroup","len","classDefinition","processClassDefinition","processStringDefinition","processFunctionDefinition","processObjectDefinition","classPartObjectToEdit","getPart","isThemeGetter","entries","key","value","path","current","parts","part","next","func","createLruCache","maxCacheSize","cacheSize","cache","previousCache","update","IMPORTANT_MODIFIER","MODIFIER_SEPARATOR","EMPTY_MODIFIERS","createResultObject","modifiers","hasImportantModifier","baseClassName","maybePostfixModifierPosition","isExternal","createParseClassName","prefix","experimentalParseClassName","parseClassName","bracketDepth","parenDepth","modifierStart","postfixModifierPosition","index","currentCharacter","baseClassNameWithImportantModifier","fullPrefix","parseClassNameOriginal","createSortModifiers","modifierWeights","mod","currentSegment","modifier","isArbitrary","isOrderSensitive","createConfigUtils","createPostfixLookupClassGroupIds","lookup","classGroupIds","SPLIT_CLASSES_REGEX","mergeClassList","classList","configUtils","getClassGroupId","getConflictingClassGroupIds","sortModifiers","postfixLookupClassGroupIds","classGroupsInConflict","classNames","originalClassName","baseClassNameWithoutPostfix","classGroupIdWithPostfix","variantModifier","modifierId","classId","conflictGroups","twJoin","classLists","argument","resolvedValue","string","toValue","mix","k","createTailwindMerge","createConfigFirst","createConfigRest","cacheGet","cacheSet","functionToCall","initTailwindMerge","previousConfig","createConfigCurrent","tailwindMerge","cachedResult","args","fallbackThemeArr","fromTheme","themeGetter","arbitraryValueRegex","arbitraryVariableRegex","fractionRegex","tshirtUnitRegex","lengthUnitRegex","colorFunctionRegex","shadowRegex","imageRegex","isFraction","isNumber","isInteger","isPercent","isTshirtSize","isAny","isLengthOnly","isNever","isShadow","isImage","isAnyNonArbitrary","isArbitraryValue","isArbitraryVariable","isNamedContainerQuery","isArbitrarySize","getIsArbitraryValue","isLabelSize","isArbitraryLength","isLabelLength","isArbitraryNumber","isLabelNumber","isArbitraryWeight","isLabelWeight","isArbitraryFamilyName","isLabelFamilyName","isArbitraryPosition","isLabelPosition","isArbitraryImage","isLabelImage","isArbitraryShadow","isLabelShadow","isArbitraryVariableLength","getIsArbitraryVariable","isArbitraryVariableFamilyName","isArbitraryVariablePosition","isArbitraryVariableSize","isArbitraryVariableImage","isArbitraryVariableShadow","isArbitraryVariableWeight","testLabel","testValue","shouldMatchNoLabel","label","getDefaultConfig","themeColor","themeFont","themeText","themeFontWeight","themeTracking","themeLeading","themeBreakpoint","themeContainer","themeSpacing","themeRadius","themeShadow","themeInsetShadow","themeTextShadow","themeDropShadow","themeBlur","themePerspective","themeAspect","themeEase","themeAnimate","scaleBreak","scalePosition","scalePositionWithArbitrary","scaleOverflow","scaleOverscroll","scaleUnambiguousSpacing","scaleInset","scaleGridTemplateColsRows","scaleGridColRowStartAndEnd","scaleGridColRowStartOrEnd","scaleGridAutoColsRows","scaleAlignPrimaryAxis","scaleAlignSecondaryAxis","scaleMargin","scaleSizing","scaleSizingInline","scaleSizingBlock","scaleColor","scaleBgPosition","scaleBgRepeat","scaleBgSize","scaleGradientStopPosition","scaleRadius","scaleBorderWidth","scaleLineStyle","scaleBlendMode","scaleMaskImagePosition","scaleBlur","scaleRotate","scaleScale","scaleSkew","scaleTranslate","twMerge","cn","inputs","sizeClasses","ConnectWalletButton","React","children","size","props","ref","jsx","Subscribable","listener","FocusManager","_a","__privateAdd","_focused","_cleanup","_setup","__privateSet","onFocus","__privateGet","setup","focused","isFocused","focusManager","defaultTimeoutProvider","callback","delay","timeoutId","intervalId","TimeoutManager","_provider","_providerCalled","provider","timeoutManager","systemSetTimeoutZero","isServer","noop","functionalUpdate","updater","input","isValidTimeout","timeUntilStale","updatedAt","staleTime","resolveStaleTime","query","resolveQueryBoolean","option","matchQuery","filters","type","exact","fetchStatus","predicate","queryKey","stale","hashQueryKeyByOptions","partialMatchKey","isActive","matchMutation","mutation","status","mutationKey","hashKey","options","_","val","isPlainObject","a","b","hasOwn","replaceEqualDeep","depth","array","isPlainArray","aSize","bItems","bSize","copy","equalItems","aItem","bItem","v","shallowEqualObjects","o","hasObjectPrototype","ctor","prot","sleep","timeout","resolve","replaceData","prevData","data","addToEnd","items","item","max","newItems","addToStart","skipToken","ensureQueryFn","fetchOptions","shouldThrowError","throwOnError","params","addConsumeAwareSignal","object","getSignal","onCancelled","consumed","signal","environmentManager","isServerFn","isServerValue","pendingThenable","reject","thenable","_resolve","_reject","finalize","reason","defaultScheduler","createNotifyManager","queue","transactions","notifyFn","batchNotifyFn","scheduleFn","schedule","flush","originalQueue","fn","notifyManager","OnlineManager","_online","onOnline","onlineListener","offlineListener","online","onlineManager","defaultRetryDelay","failureCount","canFetch","networkMode","CancelledError","createRetryer","isRetryCancelled","continueFn","isResolved","cancel","cancelOptions","cancelRetry","continueRetry","canContinue","canStart","pause","continueResolve","run","promiseOrValue","initialPromise","retry","retryDelay","shouldRetry","Removable","_gcTimeout","newGcTime","infiniteQueryBehavior","pages","context","direction","_c","_b","oldPages","_d","oldPageParams","_e","currentPage","fetchFn","cancelled","addSignalProperty","queryFn","fetchPage","param","previous","queryFnContext","queryFnContext2","page","maxPages","addTo","pageParamFn","getPreviousPageParam","getNextPageParam","oldData","remainingPages","pageParams","lastIndex","Query","_Query_instances","_queryType","_initialState","_revertState","_cache","_client","_retryer","_defaultOptions","_abortSignalConsumed","getDefaultState","defaultState","successState","newData","__privateMethod","dispatch_fn","state","promise","observer","x","isInitialPausedFetch_fn","abortController","context2","behavior","_g","_f","_i","_h","_k","_j","action","reducer","fetchState","newState","dataUpdatedAt","hasData","initialDataUpdatedAt","QueryObserver","client","_QueryObserver_instances","_currentQuery","_currentQueryInitialState","_currentResult","_currentResultState","_currentResultOptions","_currentThenable","_selectError","_selectFn","_selectResult","_lastQueryWithDefinedData","_staleTimeoutId","_refetchIntervalId","_currentRefetchInterval","_trackedProps","shouldFetchOnMount","executeFetch_fn","updateTimers_fn","shouldFetchOn","clearStaleTimeout_fn","clearRefetchInterval_fn","prevOptions","prevQuery","updateQuery_fn","mounted","shouldFetchOptionally","updateStaleTimeout_fn","nextRefetchInterval","computeRefetchInterval_fn","updateRefetchInterval_fn","shouldAssignObserverCurrentProperties","onPropTracked","target","defaultedOptions","prevResult","prevResultState","prevResultOptions","queryInitialState","isPlaceholderData","fetchOnMount","fetchOptionally","errorUpdatedAt","skipSelect","placeholderData","selectError","isFetching","isPending","isError","isLoading","nextResult","isStale","hasResultData","isErrorWithoutData","finalizeThenableIfPossible","recreateThenable","pending","prevThenable","shouldNotifyListeners","notifyOnChangeProps","notifyOnChangePropsValue","includedProps","typedKey","notify_fn","nextInterval","notifyOptions","shouldLoadOnMount","field","optimisticResult","Mutation","_Mutation_instances","_observers","_mutationCache","variables","onContinue","mutationFnContext","restored","isPaused","_l","e","_n","_m","_p","_o","_r","_q","MutationCache","_mutations","_scopes","_mutationId","__privateWrapper","scope","scopeFor","scopedMutations","mutationsWithSameScope","firstPendingMutation","m","foundMutation","defaultedFilters","event","pausedMutations","QueryCache","_queries","queryHash","queryInMap","queries","QueryClient","_queryCache","_queryDefaults","_mutationDefaults","_mountCount","_unsubscribeFocus","_unsubscribeOnline","cachedData","queryCache","defaultedCancelOptions","promises","defaults","queryDefault","QueryClientContext","useQueryClient","queryClient","QueryClientProvider","IsRestoringContext","useIsRestoring","createValue","isReset","QueryErrorResetBoundaryContext","useQueryErrorResetBoundary","ensurePreventErrorBoundaryRetry","errorResetBoundary","useClearResetErrorBoundary","getHasError","suspense","ensureSuspenseTimers","clamp","originalStaleTime","willFetch","isRestoring","shouldSuspend","fetchOptimistic","useBaseQuery","Observer","isNewCacheEntry","shouldSubscribe","onStoreChange","unsubscribe","useQuery","useResolvedTheme","systemTheme","setSystemTheme","useState","useEffect","mediaQuery","handler","ALL_SLOTS","EMPTY_MENU_ITEMS","EMPTY_RENDER_CONTEXT","EMPTY_CONTEXT","PluginContext","createContext","usePlugins","ctx","useContext","PluginProviderComposer","plugins","acc","plugin","useStablePlugins","stableRef","useRef","prevIds","p","nextIds","PluginContextProvider","rawPlugins","renderContext","useMemo","pluginIds","menuKeys","dialogKeys","panelKeys","dialog","panel","openDialogs","setOpenDialogs","openDialog","useCallback","prev","closeDialog","menuItemsBySlot","slot","dialogs","panels","enrichedContext","contextValue","PluginDialogRenderer","useWalletUI","dataTheme","Fragment","isOpen","FloatingPortal","safeInvoke","err","PluginLifecycleManager","prevAddressRef","prevWalletIdRef","prevAddress","prevWalletId","currentWalletId","THEME_STYLES_ID","lightThemeVars","darkThemeVars","injectThemeStyles","styleElement","createDefaultQueryClient","WalletUIContext","WalletAccountsPrefetcher","enabled","nfdView","activeAddress","activeWallet","algodClient","useWallet","activeNetwork","useNetwork","prevActiveAddressRef","shouldPrefetch","addresses","account","addressBatches","batch","apiEndpoint","queryParams","address","response","responseData","nfdData","accountInfo","WalletUIProvider","externalQueryClient","enablePrefetching","prefetchNfdView","resolvedTheme","jsxs","PluginHost","baseRenderContext","WalletList","wallets","handleWalletClick","wallet","ConnectWalletMenu","setIsOpen","animationState","setAnimationState","refs","useFloating","open","click","useClick","dismiss","useDismiss","role","useRole","getReferenceProps","getFloatingProps","useInteractions","labelId","useId","descriptionId","handleTriggerClick","triggerElement","triggerRef","useMergeRefs","referenceProps","trigger","FloatingOverlay","FloatingFocusManager","de","H","F","ge","X","E","pe","me","ee","G","Ie","w","g","U","d","I","A","M","T","R","y","j","Y","te","fe","t","c","n","u","s","l","S","q","we","h","N","C","O","Q","z","P","ne","ue","ae","J","re","V","L","B","W","ce","oe","ie","le","K","se","Ae","Ne","Ee","De","useNfd","view","IPFS_GATEWAY_URL","checkIpfsAvailability","url","cid","nfdUrl","gatewayUrl","isImageContentType","contentType","imageUrl","imageCid","imageGatewayUrl","imageResponse","imageContentType","NfdAvatar","nfd","alt","fallback","lightOnly","rawAvatarUrl","imgAlt","avatarUrl","avatarSizes","avatarContainerClasses","chevronSizes","ConnectedWalletButton","nfdQuery","nfdName","formatShortAddress","$f0a04ccd8dbdd83b$export$e5c5a5f917a5871c","$HgANd$react","$8ae05eaa5c114e9c$export$7f54fc3180508a52","$lmaYr$useRef","$lmaYr$useCallback","$431fbd86ca7dc216$export$b204af158042fbac","el","_el_ownerDocument","$431fbd86ca7dc216$export$f21a1ffae260145a","$431fbd86ca7dc216$var$isNode","$431fbd86ca7dc216$export$af51f0f06c0f328a","node","$f4e2df6bd15f8569$var$_shadowDOM","$f4e2df6bd15f8569$export$98658e8c59125e6a","$d4ee10de306f2510$export$4282f70798064fe0","otherNode","$lcSu5$shadowDOM","currentNode","$d4ee10de306f2510$export$cd4e5573fbe2b576","doc","_activeElement_shadowRoot","activeElement","$d4ee10de306f2510$export$e58f029f0fbfdb29","$c87311424ea30a05$var$testUserAgent","_window_navigator_userAgentData","brand","$c87311424ea30a05$var$testPlatform","$c87311424ea30a05$var$cached","res","$c87311424ea30a05$export$9ac100e40613ea10","$c87311424ea30a05$export$186c6964ca17d99","$c87311424ea30a05$export$7bef049ce92e4224","$c87311424ea30a05$export$fedb369cb70207f1","$c87311424ea30a05$export$6446a186d09e379e","$c87311424ea30a05$export$a11b0059900ceec8","$03deb23ff14920c4$export$4eaf04e54aa8eed6","globalListeners","$lPAwt$useRef","addGlobalListener","$lPAwt$useCallback","eventTarget","removeGlobalListener","_globalListeners_current_get","removeAllGlobalListeners","$lPAwt$useEffect","$6a7db85432448f7f$export$60278871457622de","$8a9cb279dc87e130$export$525bc4921d56d4a","nativeEvent","$8a9cb279dc87e130$export$c2b7abe5d61ec696","$8a9cb279dc87e130$export$715c682d09d639cc","onBlur","stateRef","$6dfIe$useRef","$6dfIe$useLayoutEffect","dispatchBlur","$6dfIe$useEffectEvent","$6dfIe$useCallback","onBlurHandler","_stateRef_current_observer","relatedTargetEl","$8a9cb279dc87e130$export$fda7da73ab5d4c48","$507fabe10e71c6fb$var$currentModality","$507fabe10e71c6fb$var$changeHandlers","$507fabe10e71c6fb$export$d90243b58daecda7","$507fabe10e71c6fb$var$hasEventBeforeFocus","$507fabe10e71c6fb$var$hasBlurredWindowRecently","$507fabe10e71c6fb$var$FOCUS_VISIBLE_INPUT_KEYS","$507fabe10e71c6fb$var$triggerChangeHandlers","modality","$507fabe10e71c6fb$var$isValidKey","$28AnR$isMac","$507fabe10e71c6fb$var$handleKeyboardEvent","$507fabe10e71c6fb$var$handlePointerEvent","$507fabe10e71c6fb$var$handleClickEvent","$28AnR$isVirtualClick","$507fabe10e71c6fb$var$handleFocusEvent","$507fabe10e71c6fb$var$handleWindowBlur","$507fabe10e71c6fb$var$setupGlobalFocusEvents","element","$28AnR$getOwnerWindow","windowObject","documentObject","$28AnR$getOwnerDocument","focus","$507fabe10e71c6fb$var$tearDownWindowFocusTracking","loadListener","$507fabe10e71c6fb$export$2f1888112f558a7d","$507fabe10e71c6fb$export$b9b3dfddab17db27","$507fabe10e71c6fb$var$nonTextInputTypes","$507fabe10e71c6fb$var$isKeyboardFocusEvent","isTextInput","document1","IHTMLInputElement","IHTMLTextAreaElement","IHTMLElement","IKeyboardEvent","$507fabe10e71c6fb$export$ec71b4b83ac08ec3","deps","opts","$28AnR$useEffect","$a1ea59d68270f0dd$export$f8168d8dd8fd66e6","isDisabled","onFocusProp","onBlurProp","onFocusChange","$hf0lj$useCallback","onSyntheticFocus","ownerDocument","$hf0lj$getOwnerDocument","$hf0lj$getActiveElement","$hf0lj$getEventTarget","$9ab94262bd0047c7$export$420e68273165f4ec","onBlurWithin","onFocusWithin","onFocusWithinChange","$3b9Q0$useRef","$3b9Q0$useGlobalListeners","$3b9Q0$useCallback","$3b9Q0$getOwnerDocument","$3b9Q0$getActiveElement","$3b9Q0$getEventTarget","currentTarget","$3b9Q0$nodeContains","$6179b936705e76d3$var$globalIgnoreEmulatedMouseEvents","$6179b936705e76d3$var$hoverCount","$6179b936705e76d3$var$setGlobalIgnoreEmulatedMouseEvents","$6179b936705e76d3$var$handleGlobalPointerEvent","$6179b936705e76d3$var$setupGlobalTouchEvents","$6179b936705e76d3$export$ae780daf29e6d456","onHoverStart","onHoverChange","onHoverEnd","isHovered","setHovered","$AWxnT$useState","$AWxnT$useRef","$AWxnT$useEffect","$AWxnT$useGlobalListeners","hoverProps","triggerHoverEnd","$AWxnT$useMemo","triggerHoverStart","pointerType","$AWxnT$getOwnerDocument","$AWxnT$nodeContains","$f7dceffc5ad7768b$export$4e328f61c538687f","autoFocus","within","$isWE5$useRef","$isWE5$isFocusVisible","setFocused","$isWE5$useState","isFocusVisibleState","setFocusVisible","updateState","$isWE5$useCallback","$isWE5$useFocusVisibleListener","isFocusVisible","focusProps","$isWE5$useFocus","focusWithinProps","$isWE5$useFocusWithin","o$8","$","D","n.isHTMLFieldSetElement","n.isHTMLLegendElement","m.isInteractiveElement","m.isHTMLLabelElement","m.isHTMLInputElement","Z","T$3","o$2","require$$0","is","objectIs","useSyncExternalStore","useDebugValue","useSyncExternalStoreWithSelector_production","subscribe","getSnapshot","getServerSnapshot","selector","isEqual","instRef","inst","memoizedSelector","nextSnapshot","hasMemo","memoizedSnapshot","currentSelection","memoizedSelection","nextSelection","maybeGetServerSnapshot","useSyncExternalStoreWithSelector_development","withSelectorModule","require$$1","c.isHTMLElement","d.isHTMLorSVGElement","d.isHTMLIframeElement","E.isNode","E.isHTMLorSVGElement","i.isHTMLorSVGElement","i.hasInlineStyle","i.isHTMLInputElement","getUserAgent","uaData","_ref","version","SafeReact","useInsertionEffect","useSafeInsertionEffect","useEffectEvent","_len","_key","useLayoutEffect","serverHandoffComplete","count","genId","useFloatingId","id","setId","useReactId","devMessageSet","warn","_devMessageSet","messages","message","_devMessageSet2","_devMessageSet3","_len2","_key2","_devMessageSet4","createPubSub","map","_map$get","_map$get2","FloatingNodeContext","FloatingTreeContext","useFloatingParentNodeId","_React$useContext","useFloatingTree","FOCUSABLE_ATTRIBUTE","useFloatingRootContext","onOpenChangeProp","elementsProp","floatingId","dataRef","events","nested","optionDomReference","isElement","positionReference","setPositionReference","onOpenChange","elements","nodeId","internalRootContext","rootContext","computedElements","_domReference","setDomReference","_setPositionReference","domReference","domReferenceRef","tree","position","useFloating$1","computedPositionReference","setReference","ACTIVE_KEY","SELECTED_KEY","mergeProps","userProps","propsList","elementKey","isItem","domUserProps","__","validProps","propsOrGetProps","referenceDeps","floatingDeps","itemDeps","getItemProps","getArgsWithCustomFloatingHeight","height","inner","listRef","overflowRef","onFallbackChange","innerOffset","minItemsVisible","referenceOverflowThreshold","scrollRef","detectOverflowOptions","evaluate","rects","floating","scrollEl","clientTop","floatingIsBordered","scrollElIsBordered","floatingIsScrollEl","nextArgs","offset","overflow","detectOverflow","refOverflow","diffY","nextY","maxHeight","round","shouldFallback","min","ReactDOM","useInnerOffset","unstable_onChange","onChange","controlledScrollingRef","prevScrollTopRef","initialOverflowRef","onWheel","dY","isAtTop","isAtBottom","remainingScroll","sign","method","scrollDiff","ye","Fe","be","Te","Re","pe.isHTMLElement","g.isHTMLElement","Pt","gt","je","Ce","Lt","lt","xt","ut","st","mt","Je","Ot","nt","et","vt","Et","ot","qe","Ye","He","it.isHTMLElement","dt","Be","bt","ft","he","xe","Ge","Oe","ht","At","_t","Ze","Se","rt","Xe","Ue","Ve","tt","ve","Qe","$e","Me","ct","pt","Le","We","Pe","yt","St","Dt","Ke","ke","at","ze","Rt","Ft","Ct","Mt","wt","Tt","Bt","It","kt","Mo","useAccountInfo","PluginSlot","AlgoSymbol","scale","ConnectedWalletMenuContent","activePanel","setActivePanel","isCopied","setIsCopied","showAvailableBalance","setShowAvailableBalance","stored","totalBalance","availableBalance","available","displayBalance","floatingStyles","flip","shift","autoUpdate","handleCopyAddress","handleDisconnect","handleAccountChange","accountAddress","toggleBalanceView","newValue","pluginCtx","enabledPanels","currentPanel","formatNumber","Listbox","Label","ListboxButton","ListboxOptions","ListboxOption","ConnectedWalletMenu","WalletButton"],"mappings":"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","x_google_ignoreList":[1,2,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,36,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129]}