UNPKG

use-state-in-url

Version:

React hook to keep state in URL for deep linking

39 lines 1.2 kB
export function parseSearch(search) { const params = new Map(); const query = search.startsWith("?") ? search.slice(1) : search; if (!query) return params; query.split("&").forEach(pair => { const [key, value] = pair.split("="); if (key) params.set(key, value || ""); }); return params; } export function buildSearch(params) { if (params.size === 0) return ""; const pairs = Array.from(params.entries()) .map(([key, value]) => `${key}=${value}`); return "?" + pairs.join("&"); } export function isEqual(a, b) { // Handle NaN case if (Number.isNaN(a) && Number.isNaN(b)) return true; if (a === b) return true; if (typeof a !== typeof b) return false; if (typeof a !== "object" || !a || !b) return false; // Differentiate between arrays and objects const aIsArray = Array.isArray(a); const bIsArray = Array.isArray(b); if (aIsArray !== bIsArray) return false; const keys = Object.keys(a); return keys.length === Object.keys(b).length && keys.every(key => isEqual(a[key], b[key])); } //# sourceMappingURL=urlUtils.js.map