UNPKG

@roopakv/nuqs

Version:

Type-safe search params state manager for React - Like useState, but stored in the URL query string

32 lines (29 loc) 1.13 kB
import { renderURL } from './chunk-QHW6KBHR.js'; import { debug } from './chunk-3RCMAOX7.js'; import { createAdapterProvider } from './chunk-DASHEO2X.js'; import { useSearchParams } from 'next/navigation.js'; import { useCallback } from 'react'; function isPagesRouter() { return typeof window.next?.router?.state?.asPath === "string"; } function useNuqsNextPagesRouterAdapter() { const searchParams = useSearchParams(); const updateUrl = useCallback((search, options) => { const nextRouter = window.next?.router; const url = renderURL(nextRouter.state.asPath.split("?")[0] ?? "", search); debug("[nuqs queue (pages)] Updating url: %s", url); const method = options.history === "push" ? nextRouter.push : nextRouter.replace; method.call(nextRouter, url, url, { scroll: options.scroll, shallow: options.shallow }); }, []); return { searchParams, updateUrl, // See: https://github.com/47ng/nuqs/issues/603#issuecomment-2317057128 rateLimitFactor: 2 }; } createAdapterProvider(useNuqsNextPagesRouterAdapter); export { isPagesRouter, useNuqsNextPagesRouterAdapter };