UNPKG

@offlegacy/nuqs-hash-router

Version:
86 lines (82 loc) 3.03 kB
//#region rolldown:runtime var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) { key = keys[i]; if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: ((k) => from[k]).bind(null, key), enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod)); //#endregion const nuqs_adapters_custom = __toESM(require("nuqs/adapters/custom")); const react = __toESM(require("react")); //#region src/utils.ts function getCurrentURL() { return new URL(window.location.hash.slice(1), window.location.origin); } //#endregion //#region src/NuqsAdapter.tsx function useHashAdapter() { const url = getCurrentURL(); const [hashParams, setHashParams] = (0, react.useState)(new URLSearchParams(url.search)); function updateUrl(updated, options) { const url$1 = getCurrentURL(); const currentParams = new URLSearchParams(url$1.search); currentParams.forEach((_, key) => { if (!updated.has(key)) currentParams.delete(key); }); updated.forEach((value, key) => { if (value) currentParams.set(key, value); }); const updatedHashUrl = `#${url$1.pathname}${currentParams.toString() ? `?${currentParams.toString()}` : ""}`; switch (options.history) { case "push": window.history.pushState(null, "", updatedHashUrl); break; case "replace": window.history.replaceState(null, "", updatedHashUrl); break; default: window.history.pushState(null, "", updatedHashUrl); break; } setHashParams(updated); } function getSearchParamsSnapshot() { const url$1 = getCurrentURL(); return new URLSearchParams(url$1.search); } (0, react.useEffect)(() => { function handleHashChange() { const url$1 = getCurrentURL(); setHashParams(new URLSearchParams(url$1.search)); } window.addEventListener("hashchange", handleHashChange); return () => window.removeEventListener("hashchange", handleHashChange); }, []); return { searchParams: hashParams, updateUrl, getSearchParamsSnapshot }; } /** * @see https://github.com/47ng/nuqs/issues/810#issuecomment-2863556483 * @see https://github.com/47ng/nuqs/blob/84ee9aa49d74f3a0782ae7bbe5646a3e42cb8e52/packages/nuqs/src/adapters/lib/react-router.ts#L43 */ const NuqsAdapter = (0, nuqs_adapters_custom.unstable_createAdapterProvider)(useHashAdapter); //#endregion exports.NuqsAdapter = NuqsAdapter; //# sourceMappingURL=index.cjs.map