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
TypeScript
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