foxact 0.2.39 → 0.2.41

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.
Files changed (86) hide show
  1. package/create-fixed-array/index.cjs +1 -1
  2. package/create-fixed-array/index.d.ts +3 -3
  3. package/create-fixed-array/index.js +1 -1
  4. package/create-fixed-array/index.mjs +1 -1
  5. package/create-local-storage-state/index.cjs +1 -0
  6. package/create-local-storage-state/index.d.ts +24 -0
  7. package/create-local-storage-state/index.js +1 -0
  8. package/create-local-storage-state/index.mjs +1 -0
  9. package/create-session-storage-state/index.cjs +1 -0
  10. package/create-session-storage-state/index.d.ts +25 -0
  11. package/create-session-storage-state/index.js +1 -0
  12. package/create-session-storage-state/index.mjs +1 -0
  13. package/create-storage-hook/index.cjs +1 -1
  14. package/create-storage-hook/index.d.ts +4 -3
  15. package/create-storage-hook/index.js +1 -1
  16. package/create-storage-hook/index.mjs +1 -1
  17. package/create-storage-state-factory/index.cjs +1 -0
  18. package/create-storage-state-factory/index.d.ts +11 -0
  19. package/create-storage-state-factory/index.js +1 -0
  20. package/create-storage-state-factory/index.mjs +1 -0
  21. package/no-ssr/index.cjs +1 -1
  22. package/no-ssr/index.d.ts +2 -2
  23. package/no-ssr/index.js +1 -1
  24. package/no-ssr/index.mjs +1 -1
  25. package/nullthrow/index.d.ts +1 -1
  26. package/nullthrow/index.mjs +1 -1
  27. package/package.json +127 -100
  28. package/rem/index.cjs +1 -1
  29. package/rem/index.js +1 -1
  30. package/rem/index.mjs +1 -1
  31. package/sizes.json +1 -1
  32. package/use-abortable-effect/index.cjs +1 -1
  33. package/use-abortable-effect/index.d.ts +2 -2
  34. package/use-abortable-effect/index.js +1 -1
  35. package/use-abortable-effect/index.mjs +1 -1
  36. package/use-array/index.d.ts +1 -1
  37. package/use-array/index.mjs +1 -1
  38. package/use-component-will-receive-update/index.cjs +1 -1
  39. package/use-component-will-receive-update/index.d.ts +1 -1
  40. package/use-component-will-receive-update/index.js +1 -1
  41. package/use-component-will-receive-update/index.mjs +1 -1
  42. package/use-composition-input/index.cjs +1 -1
  43. package/use-composition-input/index.d.ts +1 -1
  44. package/use-composition-input/index.js +1 -1
  45. package/use-composition-input/index.mjs +1 -1
  46. package/use-error-boundary/index.cjs +1 -1
  47. package/use-error-boundary/index.d.ts +1 -1
  48. package/use-error-boundary/index.js +1 -1
  49. package/use-error-boundary/index.mjs +1 -1
  50. package/use-is-client/index.cjs +1 -1
  51. package/use-is-client/index.d.ts +1 -1
  52. package/use-is-client/index.js +1 -1
  53. package/use-is-client/index.mjs +1 -1
  54. package/use-local-storage/index.d.ts +3 -3
  55. package/use-map/index.d.ts +1 -1
  56. package/use-map/index.mjs +1 -1
  57. package/use-media-query/index.cjs +1 -1
  58. package/use-media-query/index.d.ts +1 -1
  59. package/use-media-query/index.js +1 -1
  60. package/use-media-query/index.mjs +1 -1
  61. package/use-next-link/index.cjs +1 -1
  62. package/use-next-link/index.d.ts +3 -1
  63. package/use-next-link/index.js +1 -1
  64. package/use-next-link/index.mjs +1 -1
  65. package/use-next-pathname/index.d.ts +1 -1
  66. package/use-next-pathname/index.mjs +1 -1
  67. package/use-react-router-enable-concurrent-navigation/index.cjs +1 -1
  68. package/use-react-router-enable-concurrent-navigation/index.d.ts +2 -2
  69. package/use-react-router-enable-concurrent-navigation/index.js +1 -1
  70. package/use-react-router-enable-concurrent-navigation/index.mjs +1 -1
  71. package/use-react-router-is-match/index.d.ts +1 -1
  72. package/use-react-router-is-match/index.mjs +1 -1
  73. package/use-retimer/index.cjs +1 -1
  74. package/use-retimer/index.d.ts +1 -1
  75. package/use-retimer/index.js +1 -1
  76. package/use-retimer/index.mjs +1 -1
  77. package/use-session-storage/index.d.ts +3 -3
  78. package/use-set/index.d.ts +1 -1
  79. package/use-set/index.mjs +1 -1
  80. package/use-singleton/index.cjs +1 -1
  81. package/use-singleton/index.d.ts +1 -1
  82. package/use-singleton/index.js +1 -1
  83. package/use-singleton/index.mjs +1 -1
  84. package/use-url-hash-state/index.cjs +1 -1
  85. package/use-url-hash-state/index.js +1 -1
  86. package/use-url-hash-state/index.mjs +1 -1
