@tanstack/react-router 1.33.8 → 1.34.0

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.
@@ -19,17 +19,47 @@ function _interopNamespaceDefault(e) {
19
19
  return Object.freeze(n);
20
20
  }
21
21
  const React__namespace = /* @__PURE__ */ _interopNamespaceDefault(React);
22
- function useBlocker(blockerFn, condition = true) {
22
+ function useBlocker(blockerFnOrOpts, condition) {
23
+ const { blockerFn, blockerCondition } = blockerFnOrOpts ? typeof blockerFnOrOpts === "function" ? { blockerFn: blockerFnOrOpts, blockerCondition: condition ?? true } : {
24
+ blockerFn: blockerFnOrOpts.blockerFn,
25
+ blockerCondition: blockerFnOrOpts.condition ?? true
26
+ } : { blockerFn: void 0, blockerCondition: condition ?? true };
23
27
  const { history } = useRouter.useRouter();
24
- React__namespace.useEffect(() => {
25
- if (!condition)
26
- return;
27
- return history.block(blockerFn);
28
+ const [resolver, setResolver] = React__namespace.useState({
29
+ status: "idle",
30
+ proceed: () => {
31
+ },
32
+ reset: () => {
33
+ }
34
+ });
35
+ const createPromise = () => new Promise((resolve) => {
36
+ setResolver({
37
+ status: "idle",
38
+ proceed: () => resolve(true),
39
+ reset: () => resolve(false)
40
+ });
28
41
  });
42
+ const [promise, setPromise] = React__namespace.useState(createPromise);
43
+ React__namespace.useEffect(() => {
44
+ const blockerFnComposed = async () => {
45
+ if (blockerFn) {
46
+ return await blockerFn();
47
+ }
48
+ setResolver((prev) => ({
49
+ ...prev,
50
+ status: "blocked"
51
+ }));
52
+ const canNavigateAsync = await promise;
53
+ setPromise(createPromise);
54
+ return canNavigateAsync;
55
+ };
56
+ return !blockerCondition ? void 0 : history.block(blockerFnComposed);
57
+ }, [blockerFn, blockerCondition, history, promise]);
58
+ return resolver;
29
59
  }
30
- function Block({ blocker, condition, children }) {
31
- useBlocker(blocker, condition);
32
- return children ?? null;
60
+ function Block({ blockerFn, condition, children }) {
61
+ const resolver = useBlocker({ blockerFn, condition });
62
+ return children ? typeof children === "function" ? children(resolver) : children : null;
33
63
  }
34
64
  exports.Block = Block;
35
65
  exports.useBlocker = useBlocker;
@@ -1 +1 @@
1
- {"version":3,"file":"useBlocker.cjs","sources":["../../src/useBlocker.tsx"],"sourcesContent":["import * as React from 'react'\nimport { useRouter } from './useRouter'\nimport type { BlockerFn } from '@tanstack/history'\nimport type { ReactNode } from './route'\n\nexport function useBlocker(\n blockerFn: BlockerFn,\n condition: boolean | any = true,\n): void {\n const { history } = useRouter()\n\n React.useEffect(() => {\n if (!condition) return\n return history.block(blockerFn)\n })\n}\n\nexport function Block({ blocker, condition, children }: PromptProps) {\n useBlocker(blocker, condition)\n return children ?? null\n}\n\nexport type PromptProps = {\n blocker: BlockerFn\n condition?: boolean | any\n children?: ReactNode\n}\n"],"names":["useRouter","React"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAKgB,SAAA,WACd,WACA,YAA2B,MACrB;AACA,QAAA,EAAE,YAAYA,UAAAA;AAEpBC,mBAAM,UAAU,MAAM;AACpB,QAAI,CAAC;AAAW;AACT,WAAA,QAAQ,MAAM,SAAS;AAAA,EAAA,CAC/B;AACH;AAEO,SAAS,MAAM,EAAE,SAAS,WAAW,YAAyB;AACnE,aAAW,SAAS,SAAS;AAC7B,SAAO,YAAY;AACrB;;;"}
1
+ {"version":3,"file":"useBlocker.cjs","sources":["../../src/useBlocker.tsx"],"sourcesContent":["import * as React from 'react'\nimport { useRouter } from './useRouter'\nimport type { BlockerFn } from '@tanstack/history'\nimport type { ReactNode } from './route'\n\ntype BlockerResolver = {\n status: 'idle' | 'blocked'\n proceed: () => void\n reset: () => void\n}\n\ntype BlockerOpts = {\n blockerFn?: BlockerFn\n condition?: boolean | any\n}\n\nexport function useBlocker(blockerFnOrOpts?: BlockerOpts): BlockerResolver\n\n/**\n * @deprecated Use the BlockerOpts object syntax instead\n */\nexport function useBlocker(\n blockerFn?: BlockerFn,\n condition?: boolean | any,\n): BlockerResolver\n\nexport function useBlocker(\n blockerFnOrOpts?: BlockerFn | BlockerOpts,\n condition?: boolean | any,\n): BlockerResolver {\n const { blockerFn, blockerCondition } = blockerFnOrOpts\n ? typeof blockerFnOrOpts === 'function'\n ? { blockerFn: blockerFnOrOpts, blockerCondition: condition ?? true }\n : {\n blockerFn: blockerFnOrOpts.blockerFn,\n blockerCondition: blockerFnOrOpts.condition ?? true,\n }\n : { blockerFn: undefined, blockerCondition: condition ?? true }\n const { history } = useRouter()\n\n const [resolver, setResolver] = React.useState<BlockerResolver>({\n status: 'idle',\n proceed: () => {},\n reset: () => {},\n })\n\n const createPromise = () =>\n new Promise<boolean>((resolve) => {\n setResolver({\n status: 'idle',\n proceed: () => resolve(true),\n reset: () => resolve(false),\n })\n })\n\n const [promise, setPromise] = React.useState(createPromise)\n\n React.useEffect(() => {\n const blockerFnComposed = async () => {\n // If a function is provided, it takes precedence over the promise blocker\n if (blockerFn) {\n return await blockerFn()\n }\n\n setResolver((prev) => ({\n ...prev,\n status: 'blocked',\n }))\n const canNavigateAsync = await promise\n\n setPromise(createPromise)\n\n return canNavigateAsync\n }\n\n return !blockerCondition ? undefined : history.block(blockerFnComposed)\n }, [blockerFn, blockerCondition, history, promise])\n\n return resolver\n}\n\nexport function Block({ blockerFn, condition, children }: PromptProps) {\n const resolver = useBlocker({ blockerFn, condition })\n return children\n ? typeof children === 'function'\n ? children(resolver)\n : children\n : null\n}\n\nexport type PromptProps = {\n blockerFn?: BlockerFn\n condition?: boolean | any\n children?: ReactNode | (({ proceed, reset }: BlockerResolver) => ReactNode)\n}\n"],"names":["useRouter","React"],"mappings":";;;;;;;;;;;;;;;;;;;;;AA0BgB,SAAA,WACd,iBACA,WACiB;AACjB,QAAM,EAAE,WAAW,qBAAqB,kBACpC,OAAO,oBAAoB,aACzB,EAAE,WAAW,iBAAiB,kBAAkB,aAAa,SAC7D;AAAA,IACE,WAAW,gBAAgB;AAAA,IAC3B,kBAAkB,gBAAgB,aAAa;AAAA,EAAA,IAEnD,EAAE,WAAW,QAAW,kBAAkB,aAAa;AACrD,QAAA,EAAE,YAAYA,UAAAA;AAEpB,QAAM,CAAC,UAAU,WAAW,IAAIC,iBAAM,SAA0B;AAAA,IAC9D,QAAQ;AAAA,IACR,SAAS,MAAM;AAAA,IAAC;AAAA,IAChB,OAAO,MAAM;AAAA,IAAC;AAAA,EAAA,CACf;AAED,QAAM,gBAAgB,MACpB,IAAI,QAAiB,CAAC,YAAY;AACpB,gBAAA;AAAA,MACV,QAAQ;AAAA,MACR,SAAS,MAAM,QAAQ,IAAI;AAAA,MAC3B,OAAO,MAAM,QAAQ,KAAK;AAAA,IAAA,CAC3B;AAAA,EAAA,CACF;AAEH,QAAM,CAAC,SAAS,UAAU,IAAIA,iBAAM,SAAS,aAAa;AAE1DA,mBAAM,UAAU,MAAM;AACpB,UAAM,oBAAoB,YAAY;AAEpC,UAAI,WAAW;AACb,eAAO,MAAM,UAAU;AAAA,MACzB;AAEA,kBAAY,CAAC,UAAU;AAAA,QACrB,GAAG;AAAA,QACH,QAAQ;AAAA,MACR,EAAA;AACF,YAAM,mBAAmB,MAAM;AAE/B,iBAAW,aAAa;AAEjB,aAAA;AAAA,IAAA;AAGT,WAAO,CAAC,mBAAmB,SAAY,QAAQ,MAAM,iBAAiB;AAAA,KACrE,CAAC,WAAW,kBAAkB,SAAS,OAAO,CAAC;AAE3C,SAAA;AACT;AAEO,SAAS,MAAM,EAAE,WAAW,WAAW,YAAyB;AACrE,QAAM,WAAW,WAAW,EAAE,WAAW,UAAW,CAAA;AACpD,SAAO,WACH,OAAO,aAAa,aAClB,SAAS,QAAQ,IACjB,WACF;AACN;;;"}
@@ -1,10 +1,24 @@
1
1
  import { BlockerFn } from '@tanstack/history';
2
2
  import { ReactNode } from './route.cjs';
3
3
 
4
- export declare function useBlocker(blockerFn: BlockerFn, condition?: boolean | any): void;
5
- export declare function Block({ blocker, condition, children }: PromptProps): any;
4
+ type BlockerResolver = {
5
+ status: 'idle' | 'blocked';
6
+ proceed: () => void;
7
+ reset: () => void;
8
+ };
9
+ type BlockerOpts = {
10
+ blockerFn?: BlockerFn;
11
+ condition?: boolean | any;
12
+ };
13
+ export declare function useBlocker(blockerFnOrOpts?: BlockerOpts): BlockerResolver;
14
+ /**
15
+ * @deprecated Use the BlockerOpts object syntax instead
16
+ */
17
+ export declare function useBlocker(blockerFn?: BlockerFn, condition?: boolean | any): BlockerResolver;
18
+ export declare function Block({ blockerFn, condition, children }: PromptProps): any;
6
19
  export type PromptProps = {
7
- blocker: BlockerFn;
20
+ blockerFn?: BlockerFn;
8
21
  condition?: boolean | any;
9
- children?: ReactNode;
22
+ children?: ReactNode | (({ proceed, reset }: BlockerResolver) => ReactNode);
10
23
  };
24
+ export {};
@@ -1,10 +1,24 @@
1
1
  import { BlockerFn } from '@tanstack/history';
2
2
  import { ReactNode } from './route.js';
3
3
 
4
- export declare function useBlocker(blockerFn: BlockerFn, condition?: boolean | any): void;
5
- export declare function Block({ blocker, condition, children }: PromptProps): any;
4
+ type BlockerResolver = {
5
+ status: 'idle' | 'blocked';
6
+ proceed: () => void;
7
+ reset: () => void;
8
+ };
9
+ type BlockerOpts = {
10
+ blockerFn?: BlockerFn;
11
+ condition?: boolean | any;
12
+ };
13
+ export declare function useBlocker(blockerFnOrOpts?: BlockerOpts): BlockerResolver;
14
+ /**
15
+ * @deprecated Use the BlockerOpts object syntax instead
16
+ */
17
+ export declare function useBlocker(blockerFn?: BlockerFn, condition?: boolean | any): BlockerResolver;
18
+ export declare function Block({ blockerFn, condition, children }: PromptProps): any;
6
19
  export type PromptProps = {
7
- blocker: BlockerFn;
20
+ blockerFn?: BlockerFn;
8
21
  condition?: boolean | any;
9
- children?: ReactNode;
22
+ children?: ReactNode | (({ proceed, reset }: BlockerResolver) => ReactNode);
10
23
  };
24
+ export {};
@@ -1,16 +1,46 @@
1
1
  import * as React from "react";
2
2
  import { useRouter } from "./useRouter.js";
3
- function useBlocker(blockerFn, condition = true) {
3
+ function useBlocker(blockerFnOrOpts, condition) {
4
+ const { blockerFn, blockerCondition } = blockerFnOrOpts ? typeof blockerFnOrOpts === "function" ? { blockerFn: blockerFnOrOpts, blockerCondition: condition ?? true } : {
5
+ blockerFn: blockerFnOrOpts.blockerFn,
6
+ blockerCondition: blockerFnOrOpts.condition ?? true
7
+ } : { blockerFn: void 0, blockerCondition: condition ?? true };
4
8
  const { history } = useRouter();
5
- React.useEffect(() => {
6
- if (!condition)
7
- return;
8
- return history.block(blockerFn);
9
+ const [resolver, setResolver] = React.useState({
10
+ status: "idle",
11
+ proceed: () => {
12
+ },
13
+ reset: () => {
14
+ }
15
+ });
16
+ const createPromise = () => new Promise((resolve) => {
17
+ setResolver({
18
+ status: "idle",
19
+ proceed: () => resolve(true),
20
+ reset: () => resolve(false)
21
+ });
9
22
  });
23
+ const [promise, setPromise] = React.useState(createPromise);
24
+ React.useEffect(() => {
25
+ const blockerFnComposed = async () => {
26
+ if (blockerFn) {
27
+ return await blockerFn();
28
+ }
29
+ setResolver((prev) => ({
30
+ ...prev,
31
+ status: "blocked"
32
+ }));
33
+ const canNavigateAsync = await promise;
34
+ setPromise(createPromise);
35
+ return canNavigateAsync;
36
+ };
37
+ return !blockerCondition ? void 0 : history.block(blockerFnComposed);
38
+ }, [blockerFn, blockerCondition, history, promise]);
39
+ return resolver;
10
40
  }
11
- function Block({ blocker, condition, children }) {
12
- useBlocker(blocker, condition);
13
- return children ?? null;
41
+ function Block({ blockerFn, condition, children }) {
42
+ const resolver = useBlocker({ blockerFn, condition });
43
+ return children ? typeof children === "function" ? children(resolver) : children : null;
14
44
  }
15
45
  export {
16
46
  Block,
@@ -1 +1 @@
1
- {"version":3,"file":"useBlocker.js","sources":["../../src/useBlocker.tsx"],"sourcesContent":["import * as React from 'react'\nimport { useRouter } from './useRouter'\nimport type { BlockerFn } from '@tanstack/history'\nimport type { ReactNode } from './route'\n\nexport function useBlocker(\n blockerFn: BlockerFn,\n condition: boolean | any = true,\n): void {\n const { history } = useRouter()\n\n React.useEffect(() => {\n if (!condition) return\n return history.block(blockerFn)\n })\n}\n\nexport function Block({ blocker, condition, children }: PromptProps) {\n useBlocker(blocker, condition)\n return children ?? null\n}\n\nexport type PromptProps = {\n blocker: BlockerFn\n condition?: boolean | any\n children?: ReactNode\n}\n"],"names":[],"mappings":";;AAKgB,SAAA,WACd,WACA,YAA2B,MACrB;AACA,QAAA,EAAE,YAAY;AAEpB,QAAM,UAAU,MAAM;AACpB,QAAI,CAAC;AAAW;AACT,WAAA,QAAQ,MAAM,SAAS;AAAA,EAAA,CAC/B;AACH;AAEO,SAAS,MAAM,EAAE,SAAS,WAAW,YAAyB;AACnE,aAAW,SAAS,SAAS;AAC7B,SAAO,YAAY;AACrB;"}
1
+ {"version":3,"file":"useBlocker.js","sources":["../../src/useBlocker.tsx"],"sourcesContent":["import * as React from 'react'\nimport { useRouter } from './useRouter'\nimport type { BlockerFn } from '@tanstack/history'\nimport type { ReactNode } from './route'\n\ntype BlockerResolver = {\n status: 'idle' | 'blocked'\n proceed: () => void\n reset: () => void\n}\n\ntype BlockerOpts = {\n blockerFn?: BlockerFn\n condition?: boolean | any\n}\n\nexport function useBlocker(blockerFnOrOpts?: BlockerOpts): BlockerResolver\n\n/**\n * @deprecated Use the BlockerOpts object syntax instead\n */\nexport function useBlocker(\n blockerFn?: BlockerFn,\n condition?: boolean | any,\n): BlockerResolver\n\nexport function useBlocker(\n blockerFnOrOpts?: BlockerFn | BlockerOpts,\n condition?: boolean | any,\n): BlockerResolver {\n const { blockerFn, blockerCondition } = blockerFnOrOpts\n ? typeof blockerFnOrOpts === 'function'\n ? { blockerFn: blockerFnOrOpts, blockerCondition: condition ?? true }\n : {\n blockerFn: blockerFnOrOpts.blockerFn,\n blockerCondition: blockerFnOrOpts.condition ?? true,\n }\n : { blockerFn: undefined, blockerCondition: condition ?? true }\n const { history } = useRouter()\n\n const [resolver, setResolver] = React.useState<BlockerResolver>({\n status: 'idle',\n proceed: () => {},\n reset: () => {},\n })\n\n const createPromise = () =>\n new Promise<boolean>((resolve) => {\n setResolver({\n status: 'idle',\n proceed: () => resolve(true),\n reset: () => resolve(false),\n })\n })\n\n const [promise, setPromise] = React.useState(createPromise)\n\n React.useEffect(() => {\n const blockerFnComposed = async () => {\n // If a function is provided, it takes precedence over the promise blocker\n if (blockerFn) {\n return await blockerFn()\n }\n\n setResolver((prev) => ({\n ...prev,\n status: 'blocked',\n }))\n const canNavigateAsync = await promise\n\n setPromise(createPromise)\n\n return canNavigateAsync\n }\n\n return !blockerCondition ? undefined : history.block(blockerFnComposed)\n }, [blockerFn, blockerCondition, history, promise])\n\n return resolver\n}\n\nexport function Block({ blockerFn, condition, children }: PromptProps) {\n const resolver = useBlocker({ blockerFn, condition })\n return children\n ? typeof children === 'function'\n ? children(resolver)\n : children\n : null\n}\n\nexport type PromptProps = {\n blockerFn?: BlockerFn\n condition?: boolean | any\n children?: ReactNode | (({ proceed, reset }: BlockerResolver) => ReactNode)\n}\n"],"names":[],"mappings":";;AA0BgB,SAAA,WACd,iBACA,WACiB;AACjB,QAAM,EAAE,WAAW,qBAAqB,kBACpC,OAAO,oBAAoB,aACzB,EAAE,WAAW,iBAAiB,kBAAkB,aAAa,SAC7D;AAAA,IACE,WAAW,gBAAgB;AAAA,IAC3B,kBAAkB,gBAAgB,aAAa;AAAA,EAAA,IAEnD,EAAE,WAAW,QAAW,kBAAkB,aAAa;AACrD,QAAA,EAAE,YAAY;AAEpB,QAAM,CAAC,UAAU,WAAW,IAAI,MAAM,SAA0B;AAAA,IAC9D,QAAQ;AAAA,IACR,SAAS,MAAM;AAAA,IAAC;AAAA,IAChB,OAAO,MAAM;AAAA,IAAC;AAAA,EAAA,CACf;AAED,QAAM,gBAAgB,MACpB,IAAI,QAAiB,CAAC,YAAY;AACpB,gBAAA;AAAA,MACV,QAAQ;AAAA,MACR,SAAS,MAAM,QAAQ,IAAI;AAAA,MAC3B,OAAO,MAAM,QAAQ,KAAK;AAAA,IAAA,CAC3B;AAAA,EAAA,CACF;AAEH,QAAM,CAAC,SAAS,UAAU,IAAI,MAAM,SAAS,aAAa;AAE1D,QAAM,UAAU,MAAM;AACpB,UAAM,oBAAoB,YAAY;AAEpC,UAAI,WAAW;AACb,eAAO,MAAM,UAAU;AAAA,MACzB;AAEA,kBAAY,CAAC,UAAU;AAAA,QACrB,GAAG;AAAA,QACH,QAAQ;AAAA,MACR,EAAA;AACF,YAAM,mBAAmB,MAAM;AAE/B,iBAAW,aAAa;AAEjB,aAAA;AAAA,IAAA;AAGT,WAAO,CAAC,mBAAmB,SAAY,QAAQ,MAAM,iBAAiB;AAAA,KACrE,CAAC,WAAW,kBAAkB,SAAS,OAAO,CAAC;AAE3C,SAAA;AACT;AAEO,SAAS,MAAM,EAAE,WAAW,WAAW,YAAyB;AACrE,QAAM,WAAW,WAAW,EAAE,WAAW,UAAW,CAAA;AACpD,SAAO,WACH,OAAO,aAAa,aAClB,SAAS,QAAQ,IACjB,WACF;AACN;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tanstack/react-router",
3
- "version": "1.33.8",
3
+ "version": "1.34.0",
4
4
  "description": "",
5
5
  "author": "Tanner Linsley",
6
6
  "license": "MIT",
@@ -3,25 +3,93 @@ import { useRouter } from './useRouter'
3
3
  import type { BlockerFn } from '@tanstack/history'
4
4
  import type { ReactNode } from './route'
5
5
 
6
+ type BlockerResolver = {
7
+ status: 'idle' | 'blocked'
8
+ proceed: () => void
9
+ reset: () => void
10
+ }
11
+
12
+ type BlockerOpts = {
13
+ blockerFn?: BlockerFn
14
+ condition?: boolean | any
15
+ }
16
+
17
+ export function useBlocker(blockerFnOrOpts?: BlockerOpts): BlockerResolver
18
+
19
+ /**
20
+ * @deprecated Use the BlockerOpts object syntax instead
21
+ */
22
+ export function useBlocker(
23
+ blockerFn?: BlockerFn,
24
+ condition?: boolean | any,
25
+ ): BlockerResolver
26
+
6
27
  export function useBlocker(
7
- blockerFn: BlockerFn,
8
- condition: boolean | any = true,
9
- ): void {
28
+ blockerFnOrOpts?: BlockerFn | BlockerOpts,
29
+ condition?: boolean | any,
30
+ ): BlockerResolver {
31
+ const { blockerFn, blockerCondition } = blockerFnOrOpts
32
+ ? typeof blockerFnOrOpts === 'function'
33
+ ? { blockerFn: blockerFnOrOpts, blockerCondition: condition ?? true }
34
+ : {
35
+ blockerFn: blockerFnOrOpts.blockerFn,
36
+ blockerCondition: blockerFnOrOpts.condition ?? true,
37
+ }
38
+ : { blockerFn: undefined, blockerCondition: condition ?? true }
10
39
  const { history } = useRouter()
11
40
 
12
- React.useEffect(() => {
13
- if (!condition) return
14
- return history.block(blockerFn)
41
+ const [resolver, setResolver] = React.useState<BlockerResolver>({
42
+ status: 'idle',
43
+ proceed: () => {},
44
+ reset: () => {},
15
45
  })
46
+
47
+ const createPromise = () =>
48
+ new Promise<boolean>((resolve) => {
49
+ setResolver({
50
+ status: 'idle',
51
+ proceed: () => resolve(true),
52
+ reset: () => resolve(false),
53
+ })
54
+ })
55
+
56
+ const [promise, setPromise] = React.useState(createPromise)
57
+
58
+ React.useEffect(() => {
59
+ const blockerFnComposed = async () => {
60
+ // If a function is provided, it takes precedence over the promise blocker
61
+ if (blockerFn) {
62
+ return await blockerFn()
63
+ }
64
+
65
+ setResolver((prev) => ({
66
+ ...prev,
67
+ status: 'blocked',
68
+ }))
69
+ const canNavigateAsync = await promise
70
+
71
+ setPromise(createPromise)
72
+
73
+ return canNavigateAsync
74
+ }
75
+
76
+ return !blockerCondition ? undefined : history.block(blockerFnComposed)
77
+ }, [blockerFn, blockerCondition, history, promise])
78
+
79
+ return resolver
16
80
  }
17
81
 
18
- export function Block({ blocker, condition, children }: PromptProps) {
19
- useBlocker(blocker, condition)
20
- return children ?? null
82
+ export function Block({ blockerFn, condition, children }: PromptProps) {
83
+ const resolver = useBlocker({ blockerFn, condition })
84
+ return children
85
+ ? typeof children === 'function'
86
+ ? children(resolver)
87
+ : children
88
+ : null
21
89
  }
22
90
 
23
91
  export type PromptProps = {
24
- blocker: BlockerFn
92
+ blockerFn?: BlockerFn
25
93
  condition?: boolean | any
26
- children?: ReactNode
94
+ children?: ReactNode | (({ proceed, reset }: BlockerResolver) => ReactNode)
27
95
  }