state-in-url
Version:
Store state in URL as in object, types and structure are preserved, with TS validation. Same API as React.useState, wthout any hasssle or boilerplate. Next.js@14-15, react-router@6-7, and remix@2.
2 lines (1 loc) • 468 B
JavaScript
import{decode as g,encode as a}from"../encoder/encoder.mjs";import{getParams as f}from"../utils.mjs";function m(n,c,s){const r=f(s);const o=Object.keys(n||{});for(let e=0;e<o.length;e++){const t=o[e];const i=n[t];const d=c?.[t];if(JSON.stringify(i)!==JSON.stringify(d)){r.set(t,a(i))}}return r.toString()}function S(n,c){const s=Object.assign({},c||{});const r=f(n);for(const[o,e]of r){const t=c?.[o];s[o]=g(e,t)??t}return s}export{S as decodeState,m as encodeState};