@roopakv/nuqs
Version:
Type-safe search params state manager for React - Like useState, but stored in the URL query string
49 lines (45 loc) • 1.18 kB
JavaScript
'use client';
import { resetQueue } from '../chunk-S2OHQSN3.js';
import '../chunk-3RCMAOX7.js';
import { context, renderQueryString } from '../chunk-DASHEO2X.js';
import { createElement } from 'react';
function NuqsTestingAdapter({
resetUrlUpdateQueueOnMount = true,
...props
}) {
if (resetUrlUpdateQueueOnMount) {
resetQueue();
}
const useAdapter = () => ({
searchParams: new URLSearchParams(props.searchParams),
updateUrl(search, options) {
props.onUrlUpdate?.({
searchParams: search,
queryString: renderQueryString(search),
options
});
},
getSearchParamsSnapshot() {
return new URLSearchParams(props.searchParams);
},
rateLimitFactor: props.rateLimitFactor ?? 0
});
return createElement(
context.Provider,
{ value: { useAdapter } },
props.children
);
}
function withNuqsTestingAdapter(props = {}) {
return function NuqsTestingAdapterWrapper({
children
}) {
return createElement(
NuqsTestingAdapter,
// @ts-expect-error - Ignore missing children error
props,
children
);
};
}
export { NuqsTestingAdapter, withNuqsTestingAdapter };