UNPKG

use-state-in-url

Version:

React hook to keep state in URL for deep linking

56 lines 1.56 kB
function tryParseJson(value) { try { return JSON.parse(value); } catch { return {}; } } export const deserialize = (defaultValue, value) => { const type = inferType(defaultValue); switch (type) { case "string": return decodeURIComponent(value); case "number": return Number(value); case "boolean": return (value.toLowerCase() === "true"); case "object": return tryParseJson(decodeURIComponent(value)); case "array": return value.split(",").map(decodeURIComponent); default: return value; } }; export const serialize = (defaultValue, value) => { const type = inferType(defaultValue); switch (type) { case "string": return value; case "number": return String(value); case "boolean": return value ? "true" : "false"; case "object": return encodeURIComponent(JSON.stringify(value)); case "array": return value.join(","); default: return String(value); } }; export function inferType(value) { if (typeof value === "string") return "string"; if (typeof value === "number") return "number"; if (typeof value === "boolean") return "boolean"; if (Array.isArray(value)) return "array"; if (typeof value === "object" && value !== null) return "object"; return "string"; } //# sourceMappingURL=serializeParams.js.map