Skip to content

Commit

Permalink
chore(release): 4.1.7 [skip ci]
Browse files Browse the repository at this point in the history
## [4.1.7](v4.1.6...v4.1.7) (2024-11-28)

### Bug Fixes

* bump version ([c0bc971](c0bc971))
  • Loading branch information
semantic-release-bot committed Nov 28, 2024
1 parent c0bc971 commit 390a51f
Show file tree
Hide file tree
Showing 4 changed files with 11 additions and 4 deletions.
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
## [4.1.7](https://github.com/asmyshlyaev177/state-in-url/compare/v4.1.6...v4.1.7) (2024-11-28)


### Bug Fixes

* bump version ([c0bc971](https://github.com/asmyshlyaev177/state-in-url/commit/c0bc971e5a58b88f17d50523ecc1683406b11bce))

## [4.1.6](https://github.com/asmyshlyaev177/state-in-url/compare/v4.1.5...v4.1.6) (2024-11-26)


Expand Down
2 changes: 1 addition & 1 deletion dist/useUrlStateBase/useUrlStateBase.mjs
Original file line number Diff line number Diff line change
@@ -1 +1 @@
import u from"react";import{TIMEOUT as b}from"../constants/constants.mjs";import{useInsertionEffect as L}from"../useInsertionEffect.mjs";import{useSharedState as P}from"../useSharedState/useSharedState.mjs";import{useUrlEncode as y}from"../useUrlEncode/useUrlEncode.mjs";import{filterUnknownParamsClient as C}from"../utils.mjs";function O(t,a,l){const{parse:s,stringify:o}=y(t),{state:m,getState:r,setState:c}=P(t,()=>l?.({parse:s})||t),p=u.useRef(void 0);L(()=>{const e=()=>{const n=s(C(t));c(n)};return window.addEventListener(E,e),()=>{window.removeEventListener(E,e),clearTimeout(p.current)}},[c]);const f=u.useRef([]),w=u.useCallback((e,n)=>{const h=typeof e=="function"?e(r()):e?{...r(),...e}:r(),S=o(h,I(t)),U=`${window.location.pathname}${S.length?"?":""}${S}${window.location.hash}`,k=`${window.location.pathname}${window.location.search}${window.location.hash}`;if(U===k)return;let i;c(h);const T=n?.replace;delete n?.replace,f.current.push([T?"replace":"push",U,n]),clearTimeout(p.current),p.current=setTimeout(()=>{queueMicrotask(()=>{for(;f.current.length;){const d=f.current.shift();d&&d?.[1]!==i?.[1]&&(i=d)}const[$,v,R]=i||{};i=void 0,$&&a[$](v,R)})},b)},[a,o,r]),g=u.useCallback(e=>{w(t,e)},[w]);return{updateState:c,updateUrl:w,state:m,reset:g,getState:r}}function I(t){const a=Object.keys(t),l=window.location.search,s=new URLSearchParams(l),o=new URLSearchParams;return s.forEach((m,r)=>!a.includes(r)&&o.set(r,m)),o}const E="popstate";export{O as useUrlStateBase};
import u from"react";import{TIMEOUT as b}from"../constants/constants.mjs";import{useInsertionEffect as v}from"../useInsertionEffect.mjs";import{useSharedState as y}from"../useSharedState/useSharedState.mjs";import{useUrlEncode as L}from"../useUrlEncode/useUrlEncode.mjs";import{filterUnknownParamsClient as P}from"../utils.mjs";function C(t,a,l){const{parse:c,stringify:n}=L(t),{state:m,getState:r,setState:s}=y(t,()=>l?.({parse:c})||t),p=u.useRef(void 0);v(()=>{const e=()=>{const o=c(P(t));s(o)};return window.addEventListener(S,e),()=>{window.removeEventListener(S,e),clearTimeout(p.current)}},[s]);const i=u.useRef([]),f=u.useCallback((e,o)=>{const w=typeof e=="function"?e(r()):e?{...r(),...e}:r(),d=n(w,I(t)),h=`${window.location.pathname}${d.length?"?":""}${d}${window.location.hash}`,$=`${window.location.pathname}${window.location.search}${window.location.hash}`;if(h===$)return;s(w);const E=o?.replace;delete o?.replace,i.current.push([E?"replace":"push",h,o]),clearTimeout(p.current),p.current=setTimeout(()=>{queueMicrotask(()=>{if(!i.current.length)return;const g=i.current.at(-1);i.current=[];const[T,k,R]=g||[];a[T](k,R)})},b)},[a,n,r]),U=u.useCallback(e=>{f(t,e)},[f]);return{updateState:s,updateUrl:f,state:m,reset:U,getState:r}}function I(t){const a=Object.keys(t),l=window.location.search,c=new URLSearchParams(l),n=new URLSearchParams;return c.forEach((m,r)=>!a.includes(r)&&n.set(r,m)),n}const S="popstate";export{C as useUrlStateBase};
4 changes: 2 additions & 2 deletions dist/utils.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@ export declare function filterUnknownParams<T extends object>(shape: T, searchPa
export declare function filterUnknown<T extends object>(shape: T, entries: [key: string, value: string][]): string[][];
export declare function assignValue<T extends object>(shape: T, newVal: Partial<T>): T;
export interface Router {
push: (href: string, opts: object) => void;
replace: (href: string, opts: object) => void;
push: (href: string, opts?: object) => void;
replace: (href: string, opts?: object) => void;
}
export declare const routerHistory: Router;
export declare const isSafari: boolean;
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "state-in-url",
"version": "4.1.6",
"version": "4.1.7",
"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 and react-router@6-7.",
"homepage": "https://state-in-url.dev",
"repository": {
Expand Down

0 comments on commit 390a51f

Please sign in to comment.