foxact 0.2.13 → 0.2.15

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "foxact",
3
- "version": "0.2.13",
3
+ "version": "0.2.15",
4
4
  "description": "React Hooks/Utils done right. For browser, SSR, and React Server Components.",
5
5
  "sideEffects": false,
6
6
  "files": [
@@ -164,6 +164,15 @@
164
164
  "require": "./use-intersection/index.cjs",
165
165
  "default": "./use-intersection/index.js"
166
166
  },
167
+ "./use-is-client": {
168
+ "types": "./use-is-client/index.d.ts",
169
+ "import": {
170
+ "types": "./use-is-client/index.d.ts",
171
+ "default": "./use-is-client/index.mjs"
172
+ },
173
+ "require": "./use-is-client/index.cjs",
174
+ "default": "./use-is-client/index.js"
175
+ },
167
176
  "./use-isomorphic-layout-effect": {
168
177
  "types": "./use-isomorphic-layout-effect/index.d.ts",
169
178
  "import": {
@@ -182,15 +191,6 @@
182
191
  "require": "./use-map/index.cjs",
183
192
  "default": "./use-map/index.js"
184
193
  },
185
- "./use-react-router-enable-concurrent-navigation": {
186
- "types": "./use-react-router-enable-concurrent-navigation/index.d.ts",
187
- "import": {
188
- "types": "./use-react-router-enable-concurrent-navigation/index.d.ts",
189
- "default": "./use-react-router-enable-concurrent-navigation/index.mjs"
190
- },
191
- "require": "./use-react-router-enable-concurrent-navigation/index.cjs",
192
- "default": "./use-react-router-enable-concurrent-navigation/index.js"
193
- },
194
194
  "./use-react-router-is-match": {
195
195
  "types": "./use-react-router-is-match/index.d.ts",
196
196
  "import": {
@@ -200,6 +200,15 @@
200
200
  "require": "./use-react-router-is-match/index.cjs",
201
201
  "default": "./use-react-router-is-match/index.js"
202
202
  },
203
+ "./use-react-router-enable-concurrent-navigation": {
204
+ "types": "./use-react-router-enable-concurrent-navigation/index.d.ts",
205
+ "import": {
206
+ "types": "./use-react-router-enable-concurrent-navigation/index.d.ts",
207
+ "default": "./use-react-router-enable-concurrent-navigation/index.mjs"
208
+ },
209
+ "require": "./use-react-router-enable-concurrent-navigation/index.cjs",
210
+ "default": "./use-react-router-enable-concurrent-navigation/index.js"
211
+ },
203
212
  "./use-retimer": {
204
213
  "types": "./use-retimer/index.d.ts",
205
214
  "import": {
package/sizes.json CHANGED
@@ -1 +1 @@
1
- {"total":{"raw":8437,"gzip":5449,"br":0},"exports":{"context-state":{"raw":371,"gzip":240,"br":204},"create-context-state":{"raw":146,"gzip":116,"br":102},"noop":{"raw":32,"gzip":52,"br":36},"request-idle-callback":{"raw":407,"gzip":231,"br":180},"typescript-happy-forward-ref":{"raw":118,"gzip":102,"br":87},"use":{"raw":279,"gzip":175,"br":151},"use-array":{"raw":329,"gzip":242,"br":201},"use-clipboard":{"raw":1071,"gzip":614,"br":527},"use-composition-input":{"raw":420,"gzip":262,"br":230},"use-debounced-state":{"raw":380,"gzip":275,"br":231},"use-debounced-value":{"raw":370,"gzip":263,"br":214},"use-error-boundary":{"raw":172,"gzip":157,"br":148},"use-intersection":{"raw":1214,"gzip":652,"br":592},"use-isomorphic-layout-effect":{"raw":177,"gzip":143,"br":120},"use-map":{"raw":348,"gzip":243,"br":210},"use-react-router-enable-concurrent-navigation":{"raw":790,"gzip":377,"br":310},"use-react-router-is-match":{"raw":502,"gzip":337,"br":284},"use-retimer":{"raw":197,"gzip":165,"br":125},"use-set":{"raw":349,"gzip":242,"br":203},"use-uncontrolled":{"raw":304,"gzip":236,"br":201},"use-stable-handler-only-when-you-know-what-you-are-doing-or-you-will-be-fired":{"raw":461,"gzip":325,"br":256}}}
1
+ {"total":{"raw":8871,"gzip":5737,"br":0},"exports":{"create-context-state":{"raw":146,"gzip":116,"br":102},"context-state":{"raw":371,"gzip":240,"br":204},"noop":{"raw":32,"gzip":52,"br":36},"typescript-happy-forward-ref":{"raw":118,"gzip":102,"br":87},"use":{"raw":279,"gzip":175,"br":151},"request-idle-callback":{"raw":407,"gzip":231,"br":180},"use-array":{"raw":329,"gzip":242,"br":201},"use-composition-input":{"raw":420,"gzip":262,"br":230},"use-debounced-state":{"raw":380,"gzip":275,"br":231},"use-clipboard":{"raw":1071,"gzip":614,"br":527},"use-debounced-value":{"raw":370,"gzip":263,"br":214},"use-error-boundary":{"raw":238,"gzip":194,"br":158},"use-is-client":{"raw":148,"gzip":143,"br":115},"use-intersection":{"raw":1214,"gzip":652,"br":592},"use-map":{"raw":348,"gzip":243,"br":210},"use-react-router-is-match":{"raw":562,"gzip":369,"br":309},"use-retimer":{"raw":197,"gzip":165,"br":125},"use-isomorphic-layout-effect":{"raw":177,"gzip":143,"br":120},"use-set":{"raw":349,"gzip":242,"br":203},"use-stable-handler-only-when-you-know-what-you-are-doing-or-you-will-be-fired":{"raw":461,"gzip":325,"br":256},"use-react-router-enable-concurrent-navigation":{"raw":950,"gzip":453,"br":373},"use-uncontrolled":{"raw":304,"gzip":236,"br":201}}}
@@ -1 +1 @@
1
- "use strict";require("client-only");var r=require("react");const e=r=>!1!==r&&null!=r;exports.useErrorBoundary=t=>{let[u,o]=r.useState(!1);if(e(t))throw t;if(e(u))throw u;return o};
1
+ "use strict";require("client-only");var r=require("react");const e=r=>!1!==r&&null!=r;exports.useErrorBoundary=function(){let t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],[n,o]=r.useState(!1);if(e(t))throw t;if(e(n))throw n;return o};
@@ -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 const 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 e=r=>!1!==r&&null!=r;exports.useErrorBoundary=t=>{let[u,o]=r.useState(!1);if(e(t))throw t;if(e(u))throw u;return o};
1
+ "use strict";require("client-only");var r=require("react");const e=r=>!1!==r&&null!=r;exports.useErrorBoundary=function(){let t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],[n,o]=r.useState(!1);if(e(t))throw t;if(e(n))throw n;return o};
@@ -1 +1 @@
1
- import"client-only";import{useState as r}from"react";let t=r=>!1!==r&&null!=r,o=o=>{let[e,l]=r(!1);if(t(o))throw o;if(t(e))throw e;return l};export{o as useErrorBoundary};
1
+ import"client-only";import{useState as r}from"react";let t=r=>!1!==r&&null!=r,o=function(){let o=arguments.length>0&&void 0!==arguments[0]&&arguments[0],[e,n]=r(!1);if(t(o))throw o;if(t(e))throw e;return n};export{o as useErrorBoundary};
@@ -0,0 +1 @@
1
+ "use strict";require("client-only");var e=require("react");exports.useIsClient=()=>{let[t,r]=e.useState(!1);return e.useEffect(()=>{r(!0)},[]),t};
@@ -0,0 +1,4 @@
1
+ /** @see https://foxact.skk.moe/use-is-client */
2
+ declare const useIsClient: () => boolean;
3
+
4
+ export { useIsClient };
@@ -0,0 +1 @@
1
+ "use strict";require("client-only");var e=require("react");exports.useIsClient=()=>{let[t,r]=e.useState(!1);return e.useEffect(()=>{r(!0)},[]),t};
@@ -0,0 +1 @@
1
+ import"client-only";import{useState as t,useEffect as e}from"react";let r=()=>{let[r,l]=t(!1);return e(()=>{l(!0)},[]),r};export{r as useIsClient};
@@ -1,2 +1,2 @@
1
1
  'use client';
2
- "use strict";require("client-only");var r=require("react"),t=require("react-router-dom");const e=()=>{let{navigator:e}=r.useContext(t.UNSAFE_NavigationContext);r.useEffect(()=>{let t=e.go.bind(e),n=e.push.bind(e),a=e.replace.bind(e);return e.go=function(){for(var n=arguments.length,a=Array(n),o=0;o<n;o++)a[o]=arguments[o];return r.startTransition(()=>t.apply(e,a))},e.push=function(){for(var t=arguments.length,a=Array(t),o=0;o<t;o++)a[o]=arguments[o];return r.startTransition(()=>n.apply(e,a))},e.replace=function(){for(var t=arguments.length,n=Array(t),o=0;o<t;o++)n[o]=arguments[o];return r.startTransition(()=>a.apply(e,n))},()=>{e.go=t,e.push=n,e.replace=a}},[e])};exports.ReactRouterConcurrentNavigationProvider=r=>{let{children:t}=r;return e(),t},exports.useReactRouterEnableConcurrentNavigation=e;
2
+ "use strict";require("client-only");var r=require("react"),e=require("react-router-dom");const t=()=>{let{navigator:t}=r.useContext(e.UNSAFE_NavigationContext);if(!t)throw TypeError("[foxact] useReactRouterEnableConcurrentNavigation must be used under <RouterProvider /> or a Router component (e.g. <BrowserRouter />)");r.useEffect(()=>{let 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;
@@ -1,2 +1,2 @@
1
1
  'use client';
2
- "use strict";require("client-only");var r=require("react"),t=require("react-router-dom");const e=()=>{let{navigator:e}=r.useContext(t.UNSAFE_NavigationContext);r.useEffect(()=>{let t=e.go.bind(e),n=e.push.bind(e),a=e.replace.bind(e);return e.go=function(){for(var n=arguments.length,a=Array(n),o=0;o<n;o++)a[o]=arguments[o];return r.startTransition(()=>t.apply(e,a))},e.push=function(){for(var t=arguments.length,a=Array(t),o=0;o<t;o++)a[o]=arguments[o];return r.startTransition(()=>n.apply(e,a))},e.replace=function(){for(var t=arguments.length,n=Array(t),o=0;o<t;o++)n[o]=arguments[o];return r.startTransition(()=>a.apply(e,n))},()=>{e.go=t,e.push=n,e.replace=a}},[e])};exports.ReactRouterConcurrentNavigationProvider=r=>{let{children:t}=r;return e(),t},exports.useReactRouterEnableConcurrentNavigation=e;
2
+ "use strict";require("client-only");var r=require("react"),e=require("react-router-dom");const t=()=>{let{navigator:t}=r.useContext(e.UNSAFE_NavigationContext);if(!t)throw TypeError("[foxact] useReactRouterEnableConcurrentNavigation must be used under <RouterProvider /> or a Router component (e.g. <BrowserRouter />)");r.useEffect(()=>{let 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;
@@ -1,2 +1,2 @@
1
1
  'use client';
2
- import"client-only";import{useContext as r,useEffect as e,startTransition as t}from"react";import{UNSAFE_NavigationContext as n}from"react-router-dom";let o=()=>{let{navigator:o}=r(n);e(()=>{let r=o.go.bind(o),e=o.push.bind(o),n=o.replace.bind(o);return o.go=function(){for(var e=arguments.length,n=Array(e),a=0;a<e;a++)n[a]=arguments[a];return t(()=>r.apply(o,n))},o.push=function(){for(var r=arguments.length,n=Array(r),a=0;a<r;a++)n[a]=arguments[a];return t(()=>e.apply(o,n))},o.replace=function(){for(var r=arguments.length,e=Array(r),a=0;a<r;a++)e[a]=arguments[a];return t(()=>n.apply(o,e))},()=>{o.go=r,o.push=e,o.replace=n}},[o])},a=r=>{let{children:e}=r;return o(),e};export{a as ReactRouterConcurrentNavigationProvider,o as useReactRouterEnableConcurrentNavigation};
2
+ import"client-only";import{useContext as r,useEffect as e,startTransition as t}from"react";import{UNSAFE_NavigationContext as o}from"react-router-dom";let n=()=>{let{navigator:n}=r(o);if(!n)throw TypeError("[foxact] useReactRouterEnableConcurrentNavigation must be used under <RouterProvider /> or a Router component (e.g. <BrowserRouter />)");e(()=>{let r=n.go.bind(n),e=n.push.bind(n),o=n.replace.bind(n);return n.go=function(){for(var e=arguments.length,o=Array(e),a=0;a<e;a++)o[a]=arguments[a];return t(()=>r.apply(n,o))},n.push=function(){for(var r=arguments.length,o=Array(r),a=0;a<r;a++)o[a]=arguments[a];return t(()=>e.apply(n,o))},n.replace=function(){for(var r=arguments.length,e=Array(r),a=0;a<r;a++)e[a]=arguments[a];return t(()=>o.apply(n,e))},()=>{n.go=r,n.push=e,n.replace=o}},[n])},a=r=>{let{children:e}=r;return n(),e};export{a as ReactRouterConcurrentNavigationProvider,n as useReactRouterEnableConcurrentNavigation};
@@ -1 +1 @@
1
- "use strict";require("client-only");var e=require("react"),t=require("react-router-dom");exports.useReactRouterIsMatch=(r,a)=>{let{relative:o,caseSensitive:s=!1,end:n=!1}=a,{pathname:u}=t.useLocation(),{navigator:{encodeLocation:i}}=e.useContext(t.UNSAFE_NavigationContext),c=t.useResolvedPath(r,{relative:o});return e.useMemo(()=>{let e=u,t=i?i(c).pathname:c.pathname;return s||(e=e.toLowerCase(),t=t.toLowerCase()),e===t||!n&&e.startsWith(t)&&"/"===e.charAt(t.length)},[i,c,u,s,n])};
1
+ "use strict";require("client-only");var e=require("react"),t=require("react-router-dom");exports.useReactRouterIsMatch=function(r){let{relative:a,caseSensitive:o=!1,end:n=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{pathname:s}=t.useLocation(),{navigator:{encodeLocation:u}}=e.useContext(t.UNSAFE_NavigationContext),i=t.useResolvedPath(r,{relative:a});return e.useMemo(()=>{let e=s,t=u?u(i).pathname:i.pathname;return o||(e=e.toLowerCase(),t=t.toLowerCase()),e===t||!n&&e.startsWith(t)&&"/"===e.charAt(t.length)},[u,i,s,o,n])};
@@ -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) => boolean;
9
+ declare const useReactRouterIsMatch: (to: To, { relative, caseSensitive, end }?: UseReactRouterIsMatchOption) => boolean;
10
10
 
11
11
  export { useReactRouterIsMatch };
@@ -1 +1 @@
1
- "use strict";require("client-only");var e=require("react"),t=require("react-router-dom");exports.useReactRouterIsMatch=(r,a)=>{let{relative:o,caseSensitive:s=!1,end:n=!1}=a,{pathname:u}=t.useLocation(),{navigator:{encodeLocation:i}}=e.useContext(t.UNSAFE_NavigationContext),c=t.useResolvedPath(r,{relative:o});return e.useMemo(()=>{let e=u,t=i?i(c).pathname:c.pathname;return s||(e=e.toLowerCase(),t=t.toLowerCase()),e===t||!n&&e.startsWith(t)&&"/"===e.charAt(t.length)},[i,c,u,s,n])};
1
+ "use strict";require("client-only");var e=require("react"),t=require("react-router-dom");exports.useReactRouterIsMatch=function(r){let{relative:a,caseSensitive:o=!1,end:n=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{pathname:s}=t.useLocation(),{navigator:{encodeLocation:u}}=e.useContext(t.UNSAFE_NavigationContext),i=t.useResolvedPath(r,{relative:a});return e.useMemo(()=>{let e=s,t=u?u(i).pathname:i.pathname;return o||(e=e.toLowerCase(),t=t.toLowerCase()),e===t||!n&&e.startsWith(t)&&"/"===e.charAt(t.length)},[u,i,s,o,n])};
@@ -1 +1 @@
1
- import"client-only";import{useContext as t,useMemo as e}from"react";import{useLocation as r,UNSAFE_NavigationContext as a,useResolvedPath as o}from"react-router-dom";let m=(m,n)=>{let{relative:h,caseSensitive:p=!1,end:c=!1}=n,{pathname:i}=r(),{navigator:{encodeLocation:l}}=t(a),s=o(m,{relative:h});return e(()=>{let t=i,e=l?l(s).pathname:s.pathname;return p||(t=t.toLowerCase(),e=e.toLowerCase()),t===e||!c&&t.startsWith(e)&&"/"===t.charAt(e.length)},[l,s,i,p,c])};export{m 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";let n=function(n){let{relative:m,caseSensitive:h=!1,end:i=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{pathname:c}=r(),{navigator:{encodeLocation:l}}=t(o),p=a(n,{relative:m});return e(()=>{let t=c,e=l?l(p).pathname:p.pathname;return h||(t=t.toLowerCase(),e=e.toLowerCase()),t===e||!i&&t.startsWith(e)&&"/"===t.charAt(e.length)},[l,p,c,h,i])};export{n as useReactRouterIsMatch};