package/rem/index.mjs CHANGED
@@ -1 +1 @@
1
- const n="16px",e=function(e){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return r&&r!==n?"calc(".concat(e," * ").concat(r,")"):e};function r(n){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:16;return function c(i){if(Array.isArray(i))return i.map(c).join(" ");if(0===i||"0"===i)return"0";if("number"==typeof i)return e("".concat(i/t).concat(n),r);if(i.includes("calc(")||i.includes("var(")||i.includes("clamp("))return i;if(i.includes(" "))return i.split(" ").map(c).join(" ");if(i.includes(n))return e(i,r);const u=Number(i.replace("px",""));return u==u?e("".concat(u/t).concat(n),r):i}}const t=r("rem",n,16),c=r("rem","var(--mantine-scale)",16),i=r("em",n,16);export{r as createConverter,i as em,c as mantine_rem,t as rem};
1
+ const n="16px";function e(e){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return r&&r!==n?"calc(".concat(e," * ").concat(r,")"):e}function r(n){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:16;return function c(i){if(Array.isArray(i))return i.map(c).join(" ");if(0===i||"0"===i)return"0";if("number"==typeof i)return e("".concat(i/t).concat(n),r);if(i.includes("calc(")||i.includes("var(")||i.includes("clamp("))return i;if(i.includes(" "))return i.split(" ").map(c).join(" ");if(i.includes(n))return e(i,r);const u=Number(i.replace("px",""));return u==u?e("".concat(u/t).concat(n),r):i}}const t=r("rem",n,16),c=r("rem","var(--mantine-scale)",16),i=r("em",n,16);export{r as createConverter,i as em,c as mantine_rem,t as rem};
package/sizes.json CHANGED
@@ -1 +1 @@
1
- {"total":{"raw":19906,"gzip":12199,"br":0},"exports":{"compose-context-provider":{"raw":177,"gzip":155,"br":122},"context-state":{"raw":429,"gzip":258,"br":218},"create-context-state":{"raw":145,"gzip":116,"br":96},"invariant":{"raw":178,"gzip":156,"br":118},"current-year":{"raw":618,"gzip":417,"br":339},"noop":{"raw":33,"gzip":53,"br":37},"create-fixed-array":{"raw":419,"gzip":279,"br":251},"nullthrow":{"raw":194,"gzip":167,"br":128},"create-storage-hook":{"raw":2068,"gzip":880,"br":767},"types":{"raw":0,"gzip":20,"br":1},"no-ssr":{"raw":468,"gzip":318,"br":266},"typescript-happy-forward-ref":{"raw":119,"gzip":103,"br":80},"request-idle-callback":{"raw":410,"gzip":229,"br":175},"rem":{"raw":824,"gzip":396,"br":352},"use":{"raw":276,"gzip":182,"br":150},"use-component-will-receive-update":{"raw":207,"gzip":181,"br":153},"use-abortable-effect":{"raw":210,"gzip":166,"br":150},"use-composition-input":{"raw":458,"gzip":283,"br":241},"use-debounced-state":{"raw":401,"gzip":280,"br":242},"use-clipboard":{"raw":1177,"gzip":651,"br":552},"use-array":{"raw":329,"gzip":238,"br":199},"use-debounced-value":{"raw":524,"gzip":342,"br":286},"use-error-boundary":{"raw":244,"gzip":196,"br":159},"use-isomorphic-layout-effect":{"raw":178,"gzip":142,"br":112},"use-is-online":{"raw":335,"gzip":214,"br":160},"use-is-client":{"raw":151,"gzip":142,"br":118},"use-intersection":{"raw":1230,"gzip":649,"br":597},"use-map":{"raw":346,"gzip":244,"br":210},"use-local-storage":{"raw":310,"gzip":184,"br":157},"use-media-query":{"raw":718,"gzip":404,"br":331},"use-page-visibility":{"raw":290,"gzip":206,"br":154},"use-react-router-is-match":{"raw":564,"gzip":373,"br":314},"use-next-pathname":{"raw":321,"gzip":236,"br":199},"use-next-link":{"raw":1600,"gzip":851,"br":730},"use-react-router-enable-concurrent-navigation":{"raw":960,"gzip":470,"br":387},"use-retimer":{"raw":200,"gzip":165,"br":123},"use-singleton":{"raw":138,"gzip":129,"br":109},"use-set":{"raw":347,"gzip":240,"br":203},"use-session-storage":{"raw":316,"gzip":181,"br":152},"use-typescript-happy-callback":{"raw":107,"gzip":102,"br":77},"use-stable-handler-only-when-you-know-what-you-are-doing-or-you-will-be-fired":{"raw":459,"gzip":325,"br":249},"use-uncontrolled":{"raw":352,"gzip":258,"br":216},"use-url-hash-state":{"raw":1076,"gzip":618,"br":540}}}
1
+ {"total":{"raw":21174,"gzip":12898,"br":0},"exports":{"create-context-state":{"raw":145,"gzip":116,"br":96},"compose-context-provider":{"raw":177,"gzip":155,"br":122},"context-state":{"raw":429,"gzip":258,"br":218},"create-fixed-array":{"raw":452,"gzip":282,"br":248},"create-session-storage-state":{"raw":332,"gzip":182,"br":152},"create-local-storage-state":{"raw":328,"gzip":183,"br":154},"create-storage-state-factory":{"raw":519,"gzip":309,"br":263},"invariant":{"raw":178,"gzip":156,"br":118},"current-year":{"raw":618,"gzip":417,"br":339},"noop":{"raw":33,"gzip":53,"br":37},"types":{"raw":0,"gzip":20,"br":1},"no-ssr":{"raw":474,"gzip":316,"br":260},"create-storage-hook":{"raw":2073,"gzip":880,"br":764},"nullthrow":{"raw":187,"gzip":163,"br":121},"typescript-happy-forward-ref":{"raw":119,"gzip":103,"br":80},"use-abortable-effect":{"raw":215,"gzip":170,"br":144},"request-idle-callback":{"raw":410,"gzip":229,"br":175},"use-array":{"raw":322,"gzip":236,"br":202},"use":{"raw":276,"gzip":182,"br":150},"use-component-will-receive-update":{"raw":216,"gzip":188,"br":154},"use-debounced-value":{"raw":524,"gzip":342,"br":286},"rem":{"raw":823,"gzip":395,"br":350},"use-clipboard":{"raw":1177,"gzip":651,"br":552},"use-composition-input":{"raw":470,"gzip":286,"br":241},"use-is-client":{"raw":150,"gzip":145,"br":115},"use-error-boundary":{"raw":255,"gzip":198,"br":163},"use-debounced-state":{"raw":401,"gzip":280,"br":242},"use-is-online":{"raw":335,"gzip":214,"br":160},"use-isomorphic-layout-effect":{"raw":178,"gzip":142,"br":112},"use-map":{"raw":339,"gzip":243,"br":208},"use-intersection":{"raw":1230,"gzip":649,"br":597},"use-media-query":{"raw":738,"gzip":413,"br":332},"use-next-pathname":{"raw":314,"gzip":235,"br":203},"use-local-storage":{"raw":310,"gzip":184,"br":157},"use-page-visibility":{"raw":290,"gzip":206,"br":154},"use-react-router-is-match":{"raw":563,"gzip":372,"br":314},"use-retimer":{"raw":199,"gzip":166,"br":127},"use-next-link":{"raw":1615,"gzip":855,"br":737},"use-singleton":{"raw":139,"gzip":130,"br":104},"use-react-router-enable-concurrent-navigation":{"raw":966,"gzip":470,"br":397},"use-session-storage":{"raw":316,"gzip":181,"br":152},"use-set":{"raw":340,"gzip":238,"br":203},"use-typescript-happy-callback":{"raw":107,"gzip":102,"br":77},"use-stable-handler-only-when-you-know-what-you-are-doing-or-you-will-be-fired":{"raw":459,"gzip":325,"br":249},"use-uncontrolled":{"raw":352,"gzip":258,"br":216},"use-url-hash-state":{"raw":1081,"gzip":620,"br":540}}}
@@ -1 +1 @@
1
- "use strict";require("client-only");var e=require("react");const r=(r,t)=>{e.useEffect(()=>{const e=new AbortController,t=r(e.signal);return()=>{e.abort(),null==t||t()}},t)};exports.useAbortableEffect=r,exports.useEffect=r;
1
+ "use strict";require("client-only");var e=require("react");function r(r,t){e.useEffect(()=>{const e=new AbortController,t=r(e.signal);return()=>{e.abort(),null==t||t()}},t)}exports.useAbortableEffect=r,exports.useEffect=r;
@@ -1,7 +1,7 @@
1
1
  import { EffectCallback, DependencyList } from 'react';
2
2
 
3
3
  /** @see https://foxact.skk.moe/use-abortable-effect */
4
- declare const useAbortableEffect: (callback: (signal: AbortSignal) => ReturnType<EffectCallback>, deps: DependencyList) => void;
5
- declare const useEffect: (callback: (signal: AbortSignal) => ReturnType<EffectCallback>, deps: DependencyList) => void;
4
+ declare function useAbortableEffect(callback: (signal: AbortSignal) => ReturnType<EffectCallback>, deps: DependencyList): void;
5
+ declare const useEffect: typeof useAbortableEffect;
6
6
 
7
7
  export { useAbortableEffect, useEffect };
@@ -1 +1 @@
1
- "use strict";require("client-only");var e=require("react");const r=(r,t)=>{e.useEffect(()=>{const e=new AbortController,t=r(e.signal);return()=>{e.abort(),null==t||t()}},t)};exports.useAbortableEffect=r,exports.useEffect=r;
1
+ "use strict";require("client-only");var e=require("react");function r(r,t){e.useEffect(()=>{const e=new AbortController,t=r(e.signal);return()=>{e.abort(),null==t||t()}},t)}exports.useAbortableEffect=r,exports.useEffect=r;
@@ -1 +1 @@
1
- import"client-only";import{useEffect as t}from"react";const e=(e,o)=>{t(()=>{const t=new AbortController,o=e(t.signal);return()=>{t.abort(),null==o||o()}},o)},o=e;export{e as useAbortableEffect,o as useEffect};
1
+ import"client-only";import{useEffect as t}from"react";function e(e,o){t(()=>{const t=new AbortController,o=e(t.signal);return()=>{t.abort(),null==o||o()}},o)}const o=e;export{e as useAbortableEffect,o as useEffect};
@@ -1,3 +1,3 @@
1
- declare const useArray: <T>(initialState?: T[] | (() => T[])) => readonly [T[], (v: T) => void, () => void, (index: number) => void];
1
+ declare function useArray<T>(initialState?: T[] | (() => T[])): readonly [T[], (v: T) => void, () => void, (index: number) => void];
2
2
 
3
3
  export { useArray };
@@ -1 +1 @@
1
- import"client-only";import{useState as t,useCallback as r}from"react";const n=function(){let n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:()=>[];const[e,o]=t(n),c=r(t=>o(r=>r.concat(t)),[]);return[e,c,r(()=>o([]),[]),r(t=>o(r=>{if(t>-1){const n=r.slice();return n.splice(t,1),n}return r}),[])]};export{n as useArray};
1
+ import"client-only";import{useState as t,useCallback as r}from"react";function e(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:()=>[];const[n,o]=t(e),c=r(t=>o(r=>r.concat(t)),[]);return[n,c,r(()=>o([]),[]),r(t=>o(r=>{if(t>-1){const e=r.slice();return e.splice(t,1),e}return r}),[])]}export{e as useArray};
@@ -1 +1 @@
1
- "use strict";var e=require("react");exports.useComponentWillReceiveUpdate=function(t,n){n=[...n];const[l,r]=e.useState(n);let o=n.length!==l.length;for(let e=0;e<n.length&&!o;e+=1)l[e]!==n[e]&&(o=!0);o&&(r(n),t())};
1
+ "use strict";var e=require("react");exports.useComponentWillReceiveUpdate=function(t,n){n=[...n];const[r,l]=e.useState(n);let o=n.length!==r.length;for(let e=0;e<n.length&&!o;e+=1)r[e]!==n[e]&&(o=!0);return o&&(l(n),t()),o};
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @see {https://foxact.skk.moe/use-component-will-receive-update}
3
3
  */
4
- declare function useComponentWillReceiveUpdate(callback: () => void, deps: readonly unknown[]): void;
4
+ declare function useComponentWillReceiveUpdate(callback: () => void, deps: readonly unknown[]): boolean;
5
5
 
6
6
  export { useComponentWillReceiveUpdate };
@@ -1 +1 @@
1
- "use strict";var e=require("react");exports.useComponentWillReceiveUpdate=function(t,n){n=[...n];const[l,r]=e.useState(n);let o=n.length!==l.length;for(let e=0;e<n.length&&!o;e+=1)l[e]!==n[e]&&(o=!0);o&&(r(n),t())};
1
+ "use strict";var e=require("react");exports.useComponentWillReceiveUpdate=function(t,n){n=[...n];const[r,l]=e.useState(n);let o=n.length!==r.length;for(let e=0;e<n.length&&!o;e+=1)r[e]!==n[e]&&(o=!0);return o&&(l(n),t()),o};
@@ -1 +1 @@
1
- import{useState as e}from"react";function t(t,n){const[o,l]=e(n=[...n]);let r=n.length!==o.length;for(let e=0;e<n.length&&!r;e+=1)o[e]!==n[e]&&(r=!0);r&&(l(n),t())}export{t as useComponentWillReceiveUpdate};
1
+ import{useState as e}from"react";function t(t,n){const[o,l]=e(n=[...n]);let r=n.length!==o.length;for(let e=0;e<n.length&&!r;e+=1)o[e]!==n[e]&&(r=!0);return r&&(l(n),t()),r}export{t as useComponentWillReceiveUpdate};
@@ -1 +1 @@
1
- "use strict";require("client-only");var e=require("react"),r=require("../use-singleton/index.cjs");const t=()=>({c:!1,e:!1});exports.useCompositionInput=c=>{const n=r.useSingleton(t),u=e.useCallback(e=>{if("value"in e.target){const r=e.target.value;n.current.c?n.current.e=!1:(c(r),n.current.e=!0)}},[c,n]),s=e.useCallback(()=>{n.current.c=!0,n.current.e=!1},[n]),a=e.useCallback(e=>{n.current.c=!1,n.current.e||u(e)},[n,u]);return{onChange:u,onCompositionStart:s,onCompositionEnd:a}};
1
+ "use strict";require("client-only");var e=require("react"),r=require("../use-singleton/index.cjs");function t(){return{c:!1,e:!1}}exports.useCompositionInput=function(n){const u=r.useSingleton(t),c=e.useCallback(e=>{if("value"in e.target){const r=e.target.value;u.current.c?u.current.e=!1:(n(r),u.current.e=!0)}},[n,u]),i=e.useCallback(()=>{u.current.c=!0,u.current.e=!1},[u]),s=e.useCallback(e=>{u.current.c=!1,u.current.e||c(e)},[u,c]);return{onChange:c,onCompositionStart:i,onCompositionEnd:s}};
@@ -6,6 +6,6 @@ interface UseCompositionInputReturn<T extends HTMLInputElement | HTMLTextAreaEle
6
6
  onCompositionEnd: React.CompositionEventHandler<T>;
7
7
  }
