@tanstack/solid-router 2.0.0-alpha.1 → 2.0.0-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (207) hide show
  1. package/dist/cjs/Asset.cjs +124 -167
  2. package/dist/cjs/Asset.cjs.map +1 -1
  3. package/dist/cjs/CatchBoundary.cjs +52 -68
  4. package/dist/cjs/CatchBoundary.cjs.map +1 -1
  5. package/dist/cjs/ClientOnly.cjs +61 -39
  6. package/dist/cjs/ClientOnly.cjs.map +1 -1
  7. package/dist/cjs/HeadContent.cjs +35 -27
  8. package/dist/cjs/HeadContent.cjs.map +1 -1
  9. package/dist/cjs/HeadContent.dev.cjs +48 -41
  10. package/dist/cjs/HeadContent.dev.cjs.map +1 -1
  11. package/dist/cjs/Match.cjs +367 -442
  12. package/dist/cjs/Match.cjs.map +1 -1
  13. package/dist/cjs/Matches.cjs +114 -158
  14. package/dist/cjs/Matches.cjs.map +1 -1
  15. package/dist/cjs/RouterProvider.cjs +29 -41
  16. package/dist/cjs/RouterProvider.cjs.map +1 -1
  17. package/dist/cjs/SafeFragment.cjs +7 -5
  18. package/dist/cjs/SafeFragment.cjs.map +1 -1
  19. package/dist/cjs/ScriptOnce.cjs +20 -22
  20. package/dist/cjs/ScriptOnce.cjs.map +1 -1
  21. package/dist/cjs/Scripts.cjs +43 -58
  22. package/dist/cjs/Scripts.cjs.map +1 -1
  23. package/dist/cjs/ScrollRestoration.cjs +26 -28
  24. package/dist/cjs/ScrollRestoration.cjs.map +1 -1
  25. package/dist/cjs/Transitioner.cjs +91 -124
  26. package/dist/cjs/Transitioner.cjs.map +1 -1
  27. package/dist/cjs/_virtual/_rolldown/runtime.cjs +23 -0
  28. package/dist/cjs/awaited.cjs +31 -53
  29. package/dist/cjs/awaited.cjs.map +1 -1
  30. package/dist/cjs/fileRoute.cjs +96 -91
  31. package/dist/cjs/fileRoute.cjs.map +1 -1
  32. package/dist/cjs/fileRoute.d.cts +2 -2
  33. package/dist/cjs/headContentUtils.cjs +132 -170
  34. package/dist/cjs/headContentUtils.cjs.map +1 -1
  35. package/dist/cjs/index.cjs +245 -176
  36. package/dist/cjs/index.dev.cjs +245 -176
  37. package/dist/cjs/lazyRouteComponent.cjs +48 -54
  38. package/dist/cjs/lazyRouteComponent.cjs.map +1 -1
  39. package/dist/cjs/link.cjs +310 -345
  40. package/dist/cjs/link.cjs.map +1 -1
  41. package/dist/cjs/matchContext.cjs +9 -23
  42. package/dist/cjs/matchContext.cjs.map +1 -1
  43. package/dist/cjs/not-found.cjs +26 -34
  44. package/dist/cjs/not-found.cjs.map +1 -1
  45. package/dist/cjs/renderRouteNotFound.cjs +23 -16
  46. package/dist/cjs/renderRouteNotFound.cjs.map +1 -1
  47. package/dist/cjs/route.cjs +200 -215
  48. package/dist/cjs/route.cjs.map +1 -1
  49. package/dist/cjs/router.cjs +18 -16
  50. package/dist/cjs/router.cjs.map +1 -1
  51. package/dist/cjs/routerContext.cjs +8 -22
  52. package/dist/cjs/routerContext.cjs.map +1 -1
  53. package/dist/cjs/scroll-restoration.cjs +25 -35
  54. package/dist/cjs/scroll-restoration.cjs.map +1 -1
  55. package/dist/cjs/ssr/RouterClient.cjs +18 -23
  56. package/dist/cjs/ssr/RouterClient.cjs.map +1 -1
  57. package/dist/cjs/ssr/RouterServer.cjs +10 -10
  58. package/dist/cjs/ssr/RouterServer.cjs.map +1 -1
  59. package/dist/cjs/ssr/client.cjs +2 -4
  60. package/dist/cjs/ssr/defaultRenderHandler.cjs +12 -16
  61. package/dist/cjs/ssr/defaultRenderHandler.cjs.map +1 -1
  62. package/dist/cjs/ssr/defaultStreamHandler.cjs +13 -18
  63. package/dist/cjs/ssr/defaultStreamHandler.cjs.map +1 -1
  64. package/dist/cjs/ssr/renderRouterToStream.cjs +26 -54
  65. package/dist/cjs/ssr/renderRouterToStream.cjs.map +1 -1
  66. package/dist/cjs/ssr/renderRouterToString.cjs +33 -57
  67. package/dist/cjs/ssr/renderRouterToString.cjs.map +1 -1
  68. package/dist/cjs/ssr/server.cjs +18 -18
  69. package/dist/cjs/useBlocker.cjs +140 -177
  70. package/dist/cjs/useBlocker.cjs.map +1 -1
  71. package/dist/cjs/useBlocker.d.cts +8 -5
  72. package/dist/cjs/useCanGoBack.cjs +6 -5
  73. package/dist/cjs/useCanGoBack.cjs.map +1 -1
  74. package/dist/cjs/useLoaderData.cjs +12 -11
  75. package/dist/cjs/useLoaderData.cjs.map +1 -1
  76. package/dist/cjs/useLoaderDeps.cjs +12 -14
  77. package/dist/cjs/useLoaderDeps.cjs.map +1 -1
  78. package/dist/cjs/useLocation.cjs +6 -7
  79. package/dist/cjs/useLocation.cjs.map +1 -1
  80. package/dist/cjs/useMatch.cjs +25 -46
  81. package/dist/cjs/useMatch.cjs.map +1 -1
  82. package/dist/cjs/useNavigate.cjs +20 -38
  83. package/dist/cjs/useNavigate.cjs.map +1 -1
  84. package/dist/cjs/useParams.cjs +14 -13
  85. package/dist/cjs/useParams.cjs.map +1 -1
  86. package/dist/cjs/useRouteContext.cjs +9 -8
  87. package/dist/cjs/useRouteContext.cjs.map +1 -1
  88. package/dist/cjs/useRouter.cjs +13 -26
  89. package/dist/cjs/useRouter.cjs.map +1 -1
  90. package/dist/cjs/useRouterState.cjs +40 -43
  91. package/dist/cjs/useRouterState.cjs.map +1 -1
  92. package/dist/cjs/useSearch.cjs +13 -12
  93. package/dist/cjs/useSearch.cjs.map +1 -1
  94. package/dist/cjs/utils.cjs +57 -49
  95. package/dist/cjs/utils.cjs.map +1 -1
  96. package/dist/esm/Asset.js +122 -166
  97. package/dist/esm/Asset.js.map +1 -1
  98. package/dist/esm/CatchBoundary.js +48 -50
  99. package/dist/esm/CatchBoundary.js.map +1 -1
  100. package/dist/esm/ClientOnly.js +58 -22
  101. package/dist/esm/ClientOnly.js.map +1 -1
  102. package/dist/esm/HeadContent.dev.js +46 -40
  103. package/dist/esm/HeadContent.dev.js.map +1 -1
  104. package/dist/esm/HeadContent.js +33 -26
  105. package/dist/esm/HeadContent.js.map +1 -1
  106. package/dist/esm/Match.js +359 -422
  107. package/dist/esm/Match.js.map +1 -1
  108. package/dist/esm/Matches.js +107 -142
  109. package/dist/esm/Matches.js.map +1 -1
  110. package/dist/esm/RouterProvider.js +26 -40
  111. package/dist/esm/RouterProvider.js.map +1 -1
  112. package/dist/esm/SafeFragment.js +6 -5
  113. package/dist/esm/SafeFragment.js.map +1 -1
  114. package/dist/esm/ScriptOnce.js +18 -21
  115. package/dist/esm/ScriptOnce.js.map +1 -1
  116. package/dist/esm/Scripts.js +42 -58
  117. package/dist/esm/Scripts.js.map +1 -1
  118. package/dist/esm/ScrollRestoration.js +25 -29
  119. package/dist/esm/ScrollRestoration.js.map +1 -1
  120. package/dist/esm/Transitioner.js +87 -105
  121. package/dist/esm/Transitioner.js.map +1 -1
  122. package/dist/esm/awaited.js +28 -36
  123. package/dist/esm/awaited.js.map +1 -1
  124. package/dist/esm/fileRoute.d.ts +2 -2
  125. package/dist/esm/fileRoute.js +90 -92
  126. package/dist/esm/fileRoute.js.map +1 -1
  127. package/dist/esm/headContentUtils.js +129 -152
  128. package/dist/esm/headContentUtils.js.map +1 -1
  129. package/dist/esm/index.dev.js +15 -115
  130. package/dist/esm/index.js +17 -116
  131. package/dist/esm/lazyRouteComponent.js +46 -53
  132. package/dist/esm/lazyRouteComponent.js.map +1 -1
  133. package/dist/esm/link.js +306 -329
  134. package/dist/esm/link.js.map +1 -1
  135. package/dist/esm/matchContext.js +7 -7
  136. package/dist/esm/matchContext.js.map +1 -1
  137. package/dist/esm/not-found.js +23 -33
  138. package/dist/esm/not-found.js.map +1 -1
  139. package/dist/esm/renderRouteNotFound.js +20 -15
  140. package/dist/esm/renderRouteNotFound.js.map +1 -1
  141. package/dist/esm/route.js +193 -218
  142. package/dist/esm/route.js.map +1 -1
  143. package/dist/esm/router.js +17 -17
  144. package/dist/esm/router.js.map +1 -1
  145. package/dist/esm/routerContext.js +6 -5
  146. package/dist/esm/routerContext.js.map +1 -1
  147. package/dist/esm/scroll-restoration.js +23 -34
  148. package/dist/esm/scroll-restoration.js.map +1 -1
  149. package/dist/esm/ssr/RouterClient.js +16 -22
  150. package/dist/esm/ssr/RouterClient.js.map +1 -1
  151. package/dist/esm/ssr/RouterServer.js +9 -10
  152. package/dist/esm/ssr/RouterServer.js.map +1 -1
  153. package/dist/esm/ssr/client.js +1 -4
  154. package/dist/esm/ssr/defaultRenderHandler.js +11 -15
  155. package/dist/esm/ssr/defaultRenderHandler.js.map +1 -1
  156. package/dist/esm/ssr/defaultStreamHandler.js +12 -17
  157. package/dist/esm/ssr/defaultStreamHandler.js.map +1 -1
  158. package/dist/esm/ssr/renderRouterToStream.js +23 -36
  159. package/dist/esm/ssr/renderRouterToStream.js.map +1 -1
  160. package/dist/esm/ssr/renderRouterToString.js +31 -40
  161. package/dist/esm/ssr/renderRouterToString.js.map +1 -1
  162. package/dist/esm/ssr/server.js +3 -10
  163. package/dist/esm/useBlocker.d.ts +8 -5
  164. package/dist/esm/useBlocker.js +136 -159
  165. package/dist/esm/useBlocker.js.map +1 -1
  166. package/dist/esm/useCanGoBack.js +6 -5
  167. package/dist/esm/useCanGoBack.js.map +1 -1
  168. package/dist/esm/useLoaderData.js +12 -11
  169. package/dist/esm/useLoaderData.js.map +1 -1
  170. package/dist/esm/useLoaderDeps.js +12 -14
  171. package/dist/esm/useLoaderDeps.js.map +1 -1
  172. package/dist/esm/useLocation.js +6 -7
  173. package/dist/esm/useLocation.js.map +1 -1
  174. package/dist/esm/useMatch.js +21 -28
  175. package/dist/esm/useMatch.js.map +1 -1
  176. package/dist/esm/useNavigate.js +18 -22
  177. package/dist/esm/useNavigate.js.map +1 -1
  178. package/dist/esm/useParams.js +14 -13
  179. package/dist/esm/useParams.js.map +1 -1
  180. package/dist/esm/useRouteContext.js +9 -8
  181. package/dist/esm/useRouteContext.js.map +1 -1
  182. package/dist/esm/useRouter.js +9 -8
  183. package/dist/esm/useRouter.js.map +1 -1
  184. package/dist/esm/useRouterState.js +38 -42
  185. package/dist/esm/useRouterState.js.map +1 -1
  186. package/dist/esm/useSearch.js +13 -12
  187. package/dist/esm/useSearch.js.map +1 -1
  188. package/dist/esm/utils.js +55 -33
  189. package/dist/esm/utils.js.map +1 -1
  190. package/dist/source/fileRoute.d.ts +2 -2
  191. package/dist/source/useBlocker.d.ts +8 -5
  192. package/dist/source/useBlocker.jsx +2 -2
  193. package/dist/source/useBlocker.jsx.map +1 -1
  194. package/dist/source/useRouterState.jsx +7 -0
  195. package/dist/source/useRouterState.jsx.map +1 -1
  196. package/package.json +3 -3
  197. package/src/fileRoute.ts +2 -2
  198. package/src/useBlocker.tsx +15 -10
  199. package/src/useRouterState.tsx +10 -0
  200. package/dist/cjs/index.cjs.map +0 -1
  201. package/dist/cjs/index.dev.cjs.map +0 -1
  202. package/dist/cjs/ssr/client.cjs.map +0 -1
  203. package/dist/cjs/ssr/server.cjs.map +0 -1
  204. package/dist/esm/index.dev.js.map +0 -1
  205. package/dist/esm/index.js.map +0 -1
  206. package/dist/esm/ssr/client.js.map +0 -1
  207. package/dist/esm/ssr/server.js.map +0 -1
