one 1.2.57 → 1.2.59

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 (612) hide show
  1. package/dist/cjs/cli/build.cjs +3 -1
  2. package/dist/cjs/cli/build.js +1 -1
  3. package/dist/cjs/cli/build.js.map +1 -1
  4. package/dist/cjs/cli/build.native.js +13 -12
  5. package/dist/cjs/cli/build.native.js.map +1 -1
  6. package/dist/cjs/cli/buildPage.cjs +1 -1
  7. package/dist/cjs/cli/buildPage.js +1 -1
  8. package/dist/cjs/cli/buildPage.native.js +2 -2
  9. package/dist/cjs/cli/buildPage.native.js.map +1 -1
  10. package/dist/cjs/cli/dev.cjs +4 -4
  11. package/dist/cjs/cli/dev.js +4 -4
  12. package/dist/cjs/cli/dev.js.map +1 -1
  13. package/dist/cjs/cli/dev.native.js +4 -4
  14. package/dist/cjs/cli/dev.native.js.map +1 -1
  15. package/dist/cjs/cli/generateRoutes.cjs +1 -1
  16. package/dist/cjs/cli/generateRoutes.js +1 -1
  17. package/dist/cjs/cli/generateRoutes.native.js +1 -1
  18. package/dist/cjs/cli/generateRoutes.native.js.map +1 -1
  19. package/dist/cjs/cli/generateSitemap.native.js +7 -7
  20. package/dist/cjs/cli/generateSitemap.native.js.map +1 -1
  21. package/dist/cjs/config.native.js +2 -2
  22. package/dist/cjs/config.native.js.map +1 -1
  23. package/dist/cjs/constants.native.js +1 -1
  24. package/dist/cjs/constants.native.js.map +1 -1
  25. package/dist/cjs/createApp.cjs +2 -1
  26. package/dist/cjs/createApp.js +2 -2
  27. package/dist/cjs/createApp.js.map +1 -1
  28. package/dist/cjs/createHandleRequest.test.js +3 -1
  29. package/dist/cjs/createHandleRequest.test.js.map +1 -1
  30. package/dist/cjs/createHandleRequest.test.native.js.map +1 -1
  31. package/dist/cjs/devtools/registry.cjs +30 -0
  32. package/dist/cjs/devtools/registry.js +25 -0
  33. package/dist/cjs/devtools/registry.js.map +6 -0
  34. package/dist/cjs/devtools/registry.native.js +33 -0
  35. package/dist/cjs/devtools/registry.native.js.map +1 -0
  36. package/dist/cjs/fork/NavigationContainer.native.js +5 -5
  37. package/dist/cjs/fork/NavigationContainer.native.js.map +1 -1
  38. package/dist/cjs/fork/createMemoryHistory.cjs +20 -9
  39. package/dist/cjs/fork/createMemoryHistory.js +22 -4
  40. package/dist/cjs/fork/createMemoryHistory.js.map +1 -1
  41. package/dist/cjs/fork/createMemoryHistory.native.js +22 -11
  42. package/dist/cjs/fork/createMemoryHistory.native.js.map +1 -1
  43. package/dist/cjs/fork/extractPathFromURL.native.js +8 -8
  44. package/dist/cjs/fork/extractPathFromURL.native.js.map +1 -1
  45. package/dist/cjs/fork/findFocusedRoute.native.js +2 -3
  46. package/dist/cjs/fork/findFocusedRoute.native.js.map +1 -1
  47. package/dist/cjs/fork/getPathFromState-mods.native.js +2 -3
  48. package/dist/cjs/fork/getPathFromState-mods.native.js.map +1 -1
  49. package/dist/cjs/fork/getStateFromPath-mods.native.js +3 -3
  50. package/dist/cjs/fork/getStateFromPath-mods.native.js.map +1 -1
  51. package/dist/cjs/fork/useLinking.cjs +11 -5
  52. package/dist/cjs/fork/useLinking.js +6 -6
  53. package/dist/cjs/fork/useLinking.js.map +1 -1
  54. package/dist/cjs/fork/useLinking.native.js.map +1 -1
  55. package/dist/cjs/head/url.native.js +2 -3
  56. package/dist/cjs/head/url.native.js.map +1 -1
  57. package/dist/cjs/hooks.js.map +1 -1
  58. package/dist/cjs/hooks.native.js.map +1 -1
  59. package/dist/cjs/index.cjs +17 -1
  60. package/dist/cjs/index.js +12 -2
  61. package/dist/cjs/index.js.map +1 -1
  62. package/dist/cjs/index.native.js +17 -1
  63. package/dist/cjs/index.native.js.map +1 -1
  64. package/dist/cjs/layouts/withLayoutContext.cjs +34 -15
  65. package/dist/cjs/layouts/withLayoutContext.js +29 -13
  66. package/dist/cjs/layouts/withLayoutContext.js.map +1 -1
  67. package/dist/cjs/layouts/withLayoutContext.native.js +42 -19
  68. package/dist/cjs/layouts/withLayoutContext.native.js.map +1 -1
  69. package/dist/cjs/link/Link.cjs +5 -2
  70. package/dist/cjs/link/Link.js +3 -2
  71. package/dist/cjs/link/Link.js.map +1 -1
  72. package/dist/cjs/link/Link.native.js +6 -1
  73. package/dist/cjs/link/Link.native.js.map +1 -1
  74. package/dist/cjs/link/href.native.js +2 -2
  75. package/dist/cjs/link/href.native.js.map +1 -1
  76. package/dist/cjs/link/useLinkTo.cjs +11 -3
  77. package/dist/cjs/link/useLinkTo.js +6 -3
  78. package/dist/cjs/link/useLinkTo.js.map +1 -1
  79. package/dist/cjs/link/useLinkTo.native.js +11 -3
  80. package/dist/cjs/link/useLinkTo.native.js.map +1 -1
  81. package/dist/cjs/router/Route.js.map +1 -1
  82. package/dist/cjs/router/Route.native.js.map +1 -1
  83. package/dist/cjs/router/findRouteNode.cjs +70 -0
  84. package/dist/cjs/router/findRouteNode.js +72 -0
  85. package/dist/cjs/router/findRouteNode.js.map +6 -0
  86. package/dist/cjs/router/findRouteNode.native.js +104 -0
  87. package/dist/cjs/router/findRouteNode.native.js.map +1 -0
  88. package/dist/cjs/router/getRoutes.native.js +3 -3
  89. package/dist/cjs/router/getRoutes.native.js.map +1 -1
  90. package/dist/cjs/router/router.cjs +160 -11
  91. package/dist/cjs/router/router.js +142 -7
  92. package/dist/cjs/router/router.js.map +2 -2
  93. package/dist/cjs/router/router.native.js +247 -67
  94. package/dist/cjs/router/router.native.js.map +1 -1
  95. package/dist/cjs/router/useNavigation.js.map +1 -1
  96. package/dist/cjs/router/useNavigation.native.js.map +1 -1
  97. package/dist/cjs/router/useScreens.cjs +1 -1
  98. package/dist/cjs/router/useScreens.js +1 -1
  99. package/dist/cjs/router/useScreens.js.map +1 -1
  100. package/dist/cjs/router/useScreens.native.js +6 -3
  101. package/dist/cjs/router/useScreens.native.js.map +1 -1
  102. package/dist/cjs/router/utils/getNavigateAction.native.js +2 -4
  103. package/dist/cjs/router/utils/getNavigateAction.native.js.map +1 -1
  104. package/dist/cjs/server/oneServe.js.map +1 -1
  105. package/dist/cjs/server/oneServe.native.js +4 -4
  106. package/dist/cjs/server/oneServe.native.js.map +1 -1
  107. package/dist/cjs/server/setupBuildOptions.native.js +1 -1
  108. package/dist/cjs/server/setupBuildOptions.native.js.map +1 -1
  109. package/dist/cjs/ui/common.native.js +6 -5
  110. package/dist/cjs/ui/common.native.js.map +1 -1
  111. package/dist/cjs/useBlocker.cjs +158 -0
  112. package/dist/cjs/useBlocker.js +145 -0
  113. package/dist/cjs/useBlocker.js.map +6 -0
  114. package/dist/cjs/useBlocker.native.js +89 -0
  115. package/dist/cjs/useBlocker.native.js.map +1 -0
  116. package/dist/cjs/useFocusEffect.cjs +2 -2
  117. package/dist/cjs/useFocusEffect.js +2 -2
  118. package/dist/cjs/useFocusEffect.js.map +1 -1
  119. package/dist/cjs/useFocusEffect.native.js +2 -2
  120. package/dist/cjs/useFocusEffect.native.js.map +1 -1
  121. package/dist/cjs/useLoader.cjs +69 -3
  122. package/dist/cjs/useLoader.js +57 -4
  123. package/dist/cjs/useLoader.js.map +2 -2
  124. package/dist/cjs/useLoader.native.js +90 -6
  125. package/dist/cjs/useLoader.native.js.map +1 -1
  126. package/dist/cjs/useScrollGroup.cjs +37 -0
  127. package/dist/cjs/useScrollGroup.js +30 -0
  128. package/dist/cjs/useScrollGroup.js.map +6 -0
  129. package/dist/cjs/useScrollGroup.native.js +29 -0
  130. package/dist/cjs/useScrollGroup.native.js.map +1 -0
  131. package/dist/cjs/validateParams.cjs +80 -0
  132. package/dist/cjs/validateParams.js +84 -0
  133. package/dist/cjs/validateParams.js.map +6 -0
  134. package/dist/cjs/validateParams.native.js +180 -0
  135. package/dist/cjs/validateParams.native.js.map +1 -0
  136. package/dist/cjs/validateSearch.cjs +104 -0
  137. package/dist/cjs/validateSearch.js +99 -0
  138. package/dist/cjs/validateSearch.js.map +6 -0
  139. package/dist/cjs/validateSearch.native.js +202 -0
  140. package/dist/cjs/validateSearch.native.js.map +1 -0
  141. package/dist/cjs/vercel/build/buildVercelOutputDirectory.native.js +2 -2
  142. package/dist/cjs/vercel/build/buildVercelOutputDirectory.native.js.map +1 -1
  143. package/dist/cjs/views/ErrorBoundary.cjs +293 -10
  144. package/dist/cjs/views/ErrorBoundary.js +328 -8
  145. package/dist/cjs/views/ErrorBoundary.js.map +2 -2
  146. package/dist/cjs/views/ErrorBoundary.native.js +159 -4
  147. package/dist/cjs/views/ErrorBoundary.native.js.map +1 -1
  148. package/dist/cjs/views/Navigator.cjs +10 -3
  149. package/dist/cjs/views/Navigator.js +11 -3
  150. package/dist/cjs/views/Navigator.js.map +1 -1
  151. package/dist/cjs/views/Navigator.native.js +15 -6
  152. package/dist/cjs/views/Navigator.native.js.map +1 -1
  153. package/dist/cjs/views/Protected.cjs +36 -0
  154. package/dist/cjs/views/Protected.js +27 -0
  155. package/dist/cjs/views/Protected.js.map +6 -0
  156. package/dist/cjs/views/Protected.native.js +44 -0
  157. package/dist/cjs/views/Protected.native.js.map +1 -0
  158. package/dist/cjs/views/RootErrorBoundary.cjs +193 -8
  159. package/dist/cjs/views/RootErrorBoundary.js +213 -8
  160. package/dist/cjs/views/RootErrorBoundary.js.map +1 -1
  161. package/dist/cjs/views/RootErrorBoundary.native.js +192 -8
  162. package/dist/cjs/views/RootErrorBoundary.native.js.map +1 -1
  163. package/dist/cjs/views/ScrollBehavior.cjs +49 -11
  164. package/dist/cjs/views/ScrollBehavior.js +47 -11
  165. package/dist/cjs/views/ScrollBehavior.js.map +1 -1
  166. package/dist/cjs/views/ScrollBehavior.native.js +68 -10
  167. package/dist/cjs/views/ScrollBehavior.native.js.map +1 -1
  168. package/dist/cjs/views/SourceInspector.cjs +28 -0
  169. package/dist/cjs/views/SourceInspector.js +23 -0
  170. package/dist/cjs/views/SourceInspector.js.map +6 -0
  171. package/dist/cjs/views/SourceInspector.native.js +32 -0
  172. package/dist/cjs/views/SourceInspector.native.js.map +1 -0
  173. package/dist/cjs/views/Try.cjs +40 -7
  174. package/dist/cjs/views/Try.js +38 -4
  175. package/dist/cjs/views/Try.js.map +1 -1
  176. package/dist/cjs/views/Try.native.js +42 -7
  177. package/dist/cjs/views/Try.native.js.map +1 -1
  178. package/dist/cjs/vite/DevHead.cjs +797 -43
  179. package/dist/cjs/vite/DevHead.js +802 -51
  180. package/dist/cjs/vite/DevHead.js.map +1 -1
  181. package/dist/cjs/vite/DevHead.native.js +783 -1
  182. package/dist/cjs/vite/DevHead.native.js.map +1 -1
  183. package/dist/cjs/vite/one.cjs +7 -1
  184. package/dist/cjs/vite/one.js +7 -2
  185. package/dist/cjs/vite/one.js.map +1 -1
  186. package/dist/cjs/vite/one.native.js +17 -7
  187. package/dist/cjs/vite/one.native.js.map +1 -1
  188. package/dist/cjs/vite/plugins/SSRCSSPlugin.cjs +44 -4
  189. package/dist/cjs/vite/plugins/SSRCSSPlugin.js +48 -4
  190. package/dist/cjs/vite/plugins/SSRCSSPlugin.js.map +1 -1
  191. package/dist/cjs/vite/plugins/SSRCSSPlugin.native.js +62 -5
  192. package/dist/cjs/vite/plugins/SSRCSSPlugin.native.js.map +1 -1
  193. package/dist/cjs/vite/plugins/clientTreeShakePlugin.cjs +34 -15
  194. package/dist/cjs/vite/plugins/clientTreeShakePlugin.js +24 -3
  195. package/dist/cjs/vite/plugins/clientTreeShakePlugin.js.map +1 -1
  196. package/dist/cjs/vite/plugins/clientTreeShakePlugin.native.js +55 -19
  197. package/dist/cjs/vite/plugins/clientTreeShakePlugin.native.js.map +1 -1
  198. package/dist/cjs/vite/plugins/clientTreeShakePlugin.test.cjs +129 -0
  199. package/dist/cjs/vite/plugins/clientTreeShakePlugin.test.js +129 -0
  200. package/dist/cjs/vite/plugins/clientTreeShakePlugin.test.js.map +6 -0
  201. package/dist/cjs/vite/plugins/clientTreeShakePlugin.test.native.js +140 -0
  202. package/dist/cjs/vite/plugins/clientTreeShakePlugin.test.native.js.map +1 -0
  203. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.js +6 -3
  204. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.js.map +1 -1
  205. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.native.js +3 -3
  206. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.native.js.map +1 -1
  207. package/dist/cjs/vite/plugins/generateFileSystemRouteTypesPlugin.cjs +5 -1
  208. package/dist/cjs/vite/plugins/generateFileSystemRouteTypesPlugin.js +11 -6
  209. package/dist/cjs/vite/plugins/generateFileSystemRouteTypesPlugin.js.map +1 -1
  210. package/dist/cjs/vite/plugins/generateFileSystemRouteTypesPlugin.native.js +1 -0
  211. package/dist/cjs/vite/plugins/generateFileSystemRouteTypesPlugin.native.js.map +1 -1
  212. package/dist/cjs/vite/plugins/sourceInspectorPlugin.cjs +155 -0
  213. package/dist/cjs/vite/plugins/sourceInspectorPlugin.js +148 -0
  214. package/dist/cjs/vite/plugins/sourceInspectorPlugin.js.map +6 -0
  215. package/dist/cjs/vite/plugins/sourceInspectorPlugin.native.js +231 -0
  216. package/dist/cjs/vite/plugins/sourceInspectorPlugin.native.js.map +1 -0
  217. package/dist/cjs/vite/plugins/virtualEntryPlugin.cjs +25 -6
  218. package/dist/cjs/vite/plugins/virtualEntryPlugin.js +16 -6
  219. package/dist/cjs/vite/plugins/virtualEntryPlugin.js.map +1 -1
  220. package/dist/cjs/vite/plugins/virtualEntryPlugin.native.js +26 -7
  221. package/dist/cjs/vite/plugins/virtualEntryPlugin.native.js.map +1 -1
  222. package/dist/esm/cli/build.js +1 -1
  223. package/dist/esm/cli/build.js.map +1 -1
  224. package/dist/esm/cli/build.mjs +3 -1
  225. package/dist/esm/cli/build.mjs.map +1 -1
  226. package/dist/esm/cli/build.native.js +13 -12
  227. package/dist/esm/cli/build.native.js.map +1 -1
  228. package/dist/esm/cli/buildPage.js +1 -1
  229. package/dist/esm/cli/buildPage.mjs +1 -1
  230. package/dist/esm/cli/buildPage.mjs.map +1 -1
  231. package/dist/esm/cli/buildPage.native.js +2 -2
  232. package/dist/esm/cli/buildPage.native.js.map +1 -1
  233. package/dist/esm/cli/dev.js +4 -4
  234. package/dist/esm/cli/dev.js.map +1 -1
  235. package/dist/esm/cli/dev.mjs +4 -4
  236. package/dist/esm/cli/dev.mjs.map +1 -1
  237. package/dist/esm/cli/dev.native.js +4 -4
  238. package/dist/esm/cli/dev.native.js.map +1 -1
  239. package/dist/esm/cli/generateRoutes.js +1 -1
  240. package/dist/esm/cli/generateRoutes.mjs +1 -1
  241. package/dist/esm/cli/generateRoutes.mjs.map +1 -1
  242. package/dist/esm/cli/generateRoutes.native.js +1 -1
  243. package/dist/esm/cli/generateRoutes.native.js.map +1 -1
  244. package/dist/esm/cli/generateSitemap.native.js +7 -7
  245. package/dist/esm/cli/generateSitemap.native.js.map +1 -1
  246. package/dist/esm/config.native.js +2 -2
  247. package/dist/esm/config.native.js.map +1 -1
  248. package/dist/esm/constants.native.js +2 -2
  249. package/dist/esm/constants.native.js.map +1 -1
  250. package/dist/esm/createApp.js +2 -2
  251. package/dist/esm/createApp.js.map +1 -1
  252. package/dist/esm/createApp.mjs +2 -1
  253. package/dist/esm/createApp.mjs.map +1 -1
  254. package/dist/esm/createHandleRequest.test.js +3 -1
  255. package/dist/esm/createHandleRequest.test.js.map +1 -1
  256. package/dist/esm/createHandleRequest.test.mjs.map +1 -1
  257. package/dist/esm/createHandleRequest.test.native.js.map +1 -1
  258. package/dist/esm/devtools/registry.js +9 -0
  259. package/dist/esm/devtools/registry.js.map +6 -0
  260. package/dist/esm/devtools/registry.mjs +6 -0
  261. package/dist/esm/devtools/registry.mjs.map +1 -0
  262. package/dist/esm/devtools/registry.native.js +6 -0
  263. package/dist/esm/devtools/registry.native.js.map +1 -0
  264. package/dist/esm/fork/NavigationContainer.native.js +5 -5
  265. package/dist/esm/fork/NavigationContainer.native.js.map +1 -1
  266. package/dist/esm/fork/createMemoryHistory.js +22 -4
  267. package/dist/esm/fork/createMemoryHistory.js.map +1 -1
  268. package/dist/esm/fork/createMemoryHistory.mjs +20 -9
  269. package/dist/esm/fork/createMemoryHistory.mjs.map +1 -1
  270. package/dist/esm/fork/createMemoryHistory.native.js +22 -11
  271. package/dist/esm/fork/createMemoryHistory.native.js.map +1 -1
  272. package/dist/esm/fork/extractPathFromURL.native.js +8 -8
  273. package/dist/esm/fork/extractPathFromURL.native.js.map +1 -1
  274. package/dist/esm/fork/findFocusedRoute.native.js +2 -3
  275. package/dist/esm/fork/findFocusedRoute.native.js.map +1 -1
  276. package/dist/esm/fork/getPathFromState-mods.native.js +2 -3
  277. package/dist/esm/fork/getPathFromState-mods.native.js.map +1 -1
  278. package/dist/esm/fork/getStateFromPath-mods.native.js +3 -3
  279. package/dist/esm/fork/getStateFromPath-mods.native.js.map +1 -1
  280. package/dist/esm/fork/useLinking.js +6 -5
  281. package/dist/esm/fork/useLinking.js.map +1 -1
  282. package/dist/esm/fork/useLinking.mjs +11 -5
  283. package/dist/esm/fork/useLinking.mjs.map +1 -1
  284. package/dist/esm/fork/useLinking.native.js.map +1 -1
  285. package/dist/esm/head/url.native.js +2 -3
  286. package/dist/esm/head/url.native.js.map +1 -1
  287. package/dist/esm/hooks.js.map +1 -1
  288. package/dist/esm/hooks.mjs.map +1 -1
  289. package/dist/esm/hooks.native.js.map +1 -1
  290. package/dist/esm/index.js +30 -2
  291. package/dist/esm/index.js.map +1 -1
  292. package/dist/esm/index.mjs +8 -2
  293. package/dist/esm/index.mjs.map +1 -1
  294. package/dist/esm/index.native.js +8 -2
  295. package/dist/esm/index.native.js.map +1 -1
  296. package/dist/esm/layouts/withLayoutContext.js +30 -12
  297. package/dist/esm/layouts/withLayoutContext.js.map +1 -1
  298. package/dist/esm/layouts/withLayoutContext.mjs +34 -15
  299. package/dist/esm/layouts/withLayoutContext.mjs.map +1 -1
  300. package/dist/esm/layouts/withLayoutContext.native.js +42 -19
  301. package/dist/esm/layouts/withLayoutContext.native.js.map +1 -1
  302. package/dist/esm/link/Link.js +3 -2
  303. package/dist/esm/link/Link.js.map +1 -1
  304. package/dist/esm/link/Link.mjs +5 -2
  305. package/dist/esm/link/Link.mjs.map +1 -1
  306. package/dist/esm/link/Link.native.js +6 -1
  307. package/dist/esm/link/Link.native.js.map +1 -1
  308. package/dist/esm/link/href.native.js +2 -2
  309. package/dist/esm/link/href.native.js.map +1 -1
  310. package/dist/esm/link/useLinkTo.js +6 -3
  311. package/dist/esm/link/useLinkTo.js.map +1 -1
  312. package/dist/esm/link/useLinkTo.mjs +11 -3
  313. package/dist/esm/link/useLinkTo.mjs.map +1 -1
  314. package/dist/esm/link/useLinkTo.native.js +11 -3
  315. package/dist/esm/link/useLinkTo.native.js.map +1 -1
  316. package/dist/esm/router/Route.js.map +1 -1
  317. package/dist/esm/router/Route.mjs.map +1 -1
  318. package/dist/esm/router/Route.native.js.map +1 -1
  319. package/dist/esm/router/findRouteNode.js +56 -0
  320. package/dist/esm/router/findRouteNode.js.map +6 -0
  321. package/dist/esm/router/findRouteNode.mjs +44 -0
  322. package/dist/esm/router/findRouteNode.mjs.map +1 -0
  323. package/dist/esm/router/findRouteNode.native.js +75 -0
  324. package/dist/esm/router/findRouteNode.native.js.map +1 -0
  325. package/dist/esm/router/getRoutes.native.js +3 -3
  326. package/dist/esm/router/getRoutes.native.js.map +1 -1
  327. package/dist/esm/router/router.js +154 -6
  328. package/dist/esm/router/router.js.map +1 -1
  329. package/dist/esm/router/router.mjs +151 -10
  330. package/dist/esm/router/router.mjs.map +1 -1
  331. package/dist/esm/router/router.native.js +238 -66
  332. package/dist/esm/router/router.native.js.map +1 -1
  333. package/dist/esm/router/useNavigation.js.map +1 -1
  334. package/dist/esm/router/useNavigation.mjs.map +1 -1
  335. package/dist/esm/router/useNavigation.native.js.map +1 -1
  336. package/dist/esm/router/useScreens.js +1 -1
  337. package/dist/esm/router/useScreens.js.map +1 -1
  338. package/dist/esm/router/useScreens.mjs +1 -1
  339. package/dist/esm/router/useScreens.mjs.map +1 -1
  340. package/dist/esm/router/useScreens.native.js +6 -3
  341. package/dist/esm/router/useScreens.native.js.map +1 -1
  342. package/dist/esm/router/utils/getNavigateAction.native.js +2 -4
  343. package/dist/esm/router/utils/getNavigateAction.native.js.map +1 -1
  344. package/dist/esm/server/oneServe.js.map +1 -1
  345. package/dist/esm/server/oneServe.mjs.map +1 -1
  346. package/dist/esm/server/oneServe.native.js +4 -4
  347. package/dist/esm/server/oneServe.native.js.map +1 -1
  348. package/dist/esm/server/setupBuildOptions.native.js +1 -1
  349. package/dist/esm/server/setupBuildOptions.native.js.map +1 -1
  350. package/dist/esm/ui/common.native.js +6 -5
  351. package/dist/esm/ui/common.native.js.map +1 -1
  352. package/dist/esm/useBlocker.js +122 -0
  353. package/dist/esm/useBlocker.js.map +6 -0
  354. package/dist/esm/useBlocker.mjs +123 -0
  355. package/dist/esm/useBlocker.mjs.map +1 -0
  356. package/dist/esm/useBlocker.native.js +51 -0
  357. package/dist/esm/useBlocker.native.js.map +1 -0
  358. package/dist/esm/useFocusEffect.js +2 -2
  359. package/dist/esm/useFocusEffect.js.map +1 -1
  360. package/dist/esm/useFocusEffect.mjs +2 -2
  361. package/dist/esm/useFocusEffect.mjs.map +1 -1
  362. package/dist/esm/useFocusEffect.native.js +2 -2
  363. package/dist/esm/useFocusEffect.native.js.map +1 -1
  364. package/dist/esm/useLoader.js +57 -3
  365. package/dist/esm/useLoader.js.map +2 -2
  366. package/dist/esm/useLoader.mjs +69 -4
  367. package/dist/esm/useLoader.mjs.map +1 -1
  368. package/dist/esm/useLoader.native.js +90 -7
  369. package/dist/esm/useLoader.native.js.map +1 -1
  370. package/dist/esm/useScrollGroup.js +16 -0
  371. package/dist/esm/useScrollGroup.js.map +6 -0
  372. package/dist/esm/useScrollGroup.mjs +14 -0
  373. package/dist/esm/useScrollGroup.mjs.map +1 -0
  374. package/dist/esm/useScrollGroup.native.js +3 -0
  375. package/dist/esm/useScrollGroup.native.js.map +1 -0
  376. package/dist/esm/validateParams.js +68 -0
  377. package/dist/esm/validateParams.js.map +6 -0
  378. package/dist/esm/validateParams.mjs +54 -0
  379. package/dist/esm/validateParams.mjs.map +1 -0
  380. package/dist/esm/validateParams.native.js +151 -0
  381. package/dist/esm/validateParams.native.js.map +1 -0
  382. package/dist/esm/validateSearch.js +83 -0
  383. package/dist/esm/validateSearch.js.map +6 -0
  384. package/dist/esm/validateSearch.mjs +77 -0
  385. package/dist/esm/validateSearch.mjs.map +1 -0
  386. package/dist/esm/validateSearch.native.js +172 -0
  387. package/dist/esm/validateSearch.native.js.map +1 -0
  388. package/dist/esm/vercel/build/buildVercelOutputDirectory.native.js +2 -2
  389. package/dist/esm/vercel/build/buildVercelOutputDirectory.native.js.map +1 -1
  390. package/dist/esm/views/ErrorBoundary.js +325 -7
  391. package/dist/esm/views/ErrorBoundary.js.map +2 -2
  392. package/dist/esm/views/ErrorBoundary.mjs +289 -6
  393. package/dist/esm/views/ErrorBoundary.mjs.map +1 -1
  394. package/dist/esm/views/ErrorBoundary.native.js +159 -4
  395. package/dist/esm/views/ErrorBoundary.native.js.map +1 -1
  396. package/dist/esm/views/Navigator.js +11 -2
  397. package/dist/esm/views/Navigator.js.map +1 -1
  398. package/dist/esm/views/Navigator.mjs +10 -3
  399. package/dist/esm/views/Navigator.mjs.map +1 -1
  400. package/dist/esm/views/Navigator.native.js +15 -6
  401. package/dist/esm/views/Navigator.native.js.map +1 -1
  402. package/dist/esm/views/Protected.js +14 -0
  403. package/dist/esm/views/Protected.js.map +6 -0
  404. package/dist/esm/views/Protected.mjs +11 -0
  405. package/dist/esm/views/Protected.mjs.map +1 -0
  406. package/dist/esm/views/Protected.native.js +16 -0
  407. package/dist/esm/views/Protected.native.js.map +1 -0
  408. package/dist/esm/views/RootErrorBoundary.js +214 -7
  409. package/dist/esm/views/RootErrorBoundary.js.map +1 -1
  410. package/dist/esm/views/RootErrorBoundary.mjs +192 -7
  411. package/dist/esm/views/RootErrorBoundary.mjs.map +1 -1
  412. package/dist/esm/views/RootErrorBoundary.native.js +191 -7
  413. package/dist/esm/views/RootErrorBoundary.native.js.map +1 -1
  414. package/dist/esm/views/ScrollBehavior.js +47 -11
  415. package/dist/esm/views/ScrollBehavior.js.map +1 -1
  416. package/dist/esm/views/ScrollBehavior.mjs +48 -11
  417. package/dist/esm/views/ScrollBehavior.mjs.map +1 -1
  418. package/dist/esm/views/ScrollBehavior.native.js +67 -10
  419. package/dist/esm/views/ScrollBehavior.native.js.map +1 -1
  420. package/dist/esm/views/SourceInspector.js +7 -0
  421. package/dist/esm/views/SourceInspector.js.map +6 -0
  422. package/dist/esm/views/SourceInspector.mjs +5 -0
  423. package/dist/esm/views/SourceInspector.mjs.map +1 -0
  424. package/dist/esm/views/SourceInspector.native.js +6 -0
  425. package/dist/esm/views/SourceInspector.native.js.map +1 -0
  426. package/dist/esm/views/Try.js +38 -4
  427. package/dist/esm/views/Try.js.map +1 -1
  428. package/dist/esm/views/Try.mjs +40 -7
  429. package/dist/esm/views/Try.mjs.map +1 -1
  430. package/dist/esm/views/Try.native.js +42 -7
  431. package/dist/esm/views/Try.native.js.map +1 -1
  432. package/dist/esm/vite/DevHead.js +802 -51
  433. package/dist/esm/vite/DevHead.js.map +1 -1
  434. package/dist/esm/vite/DevHead.mjs +797 -43
  435. package/dist/esm/vite/DevHead.mjs.map +1 -1
  436. package/dist/esm/vite/DevHead.native.js +782 -0
  437. package/dist/esm/vite/DevHead.native.js.map +1 -1
  438. package/dist/esm/vite/one.js +7 -1
  439. package/dist/esm/vite/one.js.map +1 -1
  440. package/dist/esm/vite/one.mjs +7 -1
  441. package/dist/esm/vite/one.mjs.map +1 -1
  442. package/dist/esm/vite/one.native.js +17 -7
  443. package/dist/esm/vite/one.native.js.map +1 -1
  444. package/dist/esm/vite/plugins/SSRCSSPlugin.js +48 -4
  445. package/dist/esm/vite/plugins/SSRCSSPlugin.js.map +1 -1
  446. package/dist/esm/vite/plugins/SSRCSSPlugin.mjs +44 -4
  447. package/dist/esm/vite/plugins/SSRCSSPlugin.mjs.map +1 -1
  448. package/dist/esm/vite/plugins/SSRCSSPlugin.native.js +61 -4
  449. package/dist/esm/vite/plugins/SSRCSSPlugin.native.js.map +1 -1
  450. package/dist/esm/vite/plugins/clientTreeShakePlugin.js +24 -3
  451. package/dist/esm/vite/plugins/clientTreeShakePlugin.js.map +1 -1
  452. package/dist/esm/vite/plugins/clientTreeShakePlugin.mjs +34 -15
  453. package/dist/esm/vite/plugins/clientTreeShakePlugin.mjs.map +1 -1
  454. package/dist/esm/vite/plugins/clientTreeShakePlugin.native.js +55 -19
  455. package/dist/esm/vite/plugins/clientTreeShakePlugin.native.js.map +1 -1
  456. package/dist/esm/vite/plugins/clientTreeShakePlugin.test.js +130 -0
  457. package/dist/esm/vite/plugins/clientTreeShakePlugin.test.js.map +6 -0
  458. package/dist/esm/vite/plugins/clientTreeShakePlugin.test.mjs +130 -0
  459. package/dist/esm/vite/plugins/clientTreeShakePlugin.test.mjs.map +1 -0
  460. package/dist/esm/vite/plugins/clientTreeShakePlugin.test.native.js +138 -0
  461. package/dist/esm/vite/plugins/clientTreeShakePlugin.test.native.js.map +1 -0
  462. package/dist/esm/vite/plugins/fileSystemRouterPlugin.js +6 -3
  463. package/dist/esm/vite/plugins/fileSystemRouterPlugin.js.map +1 -1
  464. package/dist/esm/vite/plugins/fileSystemRouterPlugin.mjs.map +1 -1
  465. package/dist/esm/vite/plugins/fileSystemRouterPlugin.native.js +3 -3
  466. package/dist/esm/vite/plugins/fileSystemRouterPlugin.native.js.map +1 -1
  467. package/dist/esm/vite/plugins/generateFileSystemRouteTypesPlugin.js +11 -6
  468. package/dist/esm/vite/plugins/generateFileSystemRouteTypesPlugin.js.map +1 -1
  469. package/dist/esm/vite/plugins/generateFileSystemRouteTypesPlugin.mjs +5 -1
  470. package/dist/esm/vite/plugins/generateFileSystemRouteTypesPlugin.mjs.map +1 -1
  471. package/dist/esm/vite/plugins/generateFileSystemRouteTypesPlugin.native.js +1 -0
  472. package/dist/esm/vite/plugins/generateFileSystemRouteTypesPlugin.native.js.map +1 -1
  473. package/dist/esm/vite/plugins/sourceInspectorPlugin.js +126 -0
  474. package/dist/esm/vite/plugins/sourceInspectorPlugin.js.map +6 -0
  475. package/dist/esm/vite/plugins/sourceInspectorPlugin.mjs +121 -0
  476. package/dist/esm/vite/plugins/sourceInspectorPlugin.mjs.map +1 -0
  477. package/dist/esm/vite/plugins/sourceInspectorPlugin.native.js +194 -0
  478. package/dist/esm/vite/plugins/sourceInspectorPlugin.native.js.map +1 -0
  479. package/dist/esm/vite/plugins/virtualEntryPlugin.js +16 -6
  480. package/dist/esm/vite/plugins/virtualEntryPlugin.js.map +1 -1
  481. package/dist/esm/vite/plugins/virtualEntryPlugin.mjs +25 -6
  482. package/dist/esm/vite/plugins/virtualEntryPlugin.mjs.map +1 -1
  483. package/dist/esm/vite/plugins/virtualEntryPlugin.native.js +26 -7
  484. package/dist/esm/vite/plugins/virtualEntryPlugin.native.js.map +1 -1
  485. package/package.json +16 -14
  486. package/src/cli/build.ts +1 -1
  487. package/src/cli/buildPage.ts +1 -1
  488. package/src/cli/dev.ts +4 -4
  489. package/src/cli/generateRoutes.ts +1 -1
  490. package/src/createApp.tsx +11 -1
  491. package/src/createHandleRequest.test.ts +3 -1
  492. package/src/devtools/registry.ts +21 -0
  493. package/src/fork/createMemoryHistory.tsx +43 -11
  494. package/src/fork/useLinking.ts +14 -4
  495. package/src/hooks.tsx +71 -21
  496. package/src/index.ts +34 -1
  497. package/src/interfaces/router.ts +48 -0
  498. package/src/layouts/withLayoutContext.tsx +48 -8
  499. package/src/link/Link.tsx +7 -2
  500. package/src/link/useLinkTo.tsx +7 -3
  501. package/src/router/Route.tsx +32 -3
  502. package/src/router/findRouteNode.ts +127 -0
  503. package/src/router/router.ts +291 -2
  504. package/src/router/useNavigation.ts +12 -3
  505. package/src/router/useScreens.tsx +9 -3
  506. package/src/useBlocker.native.ts +153 -0
  507. package/src/useBlocker.ts +340 -0
  508. package/src/useFocusEffect.ts +18 -5
  509. package/src/useLoader.ts +193 -2
  510. package/src/useScrollGroup.native.ts +7 -0
  511. package/src/useScrollGroup.ts +35 -0
  512. package/src/validateParams.ts +196 -0
  513. package/src/validateSearch.ts +241 -0
  514. package/src/views/ErrorBoundary.tsx +154 -156
  515. package/src/views/ErrorBoundary.web.tsx +321 -0
  516. package/src/views/Navigator.tsx +18 -2
  517. package/src/views/Protected.tsx +62 -0
  518. package/src/views/RootErrorBoundary.tsx +214 -17
  519. package/src/views/ScrollBehavior.tsx +82 -3
  520. package/src/views/SourceInspector.tsx +39 -0
  521. package/src/views/Try.tsx +81 -12
  522. package/src/vite/DevHead.tsx +819 -54
  523. package/src/vite/one.ts +13 -0
  524. package/src/vite/plugins/SSRCSSPlugin.ts +104 -0
  525. package/src/vite/plugins/clientTreeShakePlugin.test.ts +174 -0
  526. package/src/vite/plugins/clientTreeShakePlugin.ts +50 -4
  527. package/src/vite/plugins/fileSystemRouterPlugin.tsx +11 -8
  528. package/src/vite/plugins/generateFileSystemRouteTypesPlugin.tsx +4 -0
  529. package/src/vite/plugins/sourceInspectorPlugin.ts +246 -0
  530. package/src/vite/plugins/virtualEntryPlugin.ts +36 -10
  531. package/src/vite/types.ts +28 -0
  532. package/types/createApp.d.ts +5 -0
  533. package/types/createApp.d.ts.map +1 -1
  534. package/types/devtools/registry.d.ts +15 -0
  535. package/types/devtools/registry.d.ts.map +1 -0
  536. package/types/fork/createMemoryHistory.d.ts +8 -3
  537. package/types/fork/createMemoryHistory.d.ts.map +1 -1
  538. package/types/fork/useLinking.d.ts.map +1 -1
  539. package/types/hooks.d.ts +71 -20
  540. package/types/hooks.d.ts.map +1 -1
  541. package/types/index.d.ts +8 -1
  542. package/types/index.d.ts.map +1 -1
  543. package/types/interfaces/router.d.ts +47 -0
  544. package/types/interfaces/router.d.ts.map +1 -1
  545. package/types/layouts/Drawer.d.ts +15 -11
  546. package/types/layouts/Drawer.d.ts.map +1 -1
  547. package/types/layouts/withLayoutContext.d.ts +2 -1
  548. package/types/layouts/withLayoutContext.d.ts.map +1 -1
  549. package/types/link/Link.d.ts.map +1 -1
  550. package/types/link/useLinkTo.d.ts +1 -0
  551. package/types/link/useLinkTo.d.ts.map +1 -1
  552. package/types/router/Route.d.ts +32 -3
  553. package/types/router/Route.d.ts.map +1 -1
  554. package/types/router/findRouteNode.d.ts +31 -0
  555. package/types/router/findRouteNode.d.ts.map +1 -0
  556. package/types/router/router.d.ts +35 -0
  557. package/types/router/router.d.ts.map +1 -1
  558. package/types/router/useNavigation.d.ts +12 -3
  559. package/types/router/useNavigation.d.ts.map +1 -1
  560. package/types/router/useScreens.d.ts +2 -0
  561. package/types/router/useScreens.d.ts.map +1 -1
  562. package/types/server/oneServe.d.ts.map +1 -1
  563. package/types/ui/TabContext.d.ts +1 -1
  564. package/types/ui/TabContext.d.ts.map +1 -1
  565. package/types/ui/Tabs.d.ts +2 -2
  566. package/types/ui/Tabs.d.ts.map +1 -1
  567. package/types/useBlocker.d.ts +72 -0
  568. package/types/useBlocker.d.ts.map +1 -0
  569. package/types/useBlocker.native.d.ts +60 -0
  570. package/types/useBlocker.native.d.ts.map +1 -0
  571. package/types/useFocusEffect.d.ts +17 -4
  572. package/types/useFocusEffect.d.ts.map +1 -1
  573. package/types/useLoader.d.ts +63 -0
  574. package/types/useLoader.d.ts.map +1 -1
  575. package/types/useScrollGroup.d.ts +18 -0
  576. package/types/useScrollGroup.d.ts.map +1 -0
  577. package/types/useScrollGroup.native.d.ts +6 -0
  578. package/types/useScrollGroup.native.d.ts.map +1 -0
  579. package/types/validateParams.d.ts +85 -0
  580. package/types/validateParams.d.ts.map +1 -0
  581. package/types/validateSearch.d.ts +107 -0
  582. package/types/validateSearch.d.ts.map +1 -0
  583. package/types/views/ErrorBoundary.d.ts +11 -1
  584. package/types/views/ErrorBoundary.d.ts.map +1 -1
  585. package/types/views/ErrorBoundary.web.d.ts +13 -0
  586. package/types/views/ErrorBoundary.web.d.ts.map +1 -0
  587. package/types/views/Navigator.d.ts.map +1 -1
  588. package/types/views/Protected.d.ts +39 -0
  589. package/types/views/Protected.d.ts.map +1 -0
  590. package/types/views/RootErrorBoundary.d.ts +14 -8
  591. package/types/views/RootErrorBoundary.d.ts.map +1 -1
  592. package/types/views/ScrollBehavior.d.ts +8 -0
  593. package/types/views/ScrollBehavior.d.ts.map +1 -1
  594. package/types/views/SourceInspector.d.ts +35 -0
  595. package/types/views/SourceInspector.d.ts.map +1 -0
  596. package/types/views/Try.d.ts +29 -6
  597. package/types/views/Try.d.ts.map +1 -1
  598. package/types/vite/DevHead.d.ts.map +1 -1
  599. package/types/vite/one.d.ts.map +1 -1
  600. package/types/vite/plugins/SSRCSSPlugin.d.ts.map +1 -1
  601. package/types/vite/plugins/clientTreeShakePlugin.d.ts.map +1 -1
  602. package/types/vite/plugins/clientTreeShakePlugin.test.d.ts +2 -0
  603. package/types/vite/plugins/clientTreeShakePlugin.test.d.ts.map +1 -0
  604. package/types/vite/plugins/fileSystemRouterPlugin.d.ts.map +1 -1
  605. package/types/vite/plugins/generateFileSystemRouteTypesPlugin.d.ts.map +1 -1
  606. package/types/vite/plugins/sourceInspectorPlugin.d.ts +3 -0
  607. package/types/vite/plugins/sourceInspectorPlugin.d.ts.map +1 -0
  608. package/types/vite/plugins/virtualEntryPlugin.d.ts.map +1 -1
  609. package/types/vite/types.d.ts +24 -0
  610. package/types/vite/types.d.ts.map +1 -1
  611. package/types/env.d.ts +0 -66
  612. /package/types/vercel/build/generate/{createSSRServerlessFunction.d.ts → createSsrServerlessFunction.d.ts} +0 -0