8
8
  /** @see https://foxact.skk.moe/use-composition-input */
9
- declare const useCompositionInput: <T extends HTMLInputElement | HTMLTextAreaElement = HTMLInputElement>(cb: UseCompositionInputCallback) => UseCompositionInputReturn<T>;
9
+ declare function useCompositionInput<T extends HTMLInputElement | HTMLTextAreaElement = HTMLInputElement>(cb: UseCompositionInputCallback): UseCompositionInputReturn<T>;
10
10
 
11
11
  export { type UseCompositionInputCallback, type UseCompositionInputReturn, type UseCompositionInputReturnKey, useCompositionInput };
@@ -1 +1 @@
1
- "use strict";require("client-only");var e=require("react"),r=require("../use-singleton/index.js");const t=()=>({c:!1,e:!1});exports.useCompositionInput=n=>{const u=r.useSingleton(t),c=e.useCallback(e=>{if("value"in e.target){const r=e.target.value;u.current.c?u.current.e=!1:(n(r),u.current.e=!0)}},[n,u]),s=e.useCallback(()=>{u.current.c=!0,u.current.e=!1},[u]),a=e.useCallback(e=>{u.current.c=!1,u.current.e||c(e)},[u,c]);return{onChange:c,onCompositionStart:s,onCompositionEnd:a}};
1
+ "use strict";require("client-only");var e=require("react"),r=require("../use-singleton/index.js");function t(){return{c:!1,e:!1}}exports.useCompositionInput=function(n){const u=r.useSingleton(t),c=e.useCallback(e=>{if("value"in e.target){const r=e.target.value;u.current.c?u.current.e=!1:(n(r),u.current.e=!0)}},[n,u]),i=e.useCallback(()=>{u.current.c=!0,u.current.e=!1},[u]),s=e.useCallback(e=>{u.current.c=!1,u.current.e||c(e)},[u,c]);return{onChange:c,onCompositionStart:i,onCompositionEnd:s}};
@@ -1 +1 @@
1
- import"client-only";import{useCallback as r}from"react";import{useSingleton as e}from"../use-singleton/index.mjs";const t=()=>({c:!1,e:!1}),n=n=>{const c=e(t),o=r(r=>{if("value"in r.target){const e=r.target.value;c.current.c?c.current.e=!1:(n(e),c.current.e=!0)}},[n,c]),u=r(()=>{c.current.c=!0,c.current.e=!1},[c]),i=r(r=>{c.current.c=!1,c.current.e||o(r)},[c,o]);return{onChange:o,onCompositionStart:u,onCompositionEnd:i}};export{n as useCompositionInput};
1
+ import"client-only";import{useCallback as r}from"react";import{useSingleton as t}from"../use-singleton/index.mjs";function e(){return{c:!1,e:!1}}function n(n){const c=t(e),u=r(r=>{if("value"in r.target){const t=r.target.value;c.current.c?c.current.e=!1:(n(t),c.current.e=!0)}},[n,c]),o=r(()=>{c.current.c=!0,c.current.e=!1},[c]),i=r(r=>{c.current.c=!1,c.current.e||u(r)},[c,u]);return{onChange:u,onCompositionStart:o,onCompositionEnd:i}}export{n as useCompositionInput};
@@ -1 +1 @@
1
- "use strict";require("client-only");var r=require("react");const t=r=>!1!==r&&null!=r;exports.useErrorBoundary=function(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];const[n,o]=r.useState(!1);if(t(e))throw e;if(t(n))throw n;return o};
1
+ "use strict";require("client-only");var r=require("react");function t(r){return!(!1===r||null==r)}exports.useErrorBoundary=function(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];const[n,u]=r.useState(!1);if(t(e))throw e;if(t(n))throw n;return u};
@@ -2,6 +2,6 @@ import * as react from 'react';
2
2
 
3
3
  type ErrorLike = Error | undefined | null | boolean;
4
4
  /** @see https://foxact.skk.moe/use-error-boundary */
5
- declare const useErrorBoundary: (givenError?: ErrorLike) => react.Dispatch<react.SetStateAction<ErrorLike>>;
5
+ declare function useErrorBoundary(givenError?: ErrorLike): react.Dispatch<react.SetStateAction<ErrorLike>>;
6
6
 
7
7
  export { useErrorBoundary };
@@ -1 +1 @@
1
- "use strict";require("client-only");var r=require("react");const t=r=>!1!==r&&null!=r;exports.useErrorBoundary=function(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];const[n,o]=r.useState(!1);if(t(e))throw e;if(t(n))throw n;return o};
1
+ "use strict";require("client-only");var r=require("react");function t(r){return!(!1===r||null==r)}exports.useErrorBoundary=function(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];const[n,u]=r.useState(!1);if(t(e))throw e;if(t(n))throw n;return u};
@@ -1 +1 @@
1
- import"client-only";import{useState as o}from"react";const r=o=>!1!==o&&null!=o,t=function(){let t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];const[n,e]=o(!1);if(r(t))throw t;if(r(n))throw n;return e};export{t as useErrorBoundary};
1
+ import"client-only";import{useState as r}from"react";function t(r){return!(!1===r||null==r)}function o(){let o=arguments.length>0&&void 0!==arguments[0]&&arguments[0];const[n,e]=r(!1);if(t(o))throw o;if(t(n))throw n;return e}export{o as useErrorBoundary};
@@ -1 +1 @@
1
- "use strict";require("client-only");var e=require("react");exports.useIsClient=()=>{const[t,r]=e.useState(!1);return e.useEffect(()=>{r(!0)},[]),t};
1
+ "use strict";require("client-only");var e=require("react");exports.useIsClient=function(){const[t,r]=e.useState(!1);return e.useEffect(()=>{r(!0)},[]),t};
@@ -1,4 +1,4 @@
1
1
  /** @see https://foxact.skk.moe/use-is-client */
2
- declare const useIsClient: () => boolean;
2
+ declare function useIsClient(): boolean;
3
3
 
4
4
  export { useIsClient };
@@ -1 +1 @@
1
- "use strict";require("client-only");var e=require("react");exports.useIsClient=()=>{const[t,r]=e.useState(!1);return e.useEffect(()=>{r(!0)},[]),t};
1
+ "use strict";require("client-only");var e=require("react");exports.useIsClient=function(){const[t,r]=e.useState(!1);return e.useEffect(()=>{r(!0)},[]),t};
@@ -1 +1 @@
1
- import"client-only";import{useState as t,useEffect as o}from"react";const r=()=>{const[r,e]=t(!1);return o(()=>{e(!0)},[]),r};export{r as useIsClient};
1
+ import"client-only";import{useState as t,useEffect as n}from"react";function o(){const[o,r]=t(!1);return n(()=>{r(!0)},[]),o}export{o as useIsClient};
@@ -1,9 +1,9 @@
1
- import { UseStorageRawOption, UseStorageParserOption, Serializer } from '../create-storage-hook/index.js';
1
+ import { NotUndefined, UseStorageRawOption, UseStorageParserOption, StateHookTuple, Serializer } from '../create-storage-hook/index.js';
2
2
  export { Deserializer } from '../create-storage-hook/index.js';
3
3
 
4
4
  declare const useLocalStorage: {
5
- <T>(key: string, serverValue: T extends undefined ? never : T, options?: UseStorageRawOption | UseStorageParserOption<T>): readonly [T, React.Dispatch<React.SetStateAction<T | null>>];
6
- <T>(key: string, serverValue?: undefined, options?: UseStorageRawOption | UseStorageParserOption<T>): readonly [T | null, React.Dispatch<React.SetStateAction<T | null>>];
5
+ <T>(key: string, serverValue: NotUndefined<T>, options?: UseStorageRawOption | UseStorageParserOption<T>): StateHookTuple<T>;
6
+ <T>(key: string, serverValue?: undefined, options?: UseStorageRawOption | UseStorageParserOption<T>): StateHookTuple<T | null>;
7
7
  };