@@ -1,184 +1,147 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const Solid$1 = require("@solidjs/web");
4
- const Solid = require("solid-js");
5
- const useRouter = require("./useRouter.cjs");
6
- function _interopNamespaceDefault(e) {
7
- const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
8
- if (e) {
9
- for (const k in e) {
10
- if (k !== "default") {
11
- const d = Object.getOwnPropertyDescriptor(e, k);
12
- Object.defineProperty(n, k, d.get ? d : {
13
- enumerable: true,
14
- get: () => e[k]
15
- });
16
- }
17
- }
18
- }
19
- n.default = e;
20
- return Object.freeze(n);
21
- }
22
- const Solid__namespace = /* @__PURE__ */ _interopNamespaceDefault(Solid);
1
+ const require_runtime = require("./_virtual/_rolldown/runtime.cjs");
2
+ const require_useRouter = require("./useRouter.cjs");
3
+ let _solidjs_web = require("@solidjs/web");
4
+ let solid_js = require("solid-js");
5
+ solid_js = require_runtime.__toESM(solid_js);
6
+ //#region src/useBlocker.tsx
23
7
  function _resolveBlockerOpts(opts, condition) {
24
- if (opts === void 0) {
25
- return {
26
- shouldBlockFn: () => true,
27
- withResolver: false
28
- };
29
- }
30
- if ("shouldBlockFn" in opts) {
31
- return opts;
32
- }
33
- if (typeof opts === "function") {
34
- const shouldBlock2 = Boolean(condition ?? true);
35
- const _customBlockerFn2 = async () => {
36
- if (shouldBlock2) return await opts();
37
- return false;
38
- };
39
- return {
40
- shouldBlockFn: _customBlockerFn2,
41
- enableBeforeUnload: shouldBlock2,
42
- withResolver: false
43
- };
44
- }
45
- const shouldBlock = Solid__namespace.createMemo(() => Boolean(opts.condition ?? true));
46
- const _customBlockerFn = async () => {
47
- if (shouldBlock() && opts.blockerFn !== void 0) {
48
- return await opts.blockerFn();
49
- }
50
- return shouldBlock();
51
- };
52
- return {
53
- get shouldBlockFn() {
54
- return _customBlockerFn;
55
- },
56
- get enableBeforeUnload() {
57
- return shouldBlock();
58
- },
59
- get withResolver() {
60
- return opts.blockerFn === void 0;
61
- }
62
- };
8
+ if (opts === void 0) return {
9
+ shouldBlockFn: () => true,
10
+ withResolver: false
11
+ };
12
+ if ("shouldBlockFn" in opts) return opts;
13
+ if (typeof opts === "function") {
14
+ const shouldBlock = Boolean(condition ?? true);
15
+ const _customBlockerFn = async () => {
16
+ if (shouldBlock) return await opts();
17
+ return false;
18
+ };
19
+ return {
20
+ shouldBlockFn: _customBlockerFn,
21
+ enableBeforeUnload: shouldBlock,
22
+ withResolver: false
23
+ };
24
+ }
25
+ const shouldBlock = solid_js.createMemo(() => Boolean(opts.condition ?? true));
26
+ const _customBlockerFn = async () => {
27
+ if (shouldBlock() && opts.blockerFn !== void 0) return await opts.blockerFn();
28
+ return shouldBlock();
29
+ };
30
+ return {
31
+ get shouldBlockFn() {
32
+ return _customBlockerFn;
33
+ },
34
+ get enableBeforeUnload() {
35
+ return shouldBlock();
36
+ },
37
+ get withResolver() {
38
+ return opts.blockerFn === void 0;
39
+ }
40
+ };
63
41
  }
