state-in-url 6.0.2 → 6.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- "use strict";var i=require("../encoder/encoder.js");var s=require("../utils.js");function d(o,t,r){const n=s.getParams(r);for(const[e,c]of Object.entries(o||{})){const a=t?.[e];if(JSON.stringify(c)!==JSON.stringify(a)){n.set(e,i.encode(c))}}return n.toString()}function u(o,t){return{...t||{},...Object.fromEntries([...s.getParams(o).entries()].map(([r,n])=>{const e=t?.[r];return[r,i.decode(n,e)??e]}))}}exports.decodeState=u;exports.encodeState=d;
1
+ "use strict";var a=require("../encoder/encoder.js");var d=require("../utils.js");function f(c,t,r){const n=d.getParams(r);const e=Object.entries(c||{});for(let o=0;o<e.length;o++){const[s,i]=e[o];const u=t?.[s];if(JSON.stringify(i)!==JSON.stringify(u)){n.set(s,a.encode(i))}}return n.toString()}function S(c,t){return{...t||{},...Object.fromEntries([...d.getParams(c).entries()].map(([r,n])=>{const e=t?.[r];return[r,a.decode(n,e)??e]}))}}exports.decodeState=S;exports.encodeState=f;
@@ -1 +1 @@
1
- import{decode as f,encode as m}from"../encoder/encoder.mjs";import{getParams as c}from"../utils.mjs";function a(r,e,n){const o=c(n);for(const[t,i]of Object.entries(r||{})){const s=e?.[t];if(JSON.stringify(i)!==JSON.stringify(s)){o.set(t,m(i))}}return o.toString()}function d(r,e){return{...e||{},...Object.fromEntries([...c(r).entries()].map(([n,o])=>{const t=e?.[n];return[n,f(o,t)??t]}))}}export{d as decodeState,a as encodeState};
1
+ import{decode as d,encode as a}from"../encoder/encoder.mjs";import{getParams as f}from"../utils.mjs";function g(o,e,r){const n=f(r);const t=Object.entries(o||{});for(let c=0;c<t.length;c++){const[i,s]=t[c];const m=e?.[i];if(JSON.stringify(s)!==JSON.stringify(m)){n.set(i,a(s))}}return n.toString()}function u(o,e){return{...e||{},...Object.fromEntries([...f(o).entries()].map(([r,n])=>{const t=e?.[r];return[r,d(n,t)??t]}))}}export{u as decodeState,g as encodeState};
@@ -1 +1 @@
1
- "use strict";var n=require("../constants/constants.js");var o=require("../utils.js");function S(e){if(typeof e==="function"||typeof e==="symbol")return"";if(v(e)){return e}return JSON.stringify(structuredClone(e),c).replace(/'/g,"%27").replace(/"/g,"'")}function c(e,r){const i=o.typeOf(r);if(i!=="object"&&i!=="array"){return s(r)}if(i==="object"){const t=r;for(const u of Object.keys(t)){t[u]=c(e,t[u])}return t}if(i==="array"){return r.map(t=>c(e,t))}return r}const s=e=>{switch(o.typeOf(e)){case"date":return n.SYMBOLS.date+new Date(e).toISOString();case"undefined":return n.SYMBOLS.undefined;default:return e}};function p(e,r){return d(e.replace(/'/g,'"').replace(/%27/g,"'"),r)}function d(e,r){try{return JSON.parse(e,a)}catch{return r}}function a(e,r){return typeof r==="string"?f(r):r}const f=e=>{if(e===n.SYMBOLS.undefined)return void 0;if(e?.startsWith?.(n.SYMBOLS.date))return new Date(e.slice(1));return e};const O=new RegExp(`^(${n.SYMBOLS.undefined}|${n.SYMBOLS.date})`);const v=e=>O.test(String(e));exports.decode=p;exports.decodePrimitive=f;exports.encode=S;exports.encodePrimitive=s;exports.parseJSON=d;exports.reviver=a;
1
+ "use strict";var n=require("../constants/constants.js");var u=require("../utils.js");const s=/'/g;const p=/"/g;const O=/%27/g;function v(e){if(typeof e==="function"||typeof e==="symbol")return"";if(g(e)){return e}return JSON.stringify(structuredClone(e),c).replace(s,"%27").replace(p,"'")}function c(e,r){const i=u.typeOf(r);if(i!=="object"&&i!=="array"){return d(r)}if(i==="object"){const t=r;for(const o of Object.keys(t)){t[o]=c(e,t[o])}return t}if(i==="array"){return r.map(t=>c(e,t))}return r}const d=e=>{switch(u.typeOf(e)){case"date":return n.SYMBOLS.date+new Date(e).toISOString();case"undefined":return n.SYMBOLS.undefined;default:return e}};function y(e,r){return a(e.replace(s,'"').replace(O,"'"),r)}function a(e,r){try{return JSON.parse(e,f)}catch{return r}}function f(e,r){return typeof r==="string"?S(r):r}const S=e=>{if(e===n.SYMBOLS.undefined)return void 0;if(e?.startsWith?.(n.SYMBOLS.date))return new Date(e.slice(1));return e};const l=new RegExp(`^(${n.SYMBOLS.undefined}|${n.SYMBOLS.date})`);const g=e=>l.test(String(e));exports.decode=y;exports.decodePrimitive=S;exports.encode=v;exports.encodePrimitive=d;exports.parseJSON=a;exports.reviver=f;
@@ -1 +1 @@
1
- import{SYMBOLS as n}from"../constants/constants.mjs";import{typeOf as u}from"../utils.mjs";function p(e){if(typeof e==="function"||typeof e==="symbol")return"";if(l(e)){return e}return JSON.stringify(structuredClone(e),o).replace(/'/g,"%27").replace(/"/g,"'")}function o(e,r){const i=u(r);if(i!=="object"&&i!=="array"){return f(r)}if(i==="object"){const t=r;for(const c of Object.keys(t)){t[c]=o(e,t[c])}return t}if(i==="array"){return r.map(t=>o(e,t))}return r}const f=e=>{switch(u(e)){case"date":return n.date+new Date(e).toISOString();case"undefined":return n.undefined;default:return e}};function y(e,r){return a(e.replace(/'/g,'"').replace(/%27/g,"'"),r)}function a(e,r){try{return JSON.parse(e,s)}catch{return r}}function s(e,r){return typeof r==="string"?d(r):r}const d=e=>{if(e===n.undefined)return void 0;if(e?.startsWith?.(n.date))return new Date(e.slice(1));return e};const g=new RegExp(`^(${n.undefined}|${n.date})`);const l=e=>g.test(String(e));export{y as decode,d as decodePrimitive,p as encode,f as encodePrimitive,a as parseJSON,s as reviver};
1
+ import{SYMBOLS as n}from"../constants/constants.mjs";import{typeOf as u}from"../utils.mjs";const f=/'/g;const y=/"/g;const g=/%27/g;function l(e){if(typeof e==="function"||typeof e==="symbol")return"";if(O(e)){return e}return JSON.stringify(structuredClone(e),i).replace(f,"%27").replace(y,"'")}function i(e,r){const o=u(r);if(o!=="object"&&o!=="array"){return s(r)}if(o==="object"){const t=r;for(const c of Object.keys(t)){t[c]=i(e,t[c])}return t}if(o==="array"){return r.map(t=>i(e,t))}return r}const s=e=>{switch(u(e)){case"date":return n.date+new Date(e).toISOString();case"undefined":return n.undefined;default:return e}};function m(e,r){return a(e.replace(f,'"').replace(g,"'"),r)}function a(e,r){try{return JSON.parse(e,d)}catch{return r}}function d(e,r){return typeof r==="string"?p(r):r}const p=e=>{if(e===n.undefined)return void 0;if(e?.startsWith?.(n.date))return new Date(e.slice(1));return e};const S=new RegExp(`^(${n.undefined}|${n.date})`);const O=e=>S.test(String(e));export{m as decode,p as decodePrimitive,l as encode,s as encodePrimitive,a as parseJSON,d as reviver};
@@ -1 +1 @@
1
- "use strict";var g=require("react");var p=require("next/navigation");var S=require("../../parseSPObj.js");var j=require("../../useUrlStateBase/useUrlStateBase.js");var a=require("../../utils.js");function k(r){return r&&r.__esModule?r:{default:r}}var s=k(g);function q(r,t){const l=t?.useHistory;const u=p.useRouter();const d=s.default.useMemo(()=>({push:(...e)=>{if(l===void 0?true:!!l){a.routerHistory.push(...e)}else{u.push(...e)}},replace:(...e)=>{if(l===void 0?true:!!l){a.routerHistory.replace(...e)}else{u.replace(...e)}}}),[u]);const{state:U,updateState:o,updateUrl:n,reset:c,getState:v,pendingUrlUpdate:m}=j.useUrlStateBase(r,d,({parse:e})=>{return a.isSSR?S.parseSPObj(a.filterUnknownParams(r,t?.searchParams),r):e(a.filterUnknownParamsClient(r,t?.searchParams||a.getSearch()))});const i=p.useSearchParams();s.default.useEffect(()=>{if(!m()){o(a.filterUnknownParams(r,S.parseSPObj(Object.fromEntries([...i.entries()]),r)))}},[i]);const f=s.default.useMemo(()=>{const e={..._};if(t?.scroll!==void 0)e.scroll=t.scroll;if(t?.replace!==void 0)e.replace=t.replace;return e},[t?.scroll,t?.replace]);const P=s.default.useCallback((e,b)=>n(e,{...f,...b}),[n]);const h=s.default.useCallback(e=>{c({...f,...e})},[c]);return{setState:o,setUrl:P,urlState:U,reset:h,getState:v}}const _={replace:true,scroll:false};exports.useUrlState=q;
1
+ "use strict";var g=require("react");var p=require("next/navigation");var d=require("../../parseSPObj.js");var k=require("../../useUrlStateBase/useUrlStateBase.js");var s=require("../../utils.js");function q(t){return t&&t.__esModule?t:{default:t}}var a=q(g);function M(t,r){const u=a.default.useMemo(()=>r?.useHistory===void 0?true:!!r?.useHistory,[]);const l=p.useRouter();const S=a.default.useMemo(()=>({push:(...e)=>{if(u){s.routerHistory.push(...e)}else{l.push(...e)}},replace:(...e)=>{if(u){s.routerHistory.replace(...e)}else{l.replace(...e)}}}),[l]);const{state:U,updateState:o,updateUrl:n,reset:c,getState:m,pendingUrlUpdate:v}=k.useUrlStateBase(t,S,({parse:e})=>{return s.isSSR?d.parseSPObj(s.filterUnknownParams(t,r?.searchParams),t):e(s.filterUnknownParamsClient(t,r?.searchParams||s.getSearch()))});const i=p.useSearchParams();a.default.useEffect(()=>{if(!v()){o(s.filterUnknownParams(t,d.parseSPObj(Object.fromEntries([...i.entries()]),t)))}},[i]);const f=a.default.useMemo(()=>{const e={..._};if(r?.scroll!==void 0)e.scroll=r.scroll;if(r?.replace!==void 0)e.replace=r.replace;return e},[r?.scroll,r?.replace]);const P=a.default.useCallback((e,b)=>n(e,{...f,...b}),[n]);const h=a.default.useCallback(e=>{c({...f,...e})},[c]);return{setState:o,setUrl:P,urlState:U,reset:h,getState:m}}const _={replace:true,scroll:false};exports.useUrlState=M;
@@ -1 +1 @@
1
- import s from"react";import{useRouter as k,useSearchParams as v}from"next/navigation";import{parseSPObj as p}from"../../parseSPObj.mjs";import{useUrlStateBase as j}from"../../useUrlStateBase/useUrlStateBase.mjs";import{routerHistory as m,filterUnknownParams as f,isSSR as C,filterUnknownParamsClient as w,getSearch as y}from"../../utils.mjs";function E(r,t){const o=t?.useHistory;const a=k();const S=s.useMemo(()=>({push:(...e)=>{if(o===void 0?true:!!o){m.push(...e)}else{a.push(...e)}},replace:(...e)=>{if(o===void 0?true:!!o){m.replace(...e)}else{a.replace(...e)}}}),[a]);const{state:U,updateState:l,updateUrl:c,reset:n,getState:d,pendingUrlUpdate:h}=j(r,S,({parse:e})=>{return C?p(f(r,t?.searchParams),r):e(w(r,t?.searchParams||y()))});const u=v();s.useEffect(()=>{if(!h()){l(f(r,p(Object.fromEntries([...u.entries()]),r)))}},[u]);const i=s.useMemo(()=>{const e={...H};if(t?.scroll!==void 0)e.scroll=t.scroll;if(t?.replace!==void 0)e.replace=t.replace;return e},[t?.scroll,t?.replace]);const P=s.useCallback((e,g)=>c(e,{...i,...g}),[c]);const b=s.useCallback(e=>{n({...i,...e})},[n]);return{setState:l,setUrl:P,urlState:U,reset:b,getState:d}}const H={replace:true,scroll:false};export{E as useUrlState};
1
+ import r from"react";import{useRouter as k,useSearchParams as M}from"next/navigation";import{parseSPObj as p}from"../../parseSPObj.mjs";import{useUrlStateBase as v}from"../../useUrlStateBase/useUrlStateBase.mjs";import{routerHistory as m,filterUnknownParams as f,isSSR as y,filterUnknownParamsClient as C,getSearch as H}from"../../utils.mjs";function j(t,s){const a=r.useMemo(()=>s?.useHistory===void 0?true:!!s?.useHistory,[]);const o=k();const S=r.useMemo(()=>({push:(...e)=>{if(a){m.push(...e)}else{o.push(...e)}},replace:(...e)=>{if(a){m.replace(...e)}else{o.replace(...e)}}}),[o]);const{state:U,updateState:l,updateUrl:c,reset:n,getState:d,pendingUrlUpdate:h}=v(t,S,({parse:e})=>{return y?p(f(t,s?.searchParams),t):e(C(t,s?.searchParams||H()))});const u=M();r.useEffect(()=>{if(!h()){l(f(t,p(Object.fromEntries([...u.entries()]),t)))}},[u]);const i=r.useMemo(()=>{const e={...w};if(s?.scroll!==void 0)e.scroll=s.scroll;if(s?.replace!==void 0)e.replace=s.replace;return e},[s?.scroll,s?.replace]);const P=r.useCallback((e,g)=>c(e,{...i,...g}),[c]);const b=r.useCallback(e=>{n({...i,...e})},[n]);return{setState:l,setUrl:P,urlState:U,reset:b,getState:d}}const w={replace:true,scroll:false};export{j as useUrlState};
@@ -1 +1 @@
1
- "use strict";var P=require("react");var c=require("react-router");var _=require("../../parseSPObj.js");var k=require("../../useUrlStateBase/useUrlStateBase.js");var u=require("../../utils.js");function R(e){return e&&e.__esModule?e:{default:e}}var a=R(P);function h(e,l){const S=l?.useHistory;const s=a.default.useMemo(()=>({...j,replace:l?.replace,preventScrollReset:l?.preventScrollReset}),[]);const n=c.useNavigate();const d=a.default.useMemo(()=>S?u.routerHistory:{replace:(t,r)=>n(t,{...s,...r}),push:(t,r)=>n(t,{...s,...r})},[n]);const[o]=c.useSearchParams();const v=c.useHref("/");const{state:U,updateState:i,updateUrl:f,getState:m,reset:p,pendingUrlUpdate:b}=k.useUrlStateBase(e,d,({parse:t})=>t(u.filterUnknownParamsClient(e,o.entries())),v);const g=a.default.useCallback((t,r)=>f(t,{...s,...r}),[f]);a.default.useEffect(()=>{if(!b()){i(u.assignValue(e,u.filterUnknownParams(e,_.parseSPObj(Object.fromEntries([...o.entries()]),e))))}},[o]);const q=a.default.useCallback(t=>{p({...s,...t})},[p]);return{setState:i,setUrl:g,urlState:U,reset:q,getState:m}}const j={replace:true,preventScrollReset:true};exports.useUrlState=h;
1
+ "use strict";var P=require("react");var o=require("react-router");var _=require("../../parseSPObj.js");var k=require("../../useUrlStateBase/useUrlStateBase.js");var u=require("../../utils.js");function R(e){return e&&e.__esModule?e:{default:e}}var a=R(P);function h(e,l){const S=l?.useHistory;const s=a.default.useMemo(()=>({...j,replace:l?.replace,preventScrollReset:l?.preventScrollReset}),[]);const n=o.useNavigate();const d=a.default.useMemo(()=>S?u.routerHistory:{replace:(t,r)=>n(t,{...s,...r}),push:(t,r)=>n(t,{...s,...r})},[n]);const[c]=o.useSearchParams();const v=o.useHref("/");const{state:U,updateState:i,updateUrl:f,getState:m,reset:p,pendingUrlUpdate:b}=k.useUrlStateBase(e,d,({parse:t})=>t(u.filterUnknownParamsClient(e,c.entries())),v);const g=a.default.useCallback((t,r)=>f(t,{...s,...r}),[f]);a.default.useEffect(()=>{if(!b()){i(u.assignValue(e,u.filterUnknownParams(e,_.parseSPObj(Object.fromEntries([...c.entries()]),e))))}},[c]);const q=a.default.useCallback(t=>{p({...s,...t})},[p]);return{setState:i,setUrl:g,urlState:U,reset:q,getState:m}}const j={replace:true,preventScrollReset:true};exports.useUrlState=h;
@@ -1 +1 @@
1
- import s from"react";import{useNavigate as d,useSearchParams as k,useHref as P}from"react-router";import{parseSPObj as h}from"../../parseSPObj.mjs";import{useUrlStateBase as C}from"../../useUrlStateBase/useUrlStateBase.mjs";import{routerHistory as H,filterUnknownParamsClient as R,assignValue as j,filterUnknownParams as w}from"../../utils.mjs";function y(t,a){const i=a?.useHistory;const o=s.useMemo(()=>({...E,replace:a?.replace,preventScrollReset:a?.preventScrollReset}),[]);const n=d();const m=s.useMemo(()=>i?H:{replace:(e,r)=>n(e,{...o,...r}),push:(e,r)=>n(e,{...o,...r})},[n]);const[l]=k();const f=P("/");const{state:S,updateState:c,updateUrl:u,getState:U,reset:p,pendingUrlUpdate:g}=C(t,m,({parse:e})=>e(R(t,l.entries())),f);const b=s.useCallback((e,r)=>u(e,{...o,...r}),[u]);s.useEffect(()=>{if(!g()){c(j(t,w(t,h(Object.fromEntries([...l.entries()]),t))))}},[l]);const v=s.useCallback(e=>{p({...o,...e})},[p]);return{setState:c,setUrl:b,urlState:S,reset:v,getState:U}}const E={replace:true,preventScrollReset:true};export{y as useUrlState};
1
+ import s from"react";import{useNavigate as d,useSearchParams as k,useHref as P}from"react-router";import{parseSPObj as h}from"../../parseSPObj.mjs";import{useUrlStateBase as C}from"../../useUrlStateBase/useUrlStateBase.mjs";import{routerHistory as H,filterUnknownParamsClient as R,assignValue as j,filterUnknownParams as w}from"../../utils.mjs";function y(t,o){const i=o?.useHistory;const a=s.useMemo(()=>({...E,replace:o?.replace,preventScrollReset:o?.preventScrollReset}),[]);const n=d();const m=s.useMemo(()=>i?H:{replace:(e,r)=>n(e,{...a,...r}),push:(e,r)=>n(e,{...a,...r})},[n]);const[l]=k();const f=P("/");const{state:S,updateState:c,updateUrl:u,getState:U,reset:p,pendingUrlUpdate:g}=C(t,m,({parse:e})=>e(R(t,l.entries())),f);const b=s.useCallback((e,r)=>u(e,{...a,...r}),[u]);s.useEffect(()=>{if(!g()){c(j(t,w(t,h(Object.fromEntries([...l.entries()]),t))))}},[l]);const v=s.useCallback(e=>{p({...a,...e})},[p]);return{setState:c,setUrl:b,urlState:S,reset:v,getState:U}}const E={replace:true,preventScrollReset:true};export{y as useUrlState};
@@ -1 +1 @@
1
- "use strict";var O=require("react");var c=require("react-router-dom");var P=require("../../parseSPObj.js");var _=require("../../useUrlStateBase/useUrlStateBase.js");var l=require("../../utils.js");function k(t){return t&&t.__esModule?t:{default:t}}var s=k(O);function j(t,r){const d=r?.useHistory;const u=s.default.useMemo(()=>{const e={...S};if(r?.replace!==void 0)e.replace=r.replace;if(r?.preventScrollReset!==void 0)e.preventScrollReset=r.preventScrollReset;return e},[r?.replace,r?.preventScrollReset]);const n=c.useNavigate();const v=s.default.useMemo(()=>d?l.routerHistory:{replace:(e,a)=>n(e,{...u,...a}),push:(e,a)=>n(e,{...u,...a})},[n]);const[o]=c.useSearchParams();const U=c.useHref("/");const{state:m,updateState:i,updateUrl:p,getState:R,reset:f,pendingUrlUpdate:b}=_.useUrlStateBase(t,v,({parse:e})=>e(l.filterUnknownParamsClient(t,o.entries())),U);const g=s.default.useCallback((e,a)=>p(e,{...u,...a}),[p]);s.default.useEffect(()=>{if(!b()){i(l.assignValue(t,l.filterUnknownParams(t,P.parseSPObj(Object.fromEntries([...o.entries()]),t))))}},[o]);const q=s.default.useCallback(e=>{f({...u,...e})},[f]);return{setState:i,setUrl:g,urlState:m,reset:q,getState:R}}const S={replace:true,preventScrollReset:true};exports.defaultOpts=S;exports.useUrlState=j;
1
+ "use strict";var O=require("react");var o=require("react-router-dom");var P=require("../../parseSPObj.js");var _=require("../../useUrlStateBase/useUrlStateBase.js");var l=require("../../utils.js");function k(t){return t&&t.__esModule?t:{default:t}}var a=k(O);function j(t,r){const d=r?.useHistory;const u=a.default.useMemo(()=>{const e={...S};if(r?.replace!==void 0)e.replace=r.replace;if(r?.preventScrollReset!==void 0)e.preventScrollReset=r.preventScrollReset;return e},[r?.replace,r?.preventScrollReset]);const n=o.useNavigate();const v=a.default.useMemo(()=>d?l.routerHistory:{replace:(e,s)=>n(e,{...u,...s}),push:(e,s)=>n(e,{...u,...s})},[n]);const[c]=o.useSearchParams();const U=o.useHref("/");const{state:m,updateState:i,updateUrl:p,getState:R,reset:f,pendingUrlUpdate:b}=_.useUrlStateBase(t,v,({parse:e})=>e(l.filterUnknownParamsClient(t,c.entries())),U);const g=a.default.useCallback((e,s)=>p(e,{...u,...s}),[p]);a.default.useEffect(()=>{if(!b()){i(l.assignValue(t,l.filterUnknownParams(t,P.parseSPObj(Object.fromEntries([...c.entries()]),t))))}},[c]);const q=a.default.useCallback(e=>{f({...u,...e})},[f]);return{setState:i,setUrl:g,urlState:m,reset:q,getState:R}}const S={replace:true,preventScrollReset:true};exports.defaultOpts=S;exports.useUrlState=j;
@@ -1 +1 @@
1
- "use strict";var f=require("react");function u(e){return e&&e.__esModule?e:{default:e}}var t=u(f);const n=t.default?.useInsertionEffect||t.default.useEffect;exports.useInsertionEffect=n;
1
+ "use strict";var f=require("react");function u(e){return e&&e.__esModule?e:{default:e}}var t=u(f);const s=t.default?.useInsertionEffect||t.default.useEffect;exports.useInsertionEffect=s;
@@ -1 +1 @@
1
- "use strict";var b=require("react");var u=require("../subscribers.js");var M=require("../useInsertionEffect.js");var o=require("../utils.js");function g(s){return s&&s.__esModule?s:{default:s}}var n=g(b);function v(s,a){const t=n.default.useRef(s);const[i,f]=n.default.useState(()=>{if(o.isSSR){return a?a?.():t.current}const e=u.stateMap.get(t.current);if(!e){const r=a?.()||t.current;u.stateMap.set(t.current,r);return r}else{return e}});const l=n.default.useCallback(e=>{const r=u.stateMap.get(t.current);const S=typeof e==="function";const c=S?e(r,s):{...r,...e};if(o.isEqual(r,c))return void 0;u.stateMap.set(t.current,c);u.subscribers.get(t.current).forEach(p=>p())},[]);M.useInsertionEffect(()=>{const e=()=>{f(u.stateMap.get(t.current)||t.current)};const r=u.subscribers.add(t.current,e);return()=>{r()}},[]);const d=n.default.useCallback(()=>u.stateMap.get(t.current)||t.current,[]);return{state:i,getState:d,setState:l}}exports.useSharedState=v;
1
+ "use strict";var b=require("react");var r=require("../subscribers.js");var M=require("../useInsertionEffect.js");var i=require("../utils.js");function g(u){return u&&u.__esModule?u:{default:u}}var n=g(b);function v(u,a){const t=n.default.useRef(u);const[f,o]=n.default.useState(()=>{if(i.isSSR){return a?a?.():t.current}const e=r.stateMap.get(t.current);if(!e){const s=a?.()||t.current;r.stateMap.set(t.current,s);return s}else{return e}});const l=n.default.useCallback(e=>{const s=r.stateMap.get(t.current);const S=typeof e==="function";const c=S?e(s,u):{...s,...e};if(i.isEqual(s,c))return void 0;r.stateMap.set(t.current,c);r.subscribers.get(t.current).forEach(p=>p())},[]);M.useInsertionEffect(()=>{const e=()=>{o(r.stateMap.get(t.current)||t.current)};return r.subscribers.add(t.current,e)},[]);const d=n.default.useCallback(()=>r.stateMap.get(t.current)||t.current,[]);return{state:f,getState:d,setState:l}}exports.useSharedState=v;
@@ -1 +1 @@
1
- import c from"react";import{stateMap as n,subscribers as a}from"../subscribers.mjs";import{useInsertionEffect as l}from"../useInsertionEffect.mjs";import{isSSR as b,isEqual as d}from"../utils.mjs";function E(s,o){const t=c.useRef(s);const[f,i]=c.useState(()=>{if(b){return o?o?.():t.current}const e=n.get(t.current);if(!e){const r=o?.()||t.current;n.set(t.current,r);return r}else{return e}});const m=c.useCallback(e=>{const r=n.get(t.current);const S=typeof e==="function";const u=S?e(r,s):{...r,...e};if(d(r,u))return void 0;n.set(t.current,u);a.get(t.current).forEach(g=>g())},[]);l(()=>{const e=()=>{i(n.get(t.current)||t.current)};const r=a.add(t.current,e);return()=>{r()}},[]);const p=c.useCallback(()=>n.get(t.current)||t.current,[]);return{state:f,getState:p,setState:m}}export{E as useSharedState};
1
+ import c from"react";import{stateMap as n,subscribers as a}from"../subscribers.mjs";import{useInsertionEffect as l}from"../useInsertionEffect.mjs";import{isSSR as b,isEqual as d}from"../utils.mjs";function E(u,s){const t=c.useRef(u);const[f,i]=c.useState(()=>{if(b){return s?s?.():t.current}const e=n.get(t.current);if(!e){const r=s?.()||t.current;n.set(t.current,r);return r}else{return e}});const m=c.useCallback(e=>{const r=n.get(t.current);const S=typeof e==="function";const o=S?e(r,u):{...r,...e};if(d(r,o))return void 0;n.set(t.current,o);a.get(t.current).forEach(g=>g())},[]);l(()=>{const e=()=>{i(n.get(t.current)||t.current)};return a.add(t.current,e)},[]);const p=c.useCallback(()=>n.get(t.current)||t.current,[]);return{state:f,getState:p,setState:m}}export{E as useSharedState};
@@ -1 +1 @@
1
- "use strict";var l=require("react");var r=require("../encodeState/encodeState.js");var s=require("../utils.js");function d(e){return e&&e.__esModule?e:{default:e}}var u=d(l);function o(e){const a=u.default.useCallback((t,c)=>{return s.typeOf(t)==="object"?r.encodeState(t,e,c):""},[e]);const n=u.default.useCallback(t=>r.decodeState(t,e),[e]);return{parse:n,stringify:a}}exports.useUrlEncode=o;
1
+ "use strict";var c=require("react");var r=require("../encodeState/encodeState.js");var l=require("../utils.js");function d(e){return e&&e.__esModule?e:{default:e}}var u=d(c);function i(e){const a=u.default.useCallback((t,s)=>{return l.typeOf(t)==="object"?r.encodeState(t,e,s):""},[e]);const n=u.default.useCallback(t=>r.decodeState(t,e),[e]);return{parse:n,stringify:a}}exports.useUrlEncode=i;
@@ -1 +1 @@
1
- import r from"react";import{encodeState as a,decodeState as s}from"../encodeState/encodeState.mjs";import{typeOf as f}from"../utils.mjs";function i(e){const o=r.useCallback((t,c)=>{return f(t)==="object"?a(t,e,c):""},[e]);const n=r.useCallback(t=>s(t,e),[e]);return{parse:n,stringify:o}}export{i as useUrlEncode};
1
+ import r from"react";import{encodeState as s,decodeState as a}from"../encodeState/encodeState.mjs";import{typeOf as f}from"../utils.mjs";function i(e){const o=r.useCallback((t,c)=>{return f(t)==="object"?s(t,e,c):""},[e]);const n=r.useCallback(t=>a(t,e),[e]);return{parse:n,stringify:o}}export{i as useUrlEncode};
@@ -1 +1 @@
1
- "use strict";var _=require("react");var y=require("../constants/constants.js");var L=require("../useInsertionEffect.js");var P=require("../useSharedState/useSharedState.js");var T=require("../useUrlEncode/useUrlEncode.js");var i=require("../utils.js");function b(t){return t&&t.__esModule?t:{default:t}}var v=b(_);let s;function B(t,e,l,d){const{parse:r,stringify:a}=T.useUrlEncode(t);const{state:f,getState:c,setState:o}=P.useSharedState(t,()=>l?.({parse:r})||t);L.useInsertionEffect(()=>{const n=()=>{const h=r(i.filterUnknownParamsClient(t,i.getSearch()));o(h)};window.addEventListener(i.popstateEv,n);return()=>{window.removeEventListener(i.popstateEv,n)}},[]);const w=v.default.useRef([]);const p=v.default.useCallback((n,h)=>{const S=typeof n==="function"?n(c(),t):{...c(),...n};const U=a(S,C(t));const m=I(window.location.pathname,d);const E=`${m}${U.length?"?":""}${U}${window.location.hash}`;const $=`${m}${window.location.search}${window.location.hash}`;if(E===$)return;o(S);const{replace:q,...k}=h||{};w.current=[[q?"replace":"push",E,k]];clearTimeout(s);s=void 0;const u=w.current.filter(Boolean).at(-1);if(u){s=setTimeout(()=>{w.current=[];e[u[0]](u[1],u[2]);s=void 0},y.TIMEOUT)}},[e,a,c]);const g=v.default.useCallback(n=>{o(t);p(t,n)},[p,o]);return{updateState:o,updateUrl:p,state:f,reset:g,getState:c,pendingUrlUpdate:()=>s!==void 0}}function C(t){const e=Object.keys(t);const l=window.location.search;const d=new URLSearchParams(l);const r=new URLSearchParams;for(const[a,f]of d){!e.includes(a)&&r.set(a,f)}return r}function I(t,e){if(!e||e==="/"){return t}return t.slice(e.length)}exports.useUrlStateBase=B;
1
+ "use strict";var k=require("react");var _=require("../constants/constants.js");var y=require("../useInsertionEffect.js");var L=require("../useSharedState/useSharedState.js");var P=require("../useUrlEncode/useUrlEncode.js");var c=require("../utils.js");function T(t){return t&&t.__esModule?t:{default:t}}var U=T(k);let i;let n;function b(t,e,l,d){const{parse:s,stringify:o}=P.useUrlEncode(t);const{state:f,getState:u,setState:a}=L.useSharedState(t,()=>l?.({parse:s})||t);y.useInsertionEffect(()=>{const r=()=>{a(s(c.filterUnknownParamsClient(t,c.getSearch())))};window.addEventListener(c.popstateEv,r);return()=>{window.removeEventListener(c.popstateEv,r)}},[]);const p=U.default.useCallback((r,E)=>{const h=typeof r==="function"?r(u(),t):{...u(),...r};const w=o(h,C(t));const v=I(window.location.pathname,d);const S=`${v}${w.length?"?":""}${w}${window.location.hash}`;const $=`${v}${window.location.search}${window.location.hash}`;if(S===$)return;a(h);const{replace:g,...q}=E||{};clearTimeout(i);i=void 0;n={router:e,method:g?"replace":"push",url:S,opts:q};i=setTimeout(()=>{if(n){n.router[n.method](n.url,n.opts);n=void 0}i=void 0},_.TIMEOUT)},[e,o,u]);const m=U.default.useCallback(r=>{a(t);p(t,r)},[p,a]);return{updateState:a,updateUrl:p,state:f,reset:m,getState:u,pendingUrlUpdate:()=>i!==void 0}}function C(t){const e=Object.keys(t);const l=window.location.search;const d=new URLSearchParams(l);const s=new URLSearchParams;for(const[o,f]of d){!e.includes(o)&&s.set(o,f)}return s}function I(t,e){if(!e||e==="/"){return t}return t.slice(e.length)}exports.useUrlStateBase=b;
@@ -1 +1 @@
1
- import w from"react";import{TIMEOUT as L}from"../constants/constants.mjs";import{useInsertionEffect as P}from"../useInsertionEffect.mjs";import{useSharedState as T}from"../useSharedState/useSharedState.mjs";import{useUrlEncode as b}from"../useUrlEncode/useUrlEncode.mjs";import{popstateEv as g,filterUnknownParamsClient as C,getSearch as O}from"../utils.mjs";let a;function R(t,e,u,l){const{parse:n,stringify:r}=b(t);const{state:f,getState:c,setState:s}=T(t,()=>u?.({parse:n})||t);P(()=>{const o=()=>{const d=n(C(t,O()));s(d)};window.addEventListener(g,o);return()=>{window.removeEventListener(g,o)}},[]);const m=w.useRef([]);const p=w.useCallback((o,d)=>{const h=typeof o==="function"?o(c(),t):{...c(),...o};const S=r(h,B(t));const U=I(window.location.pathname,l);const $=`${U}${S.length?"?":""}${S}${window.location.hash}`;const E=`${U}${window.location.search}${window.location.hash}`;if($===E)return;s(h);const{replace:k,...y}=d||{};m.current=[[k?"replace":"push",$,y]];clearTimeout(a);a=void 0;const i=m.current.filter(Boolean).at(-1);if(i){a=setTimeout(()=>{m.current=[];e[i[0]](i[1],i[2]);a=void 0},L)}},[e,r,c]);const v=w.useCallback(o=>{s(t);p(t,o)},[p,s]);return{updateState:s,updateUrl:p,state:f,reset:v,getState:c,pendingUrlUpdate:()=>a!==void 0}}function B(t){const e=Object.keys(t);const u=window.location.search;const l=new URLSearchParams(u);const n=new URLSearchParams;for(const[r,f]of l){!e.includes(r)&&n.set(r,f)}return n}function I(t,e){if(!e||e==="/"){return t}return t.slice(e.length)}export{R as useUrlStateBase};
1
+ import S from"react";import{TIMEOUT as y}from"../constants/constants.mjs";import{useInsertionEffect as L}from"../useInsertionEffect.mjs";import{useSharedState as P}from"../useSharedState/useSharedState.mjs";import{useUrlEncode as T}from"../useUrlEncode/useUrlEncode.mjs";import{popstateEv as U,filterUnknownParamsClient as b,getSearch as C}from"../utils.mjs";let i;let n;function R(t,e,l,u){const{parse:r,stringify:s}=T(t);const{state:d,getState:c,setState:a}=P(t,()=>l?.({parse:r})||t);L(()=>{const o=()=>{a(r(b(t,C())))};window.addEventListener(U,o);return()=>{window.removeEventListener(U,o)}},[]);const p=S.useCallback((o,v)=>{const m=typeof o==="function"?o(c(),t):{...c(),...o};const f=s(m,I(t));const w=O(window.location.pathname,u);const h=`${w}${f.length?"?":""}${f}${window.location.hash}`;const g=`${w}${window.location.search}${window.location.hash}`;if(h===g)return;a(m);const{replace:E,...k}=v||{};clearTimeout(i);i=void 0;n={router:e,method:E?"replace":"push",url:h,opts:k};i=setTimeout(()=>{if(n){n.router[n.method](n.url,n.opts);n=void 0}i=void 0},y)},[e,s,c]);const $=S.useCallback(o=>{a(t);p(t,o)},[p,a]);return{updateState:a,updateUrl:p,state:d,reset:$,getState:c,pendingUrlUpdate:()=>i!==void 0}}function I(t){const e=Object.keys(t);const l=window.location.search;const u=new URLSearchParams(l);const r=new URLSearchParams;for(const[s,d]of u){!e.includes(s)&&r.set(s,d)}return r}function O(t,e){if(!e||e==="/"){return t}return t.slice(e.length)}export{R as useUrlStateBase};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "state-in-url",
3
- "version": "6.0.2",
3
+ "version": "6.0.3",
4
4
  "description": "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.",
5
5
  "homepage": "https://state-in-url.dev",
6
6
  "repository": {