package/dist/esm/index.js CHANGED
@@ -21,6 +21,7 @@ import {
21
21
  import { href } from "./href";
22
22
  import { Stack } from "./layouts/Stack";
23
23
  import { Tabs } from "./layouts/Tabs";
24
+ import { Protected } from "./views/Protected";
24
25
  import { withLayoutContext } from "./layouts/withLayoutContext";
25
26
  import { Link } from "./link/Link";
26
27
  import { Redirect } from "./link/Redirect";
@@ -32,8 +33,23 @@ import { router } from "./router/imperative-api";
32
33
  import * as routerStore from "./router/router";
33
34
  import { useNavigation } from "./router/useNavigation";
34
35
  import { registerPreloadedRoute } from "./router/useViteRoutes";
36
+ import {
37
+ useBlocker
38
+ } from "./useBlocker";
39
+ import {
40
+ validateParams,
41
+ zodParamValidator,
42
+ ParamValidationError,
43
+ RouteValidationError
44
+ } from "./validateParams";
45
+ import { useValidationState } from "./router/router";
35
46
  import { useFocusEffect } from "./useFocusEffect";
36
- import { refetchLoader, useLoader, useLoaderState } from "./useLoader";
47
+ import {
48
+ getLoaderTimingHistory,
49
+ refetchLoader,
50
+ useLoader,
51
+ useLoaderState
52
+ } from "./useLoader";
37
53
  import {
38
54
  useServerHeadInsertion
39
55
  } from "./useServerHeadInsertion";
@@ -44,6 +60,8 @@ import { ErrorBoundary } from "./views/ErrorBoundary";
44
60
  import { LoadProgressBar } from "./views/LoadProgressBar";
45
61
  import { Navigator, Slot } from "./views/Navigator";
46
62
  import { ScrollBehavior } from "./views/ScrollBehavior";
63
+ import { SourceInspector } from "./views/SourceInspector";
64
+ import { useScrollGroup } from "./useScrollGroup";
47
65
  import { getServerData, setResponseHeaders, setServerData } from "./vite/one-server-only";
48
66
  export {
49
67
  ErrorBoundary,
@@ -51,16 +69,21 @@ export {
51
69
  Link,
52
70
  LoadProgressBar,
53
71
  Navigator,
72
+ ParamValidationError,
73
+ Protected,
54
74
  Redirect,
55
75
  Root,
76
+ RouteValidationError,
56
77
  SafeAreaView,
57
78
  ScrollBehavior,
58
79
  Slot,
80
+ SourceInspector,
59
81
  Stack,
60
82
  Tabs,
61
83
  createApp,
62
84
  createMiddleware,
63
85
  createRoute,
86
+ getLoaderTimingHistory,
64
87
  getServerData,
65
88
  getURL,
66
89
  href,
@@ -76,6 +99,7 @@ export {
76
99
  setResponseHeaders,
77
100
  setServerData,
78
101
  useActiveParams,
102
+ useBlocker,
79
103
  useFocusEffect,
80
104
  useGlobalSearchParams,
81
105
  useIsFocused,
@@ -89,10 +113,14 @@ export {
89
113
  usePathname,
90
114
  useRootNavigationState,
91
115
  useRouter,
116
+ useScrollGroup,
92
117
  useSegments,
93
118
  useServerHeadInsertion,
94
119
  useUnstableGlobalHref,
120
+ useValidationState,
121
+ validateParams,
95
122
  watchFile,
96
- withLayoutContext
123
+ withLayoutContext,
124
+ zodParamValidator
97
125
  };
98
126
  //# sourceMappingURL=index.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/index.ts"],
4
- "mappings": "AAAA,SAAS,iBAAiB;AA2C1B,SAAS,oBAAoB;AAE7B,cAAc;AAId,SAAS,oBAAoB;AAC7B,SAAS,6BAA6B;AAGtC,SAAS,wBAAyC;AAClD,SAAS,cAAc;AACvB,SAAS,YAAY;AAErB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,YAAY;AAErB,SAAS,aAAa;AACtB,SAAS,YAAY;AAErB,SAAS,yBAAyB;AAClC,SAAS,YAAY;AACrB,SAAS,gBAAgB;AACzB,SAAS,iBAAiB;AAC1B,SAAS,YAAY;AAErB,SAAS,cAAc;AACvB,SAAS,aAAa,aAAa;AAEnC,SAAS,cAAc;AACvB,YAAY,iBAAiB;AAC7B,SAAS,qBAAqB;AAC9B,SAAS,8BAA8B;AAGvC,SAAS,sBAAsB;AAC/B,SAAS,eAAe,WAAW,sBAAsB;AACzD;AAAA,EAEE;AAAA,OACK;AACP,SAAS,kBAAkB;AAC3B,SAAS,gBAAgB;AACzB,SAAS,iBAAiB;AAC1B,SAAS,qBAAqB;AAC9B,SAAS,uBAAuB;AAChC,SAAS,WAAW,YAAY;AAChC,SAAS,sBAAsB;AAE/B,SAAS,eAAe,oBAAoB,qBAAqB;",
4
+ "mappings": "AAAA,SAAS,iBAAiB;AA2C1B,SAAS,oBAAoB;AAE7B,cAAc;AAId,SAAS,oBAAoB;AAC7B,SAAS,6BAA6B;AAGtC,SAAS,wBAAyC;AAClD,SAAS,cAAc;AACvB,SAAS,YAAY;AAErB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,YAAY;AAErB,SAAS,aAAa;AACtB,SAAS,YAAY;AACrB,SAAS,iBAAsC;AAE/C,SAAS,yBAAyB;AAClC,SAAS,YAAY;AACrB,SAAS,gBAAgB;AACzB,SAAS,iBAAiB;AAC1B,SAAS,YAAY;AAErB,SAAS,cAAc;AACvB,SAAS,aAAa,aAAa;AAEnC,SAAS,cAAc;AACvB,YAAY,iBAAiB;AAC7B,SAAS,qBAAqB;AAC9B,SAAS,8BAA8B;AAGvC;AAAA,EACE;AAAA,OAIK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAOK;AAEP,SAAS,0BAAgD;AAEzD,SAAS,sBAAsB;AAC/B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAEK;AACP;AAAA,EAEE;AAAA,OACK;AACP,SAAS,kBAAkB;AAC3B,SAAS,gBAAgB;AACzB,SAAS,iBAAiB;AAC1B,SAAS,qBAAqB;AAE9B,SAAS,uBAAuB;AAChC,SAAS,WAAW,YAAY;AAChC,SAAS,sBAAsB;AAC/B,SAAS,uBAAkD;AAE3D,SAAS,sBAAsB;AAE/B,SAAS,eAAe,oBAAoB,qBAAqB;",
5
5
  "names": []
6
6
  }
@@ -10,6 +10,7 @@ import { useActiveParams, useGlobalSearchParams, useLocalSearchParams, useNaviga
10
10
  import { href } from "./href.mjs";
11
11
  import { Stack } from "./layouts/Stack.mjs";
12
12
  import { Tabs } from "./layouts/Tabs.mjs";
13
+ import { Protected } from "./views/Protected.mjs";
13
14
  import { withLayoutContext } from "./layouts/withLayoutContext.mjs";
14
15
  import { Link } from "./link/Link.mjs";
15
16
  import { Redirect } from "./link/Redirect.mjs";
@@ -21,8 +22,11 @@ import { router } from "./router/imperative-api.mjs";
21
22
  import * as routerStore from "./router/router.mjs";
22
23
  import { useNavigation } from "./router/useNavigation.mjs";
23
24
  import { registerPreloadedRoute } from "./router/useViteRoutes.mjs";
25
+ import { useBlocker } from "./useBlocker.mjs";
26
+ import { validateParams, zodParamValidator, ParamValidationError, RouteValidationError } from "./validateParams.mjs";
27
+ import { useValidationState } from "./router/router.mjs";
24
28
  import { useFocusEffect } from "./useFocusEffect.mjs";
25
- import { refetchLoader, useLoader, useLoaderState } from "./useLoader.mjs";
29
+ import { getLoaderTimingHistory, refetchLoader, useLoader, useLoaderState } from "./useLoader.mjs";
26
30
  import { useServerHeadInsertion } from "./useServerHeadInsertion.mjs";
27
31
  import { isResponse } from "./utils/isResponse.mjs";
28
32
  import { redirect } from "./utils/redirect.mjs";
@@ -31,6 +35,8 @@ import { ErrorBoundary } from "./views/ErrorBoundary.mjs";
31
35
  import { LoadProgressBar } from "./views/LoadProgressBar.mjs";
32
36
  import { Navigator, Slot } from "./views/Navigator.mjs";
33
37
  import { ScrollBehavior } from "./views/ScrollBehavior.mjs";
38
+ import { SourceInspector } from "./views/SourceInspector.mjs";
39
+ import { useScrollGroup } from "./useScrollGroup.mjs";
34
40
  import { getServerData, setResponseHeaders, setServerData } from "./vite/one-server-only.mjs";
35
- export { ErrorBoundary, Head, Link, LoadProgressBar, Navigator, Redirect, Root, SafeAreaView, ScrollBehavior, Slot, Stack, Tabs, createApp, createMiddleware, createRoute, getServerData, getURL, href, isResponse, onClientLoaderResolve, redirect, refetchLoader, registerPreloadedRoute, render, route, router, routerStore, setResponseHeaders, setServerData, useActiveParams, useFocusEffect, useGlobalSearchParams, useIsFocused, useLinkTo, useLoader, useLoaderState, useLocalSearchParams, useNavigation, useNavigationContainerRef, useParams, usePathname, useRootNavigationState, useRouter, useSegments, useServerHeadInsertion, useUnstableGlobalHref, watchFile, withLayoutContext };
41
+ export { ErrorBoundary, Head, Link, LoadProgressBar, Navigator, ParamValidationError, Protected, Redirect, Root, RouteValidationError, SafeAreaView, ScrollBehavior, Slot, SourceInspector, Stack, Tabs, createApp, createMiddleware, createRoute, getLoaderTimingHistory, getServerData, getURL, href, isResponse, onClientLoaderResolve, redirect, refetchLoader, registerPreloadedRoute, render, route, router, routerStore, setResponseHeaders, setServerData, useActiveParams, useBlocker, useFocusEffect, useGlobalSearchParams, useIsFocused, useLinkTo, useLoader, useLoaderState, useLocalSearchParams, useNavigation, useNavigationContainerRef, useParams, usePathname, useRootNavigationState, useRouter, useScrollGroup, useSegments, useServerHeadInsertion, useUnstableGlobalHref, useValidationState, validateParams, watchFile, withLayoutContext, zodParamValidator };
36
42
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"names":["createApp","useIsFocused","SafeAreaView","onClientLoaderResolve","createMiddleware","getURL","Head","useActiveParams","useGlobalSearchParams","useLocalSearchParams","useNavigationContainerRef","useParams","usePathname","useRootNavigationState","useRouter","useSegments","useUnstableGlobalHref","href","Stack","Tabs","withLayoutContext","Link","Redirect","useLinkTo","Root","render","createRoute","route","router","routerStore","useNavigation","registerPreloadedRoute","useFocusEffect","refetchLoader","useLoader","useLoaderState","useServerHeadInsertion","isResponse","redirect","watchFile","ErrorBoundary","LoadProgressBar","Navigator","Slot","ScrollBehavior","getServerData","setResponseHeaders","setServerData"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,SAAA,QAAiB;AA2C1B,SAASC,YAAA,QAAoB;AAE7B,cAAc;AAId,SAASC,YAAA,QAAoB;AAC7B,SAASC,qBAAA,QAA6B;AAGtC,SAASC,gBAAA,QAAyC;AAClD,SAASC,MAAA,QAAc;AACvB,SAASC,IAAA,QAAY;AAErB,SACEC,eAAA,EACAC,qBAAA,EACAC,oBAAA,EACAC,yBAAA,EACAC,SAAA,EACAC,WAAA,EACAC,sBAAA,EACAC,SAAA,EACAC,WAAA,EACAC,qBAAA,QACK;AACP,SAASC,IAAA,QAAY;AAErB,SAASC,KAAA,QAAa;AACtB,SAASC,IAAA,QAAY;AAErB,SAASC,iBAAA,QAAyB;AAClC,SAASC,IAAA,QAAY;AACrB,SAASC,QAAA,QAAgB;AACzB,SAASC,SAAA,QAAiB;AAC1B,SAASC,IAAA,QAAY;AAErB,SAASC,MAAA,QAAc;AACvB,SAASC,WAAA,EAAaC,KAAA,QAAa;AAEnC,SAASC,MAAA,QAAc;AACvB,YAAYC,WAAA,MAAiB;AAC7B,SAASC,aAAA,QAAqB;AAC9B,SAASC,sBAAA,QAA8B;AAGvC,SAASC,cAAA,QAAsB;AAC/B,SAASC,aAAA,EAAeC,SAAA,EAAWC,cAAA,QAAsB;AACzD,SAEEC,sBAAA,QACK;AACP,SAASC,UAAA,QAAkB;AAC3B,SAASC,QAAA,QAAgB;AACzB,SAASC,SAAA,QAAiB;AAC1B,SAASC,aAAA,QAAqB;AAC9B,SAASC,eAAA,QAAuB;AAChC,SAASC,SAAA,EAAWC,IAAA,QAAY;AAChC,SAASC,cAAA,QAAsB;AAE/B,SAASC,aAAA,EAAeC,kBAAA,EAAoBC,aAAA,QAAqB","ignoreList":[]}
1
+ {"version":3,"names":["createApp","useIsFocused","SafeAreaView","onClientLoaderResolve","createMiddleware","getURL","Head","useActiveParams","useGlobalSearchParams","useLocalSearchParams","useNavigationContainerRef","useParams","usePathname","useRootNavigationState","useRouter","useSegments","useUnstableGlobalHref","href","Stack","Tabs","Protected","withLayoutContext","Link","Redirect","useLinkTo","Root","render","createRoute","route","router","routerStore","useNavigation","registerPreloadedRoute","useBlocker","validateParams","zodParamValidator","ParamValidationError","RouteValidationError","useValidationState","useFocusEffect","getLoaderTimingHistory","refetchLoader","useLoader","useLoaderState","useServerHeadInsertion","isResponse","redirect","watchFile","ErrorBoundary","LoadProgressBar","Navigator","Slot","ScrollBehavior","SourceInspector","useScrollGroup","getServerData","setResponseHeaders","setServerData"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,SAAA,QAAiB;AA2C1B,SAASC,YAAA,QAAoB;AAE7B,cAAc;AAId,SAASC,YAAA,QAAoB;AAC7B,SAASC,qBAAA,QAA6B;AAGtC,SAASC,gBAAA,QAAyC;AAClD,SAASC,MAAA,QAAc;AACvB,SAASC,IAAA,QAAY;AAErB,SACEC,eAAA,EACAC,qBAAA,EACAC,oBAAA,EACAC,yBAAA,EACAC,SAAA,EACAC,WAAA,EACAC,sBAAA,EACAC,SAAA,EACAC,WAAA,EACAC,qBAAA,QACK;AACP,SAASC,IAAA,QAAY;AAErB,SAASC,KAAA,QAAa;AACtB,SAASC,IAAA,QAAY;AACrB,SAASC,SAAA,QAAsC;AAE/C,SAASC,iBAAA,QAAyB;AAClC,SAASC,IAAA,QAAY;AACrB,SAASC,QAAA,QAAgB;AACzB,SAASC,SAAA,QAAiB;AAC1B,SAASC,IAAA,QAAY;AAErB,SAASC,MAAA,QAAc;AACvB,SAASC,WAAA,EAAaC,KAAA,QAAa;AAEnC,SAASC,MAAA,QAAc;AACvB,YAAYC,WAAA,MAAiB;AAC7B,SAASC,aAAA,QAAqB;AAC9B,SAASC,sBAAA,QAA8B;AAGvC,SACEC,UAAA,QAIK;AAEP,SACEC,cAAA,EACAC,iBAAA,EACAC,oBAAA,EACAC,oBAAA,QAOK;AAEP,SAASC,kBAAA,QAAgD;AAEzD,SAASC,cAAA,QAAsB;AAC/B,SACEC,sBAAA,EACAC,aAAA,EACAC,SAAA,EACAC,cAAA,QAEK;AACP,SAEEC,sBAAA,QACK;AACP,SAASC,UAAA,QAAkB;AAC3B,SAASC,QAAA,QAAgB;AACzB,SAASC,SAAA,QAAiB;AAC1B,SAASC,aAAA,QAAqB;AAE9B,SAASC,eAAA,QAAuB;AAChC,SAASC,SAAA,EAAWC,IAAA,QAAY;AAChC,SAASC,cAAA,QAAsB;AAC/B,SAASC,eAAA,QAAkD;AAE3D,SAASC,cAAA,QAAsB;AAE/B,SAASC,aAAA,EAAeC,kBAAA,EAAoBC,aAAA,QAAqB","ignoreList":[]}
@@ -10,6 +10,7 @@ import { useActiveParams, useGlobalSearchParams, useLocalSearchParams, useNaviga
10
10
  import { href } from "./href.native.js";
11
11
  import { Stack } from "./layouts/Stack.native.js";
12
12
  import { Tabs } from "./layouts/Tabs.native.js";
13
+ import { Protected } from "./views/Protected.native.js";
13
14
  import { withLayoutContext } from "./layouts/withLayoutContext.native.js";
14
15
  import { Link } from "./link/Link.native.js";
15
16
  import { Redirect } from "./link/Redirect.native.js";
@@ -21,8 +22,11 @@ import { router } from "./router/imperative-api.native.js";
21
22
  import * as _routerStore from "./router/router.native.js";
22
23
  import { useNavigation } from "./router/useNavigation.native.js";
23
24
  import { registerPreloadedRoute } from "./router/useViteRoutes.native.js";
25
+ import { useBlocker } from "./useBlocker.native.js";
26
+ import { validateParams, zodParamValidator, ParamValidationError, RouteValidationError } from "./validateParams.native.js";
27
+ import { useValidationState } from "./router/router.native.js";
24
28
  import { useFocusEffect } from "./useFocusEffect.native.js";
25
- import { refetchLoader, useLoader, useLoaderState } from "./useLoader.native.js";
29
+ import { getLoaderTimingHistory, refetchLoader, useLoader, useLoaderState } from "./useLoader.native.js";
26
30
  import { useServerHeadInsertion } from "./useServerHeadInsertion.native.js";
27
31
  import { isResponse } from "./utils/isResponse.native.js";
28
32
  import { redirect } from "./utils/redirect.native.js";
@@ -31,6 +35,8 @@ import { ErrorBoundary } from "./views/ErrorBoundary.native.js";
31
35
  import { LoadProgressBar } from "./views/LoadProgressBar.native.js";
32
36
  import { Navigator, Slot } from "./views/Navigator.native.js";
33
37
  import { ScrollBehavior } from "./views/ScrollBehavior.native.js";
38
+ import { SourceInspector } from "./views/SourceInspector.native.js";
39
+ import { useScrollGroup } from "./useScrollGroup.native.js";
34
40
  import { getServerData, setResponseHeaders, setServerData } from "./vite/one-server-only.native.js";
35
- export { ErrorBoundary, Head, Link, LoadProgressBar, Navigator, Redirect, Root, SafeAreaView, ScrollBehavior, Slot, Stack, Tabs, createApp, createMiddleware, createRoute, getServerData, getURL, href, isResponse, onClientLoaderResolve, redirect, refetchLoader, registerPreloadedRoute, render, route, router, _routerStore as routerStore, setResponseHeaders, setServerData, useActiveParams, useFocusEffect, useGlobalSearchParams, useIsFocused, useLinkTo, useLoader, useLoaderState, useLocalSearchParams, useNavigation, useNavigationContainerRef, useParams, usePathname, useRootNavigationState, useRouter, useSegments, useServerHeadInsertion, useUnstableGlobalHref, watchFile, withLayoutContext };
41
+ export { ErrorBoundary, Head, Link, LoadProgressBar, Navigator, ParamValidationError, Protected, Redirect, Root, RouteValidationError, SafeAreaView, ScrollBehavior, Slot, SourceInspector, Stack, Tabs, createApp, createMiddleware, createRoute, getLoaderTimingHistory, getServerData, getURL, href, isResponse, onClientLoaderResolve, redirect, refetchLoader, registerPreloadedRoute, render, route, router, _routerStore as routerStore, setResponseHeaders, setServerData, useActiveParams, useBlocker, useFocusEffect, useGlobalSearchParams, useIsFocused, useLinkTo, useLoader, useLoaderState, useLocalSearchParams, useNavigation, useNavigationContainerRef, useParams, usePathname, useRootNavigationState, useRouter, useScrollGroup, useSegments, useServerHeadInsertion, useUnstableGlobalHref, useValidationState, validateParams, watchFile, withLayoutContext, zodParamValidator };
36
42
  //# sourceMappingURL=index.native.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createApp","useIsFocused","SafeAreaView","onClientLoaderResolve","createMiddleware","getURL","Head","useActiveParams","useGlobalSearchParams","useLocalSearchParams","useNavigationContainerRef","useParams","usePathname","useRootNavigationState","useRouter","useSegments","useUnstableGlobalHref","href","Stack","Tabs","withLayoutContext","Link","Redirect","useLinkTo","Root","render","createRoute","route","router","_routerStore","useNavigation","registerPreloadedRoute","useFocusEffect","refetchLoader","useLoader","useLoaderState","useServerHeadInsertion","isResponse","redirect","watchFile","ErrorBoundary","LoadProgressBar","Navigator","Slot","ScrollBehavior","getServerData","setResponseHeaders","setServerData"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,SAAA,QAAiB;AA2C1B,SAASC,YAAA,QAAoB;AAE7B,cAAc;AAId,SAASC,YAAA,QAAoB;AAC7B,SAASC,qBAAA,QAA6B;AAGtC,SAASC,gBAAA,QAAyC;AAClD,SAASC,MAAA,QAAc;AACvB,SAASC,IAAA,QAAY;AAErB,SAAAC,eAAA,EAAAC,qBAAA,EAAAC,oBAAA,EAAAC,yBAAA,EAAAC,SAAA,EAAAC,WAAA,EAAAC,sBAAA,EAAAC,SAAA,EAAAC,WAAA,EAAAC,qBAAA;AAAA,SACEC,IAAA;AAAA,SACAC,KAAA;AAAA,SACAC,IAAA;AAAA,SACAC,iBAAA;AAAA,SACAC,IAAA;AAAA,SACAC,QAAA;AAAA,SACAC,SAAA;AAAA,SACAC,IAAA;AAAA,SACAC,MAAA;AAAA,SACAC,WAAA,EAAAC,KAAA;AAAA,SACKC,MAAA;AACP,YAASC,YAAY;AAErB,SAASC,aAAa;AACtB,SAASC,sBAAY;AAErB,SAASC,cAAA,oCAAyB;AAClC,SAASC,aAAY,EAAAC,SAAA,EAAAC,cAAA;AACrB,SAASC,sBAAgB;AACzB,SAASC,UAAA,QAAiB;AAC1B,SAASC,QAAA,QAAY;AAErB,SAASC,SAAA,QAAc;AACvB,SAASC,aAAa,yCAAa;AAEnC,SAASC,eAAc;AACvB,SAAAC,SAAY,EAAAC,IAAA,QAAiB;AAC7B,SAASC,cAAA,QAAqB;AAC9B,SAASC,aAAA,EAAAC,kBAA8B,EAAAC,aAAA;AAGvC,SACAP,aAAS,EACTlC,IAAA,EAEEe,IAAA,EAAAoB,eACK,EACPC,SAAS,EACTpB,QAAS,EACTE,IAAA,EACAtB,YAAS,EACT0C,cAAS,EACTD,IAAA,EACAzB,KAAA,EAEAC,IAAA,E","ignoreList":[]}
1
+ {"version":3,"names":["createApp","useIsFocused","SafeAreaView","onClientLoaderResolve","createMiddleware","getURL","Head","useActiveParams","useGlobalSearchParams","useLocalSearchParams","useNavigationContainerRef","useParams","usePathname","useRootNavigationState","useRouter","useSegments","useUnstableGlobalHref","href","Stack","Tabs","Protected","withLayoutContext","Link","Redirect","useLinkTo","Root","render","createRoute","route","router","_routerStore","useNavigation","registerPreloadedRoute","useBlocker","validateParams","zodParamValidator","ParamValidationError","RouteValidationError","useValidationState","useFocusEffect","getLoaderTimingHistory","refetchLoader","useLoader","useLoaderState","useServerHeadInsertion","isResponse","redirect","watchFile","ErrorBoundary","LoadProgressBar","Navigator","Slot","ScrollBehavior","SourceInspector","useScrollGroup","getServerData","setResponseHeaders","setServerData"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,SAAA,QAAiB;AA2C1B,SAASC,YAAA,QAAoB;AAE7B,cAAc;AAId,SAASC,YAAA,QAAoB;AAC7B,SAASC,qBAAA,QAA6B;AAGtC,SAASC,gBAAA,QAAyC;AAClD,SAASC,MAAA,QAAc;AACvB,SAASC,IAAA,QAAY;AAErB,SAAAC,eAAA,EAAAC,qBAAA,EAAAC,oBAAA,EAAAC,yBAAA,EAAAC,SAAA,EAAAC,WAAA,EAAAC,sBAAA,EAAAC,SAAA,EAAAC,WAAA,EAAAC,qBAAA;AAAA,SACEC,IAAA;AAAA,SACAC,KAAA;AAAA,SACAC,IAAA;AAAA,SACAC,SAAA;AAAA,SACAC,iBAAA;AAAA,SACAC,IAAA;AAAA,SACAC,QAAA;AAAA,SACAC,SAAA;AAAA,SACAC,IAAA;AAAA,SACAC,MAAA;AAAA,SACKC,WAAA,EAAAC,KAAA;AACP,SAASC,MAAA,QAAY;AAErB,YAASC,YAAa;AACtB,SAASC,aAAY;AACrB,SAASC,sBAAsC;AAE/C,SAASC,UAAA,gCAAyB;AAClC,SAASC,cAAY,EAAAC,iBAAA,EAAAC,oBAAA,EAAAC,oBAAA;AACrB,SAASC,kBAAgB;AACzB,SAASC,cAAA,QAAiB;AAC1B,SAASC,sBAAY,EAAAC,aAAA,EAAAC,SAAA,EAAAC,cAAA;AAErB,SAASC,sBAAc;AACvB,SAASC,UAAA,QAAa,8BAAa;AAEnC,SAASC,QAAA,QAAc;AACvB,SAAAC,SAAY,qCAAiB;AAC7B,SAASC,aAAA,QAAqB;AAC9B,SAASC,eAAA,2CAA8B;AAGvC,SAAAC,SAAA,EAAAC,IAAA;AAAA,SACEC,cAAA;AAAA,SAIKC,eAAA;AAEP,SAAAC,cAAA;AAAA,SACEC,aAAA,EAAAC,kBAAA,EAAAC,aAAA;AAAA,SAEAT,aAAA,EACA1C,IAAA,EAAAgB,IAAA,EASF2B,eAAS,EAETC,SAAS,EACTd,oBAAA,EACEhB,SAAA,EACAG,QAAA,EACAE,IAAA,EACAY,oBAAA,EAAAnC,YAEK,EACPkD,cAAA,EAEED,IAAA,EAAAE,eACK,EACPnC,KAAA,EACAC,IAAA,EACAnB,SAAS,EACTI,gBAAS,EAETuB,WAAS,EACTa,sBAAoB,EACpBe,aAAS,EACTlD,MAAA,EAEAY,IAAA,EAEA4B,UAAS,E","ignoreList":[]}
@@ -1,7 +1,9 @@
1
1
  import React from "react";
2
2
  import { useContextKey } from "../router/Route";
3
+ import { registerProtectedRoutes, unregisterProtectedRoutes } from "../router/router";
3
4
  import { useSortedScreens } from "../router/useScreens";
4
5
  import { withStaticProperties } from "../utils/withStaticProperties";
6
+ import { isProtectedElement } from "../views/Protected";
5
7
  import { Screen } from "../views/Screen";
6
8
  import { jsx } from "react/jsx-runtime";
7
9
  function useFilterScreenChildren(children, {
@@ -9,8 +11,9 @@ function useFilterScreenChildren(children, {
9
11
  contextKey
10
12
  } = {}) {
11
13
  return React.useMemo(() => {
12
- const customChildren = [], screens = React.Children.map(children, (child) => {
13
- if (React.isValidElement(child) && child && child.type === Screen) {
14
+ const customChildren = [], screens = [], protectedScreens = /* @__PURE__ */ new Set();
15
+ function flattenChild(child, exclude = !1) {
16
+ if (React.isValidElement(child) && child.type === Screen) {
14
17
  if (typeof child.props == "object" && child.props && "name" in child.props && !child.props.name)
15
18
  throw new Error(
16
19
  `<Screen /> component in \`default export\` at \`app${contextKey}/_layout\` must have a \`name\` prop when used as a child of a Layout Route.`
@@ -21,20 +24,30 @@ function useFilterScreenChildren(children, {
21
24
  throw new Error(
22
25
  `<Screen /> component in \`default export\` at \`app${contextKey}/_layout\` must not have a \`children\`, \`component\`, or \`getComponent\` prop when used as a child of a Layout Route`
23
26
  );
24
- return child.props;
27
+ const screenProps = child.props;
28
+ exclude && screenProps.name ? protectedScreens.add(screenProps.name) : screens.push(screenProps);
29
+ return;
25
30
  }
26
- return isCustomNavigator ? customChildren.push(child) : console.warn(
31
+ if (isProtectedElement(child)) {
32
+ const excludeChildren = exclude || !child.props.guard;
33
+ React.Children.forEach(child.props.children, (nested) => {
34
+ flattenChild(nested, excludeChildren);
35
+ });
36
+ return;
37
+ }
38
+ isCustomNavigator ? customChildren.push(child) : child != null && console.warn(
27
39
  `Layout children must be of type Screen, all other children are ignored. To use custom children, create a custom <Layout />. Update Layout Route at: "app${contextKey}/_layout"`
28
- ), null;
29
- })?.filter(Boolean);
30
- if (process.env.NODE_ENV !== "production") {
31
- const names = screens?.map((screen) => screen.name);
40
+ );
41
+ }
42
+ if (React.Children.forEach(children, (child) => flattenChild(child)), process.env.NODE_ENV !== "production") {
43
+ const names = screens.map((screen) => screen.name);
32
44
  if (names && new Set(names).size !== names.length)
33
45
  throw new Error("Screen names must be unique: " + names);
34
46
  }
35
47
  return {
36
48
  screens,
37
- children: customChildren
49
+ children: customChildren,
50
+ protectedScreens
38
51
  };
39
52
  }, [children, contextKey, isCustomNavigator]);
40
53
  }
@@ -42,10 +55,15 @@ function withLayoutContext(Nav, processor, options) {
42
55
  return withStaticProperties(
43
56
  React.forwardRef(
44
57
  (propsIn, ref) => {
45
- const { children, ...props } = propsIn, contextKey = useContextKey(), { screens } = useFilterScreenChildren(children, {
58
+ const { children, ...props } = propsIn, contextKey = useContextKey(), { screens, protectedScreens } = useFilterScreenChildren(children, {
46
59
  contextKey
47
- }), processed = processor ? processor(screens ?? []) : screens, sorted = useSortedScreens(processed ?? [], {
48
- onlyMatching: !0
60
+ });
61
+ registerProtectedRoutes(contextKey, protectedScreens), React.useEffect(() => (registerProtectedRoutes(contextKey, protectedScreens), () => {
62
+ unregisterProtectedRoutes(contextKey);
63
+ }), [contextKey, protectedScreens]);
64
+ const processed = processor ? processor(screens ?? []) : screens, sorted = useSortedScreens(processed ?? [], {
65
+ onlyMatching: !0,
66
+ protectedScreens
49
67
  });
50
68
  return sorted.length ? /* @__PURE__ */ jsx(Nav, { ...options?.props, ...props, id: contextKey, ref, children: sorted }) : null;
51
69
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/layouts/withLayoutContext.tsx"],
4
- "mappings": "AACA,OAAO,WAAW;AAClB,SAAS,qBAAqB;AAC9B,SAA2B,wBAAwB;AAEnD,SAAS,4BAA4B;AACrC,SAAS,cAAc;AAuGb;AArGH,SAAS,wBACd,UACA;AAAA,EACE;AAAA,EACA;AACF,IAII,CAAC,GACL;AACA,SAAO,MAAM,QAAQ,MAAM;AACzB,UAAM,iBAAwB,CAAC,GAEzB,UAAU,MAAM,SAAS,IAAI,UAAU,CAAC,UAAU;AACtD,UAAI,MAAM,eAAe,KAAK,KAAK,SAAS,MAAM,SAAS,QAAQ;AACjE,YACE,OAAO,MAAM,SAAU,YACvB,MAAM,SACN,UAAU,MAAM,SAChB,CAAC,MAAM,MAAM;AAEb,gBAAM,IAAI;AAAA,YACR,sDAAsD,UAAU;AAAA,UAClE;AAEF,YAAI,QAAQ,IAAI,aAAa,gBAEzB,CAAC,YAAY,aAAa,cAAc,EAAE;AAAA,UACxC,CAAC,QACC,MAAM,SAAS,OAAO,MAAM,SAAU,YAAY,OAAO,MAAM;AAAA,QACnE;AAEA,gBAAM,IAAI;AAAA,YACR,sDAAsD,UAAU;AAAA,UAClE;AAGJ,eAAO,MAAM;AAAA,MACf;AAEA,aAAI,oBACF,eAAe,KAAK,KAAK,IAEzB,QAAQ;AAAA,QACN,2JAA2J,UAAU;AAAA,MACvK,GAGK;AAAA,IACT,CAAC,GAAG,OAAO,OAAO;AAGlB,QAAI,QAAQ,IAAI,aAAa,cAAc;AAEzC,YAAM,QAAQ,SAAS,IAAI,CAAC,WAAW,OAAO,IAAI;AAClD,UAAI,SAAS,IAAI,IAAI,KAAK,EAAE,SAAS,MAAM;AACzC,cAAM,IAAI,MAAM,kCAAkC,KAAK;AAAA,IAE3D;AAEA,WAAO;AAAA,MACL;AAAA,MACA,UAAU;AAAA,IACZ;AAAA,EACF,GAAG,CAAC,UAAU,YAAY,iBAAiB,CAAC;AAC9C;AAGO,SAAS,kBAMd,KACA,WAGA,SACA;AACA,SAAO;AAAA,IACL,MAAM;AAAA,MACJ,CAAC,SAAS,QAAQ;AAChB,cAAM,EAAE,UAAU,GAAG,MAAM,IAAI,SACzB,aAAa,cAAc,GAC3B,EAAE,QAAQ,IAAI,wBAAwB,UAAU;AAAA,UACpD;AAAA,QACF,CAAC,GAEK,YAAY,YAAY,UAAU,WAAY,CAAC,CAAS,IAAI,SAC5D,SAAS,iBAAkB,aAAa,CAAC,GAAW;AAAA,UACxD,cAAc;AAAA,QAChB,CAAC;AAGD,eAAK,OAAO,SAKV,oBAAC,OAAK,GAAG,SAAS,OAAQ,GAAG,OAAO,IAAI,YAAY,KACjD,kBACH,IANO;AAAA,MAQX;AAAA,IACF;AAAA,IACA;AAAA,MACE;AAAA,IACF;AAAA,EACF;AACF;",
4
+ "mappings": "AACA,OAAO,WAAW;AAClB,SAAS,qBAAqB;AAC9B,SAAS,yBAAyB,iCAAiC;AACnE,SAA2B,wBAAwB;AAEnD,SAAS,4BAA4B;AACrC,SAAS,0BAA0B;AACnC,SAAS,cAAc;AA6Ib;AA3IH,SAAS,wBACd,UACA;AAAA,EACE;AAAA,EACA;AACF,IAII,CAAC,GACL;AACA,SAAO,MAAM,QAAQ,MAAM;AACzB,UAAM,iBAAwB,CAAC,GACzB,UAAiB,CAAC,GAClB,mBAAmB,oBAAI,IAAY;AAMzC,aAAS,aAAa,OAAwB,UAAU,IAAO;AAE7D,UAAI,MAAM,eAAe,KAAK,KAAK,MAAM,SAAS,QAAQ;AACxD,YACE,OAAO,MAAM,SAAU,YACvB,MAAM,SACN,UAAU,MAAM,SAChB,CAAC,MAAM,MAAM;AAEb,gBAAM,IAAI;AAAA,YACR,sDAAsD,UAAU;AAAA,UAClE;AAEF,YAAI,QAAQ,IAAI,aAAa,gBAEzB,CAAC,YAAY,aAAa,cAAc,EAAE;AAAA,UACxC,CAAC,QACC,MAAM,SAAS,OAAO,MAAM,SAAU,YAAY,OAAO,MAAM;AAAA,QACnE;AAEA,gBAAM,IAAI;AAAA,YACR,sDAAsD,UAAU;AAAA,UAClE;AAIJ,cAAM,cAAc,MAAM;AAC1B,QAAI,WAAW,YAAY,OACzB,iBAAiB,IAAI,YAAY,IAAI,IAErC,QAAQ,KAAK,WAAW;AAE1B;AAAA,MACF;AAGA,UAAI,mBAAmB,KAAK,GAAG;AAE7B,cAAM,kBAAkB,WAAW,CAAC,MAAM,MAAM;AAChD,cAAM,SAAS,QAAQ,MAAM,MAAM,UAAU,CAAC,WAAW;AACvD,uBAAa,QAAQ,eAAe;AAAA,QACtC,CAAC;AACD;AAAA,MACF;AAGA,MAAI,oBACF,eAAe,KAAK,KAAK,IAChB,SAAS,QAClB,QAAQ;AAAA,QACN,2JAA2J,UAAU;AAAA,MACvK;AAAA,IAEJ;AAKA,QAHA,MAAM,SAAS,QAAQ,UAAU,CAAC,UAAU,aAAa,KAAK,CAAC,GAG3D,QAAQ,IAAI,aAAa,cAAc;AAEzC,YAAM,QAAQ,QAAQ,IAAI,CAAC,WAAW,OAAO,IAAI;AACjD,UAAI,SAAS,IAAI,IAAI,KAAK,EAAE,SAAS,MAAM;AACzC,cAAM,IAAI,MAAM,kCAAkC,KAAK;AAAA,IAE3D;AAEA,WAAO;AAAA,MACL;AAAA,MACA,UAAU;AAAA,MACV;AAAA,IACF;AAAA,EACF,GAAG,CAAC,UAAU,YAAY,iBAAiB,CAAC;AAC9C;AAGO,SAAS,kBAMd,KACA,WAGA,SACA;AACA,SAAO;AAAA,IACL,MAAM;AAAA,MACJ,CAAC,SAAS,QAAQ;AAChB,cAAM,EAAE,UAAU,GAAG,MAAM,IAAI,SACzB,aAAa,cAAc,GAC3B,EAAE,SAAS,iBAAiB,IAAI,wBAAwB,UAAU;AAAA,UACtE;AAAA,QACF,CAAC;AAID,gCAAwB,YAAY,gBAAgB,GAEpD,MAAM,UAAU,OACd,wBAAwB,YAAY,gBAAgB,GAC7C,MAAM;AACX,oCAA0B,UAAU;AAAA,QACtC,IACC,CAAC,YAAY,gBAAgB,CAAC;AAEjC,cAAM,YAAY,YAAY,UAAU,WAAY,CAAC,CAAS,IAAI,SAC5D,SAAS,iBAAkB,aAAa,CAAC,GAAW;AAAA,UACxD,cAAc;AAAA,UACd;AAAA,QACF,CAAC;AAGD,eAAK,OAAO,SAKV,oBAAC,OAAK,GAAG,SAAS,OAAQ,GAAG,OAAO,IAAI,YAAY,KACjD,kBACH,IANO;AAAA,MAQX;AAAA,IACF;AAAA,IACA;AAAA,MACE;AAAA,IACF;AAAA,EACF;AACF;",
5
5
  "names": []
6
6
  }
@@ -1,7 +1,9 @@
1
1
  import React from "react";
2
2
  import { useContextKey } from "../router/Route.mjs";
3
+ import { registerProtectedRoutes, unregisterProtectedRoutes } from "../router/router.mjs";
3
4
  import { useSortedScreens } from "../router/useScreens.mjs";
4
5
  import { withStaticProperties } from "../utils/withStaticProperties.mjs";
6
+ import { isProtectedElement } from "../views/Protected.mjs";
5
7
  import { Screen } from "../views/Screen.mjs";
6
8
  import { jsx } from "react/jsx-runtime";
7
9
  function useFilterScreenChildren(children, {
@@ -10,21 +12,33 @@ function useFilterScreenChildren(children, {
10
12
  } = {}) {
11
13
  return React.useMemo(() => {
12
14
  const customChildren = [],
13
- screens = React.Children.map(children, child => {
14
- if (React.isValidElement(child) && child && child.type === Screen) {
15
- if (typeof child.props == "object" && child.props && "name" in child.props && !child.props.name) throw new Error(`<Screen /> component in \`default export\` at \`app${contextKey}/_layout\` must have a \`name\` prop when used as a child of a Layout Route.`);
16
- if (process.env.NODE_ENV !== "production" && ["children", "component", "getComponent"].some(key => child.props && typeof child.props == "object" && key in child.props)) throw new Error(`<Screen /> component in \`default export\` at \`app${contextKey}/_layout\` must not have a \`children\`, \`component\`, or \`getComponent\` prop when used as a child of a Layout Route`);
17
- return child.props;
18
- }
19
- return isCustomNavigator ? customChildren.push(child) : console.warn(`Layout children must be of type Screen, all other children are ignored. To use custom children, create a custom <Layout />. Update Layout Route at: "app${contextKey}/_layout"`), null;
20
- })?.filter(Boolean);
21
- if (process.env.NODE_ENV !== "production") {
22
- const names = screens?.map(screen => screen.name);
15
+ screens = [],
16
+ protectedScreens = /* @__PURE__ */new Set();
17
+ function flattenChild(child, exclude = !1) {
18
+ if (React.isValidElement(child) && child.type === Screen) {
19
+ if (typeof child.props == "object" && child.props && "name" in child.props && !child.props.name) throw new Error(`<Screen /> component in \`default export\` at \`app${contextKey}/_layout\` must have a \`name\` prop when used as a child of a Layout Route.`);
20
+ if (process.env.NODE_ENV !== "production" && ["children", "component", "getComponent"].some(key => child.props && typeof child.props == "object" && key in child.props)) throw new Error(`<Screen /> component in \`default export\` at \`app${contextKey}/_layout\` must not have a \`children\`, \`component\`, or \`getComponent\` prop when used as a child of a Layout Route`);
21
+ const screenProps = child.props;
22
+ exclude && screenProps.name ? protectedScreens.add(screenProps.name) : screens.push(screenProps);
23
+ return;
24
+ }
25
+ if (isProtectedElement(child)) {
26
+ const excludeChildren = exclude || !child.props.guard;
27
+ React.Children.forEach(child.props.children, nested => {
28
+ flattenChild(nested, excludeChildren);
29
+ });
30
+ return;
31
+ }
32
+ isCustomNavigator ? customChildren.push(child) : child != null && console.warn(`Layout children must be of type Screen, all other children are ignored. To use custom children, create a custom <Layout />. Update Layout Route at: "app${contextKey}/_layout"`);
33
+ }
34
+ if (React.Children.forEach(children, child => flattenChild(child)), process.env.NODE_ENV !== "production") {
35
+ const names = screens.map(screen => screen.name);
23
36
  if (names && new Set(names).size !== names.length) throw new Error("Screen names must be unique: " + names);
24
37
  }
25
38
  return {
26
39
  screens,
27
- children: customChildren
40
+ children: customChildren,
41
+ protectedScreens
28
42
  };
29
43
  }, [children, contextKey, isCustomNavigator]);
30
44
  }
@@ -36,13 +50,18 @@ function withLayoutContext(Nav, processor, options) {
36
50
  } = propsIn,
37
51
  contextKey = useContextKey(),
38
52
  {
39
- screens
53
+ screens,
54
+ protectedScreens
40
55
  } = useFilterScreenChildren(children, {
41
56
  contextKey
42
- }),
43
- processed = processor ? processor(screens ?? []) : screens,
57
+ });
58
+ registerProtectedRoutes(contextKey, protectedScreens), React.useEffect(() => (registerProtectedRoutes(contextKey, protectedScreens), () => {
59
+ unregisterProtectedRoutes(contextKey);
60
+ }), [contextKey, protectedScreens]);
61
+ const processed = processor ? processor(screens ?? []) : screens,
44
62
  sorted = useSortedScreens(processed ?? [], {
45
- onlyMatching: !0
63
+ onlyMatching: !0,
64
+ protectedScreens
46
65
  });
47
66
  return sorted.length ? /* @__PURE__ */jsx(Nav, {
48
67
  ...options?.props,
@@ -1 +1 @@
1
- {"version":3,"names":["React","useContextKey","useSortedScreens","withStaticProperties","Screen","jsx","useFilterScreenChildren","children","isCustomNavigator","contextKey","useMemo","customChildren","screens","Children","map","child","isValidElement","type","props","name","Error","process","env","NODE_ENV","some","key","push","console","warn","filter","Boolean","names","screen","Set","size","length","withLayoutContext","Nav","processor","options","forwardRef","propsIn","ref","processed","sorted","onlyMatching","id"],"sources":["../../../src/layouts/withLayoutContext.tsx"],"sourcesContent":[null],"mappings":"AACA,OAAOA,KAAA,MAAW;AAClB,SAASC,aAAA,QAAqB;AAC9B,SAA2BC,gBAAA,QAAwB;AAEnD,SAASC,oBAAA,QAA4B;AACrC,SAASC,MAAA,QAAc;AAuGb,SAAAC,GAAA;AArGH,SAASC,wBACdC,QAAA,EACA;EACEC,iBAAA;EACAC;AACF,IAII,CAAC,GACL;EACA,OAAOT,KAAA,CAAMU,OAAA,CAAQ,MAAM;IACzB,MAAMC,cAAA,GAAwB,EAAC;MAEzBC,OAAA,GAAUZ,KAAA,CAAMa,QAAA,CAASC,GAAA,CAAIP,QAAA,EAAWQ,KAAA,IAAU;QACtD,IAAIf,KAAA,CAAMgB,cAAA,CAAeD,KAAK,KAAKA,KAAA,IAASA,KAAA,CAAME,IAAA,KAASb,MAAA,EAAQ;UACjE,IACE,OAAOW,KAAA,CAAMG,KAAA,IAAU,YACvBH,KAAA,CAAMG,KAAA,IACN,UAAUH,KAAA,CAAMG,KAAA,IAChB,CAACH,KAAA,CAAMG,KAAA,CAAMC,IAAA,EAEb,MAAM,IAAIC,KAAA,CACR,sDAAsDX,UAAU,8EAClE;UAEF,IAAIY,OAAA,CAAQC,GAAA,CAAIC,QAAA,KAAa,gBAEzB,CAAC,YAAY,aAAa,cAAc,EAAEC,IAAA,CACvCC,GAAA,IACCV,KAAA,CAAMG,KAAA,IAAS,OAAOH,KAAA,CAAMG,KAAA,IAAU,YAAYO,GAAA,IAAOV,KAAA,CAAMG,KACnE,GAEA,MAAM,IAAIE,KAAA,CACR,sDAAsDX,UAAU,yHAClE;UAGJ,OAAOM,KAAA,CAAMG,KAAA;QACf;QAEA,OAAIV,iBAAA,GACFG,cAAA,CAAee,IAAA,CAAKX,KAAK,IAEzBY,OAAA,CAAQC,IAAA,CACN,2JAA2JnB,UAAU,WACvK,GAGK;MACT,CAAC,GAAGoB,MAAA,CAAOC,OAAO;IAGlB,IAAIT,OAAA,CAAQC,GAAA,CAAIC,QAAA,KAAa,cAAc;MAEzC,MAAMQ,KAAA,GAAQnB,OAAA,EAASE,GAAA,CAAKkB,MAAA,IAAWA,MAAA,CAAOb,IAAI;MAClD,IAAIY,KAAA,IAAS,IAAIE,GAAA,CAAIF,KAAK,EAAEG,IAAA,KAASH,KAAA,CAAMI,MAAA,EACzC,MAAM,IAAIf,KAAA,CAAM,kCAAkCW,KAAK;IAE3D;IAEA,OAAO;MACLnB,OAAA;MACAL,QAAA,EAAUI;IACZ;EACF,GAAG,CAACJ,QAAA,EAAUE,UAAA,EAAYD,iBAAiB,CAAC;AAC9C;AAGO,SAAS4B,kBAMdC,GAAA,EACAC,SAAA,EAGAC,OAAA,EACA;EACA,OAAOpC,oBAAA,CACLH,KAAA,CAAMwC,UAAA,CACJ,CAACC,OAAA,EAASC,GAAA,KAAQ;IAChB,MAAM;QAAEnC,QAAA;QAAU,GAAGW;MAAM,IAAIuB,OAAA;MACzBhC,UAAA,GAAaR,aAAA,CAAc;MAC3B;QAAEW;MAAQ,IAAIN,uBAAA,CAAwBC,QAAA,EAAU;QACpDE;MACF,CAAC;MAEKkC,SAAA,GAAYL,SAAA,GAAYA,SAAA,CAAU1B,OAAA,IAAY,EAAU,IAAIA,OAAA;MAC5DgC,MAAA,GAAS1C,gBAAA,CAAkByC,SAAA,IAAa,EAAC,EAAW;QACxDE,YAAA,EAAc;MAChB,CAAC;IAGD,OAAKD,MAAA,CAAOT,MAAA,GAKV,eAAA9B,GAAA,CAACgC,GAAA;MAAK,GAAGE,OAAA,EAASrB,KAAA;MAAQ,GAAGA,KAAA;MAAO4B,EAAA,EAAIrC,UAAA;MAAYiC,GAAA;MACjDnC,QAAA,EAAAqC;IAAA,CACH,IANO;EAQX,CACF,GACA;IACExC;EACF,CACF;AACF","ignoreList":[]}
1
+ {"version":3,"names":["React","useContextKey","registerProtectedRoutes","unregisterProtectedRoutes","useSortedScreens","withStaticProperties","isProtectedElement","Screen","jsx","useFilterScreenChildren","children","isCustomNavigator","contextKey","useMemo","customChildren","screens","protectedScreens","Set","flattenChild","child","exclude","isValidElement","type","props","name","Error","process","env","NODE_ENV","some","key","screenProps","add","push","excludeChildren","guard","Children","forEach","nested","console","warn","names","map","screen","size","length","withLayoutContext","Nav","processor","options","forwardRef","propsIn","ref","useEffect","processed","sorted","onlyMatching","id"],"sources":["../../../src/layouts/withLayoutContext.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1,8 +1,10 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import React from "react";
3
3
  import { useContextKey } from "../router/Route.native.js";
4
+ import { registerProtectedRoutes, unregisterProtectedRoutes } from "../router/router.native.js";
4
5
  import { useSortedScreens } from "../router/useScreens.native.js";
5
6
  import { withStaticProperties } from "../utils/withStaticProperties.native.js";
7
+ import { isProtectedElement } from "../views/Protected.native.js";
6
8
  import { Screen } from "../views/Screen.native.js";
7
9
  function _type_of(obj) {
8
10
  "@swc/helpers - typeof";
@@ -16,27 +18,41 @@ function useFilterScreenChildren(children) {
16
18
  } = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : (/** Used for sending developer hints */
17
19
  {});
18
20
  return React.useMemo(function () {
19
- var _React_Children_map,
20
- customChildren = [],
21
- screens = (_React_Children_map = React.Children.map(children, function (child) {
22
- if (/* @__PURE__ */React.isValidElement(child) && child && child.type === Screen) {
23
- if (_type_of(child.props) === "object" && child.props && "name" in child.props && !child.props.name) throw new Error(`<Screen /> component in \`default export\` at \`app${contextKey}/_layout\` must have a \`name\` prop when used as a child of a Layout Route.`);
24
- if (process.env.NODE_ENV !== "production" && ["children", "component", "getComponent"].some(function (key) {
25
- return child.props && _type_of(child.props) === "object" && key in child.props;
26
- })) throw new Error(`<Screen /> component in \`default export\` at \`app${contextKey}/_layout\` must not have a \`children\`, \`component\`, or \`getComponent\` prop when used as a child of a Layout Route`);
27
- return child.props;
28
- }
29
- return isCustomNavigator ? customChildren.push(child) : console.warn(`Layout children must be of type Screen, all other children are ignored. To use custom children, create a custom <Layout />. Update Layout Route at: "app${contextKey}/_layout"`), null;
30
- })) === null || _React_Children_map === void 0 ? void 0 : _React_Children_map.filter(Boolean);
31
- if (process.env.NODE_ENV !== "production") {
32
- var names = screens?.map(function (screen) {
21
+ var customChildren = [],
22
+ screens = [],
23
+ protectedScreens = /* @__PURE__ */new Set();
24
+ function flattenChild(child) {
25
+ var exclude = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : !1;
26
+ if (/* @__PURE__ */React.isValidElement(child) && child.type === Screen) {
27
+ if (_type_of(child.props) === "object" && child.props && "name" in child.props && !child.props.name) throw new Error(`<Screen /> component in \`default export\` at \`app${contextKey}/_layout\` must have a \`name\` prop when used as a child of a Layout Route.`);
28
+ if (process.env.NODE_ENV !== "production" && ["children", "component", "getComponent"].some(function (key) {
29
+ return child.props && _type_of(child.props) === "object" && key in child.props;
30
+ })) throw new Error(`<Screen /> component in \`default export\` at \`app${contextKey}/_layout\` must not have a \`children\`, \`component\`, or \`getComponent\` prop when used as a child of a Layout Route`);
31
+ var screenProps = child.props;
32
+ exclude && screenProps.name ? protectedScreens.add(screenProps.name) : screens.push(screenProps);
33
+ return;
34
+ }
35
+ if (isProtectedElement(child)) {
36
+ var excludeChildren = exclude || !child.props.guard;
37
+ React.Children.forEach(child.props.children, function (nested) {
38
+ flattenChild(nested, excludeChildren);
39
+ });
40
+ return;
41
+ }
42
+ isCustomNavigator ? customChildren.push(child) : child != null && console.warn(`Layout children must be of type Screen, all other children are ignored. To use custom children, create a custom <Layout />. Update Layout Route at: "app${contextKey}/_layout"`);
43
+ }
44
+ if (React.Children.forEach(children, function (child) {
45
+ return flattenChild(child);
46
+ }), process.env.NODE_ENV !== "production") {
47
+ var names = screens.map(function (screen) {
33
48
  return screen.name;
34
49
  });
35
50
  if (names && new Set(names).size !== names.length) throw new Error("Screen names must be unique: " + names);
36
51
  }
37
52
  return {
38
53
  screens,
39
- children: customChildren
54
+ children: customChildren,
55
+ protectedScreens
40
56
  };
41
57
  }, [children, contextKey, isCustomNavigator]);
42
58
  }
@@ -48,13 +64,20 @@ function withLayoutContext(Nav, processor, options) {
48
64
  } = propsIn,
49
65
  contextKey = useContextKey(),
50
66
  {
51
- screens
67
+ screens,
68
+ protectedScreens
52
69
  } = useFilterScreenChildren(children, {
53
70
  contextKey
54
- }),
55
- processed = processor ? processor(screens ?? []) : screens,
71
+ });
72
+ registerProtectedRoutes(contextKey, protectedScreens), React.useEffect(function () {
73
+ return registerProtectedRoutes(contextKey, protectedScreens), function () {
74
+ unregisterProtectedRoutes(contextKey);
75
+ };
76
+ }, [contextKey, protectedScreens]);
77
+ var processed = processor ? processor(screens ?? []) : screens,
56
78
  sorted = useSortedScreens(processed ?? [], {
57
- onlyMatching: !0
79
+ onlyMatching: !0,
80
+ protectedScreens
58
81
  });
59
82
  return sorted.length ? /* @__PURE__ */_jsx(Nav, {
60
83
  ...options?.props,
@@ -1 +1 @@
1
- {"version":3,"names":["jsx","_jsx","React","useContextKey","useSortedScreens","withStaticProperties","Screen","_type_of","obj","Symbol","constructor","useFilterScreenChildren","children","isCustomNavigator","contextKey","arguments","length","useMemo","_React_Children_map","customChildren","screens","Children","map","child","isValidElement","type","props","name","Error","process","env","NODE_ENV","some","key","push","console","warn","filter","Boolean","names","screen","Set","size","withLayoutContext","Nav","processor","options","forwardRef","propsIn","ref","processed","sorted","onlyMatching"],"sources":["../../../src/layouts/withLayoutContext.tsx"],"sourcesContent":[null],"mappings":"AACA,SAAOA,GAAA,IAAAC,IAAW;AAClB,OAAAC,KAAS;AACT,SAA2BC,aAAA,mCAAwB;AAEnD,SAASC,gBAAA,wCAA4B;AACrC,SAASC,oBAAc;AAuGb,SAAAC,MAAA;AArGH,SAASC,SAAAC,GAAA;EAGZ;;EACA,OAAAA,GAAA,WAAAC,MAAA,UAAAD,GAAA,CAAAE,WAAA,KAAAD,MAAA,qBAAAD,GAAA;AACF;AAMA,SAAOG,uBAAoBA,CAAAC,QAAA;EACzB;IAAAC,iBAAM;IAAwBC;EAExB,IAAUC,SAAM,CAAAC,MAAS,GAAI,KAAAD,SAAW,QAAU,SAAAA,SAAA,OACtD;EACE,GAME;EAAU,OAAAb,KACR,CAAAe,OAAA;IAAgE,IAAAC,mBAClE;MAAAC,cAAA;MAAAC,OAAA,IAAAF,mBAAA,GAAAhB,KAAA,CAAAmB,QAAA,CAAAC,GAAA,CAAAV,QAAA,YAAAW,KAAA;QAEF,mBAAgBrB,KAAA,CAAAsB,cAAa,CAAAD,KAAA,CAEzB,IAACA,KAAA,IAAYA,KAAA,CAAAE,IAAA,KAAanB,MAAA;UAAgB,IACvCC,QACC,CAAAgB,KAAM,CAAAG,KAAA,MAAS,QAAO,IAAMH,KAAA,CAAUG,KAAA,UAAY,IAAOH,KAAA,CAAMG,KAAA,KAAAH,KAAA,CAAAG,KAAA,CAAAC,IAAA,EACnE,UAAAC,KAAA,uDAAAd,UAAA;UAEA,IAAAe,OAAM,CAAIC,GAAA,CAAAC,QAAA,gCACR,EACF,aAGJ,cAAa,CACf,CAAAC,IAAA,WAAAC,GAAA;YAEA,OAAIV,KAAA,CAAAG,KAAA,IAAAnB,QACF,CAAAgB,KAAA,CAAAG,KAAe,CAAK,KAAK,QAEzB,IAAQO,GAAA,IAAAV,KAAA,CAAAG,KAAA;UACN,IAIG,UAAAE,KAAA,uDAAAd,UAAA;UACL,OAAOS,KAAA,CAAAG,KAAO;QAGlB;QAEE,OAAMb,iBAAiB,GAAIM,cAAY,CAAAe,IAAO,CAAAX,KAAI,IAAAY,OAAA,CAAAC,IAAA,4JAAAtB,UAAA;MAClD,QAAI,QAASI,mBAAe,KAAS,KAAM,aAAAA,mBAAA,CAAAmB,MAAA,CAAAC,OAAA;IACzC,IAAAT,OAAM,CAAAC,GAAI,CAAAC,QAAM;MAEpB,IAAAQ,KAAA,GAAAnB,OAAA,EAAAE,GAAA,WAAAkB,MAAA;QAEA,OAAOA,MAAA,CAAAb,IAAA;MACL;MACA,IAAAY,KAAA,IAAU,IAAAE,GAAA,CAAAF,KAAA,EAAAG,IAAA,KAAAH,KAAA,CAAAvB,MAAA,EACZ,UAAAY,KAAA,mCAAAW,KAAA;IACF;IACF;MAGOnB,OAAS;MAYdR,QAAO,EAAAO;IACL;EAAM,IAEFP,QAAA,EAEsDE,UACpD,EAAAD,iBAGI,CACoD;AAC1C;AAIhB,SAAA8B,iBAAYA,CAAAC,GAAA,EAKVC,SAAA,EAAAC,OAAA,EAAC;EAJM,OAQXzC,oBAAA,gBAAAH,KAAA,CAAA6C,UAAA,WAAAC,OAAA,EAAAC,GAAA;IACF;QAAArC,QAAA;QAAA,GAAAc;MAAA,IAAAsB,OAAA;MAAAlC,UAAA,GAAAX,aAAA;MAAA;QAAAiB;MAAA,IAAAT,uBAAA,CAAAC,QAAA;QACAE;MAAA,EACE;MAAAoC,SAAA,GAAAL,SAAA,GAAAA,SAAA,CAAAzB,OAAA,UAAAA,OAAA;MAAA+B,MAAA,GAAA/C,gBAAA,CAAA8C,SAAA;QACFE,YAAA;MACF;IACF,OAAAD,MAAA,CAAAnC,MAAA,kBAAAf,IAAA,CAAA2C,GAAA","ignoreList":[]}
1
+ {"version":3,"names":["jsx","_jsx","React","useContextKey","registerProtectedRoutes","unregisterProtectedRoutes","useSortedScreens","withStaticProperties","isProtectedElement","Screen","_type_of","obj","Symbol","constructor","useFilterScreenChildren","children","isCustomNavigator","contextKey","arguments","length","useMemo","customChildren","screens","protectedScreens","Set","flattenChild","child","exclude","isValidElement","type","props","name","Error","process","env","NODE_ENV","some","key","screenProps","add","push","excludeChildren","guard","Children","forEach","nested","console","warn","names","map","screen","size","withLayoutContext","Nav","processor","options","forwardRef","propsIn","ref","useEffect"],"sources":["../../../src/layouts/withLayoutContext.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -9,6 +9,7 @@ const Link = React.forwardRef(function({
9
9
  replace,
10
10
  push,
11
11
  id,
12
+ mask,
12
13
  // TODO: This does not prevent default on the anchor tag.
13
14
  asChild,
14
15
  rel,
@@ -20,7 +21,7 @@ const Link = React.forwardRef(function({
20
21
  if (href == null)
21
22
  throw new Error("Link: href is required");
22
23
  return resolveHref(href);
23
- }, [href]), props = useLinkTo({ href: resolvedHref, replace }), onPress = (e) => {
24
+ }, [href]), resolvedMask = React.useMemo(() => mask ? resolveHref(mask) : void 0, [mask]), props = useLinkTo({ href: resolvedHref, replace, mask: resolvedMask }), onPress = (e) => {
24
25
  "onPress" in rest && rest.onPress?.(e), props.onPress(e);
25
26
  };
26
27
  return /* @__PURE__ */ jsx(
@@ -30,7 +31,7 @@ const Link = React.forwardRef(function({
30
31
  ...props,
31
32
  ...hrefAttrs,
32
33
  ...rest,
33
- nativeID: id,
34
+ id,
34
35
  style: asChild ? null : style,
35
36
  ...Platform.select({
36
37
  web: {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/link/Link.tsx"],
4
- "mappings": "AAEA,SAAS,YAAY;AACrB,YAAY,WAAW;AACvB,SAAqC,UAAU,YAA4B;AAG3E,SAAS,mBAAmB;AAC5B,SAAS,iBAAiB;AAwDtB;AA3CG,MAAM,OAAO,MAAM,WAAW,SACnC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GACA,KACA;AAEA,QAAM,QAAQ,oBAAoB,IAAI,GAGhC,YAAY,aAAa,EAAE,SAAS,KAAK,QAAQ,SAAS,CAAC,GAE3D,eAAe,MAAM,QAAQ,MAAM;AACvC,QAAI,QAAQ;AACV,YAAM,IAAI,MAAM,wBAAwB;AAE1C,WAAO,YAAY,IAAI;AAAA,EACzB,GAAG,CAAC,IAAI,CAAC,GAEH,QAAQ,UAAU,EAAE,MAAM,cAAc,QAAQ,CAAC,GAEjD,UAAU,CACd,MACG;AACH,IAAI,aAAa,QACf,KAAK,UAAU,CAAC,GAElB,MAAM,QAAQ,CAAC;AAAA,EACjB;AAKA,SACE;AAAA,IAJc,UAAU,OAAO;AAAA,IAI9B;AAAA,MACC;AAAA,MACC,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACJ,UAAU;AAAA,MACV,OAAO,UAAU,OAAO;AAAA,MACvB,GAAG,SAAS,OAAO;AAAA,QAClB,KAAK;AAAA,UACH,SAAS;AAAA,QACX;AAAA,QACA,SAAS,EAAE,QAAQ;AAAA,MACrB,CAAC;AAAA;AAAA,EACH;AAEJ,CAAC;AAED,KAAK,cAAc;AAGnB,SAAS,oBAAoB,OAA2D;AACtF,SAAI,SAAS,OAAO,QACX,MAAM,QAIR,MAAM,QAAQ,MAAM;AACzB,QAAI,MAAM,aAAa;AACrB,aAAO,MAAM;AAEf,UAAM,WAAW;AAAA,MACf,OAAO;AAAA,MACP,uBAAuB,MAAM;AAAA,IAC/B;AAEA,WAAI,MAAM,QAAQ,MAAM,KAAK,IACpB,CAAC,GAAG,MAAM,OAAO,QAAQ,IAE3B,CAAC,MAAM,OAAO,QAAQ;AAAA,EAC/B,GAAG,CAAC,MAAM,OAAO,MAAM,SAAS,CAAC;AACnC;AAEA,MAAM,eAAe,SAAS,OAI5B;AAAA,EACA,KAAK,SAAsB;AAAA,IACzB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAAsC;AACpC,WAAO,MAAM,QAAQ,MAAM;AACzB,YAAM,YAAY;AAAA,QAChB;AAAA,QACA;AAAA,QACA;AAAA,MACF;AACA,aAAI,UACK,YAEF;AAAA,QACL;AAAA,MACF;AAAA,IACF,GAAG,CAAC,SAAS,KAAK,QAAQ,QAAQ,CAAC;AAAA,EACrC;AAAA,EACA,SAAS,WAAwB;AAC/B,WAAO,CAAC;AAAA,EACV;AACF,CAAC;",
4
+ "mappings": "AAEA,SAAS,YAAY;AACrB,YAAY,WAAW;AACvB,SAAqC,UAAU,YAA4B;AAG3E,SAAS,mBAAmB;AAC5B,SAAS,iBAAiB;AA6DtB;AAhDG,MAAM,OAAO,MAAM,WAAW,SACnC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GACA,KACA;AAEA,QAAM,QAAQ,oBAAoB,IAAI,GAGhC,YAAY,aAAa,EAAE,SAAS,KAAK,QAAQ,SAAS,CAAC,GAE3D,eAAe,MAAM,QAAQ,MAAM;AACvC,QAAI,QAAQ;AACV,YAAM,IAAI,MAAM,wBAAwB;AAE1C,WAAO,YAAY,IAAI;AAAA,EACzB,GAAG,CAAC,IAAI,CAAC,GAEH,eAAe,MAAM,QAAQ,MAC1B,OAAO,YAAY,IAAI,IAAI,QACjC,CAAC,IAAI,CAAC,GAEH,QAAQ,UAAU,EAAE,MAAM,cAAc,SAAS,MAAM,aAAa,CAAC,GAErE,UAAU,CACd,MACG;AACH,IAAI,aAAa,QACf,KAAK,UAAU,CAAC,GAElB,MAAM,QAAQ,CAAC;AAAA,EACjB;AAKA,SACE;AAAA,IAJc,UAAU,OAAO;AAAA,IAI9B;AAAA,MACC;AAAA,MACC,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MAC0C;AAAA,MAC9C,OAAO,UAAU,OAAO;AAAA,MACvB,GAAG,SAAS,OAAO;AAAA,QAClB,KAAK;AAAA,UACH,SAAS;AAAA,QACX;AAAA,QACA,SAAS,EAAE,QAAQ;AAAA,MACrB,CAAC;AAAA;AAAA,EACH;AAEJ,CAAC;AAED,KAAK,cAAc;AAGnB,SAAS,oBAAoB,OAA2D;AACtF,SAAI,SAAS,OAAO,QACX,MAAM,QAIR,MAAM,QAAQ,MAAM;AACzB,QAAI,MAAM,aAAa;AACrB,aAAO,MAAM;AAEf,UAAM,WAAW;AAAA,MACf,OAAO;AAAA,MACP,uBAAuB,MAAM;AAAA,IAC/B;AAEA,WAAI,MAAM,QAAQ,MAAM,KAAK,IACpB,CAAC,GAAG,MAAM,OAAO,QAAQ,IAE3B,CAAC,MAAM,OAAO,QAAQ;AAAA,EAC/B,GAAG,CAAC,MAAM,OAAO,MAAM,SAAS,CAAC;AACnC;AAEA,MAAM,eAAe,SAAS,OAI5B;AAAA,EACA,KAAK,SAAsB;AAAA,IACzB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAAsC;AACpC,WAAO,MAAM,QAAQ,MAAM;AACzB,YAAM,YAAY;AAAA,QAChB;AAAA,QACA;AAAA,QACA;AAAA,MACF;AACA,aAAI,UACK,YAEF;AAAA,QACL;AAAA,MACF;AAAA,IACF,GAAG,CAAC,SAAS,KAAK,QAAQ,QAAQ,CAAC;AAAA,EACrC;AAAA,EACA,SAAS,WAAwB;AAC/B,WAAO,CAAC;AAAA,EACV;AACF,CAAC;",
5
5
  "names": []
6
6
  }
@@ -9,6 +9,7 @@ const Link = React.forwardRef(function ({
9
9
  replace,
10
10
  push,
11
11
  id,
12
+ mask,
12
13
  // TODO: This does not prevent default on the anchor tag.
13
14
  asChild,
14
15
  rel,
@@ -27,9 +28,11 @@ const Link = React.forwardRef(function ({
27
28
  if (href == null) throw new Error("Link: href is required");
28
29
  return resolveHref(href);
29
30
  }, [href]),
31
+ resolvedMask = React.useMemo(() => mask ? resolveHref(mask) : void 0, [mask]),
30
32
  props = useLinkTo({
31
33
  href: resolvedHref,
32
- replace
34
+ replace,
35
+ mask: resolvedMask
33
36
  }),
34
37
  onPress = e => {
35
38
  "onPress" in rest && rest.onPress?.(e), props.onPress(e);
@@ -39,7 +42,7 @@ const Link = React.forwardRef(function ({
39
42
  ...props,
40
43
  ...hrefAttrs,
41
44
  ...rest,
42
- nativeID: id,
45
+ id,
43
46
  style: asChild ? null : style,
44
47
  ...Platform.select({
45
48
  web: {
@@ -1 +1 @@
1
- {"version":3,"names":["Slot","React","Platform","Text","resolveHref","useLinkTo","jsx","Link","forwardRef","href","replace","push","id","asChild","rel","target","download","rest","ref","style","useInteropClassName","hrefAttrs","useHrefAttrs","resolvedHref","useMemo","Error","props","onPress","e","nativeID","select","web","onClick","default","OS","className","cssStyle","$$css","__routerLinkClassName","Array","isArray"],"sources":["../../../src/link/Link.tsx"],"sourcesContent":[null],"mappings":"AAEA,SAASA,IAAA,QAAY;AACrB,YAAYC,KAAA,MAAW;AACvB,SAAqCC,QAAA,EAAUC,IAAA,QAA4B;AAG3E,SAASC,WAAA,QAAmB;AAC5B,SAASC,SAAA,QAAiB;AAwDtB,SAAAC,GAAA;AA3CG,MAAMC,IAAA,GAAON,KAAA,CAAMO,UAAA,CAAW,UACnC;EACEC,IAAA;EACAC,OAAA;EACAC,IAAA;EACAC,EAAA;EAAA;EAEAC,OAAA;EACAC,GAAA;EACAC,MAAA;EACAC,QAAA;EACA,GAAGC;AACL,GACAC,GAAA,EACA;EAEA,MAAMC,KAAA,GAAQC,mBAAA,CAAoBH,IAAI;IAGhCI,SAAA,GAAYC,YAAA,CAAa;MAAET,OAAA;MAASC,GAAA;MAAKC,MAAA;MAAQC;IAAS,CAAC;IAE3DO,YAAA,GAAetB,KAAA,CAAMuB,OAAA,CAAQ,MAAM;MACvC,IAAIf,IAAA,IAAQ,MACV,MAAM,IAAIgB,KAAA,CAAM,wBAAwB;MAE1C,OAAOrB,WAAA,CAAYK,IAAI;IACzB,GAAG,CAACA,IAAI,CAAC;IAEHiB,KAAA,GAAQrB,SAAA,CAAU;MAAEI,IAAA,EAAMc,YAAA;MAAcb;IAAQ,CAAC;IAEjDiB,OAAA,GACJC,CAAA,IACG;MACC,aAAaX,IAAA,IACfA,IAAA,CAAKU,OAAA,GAAUC,CAAC,GAElBF,KAAA,CAAMC,OAAA,CAAQC,CAAC;IACjB;EAKA,OACE,eAAAtB,GAAA,CAJcO,OAAA,GAAUb,IAAA,GAAOG,IAAA,EAI9B;IACCe,GAAA;IACC,GAAGQ,KAAA;IACH,GAAGL,SAAA;IACH,GAAGJ,IAAA;IACJY,QAAA,EAAUjB,EAAA;IACVO,KAAA,EAAON,OAAA,GAAU,OAAOM,KAAA;IACvB,GAAGjB,QAAA,CAAS4B,MAAA,CAAO;MAClBC,GAAA,EAAK;QACHC,OAAA,EAASL;MACX;MACAM,OAAA,EAAS;QAAEN;MAAQ;IACrB,CAAC;EAAA,CACH;AAEJ,CAAC;AAEDpB,IAAA,CAAKH,WAAA,GAAcA,WAAA;AAGnB,SAASgB,oBAAoBM,KAAA,EAA2D;EACtF,OAAIxB,QAAA,CAASgC,EAAA,KAAO,QACXR,KAAA,CAAMP,KAAA,GAIRlB,KAAA,CAAMuB,OAAA,CAAQ,MAAM;IACzB,IAAIE,KAAA,CAAMS,SAAA,IAAa,MACrB,OAAOT,KAAA,CAAMP,KAAA;IAEf,MAAMiB,QAAA,GAAW;MACfC,KAAA,EAAO;MACPC,qBAAA,EAAuBZ,KAAA,CAAMS;IAC/B;IAEA,OAAII,KAAA,CAAMC,OAAA,CAAQd,KAAA,CAAMP,KAAK,IACpB,CAAC,GAAGO,KAAA,CAAMP,KAAA,EAAOiB,QAAQ,IAE3B,CAACV,KAAA,CAAMP,KAAA,EAAOiB,QAAQ;EAC/B,GAAG,CAACV,KAAA,CAAMP,KAAA,EAAOO,KAAA,CAAMS,SAAS,CAAC;AACnC;AAEA,MAAMb,YAAA,GAAepB,QAAA,CAAS4B,MAAA,CAI5B;EACAC,GAAA,EAAK,SAAAA,CAAsB;IACzBlB,OAAA;IACAC,GAAA;IACAC,MAAA;IACAC;EACF,GAAsC;IACpC,OAAOf,KAAA,CAAMuB,OAAA,CAAQ,MAAM;MACzB,MAAMH,SAAA,GAAY;QAChBP,GAAA;QACAC,MAAA;QACAC;MACF;MACA,OAAIH,OAAA,GACKQ,SAAA,GAEF;QACLA;MACF;IACF,GAAG,CAACR,OAAA,EAASC,GAAA,EAAKC,MAAA,EAAQC,QAAQ,CAAC;EACrC;EACAiB,OAAA,EAAS,SAAAA,CAAA,EAAwB;IAC/B,OAAO,CAAC;EACV;AACF,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["Slot","React","Platform","Text","resolveHref","useLinkTo","jsx","Link","forwardRef","href","replace","push","id","mask","asChild","rel","target","download","rest","ref","style","useInteropClassName","hrefAttrs","useHrefAttrs","resolvedHref","useMemo","Error","resolvedMask","props","onPress","e","select","web","onClick","default","OS","className","cssStyle","$$css","__routerLinkClassName","Array","isArray"],"sources":["../../../src/link/Link.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}