64
42
  function useBlocker(opts, condition) {
65
- const props = Solid__namespace.merge({
66
- enableBeforeUnload: true,
67
- disabled: false,
68
- withResolver: false
69
- }, _resolveBlockerOpts(opts, condition));
70
- const router = useRouter.useRouter();
71
- const [resolver, setResolver] = Solid__namespace.createSignal({
72
- status: "idle",
73
- current: void 0,
74
- next: void 0,
75
- action: void 0,
76
- proceed: void 0,
77
- reset: void 0
78
- });
79
- Solid__namespace.createTrackedEffect(() => {
80
- const blockerFnComposed = async (blockerFnArgs) => {
81
- function getLocation(location) {
82
- const parsedLocation = router.parseLocation(location);
83
- const matchedRoutes = router.getMatchedRoutes(parsedLocation.pathname);
84
- if (matchedRoutes.foundRoute === void 0) {
85
- return {
86
- routeId: "__notFound__",
87
- fullPath: parsedLocation.pathname,
88
- pathname: parsedLocation.pathname,
89
- params: matchedRoutes.routeParams,
90
- search: parsedLocation.search
91
- };
92
- }
93
- return {
94
- routeId: matchedRoutes.foundRoute.id,
95
- fullPath: matchedRoutes.foundRoute.fullPath,
96
- pathname: parsedLocation.pathname,
97
- params: matchedRoutes.routeParams,
98
- search: parsedLocation.search
99
- };
100
- }
101
- const current = getLocation(blockerFnArgs.currentLocation);
102
- const next = getLocation(blockerFnArgs.nextLocation);
103
- if (current.routeId === "__notFound__" && next.routeId !== "__notFound__") {
104
- return false;
105
- }
106
- const shouldBlock = await props.shouldBlockFn({
107
- action: blockerFnArgs.action,
108
- current,
109
- next
110
- });
111
- if (!props.withResolver) {
112
- return shouldBlock;
113
- }
114
- if (!shouldBlock) {
115
- return false;
116
- }
117
- const promise = new Promise((resolve) => {
118
- setResolver({
119
- status: "blocked",
120
- current,
121
- next,
122
- action: blockerFnArgs.action,
123
- proceed: () => resolve(false),
124
- reset: () => resolve(true)
125
- });
126
- });
127
- const canNavigateAsync = await promise;
128
- setResolver({
129
- status: "idle",
130
- current: void 0,
131
- next: void 0,
132
- action: void 0,
133
- proceed: void 0,
134
- reset: void 0
135
- });
136
- return canNavigateAsync;
137
- };
138
- const disposeBlock = props.disabled ? void 0 : router.history.block({
139
- blockerFn: blockerFnComposed,
140
- enableBeforeUnload: props.enableBeforeUnload
141
- });
142
- Solid__namespace.onCleanup(() => disposeBlock?.());
143
- });
144
- return resolver;
43
+ const props = solid_js.merge({
44
+ enableBeforeUnload: true,
45
+ disabled: false,
46
+ withResolver: false
47
+ }, _resolveBlockerOpts(opts, condition));
48
+ const router = require_useRouter.useRouter();
49
+ const [resolver, setResolver] = solid_js.createSignal({
50
+ status: "idle",
51
+ current: void 0,
52
+ next: void 0,
53
+ action: void 0,
54
+ proceed: void 0,
55
+ reset: void 0
56
+ });
57
+ solid_js.createTrackedEffect(() => {
58
+ const blockerFnComposed = async (blockerFnArgs) => {
59
+ function getLocation(location) {
60
+ const parsedLocation = router.parseLocation(location);
61
+ const matchedRoutes = router.getMatchedRoutes(parsedLocation.pathname);
62
+ if (matchedRoutes.foundRoute === void 0) return {
63
+ routeId: "__notFound__",
64
+ fullPath: parsedLocation.pathname,
65
+ pathname: parsedLocation.pathname,
66
+ params: matchedRoutes.routeParams,
67
+ search: parsedLocation.search
68
+ };
69
+ return {
70
+ routeId: matchedRoutes.foundRoute.id,
71
+ fullPath: matchedRoutes.foundRoute.fullPath,
72
+ pathname: parsedLocation.pathname,
73
+ params: matchedRoutes.routeParams,
74
+ search: parsedLocation.search
75
+ };
76
+ }
77
+ const current = getLocation(blockerFnArgs.currentLocation);
78
+ const next = getLocation(blockerFnArgs.nextLocation);
79
+ if (current.routeId === "__notFound__" && next.routeId !== "__notFound__") return false;
80
+ const shouldBlock = await props.shouldBlockFn({
81
+ action: blockerFnArgs.action,
82
+ current,
83
+ next
84
+ });
85
+ if (!props.withResolver) return shouldBlock;
86
+ if (!shouldBlock) return false;
87
+ const canNavigateAsync = await new Promise((resolve) => {
88
+ setResolver({
89
+ status: "blocked",
90
+ current,
91
+ next,
92
+ action: blockerFnArgs.action,
93
+ proceed: () => resolve(false),
94
+ reset: () => resolve(true)
95
+ });
96
+ });
97
+ setResolver({
98
+ status: "idle",
99
+ current: void 0,
100
+ next: void 0,
101
+ action: void 0,
102
+ proceed: void 0,
103
+ reset: void 0
104
+ });
105
+ return canNavigateAsync;
106
+ };
107
+ const disposeBlock = props.disabled ? void 0 : router.history.block({
108
+ blockerFn: blockerFnComposed,
109
+ enableBeforeUnload: props.enableBeforeUnload
110
+ });
111
+ solid_js.onCleanup(() => disposeBlock?.());
112
+ });
113
+ return resolver;
145
114
  }