8
8
  declare const useSetLocalStorage: <T>(key: string, serializer: Serializer<T>) => (v: T | null) => void;
9
9
 
@@ -1,3 +1,3 @@
1
- declare const useMap: <K, T>(initialState?: Map<K, T> | (() => Map<K, T>)) => readonly [Map<K, T>, (k: K, v: T) => void, (k: K) => void, () => void, (m: Map<K, T>) => void];
1
+ declare function useMap<K, T>(initialState?: Map<K, T> | (() => Map<K, T>)): readonly [Map<K, T>, (k: K, v: T) => void, (k: K) => void, () => void, (m: Map<K, T>) => void];
2
2
 
3
3
  export { useMap };
package/use-map/index.mjs CHANGED
@@ -1 +1 @@
1
- import"client-only";import{useState as e,useCallback as t}from"react";const n=function(){let n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:()=>new Map;const[o,p]=e(n),a=t((e,t)=>p(n=>(n.set(e,t),new Map(n))),[]),r=t(e=>p(t=>t.has(e)?(t.delete(e),new Map(t)):t),[]);return[o,a,r,t(()=>p(new Map),[]),t(e=>p(e),[])]};export{n as useMap};
1
+ import"client-only";import{useState as e,useCallback as t}from"react";function n(){let n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:()=>new Map;const[o,p]=e(n),a=t((e,t)=>p(n=>(n.set(e,t),new Map(n))),[]),r=t(e=>p(t=>t.has(e)?(t.delete(e),new Map(t)):t),[]);return[o,a,r,t(()=>p(new Map),[]),t(e=>p(e),[])]}export{n as useMap};
@@ -1,2 +1,2 @@
1
1
  'use client';
2
- "use strict";var e=require("../no-ssr/index.cjs"),n=require("../noop/index.cjs"),r=require("react");const t=new Map,o=(e,r)=>{if("undefined"==typeof window)return n.noop;const o=window.matchMedia(e),i=()=>{t.set(e,o.matches),r()};return o.addEventListener("change",i),()=>{o.removeEventListener("change",i)}},i=()=>{throw e.noSSRError("useMediaQuery cannot be used on the server without a serverValue")};exports.useMediaQuery=(e,n)=>{"undefined"==typeof window||t.has(e)||t.set(e,window.matchMedia(e).matches);const a=r.useCallback(n=>o(e,n),[e]);return r.useSyncExternalStore(a,()=>{var n;return"undefined"!=typeof window&&(null!==(n=t.get(e))&&void 0!==n?n:window.matchMedia(e).matches)},void 0===n?i:()=>n)};
2
+ "use strict";var e=require("../no-ssr/index.cjs"),n=require("../noop/index.cjs"),t=require("react");const r=new Map;function o(){throw e.noSSRError("useMediaQuery cannot be used on the server without a serverValue")}exports.useMediaQuery=function(e,i){"undefined"==typeof window||r.has(e)||r.set(e,window.matchMedia(e).matches);const a=t.useCallback(t=>(function(e,t){if("undefined"==typeof window)return n.noop;const o=window.matchMedia(e),i=()=>{r.set(e,o.matches),t()};return o.addEventListener("change",i),()=>{o.removeEventListener("change",i)}})(e,t),[e]);return t.useSyncExternalStore(a,()=>{var n;return"undefined"!=typeof window&&(null!==(n=r.get(e))&&void 0!==n?n:window.matchMedia(e).matches)},void 0===i?o:()=>i)};
@@ -1,4 +1,4 @@
1
1
  /** @see https://foxact.skk.moe/use-media-query */
2
- declare const useMediaQuery: (mq: string, serverValue?: boolean) => boolean;
2
+ declare function useMediaQuery(mq: string, serverValue?: boolean): boolean;
3
3
 
4
4
  export { useMediaQuery };
@@ -1,2 +1,2 @@
1
1
  'use client';
2
- "use strict";var e=require("../no-ssr/index.js"),n=require("../noop/index.js"),r=require("react");const t=new Map,o=(e,r)=>{if("undefined"==typeof window)return n.noop;const o=window.matchMedia(e),i=()=>{t.set(e,o.matches),r()};return o.addEventListener("change",i),()=>{o.removeEventListener("change",i)}},i=()=>{throw e.noSSRError("useMediaQuery cannot be used on the server without a serverValue")};exports.useMediaQuery=(e,n)=>{"undefined"==typeof window||t.has(e)||t.set(e,window.matchMedia(e).matches);const a=r.useCallback(n=>o(e,n),[e]);return r.useSyncExternalStore(a,()=>{var n;return"undefined"!=typeof window&&(null!==(n=t.get(e))&&void 0!==n?n:window.matchMedia(e).matches)},void 0===n?i:()=>n)};
2
+ "use strict";var e=require("../no-ssr/index.js"),n=require("../noop/index.js"),t=require("react");const r=new Map;function o(){throw e.noSSRError("useMediaQuery cannot be used on the server without a serverValue")}exports.useMediaQuery=function(e,i){"undefined"==typeof window||r.has(e)||r.set(e,window.matchMedia(e).matches);const a=t.useCallback(t=>(function(e,t){if("undefined"==typeof window)return n.noop;const o=window.matchMedia(e),i=()=>{r.set(e,o.matches),t()};return o.addEventListener("change",i),()=>{o.removeEventListener("change",i)}})(e,t),[e]);return t.useSyncExternalStore(a,()=>{var n;return"undefined"!=typeof window&&(null!==(n=r.get(e))&&void 0!==n?n:window.matchMedia(e).matches)},void 0===i?o:()=>i)};
@@ -1,2 +1,2 @@
1
1
  'use client';
2
- import{noSSRError as e}from"../no-ssr/index.mjs";import{noop as n}from"../noop/index.mjs";import{useCallback as t,useSyncExternalStore as o}from"react";const r=new Map,i=(e,t)=>{if("undefined"==typeof window)return n;const o=window.matchMedia(e),i=()=>{r.set(e,o.matches),t()};return o.addEventListener("change",i),()=>{o.removeEventListener("change",i)}},d=()=>{throw e("useMediaQuery cannot be used on the server without a serverValue")},a=(e,n)=>("undefined"==typeof window||r.has(e)||r.set(e,window.matchMedia(e).matches),o(t(n=>i(e,n),[e]),()=>{var n;return"undefined"!=typeof window&&(null!==(n=r.get(e))&&void 0!==n?n:window.matchMedia(e).matches)},void 0===n?d:()=>n));export{a as useMediaQuery};
2
+ import{noSSRError as e}from"../no-ssr/index.mjs";import{noop as n}from"../noop/index.mjs";import{useCallback as t,useSyncExternalStore as o}from"react";const i=new Map;function r(){throw e("useMediaQuery cannot be used on the server without a serverValue")}function d(e,d){return"undefined"==typeof window||i.has(e)||i.set(e,window.matchMedia(e).matches),o(t(t=>(function(e,t){if("undefined"==typeof window)return n;const o=window.matchMedia(e),r=()=>{i.set(e,o.matches),t()};return o.addEventListener("change",r),()=>{o.removeEventListener("change",r)}})(e,t),[e]),()=>{var n;return"undefined"!=typeof window&&(null!==(n=i.get(e))&&void 0!==n?n:window.matchMedia(e).matches)},void 0===d?r:()=>d)}export{d as useMediaQuery};
@@ -1 +1 @@
1
- "use strict";require("client-only");var e=require("react"),t=require("next/navigation"),r=require("next/dist/shared/lib/router/utils/format-url"),n=require("../use-intersection/index.cjs");require("../request-idle-callback/index.cjs");const o=e=>{const t=e.currentTarget,r=t.getAttribute("target");return r&&"_self"!==r||t.download||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey||e.nativeEvent&&2===e.nativeEvent.which},s=(e,t,r)=>{"undefined"!=typeof window&&Promise.resolve(e.prefetch(t,r)).catch(e=>{if("production"!==process.env.NODE_ENV)throw e})};exports.unstable_useNextLink=(u,i)=>{let{prefetch:c,ref:l,onClick:a,onMouseEnter:f,onTouchStart:p,scroll:d=!0,replace:v=!1,...E}=i;process.env.NODE_ENV;const y=null==c?"auto":"full",N=!1!==c,h=t.useRouter(),[k,b]=e.useTransition(),[m,g,q]=n.useIntersection(e.useMemo(()=>({rootMargin:"200px"}),[])),x=e.useMemo(()=>"string"==typeof u?u:r.formatUrl(u),[u]),[_,C]=e.useState(x);return _!==x&&(C(x),q()),e.useEffect(()=>{"production"===process.env.NODE_ENV&&g&&N&&s(h,x,{kind:y})},[y,g,N,x,h]),[k,{ref:e.useCallback(e=>{m(e),"function"==typeof l?l(e):l&&e&&(l.current=e)},[l,m]),onClick:e.useCallback(e=>{if("function"==typeof a&&a(e),e.defaultPrevented)return;const{nodeName:t}=e.currentTarget;!("A"===t.toUpperCase()&&o(e))&&(e.preventDefault(),b(()=>{h[v?"replace":"push"](x,{scroll:d})}))},[a,v,x,h,d]),onMouseEnter:e.useCallback(e=>{"function"==typeof f&&f(e),"development"!==process.env.NODE_ENV&&N&&s(h,x,{kind:y})},[y,f,N,x,h]),onTouchStart:e.useCallback(e=>{"function"==typeof p&&p(e),"development"!==process.env.NODE_ENV&&N&&s(h,x,{kind:y})},[y,p,N,x,h]),...E}]};
1
+ "use strict";require("client-only");var e=require("react"),t=require("next/navigation"),r=require("next/dist/shared/lib/router/utils/format-url"),n=require("../use-intersection/index.cjs");function o(e,t,r){"undefined"!=typeof window&&Promise.resolve(e.prefetch(t,r)).catch(e=>{if("production"!==process.env.NODE_ENV)throw e})}require("../request-idle-callback/index.cjs"),exports.unstable_useNextLink=function(u,s){let{prefetch:i,ref:c,onClick:l,onMouseEnter:a,onTouchStart:f,scroll:p=!0,replace:d=!1,...v}=s;process.env.NODE_ENV;const E=null==i?"auto":"full",y=!1!==i,N=t.useRouter(),[h,k]=e.useTransition(),[b,m,g]=n.useIntersection(e.useMemo(()=>({rootMargin:"200px"}),[])),q=e.useMemo(()=>"string"==typeof u?u:r.formatUrl(u),[u]),[x,_]=e.useState(q);return x!==q&&(_(q),g()),e.useEffect(()=>{"production"===process.env.NODE_ENV&&m&&y&&o(N,q,{kind:E})},[E,m,y,q,N]),[h,{ref:e.useCallback(e=>{b(e),"function"==typeof c?c(e):c&&e&&(c.current=e)},[c,b]),onClick:e.useCallback(e=>{if("function"==typeof l&&l(e),e.defaultPrevented)return;const{nodeName:t}=e.currentTarget;!("A"===t.toUpperCase()&&function(e){const t=e.currentTarget,r=t.getAttribute("target");return r&&"_self"!==r||t.download||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey||e.nativeEvent&&2===e.nativeEvent.which}(e))&&(e.preventDefault(),k(()=>{N[d?"replace":"push"](q,{scroll:p})}))},[l,d,q,N,p]),onMouseEnter:e.useCallback(e=>{"function"==typeof a&&a(e),"development"!==process.env.NODE_ENV&&y&&o(N,q,{kind:E})},[E,a,y,q,N]),onTouchStart:e.useCallback(e=>{"function"==typeof f&&f(e),"development"!==process.env.NODE_ENV&&y&&o(N,q,{kind:E})},[E,f,y,q,N]),...v}]};
@@ -23,6 +23,8 @@ interface UseNextLinkReturnProps extends Partial<React.JSX.IntrinsicElements['a'
23
23
  onClick: React.MouseEventHandler<HTMLAnchorElement>;
24
24
  href?: string;
25
25
  }
