@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
JavaScript
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 };