146
- const _resolvePromptBlockerArgs = (props) => {
147
- if ("shouldBlockFn" in props) {
148
- return props;
149
- }
150
- const shouldBlock = Solid__namespace.createMemo(() => Boolean(props.condition ?? true));
151
- const _customBlockerFn = async () => {
152
- if (shouldBlock() && props.blockerFn !== void 0) {
153
- return await props.blockerFn();
154
- }
155
- return shouldBlock;
156
- };
157
- return {
158
- shouldBlockFn: _customBlockerFn,
159
- get enableBeforeUnload() {
160
- return shouldBlock();
161
- },
162
- get withResolver() {
163
- return props.blockerFn === void 0;
164
- }
165
- };
115
+ var _resolvePromptBlockerArgs = (props) => {
116
+ if ("shouldBlockFn" in props) return props;
117
+ const shouldBlock = solid_js.createMemo(() => Boolean(props.condition ?? true));
118
+ const _customBlockerFn = async () => {
119
+ if (shouldBlock() && props.blockerFn !== void 0) return await props.blockerFn();
120
+ return shouldBlock;
121
+ };
122
+ return {
123
+ shouldBlockFn: _customBlockerFn,
124
+ get enableBeforeUnload() {
125
+ return shouldBlock();
126
+ },
127
+ get withResolver() {
128
+ return props.blockerFn === void 0;
129
+ }
130
+ };
166
131
  };
167
- function Block(opts) {
168
- const propsWithChildren = {
169
- get children() {
170
- return opts.children;
171
- }
172
- };
173
- const args = _resolvePromptBlockerArgs(opts);
174
- const resolver = useBlocker(args);
175
- const children = Solid__namespace.createMemo(() => {
176
- const child = propsWithChildren.children;
177
- if (resolver && typeof child === "function") return child(resolver());
178
- return child;
179
- });
180
- return Solid$1.memo(children);
181
- }
132
+ var Block = function Block(opts) {
133
+ const propsWithChildren = { get children() {
134
+ return opts.children;
135
+ } };
136
+ const resolver = useBlocker(_resolvePromptBlockerArgs(opts));
137
+ return (0, _solidjs_web.memo)(solid_js.createMemo(() => {
138
+ const child = propsWithChildren.children;
139
+ if (resolver && typeof child === "function") return child(resolver());
140
+ return child;
141
+ }));
142
+ };
143
+ //#endregion
182
144
  exports.Block = Block;
183
145
  exports.useBlocker = useBlocker;
184
- //# sourceMappingURL=useBlocker.cjs.map
146
+
147
+ //# sourceMappingURL=useBlocker.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useBlocker.cjs","sources":["../../src/useBlocker.tsx"],"sourcesContent":["import * as Solid from 'solid-js'\nimport { useRouter } from './useRouter'\nimport type {\n BlockerFnArgs,\n HistoryAction,\n HistoryLocation,\n} from '@tanstack/history'\nimport type { SolidNode } from './route'\nimport type {\n AnyRoute,\n AnyRouter,\n ParseRoute,\n RegisteredRouter,\n} from '@tanstack/router-core'\n\ninterface ShouldBlockFnLocation<\n out TRouteId,\n out TFullPath,\n out TAllParams,\n out TFullSearchSchema,\n> {\n routeId: TRouteId\n fullPath: TFullPath\n pathname: string\n params: TAllParams\n search: TFullSearchSchema\n}\n\ntype AnyShouldBlockFnLocation = ShouldBlockFnLocation<any, any, any, any>\ntype MakeShouldBlockFnLocationUnion<\n TRouter extends AnyRouter = RegisteredRouter,\n TRoute extends AnyRoute = ParseRoute<TRouter['routeTree']>,\n> = TRoute extends any\n ? ShouldBlockFnLocation<\n TRoute['id'],\n TRoute['fullPath'],\n TRoute['types']['allParams'],\n TRoute['types']['fullSearchSchema']\n >\n : never\n\ntype BlockerResolver<TRouter extends AnyRouter = RegisteredRouter> =\n | {\n status: 'blocked'\n current: MakeShouldBlockFnLocationUnion<TRouter>\n next: MakeShouldBlockFnLocationUnion<TRouter>\n action: HistoryAction\n proceed: () => void\n reset: () => void\n }\n | {\n status: 'idle'\n current: undefined\n next: undefined\n action: undefined\n proceed: undefined\n reset: undefined\n }\n\ntype ShouldBlockFnArgs<TRouter extends AnyRouter = RegisteredRouter> = {\n current: MakeShouldBlockFnLocationUnion<TRouter>\n next: MakeShouldBlockFnLocationUnion<TRouter>\n action: HistoryAction\n}\n\nexport type ShouldBlockFn<TRouter extends AnyRouter = RegisteredRouter> = (\n args: ShouldBlockFnArgs<TRouter>,\n) => boolean | Promise<boolean>\nexport type UseBlockerOpts<\n TRouter extends AnyRouter = RegisteredRouter,\n TWithResolver extends boolean = boolean,\n> = {\n shouldBlockFn: ShouldBlockFn<TRouter>\n enableBeforeUnload?: boolean | (() => boolean)\n disabled?: boolean\n withResolver?: TWithResolver\n}\n\ntype LegacyBlockerFn = () => Promise<any> | any\ntype LegacyBlockerOpts = {\n blockerFn?: LegacyBlockerFn\n condition?: boolean | any\n}\n\nfunction _resolveBlockerOpts(\n opts?: UseBlockerOpts | LegacyBlockerOpts | LegacyBlockerFn,\n condition?: boolean | any,\n): UseBlockerOpts {\n if (opts === undefined) {\n return {\n shouldBlockFn: () => true,\n withResolver: false,\n }\n }\n\n if ('shouldBlockFn' in opts) {\n return opts\n }\n\n if (typeof opts === 'function') {\n const shouldBlock = Boolean(condition ?? true)\n\n const _customBlockerFn = async () => {\n if (shouldBlock) return await opts()\n return false\n }\n\n return {\n shouldBlockFn: _customBlockerFn,\n enableBeforeUnload: shouldBlock,\n withResolver: false,\n }\n }\n\n const shouldBlock = Solid.createMemo(() => Boolean(opts.condition ?? true))\n\n const _customBlockerFn = async () => {\n if (shouldBlock() && opts.blockerFn !== undefined) {\n return await opts.blockerFn()\n }\n return shouldBlock()\n }\n\n return {\n get shouldBlockFn() {\n return _customBlockerFn\n },\n get enableBeforeUnload() {\n return shouldBlock()\n },\n get withResolver() {\n return opts.blockerFn === undefined\n },\n }\n}\n\nexport function useBlocker<\n TRouter extends AnyRouter = RegisteredRouter,\n TWithResolver extends boolean = false,\n>(\n opts: UseBlockerOpts<TRouter, TWithResolver>,\n): TWithResolver extends true ? Solid.Accessor<BlockerResolver<TRouter>> : void\n\n/**\n * @deprecated Use the shouldBlockFn property instead\n */\nexport function useBlocker(\n blockerFnOrOpts?: LegacyBlockerOpts,\n): Solid.Accessor<BlockerResolver>\n\n/**\n * @deprecated Use the UseBlockerOpts object syntax instead\n */\nexport function useBlocker(\n blockerFn?: LegacyBlockerFn,\n condition?: boolean | any,\n): Solid.Accessor<BlockerResolver>\n\nexport function useBlocker(\n opts?: UseBlockerOpts | LegacyBlockerOpts | LegacyBlockerFn,\n condition?: boolean | any,\n): Solid.Accessor<BlockerResolver> | void {\n const props = Solid.merge(\n {\n enableBeforeUnload: true,\n disabled: false,\n withResolver: false,\n },\n _resolveBlockerOpts(opts, condition),\n )\n\n const router = useRouter()\n\n const [resolver, setResolver] = Solid.createSignal<BlockerResolver>({\n status: 'idle',\n current: undefined,\n next: undefined,\n action: undefined,\n proceed: undefined,\n reset: undefined,\n })\n\n Solid.createTrackedEffect(() => {\n const blockerFnComposed = async (blockerFnArgs: BlockerFnArgs) => {\n function getLocation(\n location: HistoryLocation,\n ): AnyShouldBlockFnLocation {\n const parsedLocation = router.parseLocation(location)\n const matchedRoutes = router.getMatchedRoutes(parsedLocation.pathname)\n if (matchedRoutes.foundRoute === undefined) {\n return {\n routeId: '__notFound__',\n fullPath: parsedLocation.pathname,\n pathname: parsedLocation.pathname,\n params: matchedRoutes.routeParams,\n search: parsedLocation.search,\n }\n }\n return {\n routeId: matchedRoutes.foundRoute.id,\n fullPath: matchedRoutes.foundRoute.fullPath,\n pathname: parsedLocation.pathname,\n params: matchedRoutes.routeParams,\n search: parsedLocation.search,\n }\n }\n\n const current = getLocation(blockerFnArgs.currentLocation)\n const next = getLocation(blockerFnArgs.nextLocation)\n\n if (\n current.routeId === '__notFound__' &&\n next.routeId !== '__notFound__'\n ) {\n return false\n }\n\n const shouldBlock = await props.shouldBlockFn({\n action: blockerFnArgs.action,\n current,\n next,\n })\n if (!props.withResolver) {\n return shouldBlock\n }\n\n if (!shouldBlock) {\n return false\n }\n\n const promise = new Promise<boolean>((resolve) => {\n setResolver({\n status: 'blocked',\n current,\n next,\n action: blockerFnArgs.action,\n proceed: () => resolve(false),\n reset: () => resolve(true),\n })\n })\n\n const canNavigateAsync = await promise\n setResolver({\n status: 'idle',\n current: undefined,\n next: undefined,\n action: undefined,\n proceed: undefined,\n reset: undefined,\n })\n\n return canNavigateAsync\n }\n\n const disposeBlock = props.disabled\n ? undefined\n : router.history.block({\n blockerFn: blockerFnComposed,\n enableBeforeUnload: props.enableBeforeUnload,\n })\n\n Solid.onCleanup(() => disposeBlock?.())\n })\n\n return resolver\n}\n\nconst _resolvePromptBlockerArgs = (\n props: PromptProps | LegacyPromptProps,\n): UseBlockerOpts => {\n if ('shouldBlockFn' in props) {\n return props\n }\n\n const shouldBlock = Solid.createMemo(() => Boolean(props.condition ?? true))\n\n const _customBlockerFn = async () => {\n if (shouldBlock() && props.blockerFn !== undefined) {\n return await props.blockerFn()\n }\n return shouldBlock\n }\n\n return {\n shouldBlockFn: _customBlockerFn,\n get enableBeforeUnload() {\n return shouldBlock()\n },\n get withResolver() {\n return props.blockerFn === undefined\n },\n }\n}\n\nexport function Block<\n TRouter extends AnyRouter = RegisteredRouter,\n TWithResolver extends boolean = boolean,\n>(opts: PromptProps<TRouter, TWithResolver>): SolidNode\n\n/**\n * @deprecated Use the UseBlockerOpts property instead\n */\nexport function Block(opts: LegacyPromptProps): SolidNode\n\nexport function Block(opts: PromptProps | LegacyPromptProps): SolidNode {\n const propsWithChildren = {\n get children() {\n return opts.children\n },\n }\n const args = _resolvePromptBlockerArgs(opts)\n\n const resolver = useBlocker(args)\n const children = Solid.createMemo(() => {\n const child = propsWithChildren.children\n if (resolver && typeof child === 'function') return child(resolver())\n return child\n })\n\n return <>{children()}</>\n}\n\ntype LegacyPromptProps = {\n blockerFn?: LegacyBlockerFn\n condition?: boolean | any\n children?: SolidNode | ((params: BlockerResolver) => SolidNode)\n}\n\ntype PromptProps<\n TRouter extends AnyRouter = RegisteredRouter,\n TWithResolver extends boolean = boolean,\n TParams = TWithResolver extends true ? BlockerResolver<TRouter> : void,\n> = UseBlockerOpts<TRouter, TWithResolver> & {\n children?: SolidNode | ((params: TParams) => SolidNode)\n}\n"],"names":["_resolveBlockerOpts","opts","condition","undefined","shouldBlockFn","withResolver","shouldBlock","Boolean","_customBlockerFn","enableBeforeUnload","Solid","createMemo","blockerFn","useBlocker","props","merge","disabled","router","useRouter","resolver","setResolver","createSignal","status","current","next","action","proceed","reset","createTrackedEffect","blockerFnComposed","blockerFnArgs","getLocation","location","parsedLocation","parseLocation","matchedRoutes","getMatchedRoutes","pathname","foundRoute","routeId","fullPath","params","routeParams","search","id","currentLocation","nextLocation","promise","Promise","resolve","canNavigateAsync","disposeBlock","history","block","onCleanup","_resolvePromptBlockerArgs","Block","propsWithChildren","children","args","child","_$memo"],"mappings":"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"}
1
+ {"version":3,"file":"useBlocker.cjs","names":["Solid","useRouter","BlockerFnArgs","HistoryAction","HistoryLocation","SolidNode","AnyRoute","AnyRouter","ParseRoute","RegisteredRouter","ShouldBlockFnLocation","routeId","TRouteId","fullPath","TFullPath","pathname","params","TAllParams","search","TFullSearchSchema","AnyShouldBlockFnLocation","MakeShouldBlockFnLocationUnion","TRouter","TRoute","BlockerResolver","status","current","next","action","proceed","reset","ShouldBlockFnArgs","ShouldBlockFn","args","Promise","UseBlockerOpts","shouldBlockFn","enableBeforeUnload","disabled","withResolver","TWithResolver","LegacyBlockerFn","LegacyBlockerOpts","blockerFn","condition","_resolveBlockerOpts","opts","undefined","shouldBlock","Boolean","_customBlockerFn","createMemo","useBlocker","Accessor","blockerFnOrOpts","props","merge","router","resolver","setResolver","createSignal","createTrackedEffect","blockerFnComposed","blockerFnArgs","getLocation","location","parsedLocation","parseLocation","matchedRoutes","getMatchedRoutes","foundRoute","routeParams","id","currentLocation","nextLocation","promise","resolve","canNavigateAsync","disposeBlock","history","block","onCleanup","_resolvePromptBlockerArgs","PromptProps","LegacyPromptProps","BlockComponent","Block","propsWithChildren","children","child","_$memo","TParams"],"sources":["../../src/useBlocker.tsx"],"sourcesContent":["import * as Solid from 'solid-js'\nimport { useRouter } from './useRouter'\nimport type {\n BlockerFnArgs,\n HistoryAction,\n HistoryLocation,\n} from '@tanstack/history'\nimport type { SolidNode } from './route'\nimport type {\n AnyRoute,\n AnyRouter,\n ParseRoute,\n RegisteredRouter,\n} from '@tanstack/router-core'\n\ninterface ShouldBlockFnLocation<\n out TRouteId,\n out TFullPath,\n out TAllParams,\n out TFullSearchSchema,\n> {\n routeId: TRouteId\n fullPath: TFullPath\n pathname: string\n params: TAllParams\n search: TFullSearchSchema\n}\n\ntype AnyShouldBlockFnLocation = ShouldBlockFnLocation<any, any, any, any>\ntype MakeShouldBlockFnLocationUnion<\n TRouter extends AnyRouter = RegisteredRouter,\n TRoute extends AnyRoute = ParseRoute<TRouter['routeTree']>,\n> = TRoute extends any\n ? ShouldBlockFnLocation<\n TRoute['id'],\n TRoute['fullPath'],\n TRoute['types']['allParams'],\n TRoute['types']['fullSearchSchema']\n >\n : never\n\ntype BlockerResolver<TRouter extends AnyRouter = RegisteredRouter> =\n | {\n status: 'blocked'\n current: MakeShouldBlockFnLocationUnion<TRouter>\n next: MakeShouldBlockFnLocationUnion<TRouter>\n action: HistoryAction\n proceed: () => void\n reset: () => void\n }\n | {\n status: 'idle'\n current: undefined\n next: undefined\n action: undefined\n proceed: undefined\n reset: undefined\n }\n\ntype ShouldBlockFnArgs<TRouter extends AnyRouter = RegisteredRouter> = {\n current: MakeShouldBlockFnLocationUnion<TRouter>\n next: MakeShouldBlockFnLocationUnion<TRouter>\n action: HistoryAction\n}\n\nexport type ShouldBlockFn<TRouter extends AnyRouter = RegisteredRouter> = (\n args: ShouldBlockFnArgs<TRouter>,\n) => boolean | Promise<boolean>\nexport type UseBlockerOpts<\n TRouter extends AnyRouter = RegisteredRouter,\n TWithResolver extends boolean = boolean,\n> = {\n shouldBlockFn: ShouldBlockFn<TRouter>\n enableBeforeUnload?: boolean | (() => boolean)\n disabled?: boolean\n withResolver?: TWithResolver\n}\n\ntype LegacyBlockerFn = () => Promise<any> | any\ntype LegacyBlockerOpts = {\n blockerFn?: LegacyBlockerFn\n condition?: boolean | any\n}\n\nfunction _resolveBlockerOpts(\n opts?: UseBlockerOpts | LegacyBlockerOpts | LegacyBlockerFn,\n condition?: boolean | any,\n): UseBlockerOpts {\n if (opts === undefined) {\n return {\n shouldBlockFn: () => true,\n withResolver: false,\n }\n }\n\n if ('shouldBlockFn' in opts) {\n return opts\n }\n\n if (typeof opts === 'function') {\n const shouldBlock = Boolean(condition ?? true)\n\n const _customBlockerFn = async () => {\n if (shouldBlock) return await opts()\n return false\n }\n\n return {\n shouldBlockFn: _customBlockerFn,\n enableBeforeUnload: shouldBlock,\n withResolver: false,\n }\n }\n\n const shouldBlock = Solid.createMemo(() => Boolean(opts.condition ?? true))\n\n const _customBlockerFn = async () => {\n if (shouldBlock() && opts.blockerFn !== undefined) {\n return await opts.blockerFn()\n }\n return shouldBlock()\n }\n\n return {\n get shouldBlockFn() {\n return _customBlockerFn\n },\n get enableBeforeUnload() {\n return shouldBlock()\n },\n get withResolver() {\n return opts.blockerFn === undefined\n },\n }\n}\n\nexport function useBlocker<\n TRouter extends AnyRouter = RegisteredRouter,\n TWithResolver extends boolean = false,\n>(\n opts: UseBlockerOpts<TRouter, TWithResolver>,\n): TWithResolver extends true ? Solid.Accessor<BlockerResolver<TRouter>> : void\n\n/**\n * @deprecated Use the shouldBlockFn property instead\n */\nexport function useBlocker(\n blockerFnOrOpts?: LegacyBlockerOpts,\n): Solid.Accessor<BlockerResolver>\n\n/**\n * @deprecated Use the UseBlockerOpts object syntax instead\n */\nexport function useBlocker(\n blockerFn?: LegacyBlockerFn,\n condition?: boolean | any,\n): Solid.Accessor<BlockerResolver>\n\nexport function useBlocker(\n opts?: UseBlockerOpts | LegacyBlockerOpts | LegacyBlockerFn,\n condition?: boolean | any,\n): Solid.Accessor<BlockerResolver> | void {\n const props = Solid.merge(\n {\n enableBeforeUnload: true,\n disabled: false,\n withResolver: false,\n },\n _resolveBlockerOpts(opts, condition),\n )\n\n const router = useRouter()\n\n const [resolver, setResolver] = Solid.createSignal<BlockerResolver>({\n status: 'idle',\n current: undefined,\n next: undefined,\n action: undefined,\n proceed: undefined,\n reset: undefined,\n })\n\n Solid.createTrackedEffect(() => {\n const blockerFnComposed = async (blockerFnArgs: BlockerFnArgs) => {\n function getLocation(\n location: HistoryLocation,\n ): AnyShouldBlockFnLocation {\n const parsedLocation = router.parseLocation(location)\n const matchedRoutes = router.getMatchedRoutes(parsedLocation.pathname)\n if (matchedRoutes.foundRoute === undefined) {\n return {\n routeId: '__notFound__',\n fullPath: parsedLocation.pathname,\n pathname: parsedLocation.pathname,\n params: matchedRoutes.routeParams,\n search: parsedLocation.search,\n }\n }\n return {\n routeId: matchedRoutes.foundRoute.id,\n fullPath: matchedRoutes.foundRoute.fullPath,\n pathname: parsedLocation.pathname,\n params: matchedRoutes.routeParams,\n search: parsedLocation.search,\n }\n }\n\n const current = getLocation(blockerFnArgs.currentLocation)\n const next = getLocation(blockerFnArgs.nextLocation)\n\n if (\n current.routeId === '__notFound__' &&\n next.routeId !== '__notFound__'\n ) {\n return false\n }\n\n const shouldBlock = await props.shouldBlockFn({\n action: blockerFnArgs.action,\n current,\n next,\n })\n if (!props.withResolver) {\n return shouldBlock\n }\n\n if (!shouldBlock) {\n return false\n }\n\n const promise = new Promise<boolean>((resolve) => {\n setResolver({\n status: 'blocked',\n current,\n next,\n action: blockerFnArgs.action,\n proceed: () => resolve(false),\n reset: () => resolve(true),\n })\n })\n\n const canNavigateAsync = await promise\n setResolver({\n status: 'idle',\n current: undefined,\n next: undefined,\n action: undefined,\n proceed: undefined,\n reset: undefined,\n })\n\n return canNavigateAsync\n }\n\n const disposeBlock = props.disabled\n ? undefined\n : router.history.block({\n blockerFn: blockerFnComposed,\n enableBeforeUnload: props.enableBeforeUnload,\n })\n\n Solid.onCleanup(() => disposeBlock?.())\n })\n\n return resolver\n}\n\nconst _resolvePromptBlockerArgs = (\n props: PromptProps | LegacyPromptProps,\n): UseBlockerOpts => {\n if ('shouldBlockFn' in props) {\n return props\n }\n\n const shouldBlock = Solid.createMemo(() => Boolean(props.condition ?? true))\n\n const _customBlockerFn = async () => {\n if (shouldBlock() && props.blockerFn !== undefined) {\n return await props.blockerFn()\n }\n return shouldBlock\n }\n\n return {\n shouldBlockFn: _customBlockerFn,\n get enableBeforeUnload() {\n return shouldBlock()\n },\n get withResolver() {\n return props.blockerFn === undefined\n },\n }\n}\n\ninterface BlockComponent {\n <\n TRouter extends AnyRouter = RegisteredRouter,\n TWithResolver extends boolean = boolean,\n >(\n opts: PromptProps<TRouter, TWithResolver>,\n ): SolidNode\n /**\n * @deprecated Use the UseBlockerOpts property instead\n */\n (opts: LegacyPromptProps): SolidNode\n}\n\nexport const Block: BlockComponent = function Block(\n opts: PromptProps | LegacyPromptProps,\n): SolidNode {\n const propsWithChildren = {\n get children() {\n return opts.children\n },\n }\n const args = _resolvePromptBlockerArgs(opts)\n\n const resolver = useBlocker(args)\n const children = Solid.createMemo(() => {\n const child = propsWithChildren.children\n if (resolver && typeof child === 'function') return child(resolver())\n return child\n })\n\n return <>{children()}</>\n}\n\ntype LegacyPromptProps = {\n blockerFn?: LegacyBlockerFn\n condition?: boolean | any\n children?: SolidNode | ((params: BlockerResolver) => SolidNode)\n}\n\ntype PromptProps<\n TRouter extends AnyRouter = RegisteredRouter,\n TWithResolver extends boolean = boolean,\n TParams = TWithResolver extends true ? BlockerResolver<TRouter> : void,\n> = UseBlockerOpts<TRouter, TWithResolver> & {\n children?: SolidNode | ((params: TParams) => SolidNode)\n}\n"],"mappings":"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"}
@@ -51,11 +51,14 @@ export declare function useBlocker(blockerFnOrOpts?: LegacyBlockerOpts): Solid.A
51
51
  * @deprecated Use the UseBlockerOpts object syntax instead
52
52
  */
53
53
  export declare function useBlocker(blockerFn?: LegacyBlockerFn, condition?: boolean | any): Solid.Accessor<BlockerResolver>;
54
- export declare function Block<TRouter extends AnyRouter = RegisteredRouter, TWithResolver extends boolean = boolean>(opts: PromptProps<TRouter, TWithResolver>): SolidNode;
55
- /**
56
- * @deprecated Use the UseBlockerOpts property instead
57
- */
58
- export declare function Block(opts: LegacyPromptProps): SolidNode;
54
+ interface BlockComponent {
55
+ <TRouter extends AnyRouter = RegisteredRouter, TWithResolver extends boolean = boolean>(opts: PromptProps<TRouter, TWithResolver>): SolidNode;
56
+ /**
57
+ * @deprecated Use the UseBlockerOpts property instead
58
+ */
59
+ (opts: LegacyPromptProps): SolidNode;
60
+ }
61
+ export declare const Block: BlockComponent;
59
62
  type LegacyPromptProps = {
60
63
  blockerFn?: LegacyBlockerFn;
61
64
  condition?: boolean | any;
@@ -1,8 +1,9 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const useRouterState = require("./useRouterState.cjs");
1
+ const require_useRouterState = require("./useRouterState.cjs");
2
+ //#region src/useCanGoBack.ts
4
3
  function useCanGoBack() {
5
- return useRouterState.useRouterState({ select: (s) => s.location.state.__TSR_index !== 0 });
4
+ return require_useRouterState.useRouterState({ select: (s) => s.location.state.__TSR_index !== 0 });
6
5
  }
6
+ //#endregion
7
7
  exports.useCanGoBack = useCanGoBack;
8
- //# sourceMappingURL=useCanGoBack.cjs.map
8
+
9
+ //# sourceMappingURL=useCanGoBack.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useCanGoBack.cjs","sources":["../../src/useCanGoBack.ts"],"sourcesContent":["import { useRouterState } from './useRouterState'\n\nexport function useCanGoBack() {\n return useRouterState({ select: (s) => s.location.state.__TSR_index !== 0 })\n}\n"],"names":["useRouterState"],"mappings":";;;AAEO,SAAS,eAAe;AAC7B,SAAOA,eAAAA,eAAe,EAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,gBAAgB,GAAG;AAC7E;;"}
1
+ {"version":3,"file":"useCanGoBack.cjs","names":[],"sources":["../../src/useCanGoBack.ts"],"sourcesContent":["import { useRouterState } from './useRouterState'\n\nexport function useCanGoBack() {\n return useRouterState({ select: (s) => s.location.state.__TSR_index !== 0 })\n}\n"],"mappings":";;AAEA,SAAgB,eAAe;AAC7B,QAAO,uBAAA,eAAe,EAAE,SAAS,MAAM,EAAE,SAAS,MAAM,gBAAgB,GAAG,CAAC"}
@@ -1,14 +1,15 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const useMatch = require("./useMatch.cjs");
1
+ const require_useMatch = require("./useMatch.cjs");
2
+ //#region src/useLoaderData.tsx
4
3
  function useLoaderData(opts) {
5
- return useMatch.useMatch({
6
- from: opts.from,
7
- strict: opts.strict,
8
- select: (s) => {
9
- return opts.select ? opts.select(s.loaderData) : s.loaderData;
10
- }
11
- });
4
+ return require_useMatch.useMatch({
5
+ from: opts.from,
6
+ strict: opts.strict,
7
+ select: (s) => {
8
+ return opts.select ? opts.select(s.loaderData) : s.loaderData;
9
+ }
10
+ });
12
11
  }
12
+ //#endregion
13
13
  exports.useLoaderData = useLoaderData;
14
- //# sourceMappingURL=useLoaderData.cjs.map
14
+
15
+ //# sourceMappingURL=useLoaderData.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useLoaderData.cjs","sources":["../../src/useLoaderData.tsx"],"sourcesContent":["import { useMatch } from './useMatch'\nimport type { Accessor } from 'solid-js'\nimport type {\n AnyRouter,\n RegisteredRouter,\n ResolveUseLoaderData,\n StrictOrFrom,\n UseLoaderDataResult,\n} from '@tanstack/router-core'\n\nexport interface UseLoaderDataBaseOptions<\n TRouter extends AnyRouter,\n TFrom,\n TStrict extends boolean,\n TSelected,\n> {\n select?: (match: ResolveUseLoaderData<TRouter, TFrom, TStrict>) => TSelected\n}\n\nexport type UseLoaderDataOptions<\n TRouter extends AnyRouter,\n TFrom extends string | undefined,\n TStrict extends boolean,\n TSelected,\n> = StrictOrFrom<TRouter, TFrom, TStrict> &\n UseLoaderDataBaseOptions<TRouter, TFrom, TStrict, TSelected>\n\nexport type UseLoaderDataRoute<out TId> = <\n TRouter extends AnyRouter = RegisteredRouter,\n TSelected = unknown,\n>(\n opts?: UseLoaderDataBaseOptions<TRouter, TId, true, TSelected>,\n) => Accessor<UseLoaderDataResult<TRouter, TId, true, TSelected>>\n\nexport function useLoaderData<\n TRouter extends AnyRouter = RegisteredRouter,\n const TFrom extends string | undefined = undefined,\n TStrict extends boolean = true,\n TSelected = unknown,\n>(\n opts: UseLoaderDataOptions<TRouter, TFrom, TStrict, TSelected>,\n): Accessor<UseLoaderDataResult<TRouter, TFrom, TStrict, TSelected>> {\n return useMatch({\n from: opts.from!,\n strict: opts.strict,\n select: (s: any) => {\n return opts.select ? opts.select(s.loaderData) : s.loaderData\n },\n } as any) as any\n}\n"],"names":["useLoaderData","opts","useMatch","from","strict","select","s","loaderData"],"mappings":";;;AAkCO,SAASA,cAMdC,MACmE;AACnE,SAAOC,kBAAS;AAAA,IACdC,MAAMF,KAAKE;AAAAA,IACXC,QAAQH,KAAKG;AAAAA,IACbC,QAAQA,CAACC,MAAW;AAClB,aAAOL,KAAKI,SAASJ,KAAKI,OAAOC,EAAEC,UAAU,IAAID,EAAEC;AAAAA,IACrD;AAAA,EAAA,CACM;AACV;;"}
1
+ {"version":3,"file":"useLoaderData.cjs","names":["useMatch","Accessor","AnyRouter","RegisteredRouter","ResolveUseLoaderData","StrictOrFrom","UseLoaderDataResult","UseLoaderDataBaseOptions","select","match","TRouter","TFrom","TStrict","TSelected","UseLoaderDataOptions","UseLoaderDataRoute","opts","TId","useLoaderData","from","strict","s","loaderData"],"sources":["../../src/useLoaderData.tsx"],"sourcesContent":["import { useMatch } from './useMatch'\nimport type { Accessor } from 'solid-js'\nimport type {\n AnyRouter,\n RegisteredRouter,\n ResolveUseLoaderData,\n StrictOrFrom,\n UseLoaderDataResult,\n} from '@tanstack/router-core'\n\nexport interface UseLoaderDataBaseOptions<\n TRouter extends AnyRouter,\n TFrom,\n TStrict extends boolean,\n TSelected,\n> {\n select?: (match: ResolveUseLoaderData<TRouter, TFrom, TStrict>) => TSelected\n}\n\nexport type UseLoaderDataOptions<\n TRouter extends AnyRouter,\n TFrom extends string | undefined,\n TStrict extends boolean,\n TSelected,\n> = StrictOrFrom<TRouter, TFrom, TStrict> &\n UseLoaderDataBaseOptions<TRouter, TFrom, TStrict, TSelected>\n\nexport type UseLoaderDataRoute<out TId> = <\n TRouter extends AnyRouter = RegisteredRouter,\n TSelected = unknown,\n>(\n opts?: UseLoaderDataBaseOptions<TRouter, TId, true, TSelected>,\n) => Accessor<UseLoaderDataResult<TRouter, TId, true, TSelected>>\n\nexport function useLoaderData<\n TRouter extends AnyRouter = RegisteredRouter,\n const TFrom extends string | undefined = undefined,\n TStrict extends boolean = true,\n TSelected = unknown,\n>(\n opts: UseLoaderDataOptions<TRouter, TFrom, TStrict, TSelected>,\n): Accessor<UseLoaderDataResult<TRouter, TFrom, TStrict, TSelected>> {\n return useMatch({\n from: opts.from!,\n strict: opts.strict,\n select: (s: any) => {\n return opts.select ? opts.select(s.loaderData) : s.loaderData\n },\n } as any) as any\n}\n"],"mappings":";;AAkCA,SAAgBkB,cAMdF,MACmE;AACnE,QAAOhB,iBAAAA,SAAS;EACdmB,MAAMH,KAAKG;EACXC,QAAQJ,KAAKI;EACbZ,SAASa,MAAW;AAClB,UAAOL,KAAKR,SAASQ,KAAKR,OAAOa,EAAEC,WAAW,GAAGD,EAAEC;;EAEtD,CAAQ"}
@@ -1,17 +1,15 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const useMatch = require("./useMatch.cjs");
1
+ const require_useMatch = require("./useMatch.cjs");
2
+ //#region src/useLoaderDeps.tsx
4
3
  function useLoaderDeps(opts) {
5
- const {
6
- select,
7
- ...rest
8
- } = opts;
9
- return useMatch.useMatch({
10
- ...rest,
11
- select: (s) => {
12
- return select ? select(s.loaderDeps) : s.loaderDeps;
13
- }
14
- });
4
+ const { select, ...rest } = opts;
5
+ return require_useMatch.useMatch({
6
+ ...rest,
7
+ select: (s) => {
8
+ return select ? select(s.loaderDeps) : s.loaderDeps;
9
+ }
10
+ });
15
11
  }
12
+ //#endregion
16
13
  exports.useLoaderDeps = useLoaderDeps;
17
- //# sourceMappingURL=useLoaderDeps.cjs.map
14
+
15
+ //# sourceMappingURL=useLoaderDeps.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useLoaderDeps.cjs","sources":["../../src/useLoaderDeps.tsx"],"sourcesContent":["import { useMatch } from './useMatch'\nimport type { Accessor } from 'solid-js'\nimport type {\n AnyRouter,\n RegisteredRouter,\n ResolveUseLoaderDeps,\n StrictOrFrom,\n UseLoaderDepsResult,\n} from '@tanstack/router-core'\n\nexport interface UseLoaderDepsBaseOptions<\n TRouter extends AnyRouter,\n TFrom,\n TSelected,\n> {\n select?: (deps: ResolveUseLoaderDeps<TRouter, TFrom>) => TSelected\n}\n\nexport type UseLoaderDepsOptions<\n TRouter extends AnyRouter,\n TFrom extends string | undefined,\n TSelected,\n> = StrictOrFrom<TRouter, TFrom> &\n UseLoaderDepsBaseOptions<TRouter, TFrom, TSelected>\n\nexport type UseLoaderDepsRoute<out TId> = <\n TRouter extends AnyRouter = RegisteredRouter,\n TSelected = unknown,\n>(\n opts?: UseLoaderDepsBaseOptions<TRouter, TId, TSelected>,\n) => Accessor<UseLoaderDepsResult<TRouter, TId, TSelected>>\n\nexport function useLoaderDeps<\n TRouter extends AnyRouter = RegisteredRouter,\n const TFrom extends string | undefined = undefined,\n TSelected = unknown,\n>(\n opts: UseLoaderDepsOptions<TRouter, TFrom, TSelected>,\n): Accessor<UseLoaderDepsResult<TRouter, TFrom, TSelected>> {\n const { select, ...rest } = opts\n return useMatch({\n ...rest,\n select: (s) => {\n return select ? select(s.loaderDeps) : s.loaderDeps\n },\n }) as Accessor<UseLoaderDepsResult<TRouter, TFrom, TSelected>>\n}\n"],"names":["useLoaderDeps","opts","select","rest","useMatch","s","loaderDeps"],"mappings":";;;AAgCO,SAASA,cAKdC,MAC0D;AAC1D,QAAM;AAAA,IAAEC;AAAAA,IAAQ,GAAGC;AAAAA,EAAAA,IAASF;AAC5B,SAAOG,kBAAS;AAAA,IACd,GAAGD;AAAAA,IACHD,QAASG,CAAAA,MAAM;AACb,aAAOH,SAASA,OAAOG,EAAEC,UAAU,IAAID,EAAEC;AAAAA,IAC3C;AAAA,EAAA,CACD;AACH;;"}
1
+ {"version":3,"file":"useLoaderDeps.cjs","names":["useMatch","Accessor","AnyRouter","RegisteredRouter","ResolveUseLoaderDeps","StrictOrFrom","UseLoaderDepsResult","UseLoaderDepsBaseOptions","select","deps","TRouter","TFrom","TSelected","UseLoaderDepsOptions","UseLoaderDepsRoute","opts","TId","useLoaderDeps","rest","s","loaderDeps"],"sources":["../../src/useLoaderDeps.tsx"],"sourcesContent":["import { useMatch } from './useMatch'\nimport type { Accessor } from 'solid-js'\nimport type {\n AnyRouter,\n RegisteredRouter,\n ResolveUseLoaderDeps,\n StrictOrFrom,\n UseLoaderDepsResult,\n} from '@tanstack/router-core'\n\nexport interface UseLoaderDepsBaseOptions<\n TRouter extends AnyRouter,\n TFrom,\n TSelected,\n> {\n select?: (deps: ResolveUseLoaderDeps<TRouter, TFrom>) => TSelected\n}\n\nexport type UseLoaderDepsOptions<\n TRouter extends AnyRouter,\n TFrom extends string | undefined,\n TSelected,\n> = StrictOrFrom<TRouter, TFrom> &\n UseLoaderDepsBaseOptions<TRouter, TFrom, TSelected>\n\nexport type UseLoaderDepsRoute<out TId> = <\n TRouter extends AnyRouter = RegisteredRouter,\n TSelected = unknown,\n>(\n opts?: UseLoaderDepsBaseOptions<TRouter, TId, TSelected>,\n) => Accessor<UseLoaderDepsResult<TRouter, TId, TSelected>>\n\nexport function useLoaderDeps<\n TRouter extends AnyRouter = RegisteredRouter,\n const TFrom extends string | undefined = undefined,\n TSelected = unknown,\n>(\n opts: UseLoaderDepsOptions<TRouter, TFrom, TSelected>,\n): Accessor<UseLoaderDepsResult<TRouter, TFrom, TSelected>> {\n const { select, ...rest } = opts\n return useMatch({\n ...rest,\n select: (s) => {\n return select ? select(s.loaderDeps) : s.loaderDeps\n },\n }) as Accessor<UseLoaderDepsResult<TRouter, TFrom, TSelected>>\n}\n"],"mappings":";;AAgCA,SAAgBiB,cAKdF,MAC0D;CAC1D,MAAM,EAAEP,QAAQ,GAAGU,SAASH;AAC5B,QAAOf,iBAAAA,SAAS;EACd,GAAGkB;EACHV,SAASW,MAAM;AACb,UAAOX,SAASA,OAAOW,EAAEC,WAAW,GAAGD,EAAEC;;EAE5C,CAAC"}
@@ -1,10 +1,9 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const useRouterState = require("./useRouterState.cjs");
1
+ const require_useRouterState = require("./useRouterState.cjs");
2
+ //#region src/useLocation.tsx
4
3
  function useLocation(opts) {
5
- return useRouterState.useRouterState({
6
- select: (state) => opts?.select ? opts.select(state.location) : state.location
7
- });
4
+ return require_useRouterState.useRouterState({ select: (state) => opts?.select ? opts.select(state.location) : state.location });
8
5
  }
6
+ //#endregion
9
7
  exports.useLocation = useLocation;
10
- //# sourceMappingURL=useLocation.cjs.map
8
+
9
+ //# sourceMappingURL=useLocation.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useLocation.cjs","sources":["../../src/useLocation.tsx"],"sourcesContent":["import { useRouterState } from './useRouterState'\nimport type {\n AnyRouter,\n RegisteredRouter,\n RouterState,\n} from '@tanstack/router-core'\nimport type { Accessor } from 'solid-js'\n\nexport interface UseLocationBaseOptions<TRouter extends AnyRouter, TSelected> {\n select?: (state: RouterState<TRouter['routeTree']>['location']) => TSelected\n}\n\nexport type UseLocationResult<\n TRouter extends AnyRouter,\n TSelected,\n> = unknown extends TSelected\n ? RouterState<TRouter['routeTree']>['location']\n : TSelected\n\nexport function useLocation<\n TRouter extends AnyRouter = RegisteredRouter,\n TSelected = unknown,\n>(\n opts?: UseLocationBaseOptions<TRouter, TSelected>,\n): Accessor<UseLocationResult<TRouter, TSelected>> {\n return useRouterState({\n select: (state: any) =>\n opts?.select ? opts.select(state.location) : state.location,\n } as any) as Accessor<UseLocationResult<TRouter, TSelected>>\n}\n"],"names":["useLocation","opts","useRouterState","select","state","location"],"mappings":";;;AAmBO,SAASA,YAIdC,MACiD;AACjD,SAAOC,8BAAe;AAAA,IACpBC,QAAQA,CAACC,UACPH,MAAME,SAASF,KAAKE,OAAOC,MAAMC,QAAQ,IAAID,MAAMC;AAAAA,EAAAA,CAC/C;AACV;;"}
1
+ {"version":3,"file":"useLocation.cjs","names":["useRouterState","AnyRouter","RegisteredRouter","RouterState","Accessor","UseLocationBaseOptions","select","state","TRouter","TSelected","UseLocationResult","useLocation","opts","location"],"sources":["../../src/useLocation.tsx"],"sourcesContent":["import { useRouterState } from './useRouterState'\nimport type {\n AnyRouter,\n RegisteredRouter,\n RouterState,\n} from '@tanstack/router-core'\nimport type { Accessor } from 'solid-js'\n\nexport interface UseLocationBaseOptions<TRouter extends AnyRouter, TSelected> {\n select?: (state: RouterState<TRouter['routeTree']>['location']) => TSelected\n}\n\nexport type UseLocationResult<\n TRouter extends AnyRouter,\n TSelected,\n> = unknown extends TSelected\n ? RouterState<TRouter['routeTree']>['location']\n : TSelected\n\nexport function useLocation<\n TRouter extends AnyRouter = RegisteredRouter,\n TSelected = unknown,\n>(\n opts?: UseLocationBaseOptions<TRouter, TSelected>,\n): Accessor<UseLocationResult<TRouter, TSelected>> {\n return useRouterState({\n select: (state: any) =>\n opts?.select ? opts.select(state.location) : state.location,\n } as any) as Accessor<UseLocationResult<TRouter, TSelected>>\n}\n"],"mappings":";;AAmBA,SAAgBW,YAIdC,MACiD;AACjD,QAAOZ,uBAAAA,eAAe,EACpBM,SAASC,UACPK,MAAMN,SAASM,KAAKN,OAAOC,MAAMM,SAAS,GAAGN,MAAMM,UACtD,CAAQ"}
@@ -1,49 +1,28 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const Solid = require("solid-js");
4
- const invariant = require("tiny-invariant");
5
- const useRouterState = require("./useRouterState.cjs");
6
- const matchContext = require("./matchContext.cjs");
7
- function _interopNamespaceDefault(e) {
8
- const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
9
- if (e) {
10
- for (const k in e) {
11
- if (k !== "default") {
12
- const d = Object.getOwnPropertyDescriptor(e, k);
13
- Object.defineProperty(n, k, d.get ? d : {
14
- enumerable: true,
15
- get: () => e[k]
16
- });
17
- }
18
- }
19
- }
20
- n.default = e;
21
- return Object.freeze(n);
22
- }
23
- const Solid__namespace = /* @__PURE__ */ _interopNamespaceDefault(Solid);
1
+ const require_runtime = require("./_virtual/_rolldown/runtime.cjs");
2
+ const require_useRouterState = require("./useRouterState.cjs");
3
+ const require_matchContext = require("./matchContext.cjs");
4
+ let solid_js = require("solid-js");
5
+ solid_js = require_runtime.__toESM(solid_js);
6
+ let tiny_invariant = require("tiny-invariant");
7
+ tiny_invariant = require_runtime.__toESM(tiny_invariant);
8
+ //#region src/useMatch.tsx
24
9
  function useMatch(opts) {
25
- const nearestMatchId = Solid__namespace.useContext(opts.from ? matchContext.dummyMatchContext : matchContext.matchContext);
26
- const matchState = useRouterState.useRouterState({
27
- select: (state) => {
28
- const match = state.matches.find((d) => opts.from ? opts.from === d.routeId : d.id === nearestMatchId());
29
- if (match === void 0) {
30
- const pendingMatch = state.pendingMatches?.find((d) => opts.from ? opts.from === d.routeId : d.id === nearestMatchId());
31
- const shouldThrowError = !pendingMatch && !state.isTransitioning && (opts.shouldThrow ?? true);
32
- return {
33
- match: void 0,
34
- shouldThrowError
35
- };
36
- }
37
- return {
38
- match: opts.select ? opts.select(match) : match,
39
- shouldThrowError: false
40
- };
41
- }
42
- });
43
- if (Solid__namespace.untrack(matchState).shouldThrowError) {
44
- invariant(false, `Could not find ${opts.from ? `an active match from "${opts.from}"` : "a nearest match!"}`);
45
- }
46
- return Solid__namespace.createMemo(() => matchState().match);
10
+ const nearestMatchId = solid_js.useContext(opts.from ? require_matchContext.dummyMatchContext : require_matchContext.matchContext);
11
+ const matchState = require_useRouterState.useRouterState({ select: (state) => {
12
+ const match = state.matches.find((d) => opts.from ? opts.from === d.routeId : d.id === nearestMatchId());
13
+ if (match === void 0) return {
14
+ match: void 0,
15
+ shouldThrowError: !state.pendingMatches?.find((d) => opts.from ? opts.from === d.routeId : d.id === nearestMatchId()) && !state.isTransitioning && (opts.shouldThrow ?? true)
16
+ };
17
+ return {
18
+ match: opts.select ? opts.select(match) : match,
19
+ shouldThrowError: false
20
+ };
21
+ } });
22
+ if (solid_js.untrack(matchState).shouldThrowError) (0, tiny_invariant.default)(false, `Could not find ${opts.from ? `an active match from "${opts.from}"` : "a nearest match!"}`);
23
+ return solid_js.createMemo(() => matchState().match);
47
24
  }
25
+ //#endregion
48
26
  exports.useMatch = useMatch;
49
- //# sourceMappingURL=useMatch.cjs.map
27
+
28
+ //# sourceMappingURL=useMatch.cjs.map