26
- declare const unstable_useNextLink: (hrefProp: string | UrlObject, { prefetch: prefetchProp, ref, onClick, onMouseEnter, onTouchStart, scroll: routerScroll, replace, ...restProps }: UseNextLinkOptions) => [isPending: boolean, linkProps: UseNextLinkReturnProps];
26
+ /** @see https://foxact.skk.moe/use-next-link */
27
+ declare function useNextLink(hrefProp: string | UrlObject, { prefetch: prefetchProp, ref, onClick, onMouseEnter, onTouchStart, scroll: routerScroll, replace, ...restProps }: UseNextLinkOptions): [isPending: boolean, linkProps: UseNextLinkReturnProps];
28
+ declare const unstable_useNextLink: typeof useNextLink;
27
29
 
28
30
  export { type UseNextLinkOptions, type UseNextLinkReturnProps, unstable_useNextLink };
@@ -1 +1 @@
1
- "use strict";require("client-only");var e=require("react"),t=require("next/navigation"),r=require("next/dist/shared/lib/router/utils/format-url"),n=require("../use-intersection/index.js");require("../request-idle-callback/index.js");const o=e=>{const t=e.currentTarget,r=t.getAttribute("target");return r&&"_self"!==r||t.download||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey||e.nativeEvent&&2===e.nativeEvent.which},s=(e,t,r)=>{"undefined"!=typeof window&&Promise.resolve(e.prefetch(t,r)).catch(e=>{if("production"!==process.env.NODE_ENV)throw e})};exports.unstable_useNextLink=(u,i)=>{let{prefetch:c,ref:l,onClick:a,onMouseEnter:f,onTouchStart:p,scroll:d=!0,replace:v=!1,...E}=i;process.env.NODE_ENV;const y=null==c?"auto":"full",N=!1!==c,h=t.useRouter(),[k,b]=e.useTransition(),[m,g,q]=n.useIntersection(e.useMemo(()=>({rootMargin:"200px"}),[])),x=e.useMemo(()=>"string"==typeof u?u:r.formatUrl(u),[u]),[_,C]=e.useState(x);return _!==x&&(C(x),q()),e.useEffect(()=>{"production"===process.env.NODE_ENV&&g&&N&&s(h,x,{kind:y})},[y,g,N,x,h]),[k,{ref:e.useCallback(e=>{m(e),"function"==typeof l?l(e):l&&e&&(l.current=e)},[l,m]),onClick:e.useCallback(e=>{if("function"==typeof a&&a(e),e.defaultPrevented)return;const{nodeName:t}=e.currentTarget;!("A"===t.toUpperCase()&&o(e))&&(e.preventDefault(),b(()=>{h[v?"replace":"push"](x,{scroll:d})}))},[a,v,x,h,d]),onMouseEnter:e.useCallback(e=>{"function"==typeof f&&f(e),"development"!==process.env.NODE_ENV&&N&&s(h,x,{kind:y})},[y,f,N,x,h]),onTouchStart:e.useCallback(e=>{"function"==typeof p&&p(e),"development"!==process.env.NODE_ENV&&N&&s(h,x,{kind:y})},[y,p,N,x,h]),...E}]};
1
+ "use strict";require("client-only");var e=require("react"),t=require("next/navigation"),r=require("next/dist/shared/lib/router/utils/format-url"),n=require("../use-intersection/index.js");function o(e,t,r){"undefined"!=typeof window&&Promise.resolve(e.prefetch(t,r)).catch(e=>{if("production"!==process.env.NODE_ENV)throw e})}require("../request-idle-callback/index.js"),exports.unstable_useNextLink=function(u,s){let{prefetch:i,ref:c,onClick:l,onMouseEnter:a,onTouchStart:f,scroll:p=!0,replace:d=!1,...v}=s;process.env.NODE_ENV;const E=null==i?"auto":"full",y=!1!==i,N=t.useRouter(),[h,k]=e.useTransition(),[b,m,g]=n.useIntersection(e.useMemo(()=>({rootMargin:"200px"}),[])),q=e.useMemo(()=>"string"==typeof u?u:r.formatUrl(u),[u]),[x,_]=e.useState(q);return x!==q&&(_(q),g()),e.useEffect(()=>{"production"===process.env.NODE_ENV&&m&&y&&o(N,q,{kind:E})},[E,m,y,q,N]),[h,{ref:e.useCallback(e=>{b(e),"function"==typeof c?c(e):c&&e&&(c.current=e)},[c,b]),onClick:e.useCallback(e=>{if("function"==typeof l&&l(e),e.defaultPrevented)return;const{nodeName:t}=e.currentTarget;!("A"===t.toUpperCase()&&function(e){const t=e.currentTarget,r=t.getAttribute("target");return r&&"_self"!==r||t.download||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey||e.nativeEvent&&2===e.nativeEvent.which}(e))&&(e.preventDefault(),k(()=>{N[d?"replace":"push"](q,{scroll:p})}))},[l,d,q,N,p]),onMouseEnter:e.useCallback(e=>{"function"==typeof a&&a(e),"development"!==process.env.NODE_ENV&&y&&o(N,q,{kind:E})},[E,a,y,q,N]),onTouchStart:e.useCallback(e=>{"function"==typeof f&&f(e),"development"!==process.env.NODE_ENV&&y&&o(N,q,{kind:E})},[E,f,y,q,N]),...v}]};
@@ -1 +1 @@
1
- import"client-only";import{useTransition as e,useMemo as t,useState as r,useEffect as n,useCallback as o}from"react";import{useRouter as i}from"next/navigation";import{formatUrl as c}from"next/dist/shared/lib/router/utils/format-url";import{useIntersection as s}from"../use-intersection/index.mjs";import"../request-idle-callback/index.mjs";const p=e=>{const t=e.currentTarget,r=t.getAttribute("target");return r&&"_self"!==r||t.download||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey||e.nativeEvent&&2===e.nativeEvent.which},l=(e,t,r)=>{"undefined"!=typeof window&&Promise.resolve(e.prefetch(t,r)).catch(e=>{if("production"!==process.env.NODE_ENV)throw e})},u=(u,f)=>{let{prefetch:a,ref:d,onClick:m,onMouseEnter:v,onTouchStart:E,scroll:y=!0,replace:N=!1,...h}=f;process.env.NODE_ENV;const g=null==a?"auto":"full",x=!1!==a,_=i(),[k,D]=e(),[w,O,V]=s(t(()=>({rootMargin:"200px"}),[])),b=t(()=>"string"==typeof u?u:c(u),[u]),[K,T]=r(b);return K!==b&&(T(b),V()),n(()=>{"production"===process.env.NODE_ENV&&O&&x&&l(_,b,{kind:g})},[g,O,x,b,_]),[k,{ref:o(e=>{w(e),"function"==typeof d?d(e):d&&e&&(d.current=e)},[d,w]),onClick:o(e=>{if("function"==typeof m&&m(e),e.defaultPrevented)return;const{nodeName:t}=e.currentTarget;!("A"===t.toUpperCase()&&p(e))&&(e.preventDefault(),D(()=>{_[N?"replace":"push"](b,{scroll:y})}))},[m,N,b,_,y]),onMouseEnter:o(e=>{"function"==typeof v&&v(e),"development"!==process.env.NODE_ENV&&x&&l(_,b,{kind:g})},[g,v,x,b,_]),onTouchStart:o(e=>{"function"==typeof E&&E(e),"development"!==process.env.NODE_ENV&&x&&l(_,b,{kind:g})},[g,E,x,b,_]),...h}]};export{u as unstable_useNextLink};
1
+ import"client-only";import{useTransition as e,useMemo as t,useState as n,useEffect as o,useCallback as r}from"react";import{useRouter as i}from"next/navigation";import{formatUrl as c}from"next/dist/shared/lib/router/utils/format-url";import{useIntersection as s}from"../use-intersection/index.mjs";import"../request-idle-callback/index.mjs";function u(e,t,n){"undefined"!=typeof window&&Promise.resolve(e.prefetch(t,n)).catch(e=>{if("production"!==process.env.NODE_ENV)throw e})}const p=function(p,f){let{prefetch:l,ref:a,onClick:d,onMouseEnter:m,onTouchStart:v,scroll:E=!0,replace:y=!1,...N}=f;process.env.NODE_ENV;const h=null==l?"auto":"full",g=!1!==l,x=i(),[_,k]=e(),[D,w,O]=s(t(()=>({rootMargin:"200px"}),[])),V=t(()=>"string"==typeof p?p:c(p),[p]),[b,K]=n(V);return b!==V&&(K(V),O()),o(()=>{"production"===process.env.NODE_ENV&&w&&g&&u(x,V,{kind:h})},[h,w,g,V,x]),[_,{ref:r(e=>{D(e),"function"==typeof a?a(e):a&&e&&(a.current=e)},[a,D]),onClick:r(e=>{if("function"==typeof d&&d(e),e.defaultPrevented)return;const{nodeName:t}=e.currentTarget;!("A"===t.toUpperCase()&&function(e){const t=e.currentTarget,n=t.getAttribute("target");return n&&"_self"!==n||t.download||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey||e.nativeEvent&&2===e.nativeEvent.which}(e))&&(e.preventDefault(),k(()=>{x[y?"replace":"push"](V,{scroll:E})}))},[d,y,V,x,E]),onMouseEnter:r(e=>{"function"==typeof m&&m(e),"development"!==process.env.NODE_ENV&&g&&u(x,V,{kind:h})},[h,m,g,V,x]),onTouchStart:r(e=>{"function"==typeof v&&v(e),"development"!==process.env.NODE_ENV&&g&&u(x,V,{kind:h})},[h,v,g,V,x]),...N}]};export{p as unstable_useNextLink};
@@ -1,4 +1,4 @@
1
1
  /** @see https://foxact.skk.moe/use-next-pathname */
