nuqs
Version:
Type-safe search params state manager for React - Like useState, but stored in the URL query string
27 lines (25 loc) • 953 B
JavaScript
import { debug } from "./context-BWo_DoaC.js";
//#region src/adapters/lib/key-isolation.ts
function applyChange(newValue, keys, copy) {
return (oldValue) => {
const hasChanged = keys.length === 0 ? true : keys.some((key) => oldValue.get(key) !== newValue.get(key));
if (!hasChanged) {
debug("[nuqs `%s`] no change, returning previous", keys.join(","), oldValue);
return oldValue;
}
const filtered = filterSearchParams(newValue, keys, copy);
debug(`[nuqs \`%s\`] subbed search params change
from %O
to %O`, keys.join(","), oldValue, filtered);
return filtered;
};
}
function filterSearchParams(search, keys, copy) {
if (keys.length === 0) return search;
const filtered = copy ? new URLSearchParams(search) : search;
for (const key of search.keys()) if (!keys.includes(key)) filtered.delete(key);
return filtered;
}
//#endregion
export { applyChange, filterSearchParams };
//# sourceMappingURL=key-isolation-CKEBJ11E.js.map