UNPKG

nuqs

Version:

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

43 lines (42 loc) 1.57 kB
import { Options } from "./defs-mBb4lgVX.js"; import { Context, ProviderProps, ReactElement, ReactNode } from "react"; //#region src/adapters/lib/defs.d.ts type AdapterOptions = Pick<Options, "history" | "scroll" | "shallow">; type UpdateUrlFunction = (search: URLSearchParams, options: Required<AdapterOptions>) => void; type UseAdapterHook = (watchKeys: string[]) => AdapterInterface; type AdapterInterface = { searchParams: URLSearchParams; updateUrl: UpdateUrlFunction; getSearchParamsSnapshot?: () => URLSearchParams; rateLimitFactor?: number; autoResetQueueOnUpdate?: boolean; }; //#endregion //#region src/adapters/lib/context.d.ts type AdapterProps = { defaultOptions?: Partial<Pick<Options, "shallow" | "clearOnDefault" | "scroll" | "limitUrlUpdates">>; }; type AdapterContext = AdapterProps & { useAdapter: UseAdapterHook; }; declare const context: Context<AdapterContext>; declare global { interface Window { __NuqsAdapterContext?: typeof context; } } type AdapterProvider = (props: AdapterProps & { children: ReactNode; }) => ReactElement<ProviderProps<AdapterContext>>; /** * Create a custom adapter (context provider) for nuqs to work with your framework / router. * * Adapters are based on React Context, * * @param useAdapter * @returns */ declare function createAdapterProvider(useAdapter: UseAdapterHook): AdapterProvider; //#endregion export { AdapterContext, AdapterInterface, AdapterOptions, AdapterProps, AdapterProvider, UpdateUrlFunction, UseAdapterHook, createAdapterProvider }; //# sourceMappingURL=context-DyUBtRzw.d.ts.map