2
- declare const useNextPathname: (ensureTrailingSlash?: boolean) => string;
2
+ declare function useNextPathname(ensureTrailingSlash?: boolean): string;
3
3
 
4
4
  export { useNextPathname };
@@ -1 +1 @@
1
- import"client-only";import{useRouter as t}from"next/router.js";import{useMemo as n}from"react";const o=function(){let o=arguments.length>0&&void 0!==arguments[0]&&arguments[0];const{asPath:e}=t();return n(()=>{const t=e.split(/[#?]/)[0];return o?t.endsWith("/")?t:"".concat(t,"/"):t},[o,e])};export{o as useNextPathname};
1
+ import"client-only";import{useRouter as t}from"next/router.js";import{useMemo as e}from"react";function n(){let n=arguments.length>0&&void 0!==arguments[0]&&arguments[0];const{asPath:o}=t();return e(()=>{const t=o.split(/[#?]/)[0];return n?t.endsWith("/")?t:"".concat(t,"/"):t},[n,o])}export{n as useNextPathname};
@@ -1,2 +1,2 @@
1
1
  'use client';
2
- "use strict";require("client-only");var r=require("react"),e=require("react-router-dom");const t=()=>{const{navigator:t}=r.useContext(e.UNSAFE_NavigationContext);if(!t)throw TypeError("[foxact/use-react-router-enable-concurrent-navigation] must be used under <RouterProvider /> or a Router component (e.g. <BrowserRouter />)");r.useEffect(()=>{const e=t.go.bind(t),n=t.push.bind(t),o=t.replace.bind(t);return t.go=function(){for(var n=arguments.length,o=Array(n),a=0;a<n;a++)o[a]=arguments[a];return r.startTransition(()=>e.apply(t,o))},t.push=function(){for(var e=arguments.length,o=Array(e),a=0;a<e;a++)o[a]=arguments[a];return r.startTransition(()=>n.apply(t,o))},t.replace=function(){for(var e=arguments.length,n=Array(e),a=0;a<e;a++)n[a]=arguments[a];return r.startTransition(()=>o.apply(t,n))},()=>{t.go=e,t.push=n,t.replace=o}},[t])};exports.ReactRouterConcurrentNavigationProvider=r=>{let{children:e}=r;return t(),e},exports.useReactRouterEnableConcurrentNavigation=t;
2
+ "use strict";require("client-only");var r=require("react"),e=require("react-router-dom");function t(){const{navigator:t}=r.useContext(e.UNSAFE_NavigationContext);if(!t)throw TypeError("[foxact/use-react-router-enable-concurrent-navigation] must be used under <RouterProvider /> or a Router component (e.g. <BrowserRouter />)");r.useEffect(()=>{const e=t.go.bind(t),n=t.push.bind(t),o=t.replace.bind(t);return t.go=function(){for(var n=arguments.length,o=Array(n),a=0;a<n;a++)o[a]=arguments[a];return r.startTransition(()=>e.apply(t,o))},t.push=function(){for(var e=arguments.length,o=Array(e),a=0;a<e;a++)o[a]=arguments[a];return r.startTransition(()=>n.apply(t,o))},t.replace=function(){for(var e=arguments.length,n=Array(e),a=0;a<e;a++)n[a]=arguments[a];return r.startTransition(()=>o.apply(t,n))},()=>{t.go=e,t.push=n,t.replace=o}},[t])}exports.ReactRouterConcurrentNavigationProvider=function(r){let{children:e}=r;return t(),e},exports.useReactRouterEnableConcurrentNavigation=t;
@@ -2,7 +2,7 @@ import * as react from 'react';
2
2
  import { Foxact } from '../types/index.js';
3
3
 
4
4
  /** @see https://foxact.skk.moe/use-react-router-enable-concurrent-navigation */
5
- declare const useReactRouterEnableConcurrentNavigation: () => void;
6
- declare const ReactRouterConcurrentNavigationProvider: ({ children }: Foxact.PropsWithChildren) => react.ReactNode;
5
+ declare function useReactRouterEnableConcurrentNavigation(): void;
6
+ declare function ReactRouterConcurrentNavigationProvider({ children }: Foxact.PropsWithChildren): react.ReactNode;
7
7
 
8
8
  export { ReactRouterConcurrentNavigationProvider, useReactRouterEnableConcurrentNavigation };
@@ -1,2 +1,2 @@
1
1
  'use client';
2
- "use strict";require("client-only");var r=require("react"),e=require("react-router-dom");const t=()=>{const{navigator:t}=r.useContext(e.UNSAFE_NavigationContext);if(!t)throw TypeError("[foxact/use-react-router-enable-concurrent-navigation] must be used under <RouterProvider /> or a Router component (e.g. <BrowserRouter />)");r.useEffect(()=>{const e=t.go.bind(t),n=t.push.bind(t),o=t.replace.bind(t);return t.go=function(){for(var n=arguments.length,o=Array(n),a=0;a<n;a++)o[a]=arguments[a];return r.startTransition(()=>e.apply(t,o))},t.push=function(){for(var e=arguments.length,o=Array(e),a=0;a<e;a++)o[a]=arguments[a];return r.startTransition(()=>n.apply(t,o))},t.replace=function(){for(var e=arguments.length,n=Array(e),a=0;a<e;a++)n[a]=arguments[a];return r.startTransition(()=>o.apply(t,n))},()=>{t.go=e,t.push=n,t.replace=o}},[t])};exports.ReactRouterConcurrentNavigationProvider=r=>{let{children:e}=r;return t(),e},exports.useReactRouterEnableConcurrentNavigation=t;
2
+ "use strict";require("client-only");var r=require("react"),e=require("react-router-dom");function t(){const{navigator:t}=r.useContext(e.UNSAFE_NavigationContext);if(!t)throw TypeError("[foxact/use-react-router-enable-concurrent-navigation] must be used under <RouterProvider /> or a Router component (e.g. <BrowserRouter />)");r.useEffect(()=>{const e=t.go.bind(t),n=t.push.bind(t),o=t.replace.bind(t);return t.go=function(){for(var n=arguments.length,o=Array(n),a=0;a<n;a++)o[a]=arguments[a];return r.startTransition(()=>e.apply(t,o))},t.push=function(){for(var e=arguments.length,o=Array(e),a=0;a<e;a++)o[a]=arguments[a];return r.startTransition(()=>n.apply(t,o))},t.replace=function(){for(var e=arguments.length,n=Array(e),a=0;a<e;a++)n[a]=arguments[a];return r.startTransition(()=>o.apply(t,n))},()=>{t.go=e,t.push=n,t.replace=o}},[t])}exports.ReactRouterConcurrentNavigationProvider=function(r){let{children:e}=r;return t(),e},exports.useReactRouterEnableConcurrentNavigation=t;
@@ -1,2 +1,2 @@
1
1
  'use client';
2
- import"client-only";import{useContext as r,useEffect as e,startTransition as o}from"react";import{UNSAFE_NavigationContext as t}from"react-router-dom";const n=()=>{const{navigator:n}=r(t);if(!n)throw TypeError("[foxact/use-react-router-enable-concurrent-navigation] must be used under <RouterProvider /> or a Router component (e.g. <BrowserRouter />)");e(()=>{const r=n.go.bind(n),e=n.push.bind(n),t=n.replace.bind(n);return n.go=function(){for(var e=arguments.length,t=Array(e),a=0;a<e;a++)t[a]=arguments[a];return o(()=>r.apply(n,t))},n.push=function(){for(var r=arguments.length,t=Array(r),a=0;a<r;a++)t[a]=arguments[a];return o(()=>e.apply(n,t))},n.replace=function(){for(var r=arguments.length,e=Array(r),a=0;a<r;a++)e[a]=arguments[a];return o(()=>t.apply(n,e))},()=>{n.go=r,n.push=e,n.replace=t}},[n])},a=r=>{let{children:e}=r;return n(),e};export{a as ReactRouterConcurrentNavigationProvider,n as useReactRouterEnableConcurrentNavigation};
2
+ import"client-only";import{useContext as r,useEffect as e,startTransition as o}from"react";import{UNSAFE_NavigationContext as t}from"react-router-dom";function n(){const{navigator:n}=r(t);if(!n)throw TypeError("[foxact/use-react-router-enable-concurrent-navigation] must be used under <RouterProvider /> or a Router component (e.g. <BrowserRouter />)");e(()=>{const r=n.go.bind(n),e=n.push.bind(n),t=n.replace.bind(n);return n.go=function(){for(var e=arguments.length,t=Array(e),u=0;u<e;u++)t[u]=arguments[u];return o(()=>r.apply(n,t))},n.push=function(){for(var r=arguments.length,t=Array(r),u=0;u<r;u++)t[u]=arguments[u];return o(()=>e.apply(n,t))},n.replace=function(){for(var r=arguments.length,e=Array(r),u=0;u<r;u++)e[u]=arguments[u];return o(()=>t.apply(n,e))},()=>{n.go=r,n.push=e,n.replace=t}},[n])}function u(r){let{children:e}=r;return n(),e}export{u as ReactRouterConcurrentNavigationProvider,n as useReactRouterEnableConcurrentNavigation};
@@ -6,6 +6,6 @@ interface UseReactRouterIsMatchOption {
6
6
  end?: boolean;
7
7
  }
8
8
  /** @see https://foxact.skk.moe/use-react-router-is-match */
9
- declare const useReactRouterIsMatch: (to: To, { relative, caseSensitive, end }?: UseReactRouterIsMatchOption) => any;
9
+ declare function useReactRouterIsMatch(to: To, { relative, caseSensitive, end }?: UseReactRouterIsMatchOption): any;
10
10
 
11
11
  export { useReactRouterIsMatch };
@@ -1 +1 @@
1
- import"client-only";import{useContext as t,useMemo as e}from"react";import{useLocation as r,UNSAFE_NavigationContext as o,useResolvedPath as a}from"react-router-dom";const n=t=>t,c=function(c){let{relative:i,caseSensitive:m=!1,end:s=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{pathname:h}=r(),{navigator:{encodeLocation:l=n}}=t(o),p=a(c,{relative:i});return e(()=>{let t=h,e=l(p).pathname;return m||(t=t.toLowerCase(),e=e.toLowerCase()),t===e||!s&&t.startsWith(e)&&"/"===t.charAt(e.length)},[l,p,h,m,s])};export{c as useReactRouterIsMatch};
1
+ import"client-only";import{useContext as t,useMemo as e}from"react";import{useLocation as r,UNSAFE_NavigationContext as o,useResolvedPath as a}from"react-router-dom";const n=t=>t;function c(c){let{relative:i,caseSensitive:m=!1,end:s=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{pathname:h}=r(),{navigator:{encodeLocation:l=n}}=t(o),p=a(c,{relative:i});return e(()=>{let t=h,e=l(p).pathname;return m||(t=t.toLowerCase(),e=e.toLowerCase()),t===e||!s&&t.startsWith(e)&&"/"===t.charAt(e.length)},[l,p,h,m,s])}export{c as useReactRouterIsMatch};
@@ -1 +1 @@
1
- "use strict";require("client-only");var e=require("react");exports.useRetimer=()=>{const r=e.useRef();return e.useCallback(e=>{"number"==typeof r.current&&clearTimeout(r.current),r.current=e},[])};
1
+ "use strict";require("client-only");var e=require("react");exports.useRetimer=function(){const r=e.useRef();return e.useCallback(e=>{"number"==typeof r.current&&clearTimeout(r.current),r.current=e},[])};
@@ -1,4 +1,4 @@
1
1
  /** @see https://foxact.skk.moe/use-retimer */
2
- declare const useRetimer: () => (timerId?: number) => void;
2
+ declare function useRetimer(): (timerId?: number) => void;
3
3
 
4
4
  export { useRetimer };
@@ -1 +1 @@
1
- "use strict";require("client-only");var e=require("react");exports.useRetimer=()=>{const r=e.useRef();return e.useCallback(e=>{"number"==typeof r.current&&clearTimeout(r.current),r.current=e},[])};
1
+ "use strict";require("client-only");var e=require("react");exports.useRetimer=function(){const r=e.useRef();return e.useCallback(e=>{"number"==typeof r.current&&clearTimeout(r.current),r.current=e},[])};
@@ -1 +1 @@
1
- import"client-only";import{useRef as r,useCallback as e}from"react";const t=()=>{const t=r();return e(r=>{"number"==typeof t.current&&clearTimeout(t.current),t.current=r},[])};export{t as useRetimer};
1
+ import"client-only";import{useRef as r,useCallback as e}from"react";function t(){const t=r();return e(r=>{"number"==typeof t.current&&clearTimeout(t.current),t.current=r},[])}export{t as useRetimer};
@@ -1,9 +1,9 @@
1
- import { UseStorageRawOption, UseStorageParserOption, Serializer } from '../create-storage-hook/index.js';
1
+ import { NotUndefined, UseStorageRawOption, UseStorageParserOption, StateHookTuple, Serializer } from '../create-storage-hook/index.js';
2
2
  export { Deserializer } from '../create-storage-hook/index.js';
3
3
 
4
4
  declare const useSessionStorage: {
5
- <T>(key: string, serverValue: T extends undefined ? never : T, options?: UseStorageRawOption | UseStorageParserOption<T>): readonly [T, React.Dispatch<React.SetStateAction<T | null>>];
6
- <T>(key: string, serverValue?: undefined, options?: UseStorageRawOption | UseStorageParserOption<T>): readonly [T | null, React.Dispatch<React.SetStateAction<T | null>>];
5
+ <T>(key: string, serverValue: NotUndefined<T>, options?: UseStorageRawOption | UseStorageParserOption<T>): StateHookTuple<T>;
6
+ <T>(key: string, serverValue?: undefined, options?: UseStorageRawOption | UseStorageParserOption<T>): StateHookTuple<T | null>;
7
7
  };
8
8
  declare const useSetSessionStorage: <T>(key: string, serializer: Serializer<T>) => (v: T | null) => void;
9
9
 
@@ -1,3 +1,3 @@
1
- declare const useSet: <T>(initialState?: Set<T> | (() => Set<T>)) => readonly [Set<T>, (item: T) => void, (item: T) => void, () => void, (s: Set<T>) => void];
1
+ declare function useSet<T>(initialState?: Set<T> | (() => Set<T>)): readonly [Set<T>, (item: T) => void, (item: T) => void, () => void, (s: Set<T>) => void];
2
2
 
3
3
  export { useSet };
package/use-set/index.mjs CHANGED
@@ -1 +1 @@
1
- import"client-only";import{useState as e,useCallback as t}from"react";const n=function(){let n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:()=>new Set;const[o,r]=e(n),c=t(e=>r(t=>t.has(e)?t:new Set([...t,e])),[]),i=t(e=>r(t=>t.has(e)?(t.delete(e),new Set(t)):t),[]);return[o,c,i,t(()=>r(new Set),[]),t(e=>r(e),[])]};export{n as useSet};
1
+ import"client-only";import{useState as e,useCallback as t}from"react";function n(){let n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:()=>new Set;const[o,r]=e(n),i=t(e=>r(t=>t.has(e)?t:new Set([...t,e])),[]),l=t(e=>r(t=>t.has(e)?(t.delete(e),new Set(t)):t),[]);return[o,i,l,t(()=>r(new Set),[]),t(e=>r(e),[])]}export{n as useSet};
@@ -1 +1 @@
1
- "use strict";require("client-only");var e=require("react");exports.useSingleton=r=>{const t=e.useRef();return t.current||(t.current=r()),t};
1
+ "use strict";require("client-only");var e=require("react");exports.useSingleton=function(r){const t=e.useRef();return t.current||(t.current=r()),t};
@@ -2,6 +2,6 @@ interface SingletonRefObject<T> {
2
2
  readonly current: T;
3
3
  }
4
4
  /** @see https://foxact.skk.moe/use-singleton */
5
- declare const useSingleton: <T>(initializor: () => T) => SingletonRefObject<T>;
5
+ declare function useSingleton<T>(initializor: () => T): SingletonRefObject<T>;
6
6
 
7
7
  export { type SingletonRefObject, useSingleton };
@@ -1 +1 @@
1
- "use strict";require("client-only");var e=require("react");exports.useSingleton=r=>{const t=e.useRef();return t.current||(t.current=r()),t};
1
+ "use strict";require("client-only");var e=require("react");exports.useSingleton=function(r){const t=e.useRef();return t.current||(t.current=r()),t};
@@ -1 +1 @@
1
- import"client-only";import{useRef as r}from"react";const t=t=>{const n=r();return n.current||(n.current=t()),n};export{t as useSingleton};
1
+ import"client-only";import{useRef as r}from"react";function t(t){const n=r();return n.current||(n.current=t()),n}export{t as useSingleton};
@@ -1 +1 @@
1
- "use strict";require("client-only");var e=require("react"),r=require("../noop/index.cjs"),n=require("../no-ssr/index.cjs");const t=e=>e,a=(()=>{if("undefined"==typeof window)return e=>r.noop;let e=!1;const n=new Set,t=()=>{n.forEach(e=>e())};return r=>(n.add(r),e||(e=!0,window.addEventListener("hashchange",t)),()=>{n.delete(r)})})(),l=e=>"function"==typeof e,o=()=>{throw n.noSSRError("useUrlHashState cannot be used on the server without a serverValue")};exports.unstable_useUrlHashState=function(r,n){var s;let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{raw:!1,serializer:t,deserializer:t};const u=i.raw?t:i.serializer,c=i.raw?t:i.deserializer,d=void 0===n?o:()=>u(n),h=e.useSyncExternalStore(a,()=>new URLSearchParams(location.hash.slice(1)).get(r),d),w=e.useMemo(()=>null===h?null!=n?n:null:c(h),[n,c,h]),S=e.useCallback(e=>{const t=location.hash,a=new URLSearchParams(t.slice(1)),o=l(e)?e(w):e;o===n||null===o?a.delete(r):a.set(r,u(o));const s=a.toString();t!==s&&(location.hash=s)},[n,w,r,u]);return[null!==(s=null!=w?w:n)&&void 0!==s?s:null,S]};
1
+ "use strict";require("client-only");var e=require("react"),n=require("../noop/index.cjs"),r=require("../no-ssr/index.cjs");const t=e=>e,a=(()=>{if("undefined"==typeof window)return e=>n.noop;let e=!1;const r=new Set,t=()=>{r.forEach(e=>e())};return n=>(r.add(n),e||(e=!0,window.addEventListener("hashchange",t)),()=>{r.delete(n)})})(),o=e=>"function"==typeof e;function l(){throw r.noSSRError("useUrlHashState cannot be used on the server without a serverValue")}exports.unstable_useUrlHashState=function(n,r){var s;let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{raw:!1,serializer:t,deserializer:t};const u=i.raw?t:i.serializer,c=i.raw?t:i.deserializer,d=void 0===r?l:()=>u(r),h=e.useSyncExternalStore(a,()=>new URLSearchParams(location.hash.slice(1)).get(n),d),w=e.useMemo(()=>null===h?null!=r?r:null:c(h),[r,c,h]),S=e.useCallback(e=>{const t=location.hash,a=new URLSearchParams(t.slice(1)),l=o(e)?e(w):e;l===r||null===l?a.delete(n):a.set(n,u(l));const s=a.toString();t!==s&&(location.hash=s)},[r,w,n,u]);return[null!==(s=null!=w?w:r)&&void 0!==s?s:null,S]};
@@ -1 +1 @@
1
- "use strict";require("client-only");var e=require("react"),r=require("../noop/index.js"),n=require("../no-ssr/index.js");const t=e=>e,a=(()=>{if("undefined"==typeof window)return e=>r.noop;let e=!1;const n=new Set,t=()=>{n.forEach(e=>e())};return r=>(n.add(r),e||(e=!0,window.addEventListener("hashchange",t)),()=>{n.delete(r)})})(),l=e=>"function"==typeof e,o=()=>{throw n.noSSRError("useUrlHashState cannot be used on the server without a serverValue")};exports.unstable_useUrlHashState=function(r,n){var s;let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{raw:!1,serializer:t,deserializer:t};const u=i.raw?t:i.serializer,c=i.raw?t:i.deserializer,d=void 0===n?o:()=>u(n),h=e.useSyncExternalStore(a,()=>new URLSearchParams(location.hash.slice(1)).get(r),d),w=e.useMemo(()=>null===h?null!=n?n:null:c(h),[n,c,h]),S=e.useCallback(e=>{const t=location.hash,a=new URLSearchParams(t.slice(1)),o=l(e)?e(w):e;o===n||null===o?a.delete(r):a.set(r,u(o));const s=a.toString();t!==s&&(location.hash=s)},[n,w,r,u]);return[null!==(s=null!=w?w:n)&&void 0!==s?s:null,S]};
1
+ "use strict";require("client-only");var e=require("react"),n=require("../noop/index.js"),r=require("../no-ssr/index.js");const t=e=>e,a=(()=>{if("undefined"==typeof window)return e=>n.noop;let e=!1;const r=new Set,t=()=>{r.forEach(e=>e())};return n=>(r.add(n),e||(e=!0,window.addEventListener("hashchange",t)),()=>{r.delete(n)})})(),o=e=>"function"==typeof e;function l(){throw r.noSSRError("useUrlHashState cannot be used on the server without a serverValue")}exports.unstable_useUrlHashState=function(n,r){var s;let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{raw:!1,serializer:t,deserializer:t};const u=i.raw?t:i.serializer,c=i.raw?t:i.deserializer,d=void 0===r?l:()=>u(r),h=e.useSyncExternalStore(a,()=>new URLSearchParams(location.hash.slice(1)).get(n),d),w=e.useMemo(()=>null===h?null!=r?r:null:c(h),[r,c,h]),S=e.useCallback(e=>{const t=location.hash,a=new URLSearchParams(t.slice(1)),l=o(e)?e(w):e;l===r||null===l?a.delete(n):a.set(n,u(l));const s=a.toString();t!==s&&(location.hash=s)},[r,w,n,u]);return[null!==(s=null!=w?w:r)&&void 0!==s?s:null,S]};
@@ -1 +1 @@
1
- import"client-only";import{useSyncExternalStore as e,useMemo as t,useCallback as n}from"react";import{noop as r}from"../noop/index.mjs";import{noSSRError as o}from"../no-ssr/index.mjs";const a=e=>e,l=(()=>{if("undefined"==typeof window)return e=>r;let e=!1;const t=new Set,n=()=>{t.forEach(e=>e())};return r=>(t.add(r),e||(e=!0,window.addEventListener("hashchange",n)),()=>{t.delete(r)})})(),s=e=>"function"==typeof e,i=()=>{throw o("useUrlHashState cannot be used on the server without a serverValue")};function u(r,o){var u;let c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{raw:!1,serializer:a,deserializer:a};const h=c.raw?a:c.serializer,d=c.raw?a:c.deserializer,w=e(l,()=>new URLSearchParams(location.hash.slice(1)).get(r),void 0===o?i:()=>h(o)),m=t(()=>null===w?null!=o?o:null:d(w),[o,d,w]),f=n(e=>{const t=location.hash,n=new URLSearchParams(t.slice(1)),a=s(e)?e(m):e;a===o||null===a?n.delete(r):n.set(r,h(a));const l=n.toString();t!==l&&(location.hash=l)},[o,m,r,h]);return[null!==(u=null!=m?m:o)&&void 0!==u?u:null,f]}export{u as unstable_useUrlHashState};
1
+ import"client-only";import{useSyncExternalStore as e,useMemo as t,useCallback as n}from"react";import{noop as r}from"../noop/index.mjs";import{noSSRError as o}from"../no-ssr/index.mjs";const a=e=>e,l=(()=>{if("undefined"==typeof window)return e=>r;let e=!1;const t=new Set,n=()=>{t.forEach(e=>e())};return r=>(t.add(r),e||(e=!0,window.addEventListener("hashchange",n)),()=>{t.delete(r)})})(),s=e=>"function"==typeof e;function i(){throw o("useUrlHashState cannot be used on the server without a serverValue")}function u(r,o){var u;let c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{raw:!1,serializer:a,deserializer:a};const h=c.raw?a:c.serializer,d=c.raw?a:c.deserializer,w=e(l,()=>new URLSearchParams(location.hash.slice(1)).get(r),void 0===o?i:()=>h(o)),f=t(()=>null===w?null!=o?o:null:d(w),[o,d,w]),m=n(e=>{const t=location.hash,n=new URLSearchParams(t.slice(1)),a=s(e)?e(f):e;a===o||null===a?n.delete(r):n.set(r,h(a));const l=n.toString();t!==l&&(location.hash=l)},[o,f,r,h]);return[null!==(u=null!=f?f:o)&&void 0!==u?u:null,m]}export{u as unstable_useUrlHashState};