@cedarjs/router 0.0.4

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 (275) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +36 -0
  3. package/dist/ActivePageContext.d.ts +15 -0
  4. package/dist/ActivePageContext.d.ts.map +1 -0
  5. package/dist/ActivePageContext.js +17 -0
  6. package/dist/AuthenticatedRoute.d.ts +11 -0
  7. package/dist/AuthenticatedRoute.d.ts.map +1 -0
  8. package/dist/AuthenticatedRoute.js +49 -0
  9. package/dist/PageLoadingContext.d.ts +14 -0
  10. package/dist/PageLoadingContext.d.ts.map +1 -0
  11. package/dist/PageLoadingContext.js +29 -0
  12. package/dist/Route.d.ts +32 -0
  13. package/dist/Route.d.ts.map +1 -0
  14. package/dist/Route.js +7 -0
  15. package/dist/Set.d.ts +58 -0
  16. package/dist/Set.d.ts.map +1 -0
  17. package/dist/Set.js +28 -0
  18. package/dist/a11yUtils.d.ts +14 -0
  19. package/dist/a11yUtils.d.ts.map +1 -0
  20. package/dist/a11yUtils.js +35 -0
  21. package/dist/active-route-loader.d.ts +12 -0
  22. package/dist/active-route-loader.d.ts.map +1 -0
  23. package/dist/active-route-loader.js +82 -0
  24. package/dist/analyzeRoutes.d.ts +44 -0
  25. package/dist/analyzeRoutes.d.ts.map +1 -0
  26. package/dist/analyzeRoutes.js +128 -0
  27. package/dist/cjs/ActivePageContext.d.ts +15 -0
  28. package/dist/cjs/ActivePageContext.d.ts.map +1 -0
  29. package/dist/cjs/ActivePageContext.js +42 -0
  30. package/dist/cjs/AuthenticatedRoute.d.ts +11 -0
  31. package/dist/cjs/AuthenticatedRoute.d.ts.map +1 -0
  32. package/dist/cjs/AuthenticatedRoute.js +83 -0
  33. package/dist/cjs/PageLoadingContext.d.ts +14 -0
  34. package/dist/cjs/PageLoadingContext.d.ts.map +1 -0
  35. package/dist/cjs/PageLoadingContext.js +64 -0
  36. package/dist/cjs/Route.d.ts +32 -0
  37. package/dist/cjs/Route.d.ts.map +1 -0
  38. package/dist/cjs/Route.js +41 -0
  39. package/dist/cjs/Set.d.ts +58 -0
  40. package/dist/cjs/Set.d.ts.map +1 -0
  41. package/dist/cjs/Set.js +67 -0
  42. package/dist/cjs/a11yUtils.d.ts +14 -0
  43. package/dist/cjs/a11yUtils.d.ts.map +1 -0
  44. package/dist/cjs/a11yUtils.js +61 -0
  45. package/dist/cjs/active-route-loader.d.ts +12 -0
  46. package/dist/cjs/active-route-loader.d.ts.map +1 -0
  47. package/dist/cjs/active-route-loader.js +116 -0
  48. package/dist/cjs/analyzeRoutes.d.ts +44 -0
  49. package/dist/cjs/analyzeRoutes.d.ts.map +1 -0
  50. package/dist/cjs/analyzeRoutes.js +143 -0
  51. package/dist/cjs/createNamedContext.d.ts +3 -0
  52. package/dist/cjs/createNamedContext.d.ts.map +1 -0
  53. package/dist/cjs/createNamedContext.js +33 -0
  54. package/dist/cjs/dummyComponent.d.ts +3 -0
  55. package/dist/cjs/dummyComponent.d.ts.map +1 -0
  56. package/dist/cjs/dummyComponent.js +24 -0
  57. package/dist/cjs/history.d.ts +24 -0
  58. package/dist/cjs/history.d.ts.map +1 -0
  59. package/dist/cjs/history.js +146 -0
  60. package/dist/cjs/index.d.ts +35 -0
  61. package/dist/cjs/index.d.ts.map +1 -0
  62. package/dist/cjs/index.js +110 -0
  63. package/dist/cjs/link.d.ts +9 -0
  64. package/dist/cjs/link.d.ts.map +1 -0
  65. package/dist/cjs/link.js +62 -0
  66. package/dist/cjs/location.d.ts +28 -0
  67. package/dist/cjs/location.d.ts.map +1 -0
  68. package/dist/cjs/location.js +110 -0
  69. package/dist/cjs/namedRoutes.d.ts +3 -0
  70. package/dist/cjs/namedRoutes.d.ts.map +1 -0
  71. package/dist/cjs/namedRoutes.js +28 -0
  72. package/dist/cjs/navLink.d.ts +11 -0
  73. package/dist/cjs/navLink.d.ts.map +1 -0
  74. package/dist/cjs/navLink.js +70 -0
  75. package/dist/cjs/package.json +1 -0
  76. package/dist/cjs/page.d.ts +28 -0
  77. package/dist/cjs/page.d.ts.map +1 -0
  78. package/dist/cjs/page.js +42 -0
  79. package/dist/cjs/params.d.ts +13 -0
  80. package/dist/cjs/params.d.ts.map +1 -0
  81. package/dist/cjs/params.js +64 -0
  82. package/dist/cjs/react-util.d.ts +3 -0
  83. package/dist/cjs/react-util.d.ts.map +1 -0
  84. package/dist/cjs/react-util.js +37 -0
  85. package/dist/cjs/redirect.d.ts +12 -0
  86. package/dist/cjs/redirect.d.ts.map +1 -0
  87. package/dist/cjs/redirect.js +35 -0
  88. package/dist/cjs/route-announcement.d.ts +13 -0
  89. package/dist/cjs/route-announcement.d.ts.map +1 -0
  90. package/dist/cjs/route-announcement.js +61 -0
  91. package/dist/cjs/route-focus.d.ts +12 -0
  92. package/dist/cjs/route-focus.d.ts.map +1 -0
  93. package/dist/cjs/route-focus.js +36 -0
  94. package/dist/cjs/route-validators.d.ts +21 -0
  95. package/dist/cjs/route-validators.d.ts.map +1 -0
  96. package/dist/cjs/route-validators.js +71 -0
  97. package/dist/cjs/routeParamsTypes.d.ts +49 -0
  98. package/dist/cjs/routeParamsTypes.d.ts.map +1 -0
  99. package/dist/cjs/routeParamsTypes.js +16 -0
  100. package/dist/cjs/router-context.d.ts +21 -0
  101. package/dist/cjs/router-context.d.ts.map +1 -0
  102. package/dist/cjs/router-context.js +69 -0
  103. package/dist/cjs/router.d.ts +11 -0
  104. package/dist/cjs/router.d.ts.map +1 -0
  105. package/dist/cjs/router.js +207 -0
  106. package/dist/cjs/rsc/ClientRouter.d.ts +4 -0
  107. package/dist/cjs/rsc/ClientRouter.d.ts.map +1 -0
  108. package/dist/cjs/rsc/ClientRouter.js +90 -0
  109. package/dist/cjs/rsc/RscCache.d.ts +23 -0
  110. package/dist/cjs/rsc/RscCache.d.ts.map +1 -0
  111. package/dist/cjs/rsc/RscCache.js +110 -0
  112. package/dist/cjs/rsc/RscRoutes.d.ts +7 -0
  113. package/dist/cjs/rsc/RscRoutes.d.ts.map +1 -0
  114. package/dist/cjs/rsc/RscRoutes.js +124 -0
  115. package/dist/cjs/rsc/ServerRouteLoader.d.ts +12 -0
  116. package/dist/cjs/rsc/ServerRouteLoader.d.ts.map +1 -0
  117. package/dist/cjs/rsc/ServerRouteLoader.js +65 -0
  118. package/dist/cjs/rsc/ServerRouter.d.ts +11 -0
  119. package/dist/cjs/rsc/ServerRouter.d.ts.map +1 -0
  120. package/dist/cjs/rsc/ServerRouter.js +170 -0
  121. package/dist/cjs/rsc/SsrRouter.d.ts +4 -0
  122. package/dist/cjs/rsc/SsrRouter.d.ts.map +1 -0
  123. package/dist/cjs/rsc/SsrRouter.js +56 -0
  124. package/dist/cjs/rsc/clientSsr.d.ts +2 -0
  125. package/dist/cjs/rsc/clientSsr.d.ts.map +1 -0
  126. package/dist/cjs/rsc/clientSsr.js +114 -0
  127. package/dist/cjs/rsc/rscCss.d.ts +2 -0
  128. package/dist/cjs/rsc/rscCss.d.ts.map +1 -0
  129. package/dist/cjs/rsc/rscCss.js +94 -0
  130. package/dist/cjs/rsc/ssrModuleMap.d.ts +14 -0
  131. package/dist/cjs/rsc/ssrModuleMap.d.ts.map +1 -0
  132. package/dist/cjs/rsc/ssrModuleMap.js +49 -0
  133. package/dist/cjs/rsc/utils.d.ts +20 -0
  134. package/dist/cjs/rsc/utils.d.ts.map +1 -0
  135. package/dist/cjs/rsc/utils.js +68 -0
  136. package/dist/cjs/rsc-link.d.ts +6 -0
  137. package/dist/cjs/rsc-link.d.ts.map +1 -0
  138. package/dist/cjs/rsc-link.js +41 -0
  139. package/dist/cjs/skipNav.d.ts +81 -0
  140. package/dist/cjs/skipNav.d.ts.map +1 -0
  141. package/dist/cjs/skipNav.js +69 -0
  142. package/dist/cjs/splash-page.d.ts +12 -0
  143. package/dist/cjs/splash-page.d.ts.map +1 -0
  144. package/dist/cjs/splash-page.js +515 -0
  145. package/dist/cjs/useBlocker.d.ts +11 -0
  146. package/dist/cjs/useBlocker.d.ts.map +1 -0
  147. package/dist/cjs/useBlocker.js +65 -0
  148. package/dist/cjs/useIsMounted.d.ts +2 -0
  149. package/dist/cjs/useIsMounted.d.ts.map +1 -0
  150. package/dist/cjs/useIsMounted.js +37 -0
  151. package/dist/cjs/useMatch.d.ts +43 -0
  152. package/dist/cjs/useMatch.d.ts.map +1 -0
  153. package/dist/cjs/useMatch.js +72 -0
  154. package/dist/cjs/useRouteName.d.ts +3 -0
  155. package/dist/cjs/useRouteName.d.ts.map +1 -0
  156. package/dist/cjs/useRouteName.js +40 -0
  157. package/dist/cjs/useRoutePaths.d.ts +4 -0
  158. package/dist/cjs/useRoutePaths.d.ts.map +1 -0
  159. package/dist/cjs/useRoutePaths.js +50 -0
  160. package/dist/cjs/util.d.ts +121 -0
  161. package/dist/cjs/util.d.ts.map +1 -0
  162. package/dist/cjs/util.js +214 -0
  163. package/dist/createNamedContext.d.ts +3 -0
  164. package/dist/createNamedContext.d.ts.map +1 -0
  165. package/dist/createNamedContext.js +9 -0
  166. package/dist/dummyComponent.d.ts +3 -0
  167. package/dist/dummyComponent.d.ts.map +1 -0
  168. package/dist/dummyComponent.js +4 -0
  169. package/dist/history.d.ts +24 -0
  170. package/dist/history.d.ts.map +1 -0
  171. package/dist/history.js +118 -0
  172. package/dist/index.d.ts +35 -0
  173. package/dist/index.d.ts.map +1 -0
  174. package/dist/index.js +49 -0
  175. package/dist/link.d.ts +9 -0
  176. package/dist/link.d.ts.map +1 -0
  177. package/dist/link.js +28 -0
  178. package/dist/location.d.ts +28 -0
  179. package/dist/location.d.ts.map +1 -0
  180. package/dist/location.js +74 -0
  181. package/dist/namedRoutes.d.ts +3 -0
  182. package/dist/namedRoutes.d.ts.map +1 -0
  183. package/dist/namedRoutes.js +4 -0
  184. package/dist/navLink.d.ts +11 -0
  185. package/dist/navLink.d.ts.map +1 -0
  186. package/dist/navLink.js +36 -0
  187. package/dist/page.d.ts +28 -0
  188. package/dist/page.d.ts.map +1 -0
  189. package/dist/page.js +17 -0
  190. package/dist/params.d.ts +13 -0
  191. package/dist/params.d.ts.map +1 -0
  192. package/dist/params.js +28 -0
  193. package/dist/react-util.d.ts +3 -0
  194. package/dist/react-util.d.ts.map +1 -0
  195. package/dist/react-util.js +13 -0
  196. package/dist/redirect.d.ts +12 -0
  197. package/dist/redirect.d.ts.map +1 -0
  198. package/dist/redirect.js +11 -0
  199. package/dist/route-announcement.d.ts +13 -0
  200. package/dist/route-announcement.d.ts.map +1 -0
  201. package/dist/route-announcement.js +31 -0
  202. package/dist/route-focus.d.ts +12 -0
  203. package/dist/route-focus.d.ts.map +1 -0
  204. package/dist/route-focus.js +6 -0
  205. package/dist/route-validators.d.ts +21 -0
  206. package/dist/route-validators.d.ts.map +1 -0
  207. package/dist/route-validators.js +44 -0
  208. package/dist/routeParamsTypes.d.ts +49 -0
  209. package/dist/routeParamsTypes.d.ts.map +1 -0
  210. package/dist/routeParamsTypes.js +0 -0
  211. package/dist/router-context.d.ts +21 -0
  212. package/dist/router-context.d.ts.map +1 -0
  213. package/dist/router-context.js +34 -0
  214. package/dist/router.d.ts +11 -0
  215. package/dist/router.d.ts.map +1 -0
  216. package/dist/router.js +173 -0
  217. package/dist/rsc/ClientRouter.d.ts +4 -0
  218. package/dist/rsc/ClientRouter.d.ts.map +1 -0
  219. package/dist/rsc/ClientRouter.js +56 -0
  220. package/dist/rsc/RscCache.d.ts +23 -0
  221. package/dist/rsc/RscCache.d.ts.map +1 -0
  222. package/dist/rsc/RscCache.js +86 -0
  223. package/dist/rsc/RscRoutes.d.ts +7 -0
  224. package/dist/rsc/RscRoutes.d.ts.map +1 -0
  225. package/dist/rsc/RscRoutes.js +100 -0
  226. package/dist/rsc/ServerRouteLoader.d.ts +12 -0
  227. package/dist/rsc/ServerRouteLoader.d.ts.map +1 -0
  228. package/dist/rsc/ServerRouteLoader.js +31 -0
  229. package/dist/rsc/ServerRouter.d.ts +11 -0
  230. package/dist/rsc/ServerRouter.d.ts.map +1 -0
  231. package/dist/rsc/ServerRouter.js +136 -0
  232. package/dist/rsc/SsrRouter.d.ts +4 -0
  233. package/dist/rsc/SsrRouter.d.ts.map +1 -0
  234. package/dist/rsc/SsrRouter.js +22 -0
  235. package/dist/rsc/clientSsr.d.ts +2 -0
  236. package/dist/rsc/clientSsr.d.ts.map +1 -0
  237. package/dist/rsc/clientSsr.js +80 -0
  238. package/dist/rsc/rscCss.d.ts +2 -0
  239. package/dist/rsc/rscCss.d.ts.map +1 -0
  240. package/dist/rsc/rscCss.js +60 -0
  241. package/dist/rsc/ssrModuleMap.d.ts +14 -0
  242. package/dist/rsc/ssrModuleMap.d.ts.map +1 -0
  243. package/dist/rsc/ssrModuleMap.js +25 -0
  244. package/dist/rsc/utils.d.ts +20 -0
  245. package/dist/rsc/utils.d.ts.map +1 -0
  246. package/dist/rsc/utils.js +31 -0
  247. package/dist/rsc-link.d.ts +6 -0
  248. package/dist/rsc-link.d.ts.map +1 -0
  249. package/dist/rsc-link.js +7 -0
  250. package/dist/skipNav.d.ts +81 -0
  251. package/dist/skipNav.d.ts.map +1 -0
  252. package/dist/skipNav.js +34 -0
  253. package/dist/splash-page.d.ts +12 -0
  254. package/dist/splash-page.d.ts.map +1 -0
  255. package/dist/splash-page.js +481 -0
  256. package/dist/useBlocker.d.ts +11 -0
  257. package/dist/useBlocker.d.ts.map +1 -0
  258. package/dist/useBlocker.js +41 -0
  259. package/dist/useIsMounted.d.ts +2 -0
  260. package/dist/useIsMounted.d.ts.map +1 -0
  261. package/dist/useIsMounted.js +13 -0
  262. package/dist/useMatch.d.ts +43 -0
  263. package/dist/useMatch.d.ts.map +1 -0
  264. package/dist/useMatch.js +48 -0
  265. package/dist/useRouteName.d.ts +3 -0
  266. package/dist/useRouteName.d.ts.map +1 -0
  267. package/dist/useRouteName.js +16 -0
  268. package/dist/useRoutePaths.d.ts +4 -0
  269. package/dist/useRoutePaths.d.ts.map +1 -0
  270. package/dist/useRoutePaths.js +25 -0
  271. package/dist/util.d.ts +121 -0
  272. package/dist/util.d.ts.map +1 -0
  273. package/dist/util.js +183 -0
  274. package/package.json +127 -0
  275. package/skip-nav.css +31 -0
@@ -0,0 +1,118 @@
1
+ const createHistory = () => {
2
+ const listeners = {};
3
+ const blockers = [];
4
+ let beforeUnloadListener = null;
5
+ const history = {
6
+ listen: (listener) => {
7
+ const listenerId = "RW_HISTORY_LISTENER_ID_" + Date.now();
8
+ listeners[listenerId] = listener;
9
+ globalThis.addEventListener("popstate", listener);
10
+ return listenerId;
11
+ },
12
+ navigate: (to, options = {
13
+ scroll: true
14
+ }) => {
15
+ const performNavigation = () => {
16
+ const { pathname, search, hash } = new URL(
17
+ globalThis?.location?.origin + to
18
+ );
19
+ if (globalThis?.location?.pathname !== pathname || globalThis?.location?.search !== search || globalThis?.location?.hash !== hash) {
20
+ if (options?.replace) {
21
+ globalThis.history.replaceState({}, "", to);
22
+ } else {
23
+ globalThis.history.pushState({}, "", to);
24
+ }
25
+ }
26
+ for (const listener of Object.values(listeners)) {
27
+ listener(void 0, options);
28
+ }
29
+ };
30
+ if (blockers.length > 0) {
31
+ processBlockers(0, performNavigation);
32
+ } else {
33
+ performNavigation();
34
+ }
35
+ },
36
+ back: () => {
37
+ const performBack = () => {
38
+ globalThis.history.back();
39
+ for (const listener of Object.values(listeners)) {
40
+ listener();
41
+ }
42
+ };
43
+ if (blockers.length > 0) {
44
+ processBlockers(0, performBack);
45
+ } else {
46
+ performBack();
47
+ }
48
+ },
49
+ remove: (listenerId) => {
50
+ if (listeners[listenerId]) {
51
+ const listener = listeners[listenerId];
52
+ globalThis.removeEventListener("popstate", listener);
53
+ delete listeners[listenerId];
54
+ } else {
55
+ console.warn(
56
+ "History Listener with ID: " + listenerId + " does not exist."
57
+ );
58
+ }
59
+ },
60
+ block: (id, callback) => {
61
+ const existingBlockerIndex = blockers.findIndex(
62
+ (blocker) => blocker.id === id
63
+ );
64
+ if (existingBlockerIndex !== -1) {
65
+ blockers[existingBlockerIndex] = { id, callback };
66
+ } else {
67
+ blockers.push({ id, callback });
68
+ if (blockers.length === 1) {
69
+ addBeforeUnloadListener();
70
+ }
71
+ }
72
+ },
73
+ unblock: (id) => {
74
+ const index = blockers.findIndex((blocker) => blocker.id === id);
75
+ if (index !== -1) {
76
+ blockers.splice(index, 1);
77
+ if (blockers.length === 0) {
78
+ removeBeforeUnloadListener();
79
+ }
80
+ }
81
+ }
82
+ };
83
+ const processBlockers = (index, navigate2) => {
84
+ if (index < blockers.length) {
85
+ blockers[index].callback({
86
+ retry: () => processBlockers(index + 1, navigate2)
87
+ });
88
+ } else {
89
+ navigate2();
90
+ }
91
+ };
92
+ const addBeforeUnloadListener = () => {
93
+ if (!beforeUnloadListener) {
94
+ beforeUnloadListener = (event) => {
95
+ if (blockers.length > 0) {
96
+ event.preventDefault();
97
+ }
98
+ };
99
+ globalThis.addEventListener("beforeunload", beforeUnloadListener);
100
+ }
101
+ };
102
+ const removeBeforeUnloadListener = () => {
103
+ if (beforeUnloadListener) {
104
+ globalThis.removeEventListener("beforeunload", beforeUnloadListener);
105
+ beforeUnloadListener = null;
106
+ }
107
+ };
108
+ return history;
109
+ };
110
+ const gHistory = createHistory();
111
+ const { navigate, back, block, unblock } = gHistory;
112
+ export {
113
+ back,
114
+ block,
115
+ gHistory,
116
+ navigate,
117
+ unblock
118
+ };
@@ -0,0 +1,35 @@
1
+ export { navigate, back } from './history.js';
2
+ export { NavLink } from './navLink.js';
3
+ export { Link } from './link.js';
4
+ export { useLocation, LocationProvider } from './location.js';
5
+ export { Redirect } from './redirect.js';
6
+ export { usePageLoadingContext, PageLoadingContextProvider, } from './PageLoadingContext.js';
7
+ export { useParams, ParamsProvider, ParamsContext } from './params.js';
8
+ export { Router } from './router.js';
9
+ export { Route } from './Route.js';
10
+ export { namedRoutes as routes } from './namedRoutes.js';
11
+ export * from './Set.js';
12
+ export { default as RouteAnnouncement } from './route-announcement.js';
13
+ export * from './route-announcement.js';
14
+ export { default as RouteFocus } from './route-focus.js';
15
+ export * from './route-focus.js';
16
+ export * from './useRouteName.js';
17
+ export * from './useRoutePaths.js';
18
+ export * from './useMatch.js';
19
+ export * from './useBlocker.js';
20
+ export { parseSearch, getRouteRegexAndParams, matchPath } from './util.js';
21
+ export { SkipNavLink, SkipNavContent } from './skipNav.js';
22
+ /**
23
+ * A more specific interface is created in `.redwood/types/includes/web-routerRoutes`
24
+ * when the site is built, which will describe all known routes.
25
+ *
26
+ * @example
27
+ * interface AvailableRoutes {
28
+ * home: (params?: RouteParams<"/">) => "/"
29
+ * post: (params?: RouteParams<"/posts/{id:Int}">) => "/posts/{id:Int}"
30
+ * }
31
+ */
32
+ export interface AvailableRoutes {
33
+ }
34
+ export * from './routeParamsTypes.js';
35
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EACL,qBAAqB,EACrB,0BAA0B,GAC3B,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,WAAW,IAAI,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAExD,cAAc,UAAU,CAAA;AAExB,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AACtE,cAAc,yBAAyB,CAAA;AACvC,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,kBAAkB,CAAA;AACxD,cAAc,kBAAkB,CAAA;AAChC,cAAc,mBAAmB,CAAA;AACjC,cAAc,oBAAoB,CAAA;AAClC,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAE/B,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAE1E,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAE1D;;;;;;;;;GASG;AAGH,MAAM,WAAW,eAAe;CAAG;AAGnC,cAAc,uBAAuB,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,49 @@
1
+ import { navigate, back } from "./history.js";
2
+ import { NavLink } from "./navLink.js";
3
+ import { Link } from "./link.js";
4
+ import { useLocation, LocationProvider } from "./location.js";
5
+ import { Redirect } from "./redirect.js";
6
+ import {
7
+ usePageLoadingContext,
8
+ PageLoadingContextProvider
9
+ } from "./PageLoadingContext.js";
10
+ import { useParams, ParamsProvider, ParamsContext } from "./params.js";
11
+ import { Router } from "./router.js";
12
+ import { Route } from "./Route.js";
13
+ import { namedRoutes } from "./namedRoutes.js";
14
+ export * from "./Set.js";
15
+ import { default as default2 } from "./route-announcement.js";
16
+ export * from "./route-announcement.js";
17
+ import { default as default3 } from "./route-focus.js";
18
+ export * from "./route-focus.js";
19
+ export * from "./useRouteName.js";
20
+ export * from "./useRoutePaths.js";
21
+ export * from "./useMatch.js";
22
+ export * from "./useBlocker.js";
23
+ import { parseSearch, getRouteRegexAndParams, matchPath } from "./util.js";
24
+ import { SkipNavLink, SkipNavContent } from "./skipNav.js";
25
+ export * from "./routeParamsTypes.js";
26
+ export {
27
+ Link,
28
+ LocationProvider,
29
+ NavLink,
30
+ PageLoadingContextProvider,
31
+ ParamsContext,
32
+ ParamsProvider,
33
+ Redirect,
34
+ Route,
35
+ default2 as RouteAnnouncement,
36
+ default3 as RouteFocus,
37
+ Router,
38
+ SkipNavContent,
39
+ SkipNavLink,
40
+ back,
41
+ getRouteRegexAndParams,
42
+ matchPath,
43
+ navigate,
44
+ parseSearch,
45
+ namedRoutes as routes,
46
+ useLocation,
47
+ usePageLoadingContext,
48
+ useParams
49
+ };
package/dist/link.d.ts ADDED
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ import type { NavigateOptions } from './history.js';
3
+ export interface LinkProps {
4
+ to: string;
5
+ onClick?: React.MouseEventHandler<HTMLAnchorElement>;
6
+ options?: NavigateOptions;
7
+ }
8
+ export declare const Link: React.ForwardRefExoticComponent<LinkProps & React.AnchorHTMLAttributes<HTMLAnchorElement> & React.RefAttributes<HTMLAnchorElement>>;
9
+ //# sourceMappingURL=link.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../src/link.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAqB,MAAM,OAAO,CAAA;AAGzC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAEnD,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAA;IACpD,OAAO,CAAC,EAAE,eAAe,CAAA;CAC1B;AAED,eAAO,MAAM,IAAI,qIA+Bf,CAAA"}
package/dist/link.js ADDED
@@ -0,0 +1,28 @@
1
+ "use client";
2
+ import React, { forwardRef } from "react";
3
+ import { navigate } from "./history.js";
4
+ const Link = forwardRef(({ to, onClick, options, ...rest }, ref) => /* @__PURE__ */ React.createElement(
5
+ "a",
6
+ {
7
+ href: to,
8
+ ref,
9
+ ...rest,
10
+ onClick: (event) => {
11
+ if (event.button !== 0 || event.altKey || event.ctrlKey || event.metaKey || event.shiftKey) {
12
+ return;
13
+ }
14
+ event.preventDefault();
15
+ if (onClick) {
16
+ const result = onClick(event);
17
+ if (typeof result !== "boolean" || result) {
18
+ navigate(to, options);
19
+ }
20
+ } else {
21
+ navigate(to, options);
22
+ }
23
+ }
24
+ }
25
+ ));
26
+ export {
27
+ Link
28
+ };
@@ -0,0 +1,28 @@
1
+ import React from 'react';
2
+ import type { TrailingSlashesTypes } from './util.js';
3
+ export interface LocationContextType extends URL {
4
+ }
5
+ declare const LocationContext: React.Context<LocationContextType | undefined>;
6
+ interface Location extends URL {
7
+ }
8
+ interface LocationProviderProps {
9
+ location?: Location;
10
+ trailingSlashes?: TrailingSlashesTypes;
11
+ children?: React.ReactNode;
12
+ }
13
+ interface LocationProviderState {
14
+ context: Location | undefined;
15
+ }
16
+ declare class LocationProvider extends React.Component<LocationProviderProps, LocationProviderState> {
17
+ static contextType: React.Context<LocationContextType | undefined>;
18
+ context: React.ContextType<typeof LocationContext>;
19
+ HISTORY_LISTENER_ID: string | undefined;
20
+ state: LocationProviderState;
21
+ getContext(): URL | undefined;
22
+ componentDidMount(): void;
23
+ componentWillUnmount(): void;
24
+ render(): React.JSX.Element;
25
+ }
26
+ declare const useLocation: () => LocationContextType;
27
+ export { LocationProvider, LocationContext, useLocation };
28
+ //# sourceMappingURL=location.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"location.d.ts","sourceRoot":"","sources":["../src/location.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAGrD,MAAM,WAAW,mBAAoB,SAAQ,GAAG;CAAG;AAEnD,QAAA,MAAM,eAAe,gDAAsD,CAAA;AAG3E,UAAU,QAAS,SAAQ,GAAG;CAAG;AAEjC,UAAU,qBAAqB;IAC7B,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,eAAe,CAAC,EAAE,oBAAoB,CAAA;IACtC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC3B;AAED,UAAU,qBAAqB;IAC7B,OAAO,EAAE,QAAQ,GAAG,SAAS,CAAA;CAC9B;AAED,cAAM,gBAAiB,SAAQ,KAAK,CAAC,SAAS,CAC5C,qBAAqB,EACrB,qBAAqB,CACtB;IAIC,MAAM,CAAC,WAAW,iDAAkB;IAE5B,OAAO,EAAE,KAAK,CAAC,WAAW,CAAC,OAAO,eAAe,CAAC,CAAA;IAC1D,mBAAmB,EAAE,MAAM,GAAG,SAAS,CAAY;IAEnD,KAAK,EAAE,qBAAqB,CAE3B;IAED,UAAU;IA0CV,iBAAiB;IAiBjB,oBAAoB;IAMpB,MAAM;CAOP;AAED,QAAA,MAAM,WAAW,2BAQhB,CAAA;AAED,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,WAAW,EAAE,CAAA"}
@@ -0,0 +1,74 @@
1
+ "use client";
2
+ import React from "react";
3
+ import { createNamedContext } from "./createNamedContext.js";
4
+ import { gHistory } from "./history.js";
5
+ const LocationContext = createNamedContext("Location");
6
+ class LocationProvider extends React.Component {
7
+ // When prerendering, there might be more than one level of location
8
+ // providers. Use the values from the one above.
9
+ // (this is basically the class component version of `useLocation()`)
10
+ static contextType = LocationContext;
11
+ HISTORY_LISTENER_ID = void 0;
12
+ state = {
13
+ context: this.getContext()
14
+ };
15
+ getContext() {
16
+ let windowLocation;
17
+ if (typeof window !== "undefined") {
18
+ const { pathname } = window.location;
19
+ switch (this.props.trailingSlashes) {
20
+ case "never":
21
+ if (pathname.endsWith("/")) {
22
+ window.history.replaceState(
23
+ {},
24
+ "",
25
+ pathname.substr(0, pathname.length - 1)
26
+ );
27
+ }
28
+ break;
29
+ case "always":
30
+ if (!pathname.endsWith("/")) {
31
+ window.history.replaceState({}, "", pathname + "/");
32
+ }
33
+ break;
34
+ default:
35
+ break;
36
+ }
37
+ windowLocation = new URL(window.location.href);
38
+ }
39
+ return this.props.location || this.context || windowLocation;
40
+ }
41
+ // componentDidMount() is not called during server rendering (aka SSR and
42
+ // prerendering)
43
+ componentDidMount() {
44
+ this.HISTORY_LISTENER_ID = gHistory.listen((_, options) => {
45
+ const context = this.getContext();
46
+ this.setState((lastState) => {
47
+ if ((context?.pathname !== lastState?.context?.pathname || context?.search !== lastState?.context?.search) && options?.scroll === true) {
48
+ globalThis?.scrollTo(0, 0);
49
+ }
50
+ return { context };
51
+ });
52
+ });
53
+ }
54
+ componentWillUnmount() {
55
+ if (this.HISTORY_LISTENER_ID) {
56
+ gHistory.remove(this.HISTORY_LISTENER_ID);
57
+ }
58
+ }
59
+ render() {
60
+ return /* @__PURE__ */ React.createElement(LocationContext.Provider, { value: this.state.context }, this.props.children);
61
+ }
62
+ }
63
+ const useLocation = () => {
64
+ const location = React.useContext(LocationContext);
65
+ if (location === void 0) {
66
+ throw new Error("useLocation must be used within a LocationProvider");
67
+ }
68
+ return location;
69
+ };
70
+ export {
71
+ LocationContext,
72
+ LocationProvider,
73
+ useLocation
74
+ };
@@ -0,0 +1,3 @@
1
+ import type { AvailableRoutes } from './index.js';
2
+ export declare const namedRoutes: AvailableRoutes;
3
+ //# sourceMappingURL=namedRoutes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"namedRoutes.d.ts","sourceRoot":"","sources":["../src/namedRoutes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAMjD,eAAO,MAAM,WAAW,EAAE,eAAoB,CAAA"}
@@ -0,0 +1,4 @@
1
+ const namedRoutes = {};
2
+ export {
3
+ namedRoutes
4
+ };
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ import type { LinkProps } from './link.js';
3
+ import type { FlattenSearchParams } from './util.js';
4
+ interface NavLinkProps extends LinkProps {
5
+ activeClassName: string;
6
+ activeMatchParams?: FlattenSearchParams;
7
+ matchSubPaths?: boolean;
8
+ }
9
+ export declare const NavLink: React.ForwardRefExoticComponent<NavLinkProps & React.AnchorHTMLAttributes<HTMLAnchorElement> & React.RefAttributes<HTMLAnchorElement>>;
10
+ export {};
11
+ //# sourceMappingURL=navLink.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navLink.d.ts","sourceRoot":"","sources":["../src/navLink.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAqB,MAAM,OAAO,CAAA;AAGzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAG1C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAA;AAEpD,UAAU,YAAa,SAAQ,SAAS;IACtC,eAAe,EAAE,MAAM,CAAA;IACvB,iBAAiB,CAAC,EAAE,mBAAmB,CAAA;IACvC,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED,eAAO,MAAM,OAAO,wIAkCnB,CAAA"}
@@ -0,0 +1,36 @@
1
+ "use client";
2
+ import React, { forwardRef } from "react";
3
+ import { Link } from "./link.js";
4
+ import { useMatch } from "./useMatch.js";
5
+ import { flattenSearchParams } from "./util.js";
6
+ const NavLink = forwardRef(
7
+ ({
8
+ to,
9
+ activeClassName,
10
+ activeMatchParams,
11
+ matchSubPaths,
12
+ className,
13
+ onClick,
14
+ ...rest
15
+ }, ref) => {
16
+ const [pathname, queryString] = to.split("?");
17
+ const searchParams = activeMatchParams || flattenSearchParams(queryString);
18
+ const matchInfo = useMatch(pathname, {
19
+ searchParams,
20
+ matchSubPaths
21
+ });
22
+ return /* @__PURE__ */ React.createElement(
23
+ Link,
24
+ {
25
+ ref,
26
+ to,
27
+ onClick,
28
+ className: matchInfo.match ? activeClassName : className,
29
+ ...rest
30
+ }
31
+ );
32
+ }
33
+ );
34
+ export {
35
+ NavLink
36
+ };
package/dist/page.d.ts ADDED
@@ -0,0 +1,28 @@
1
+ export interface Spec {
2
+ name: string;
3
+ prerenderLoader: (name?: string) => {
4
+ default: React.ComponentType<unknown>;
5
+ };
6
+ LazyComponent: React.LazyExoticComponent<React.ComponentType<unknown>> | React.ComponentType<unknown>;
7
+ }
8
+ export declare function isSpec(specOrPage: Spec | React.ComponentType): specOrPage is Spec;
9
+ /**
10
+ * Pages can be imported automatically or manually. Automatic imports are actually
11
+ * objects and take the following form (which we call a 'spec'):
12
+ *
13
+ * const WhateverPage = {
14
+ * name: 'WhateverPage',
15
+ * LazyComponent: lazy(() => import('src/pages/WhateverPage'))
16
+ * prerenderLoader: ...
17
+ * }
18
+ *
19
+ * Manual imports simply load the page:
20
+ *
21
+ * import WhateverPage from 'src/pages/WhateverPage'
22
+ *
23
+ * Before passing a "page" to the PageLoader, we will normalize the manually
24
+ * imported version into a spec.
25
+ */
26
+ export declare function normalizePage(specOrPage: Spec | React.ComponentType<unknown>): Spec;
27
+ export type PageType = Spec | React.ComponentType<any> | ((props: any) => JSX.Element);
28
+ //# sourceMappingURL=page.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../src/page.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,eAAe,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK;QAAE,OAAO,EAAE,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;KAAE,CAAA;IAC7E,aAAa,EACT,KAAK,CAAC,mBAAmB,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,GACvD,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;CACjC;AAED,wBAAgB,MAAM,CACpB,UAAU,EAAE,IAAI,GAAG,KAAK,CAAC,aAAa,GACrC,UAAU,IAAI,IAAI,CAEpB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,aAAa,CAC3B,UAAU,EAAE,IAAI,GAAG,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,GAC9C,IAAI,CAaN;AAED,MAAM,MAAM,QAAQ,GAChB,IAAI,GACJ,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,GACxB,CAAC,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG,CAAC,OAAO,CAAC,CAAA"}
package/dist/page.js ADDED
@@ -0,0 +1,17 @@
1
+ function isSpec(specOrPage) {
2
+ return specOrPage.LazyComponent !== void 0;
3
+ }
4
+ function normalizePage(specOrPage) {
5
+ if (isSpec(specOrPage)) {
6
+ return specOrPage;
7
+ }
8
+ return {
9
+ name: specOrPage.name,
10
+ prerenderLoader: () => ({ default: specOrPage }),
11
+ LazyComponent: specOrPage
12
+ };
13
+ }
14
+ export {
15
+ isSpec,
16
+ normalizePage
17
+ };
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ export interface ParamsContextProps {
3
+ params: Record<string, string>;
4
+ }
5
+ export declare const ParamsContext: React.Context<ParamsContextProps | undefined>;
6
+ interface Props {
7
+ allParams?: Record<any, any>;
8
+ children?: React.ReactNode;
9
+ }
10
+ export declare const ParamsProvider: React.FC<Props>;
11
+ export declare const useParams: () => Record<string, string>;
12
+ export {};
13
+ //# sourceMappingURL=params.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"params.d.ts","sourceRoot":"","sources":["../src/params.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqB,MAAM,OAAO,CAAA;AAIzC,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC/B;AAED,eAAO,MAAM,aAAa,+CAAmD,CAAA;AAE7E,UAAU,KAAK;IACb,SAAS,CAAC,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;IAC5B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC3B;AAED,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAY1C,CAAA;AAED,eAAO,MAAM,SAAS,8BAQrB,CAAA"}
package/dist/params.js ADDED
@@ -0,0 +1,28 @@
1
+ import React, { useContext } from "react";
2
+ import { createNamedContext } from "./createNamedContext.js";
3
+ const ParamsContext = createNamedContext("Params");
4
+ const ParamsProvider = ({ allParams, children }) => {
5
+ return /* @__PURE__ */ React.createElement(
6
+ ParamsContext.Provider,
7
+ {
8
+ value: {
9
+ params: {
10
+ ...allParams
11
+ }
12
+ }
13
+ },
14
+ children
15
+ );
16
+ };
17
+ const useParams = () => {
18
+ const paramsContext = useContext(ParamsContext);
19
+ if (paramsContext === void 0) {
20
+ throw new Error("useParams must be used within a ParamsProvider");
21
+ }
22
+ return paramsContext.params;
23
+ };
24
+ export {
25
+ ParamsContext,
26
+ ParamsProvider,
27
+ useParams
28
+ };
@@ -0,0 +1,3 @@
1
+ import type { ReactNode } from 'react';
2
+ export declare function flattenAll(children: ReactNode): ReactNode[];
3
+ //# sourceMappingURL=react-util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react-util.d.ts","sourceRoot":"","sources":["../src/react-util.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAGtC,wBAAgB,UAAU,CAAC,QAAQ,EAAE,SAAS,GAAG,SAAS,EAAE,CAU3D"}
@@ -0,0 +1,13 @@
1
+ import { Children, isValidElement } from "react";
2
+ function flattenAll(children) {
3
+ const childrenArray = Children.toArray(children);
4
+ return childrenArray.flatMap((child) => {
5
+ if (isValidElement(child) && child.props.children) {
6
+ return [child, ...flattenAll(child.props.children)];
7
+ }
8
+ return [child];
9
+ });
10
+ }
11
+ export {
12
+ flattenAll
13
+ };
@@ -0,0 +1,12 @@
1
+ import type { NavigateOptions } from './history.js';
2
+ interface RedirectProps {
3
+ /** The path to redirect to */
4
+ to: string;
5
+ options?: NavigateOptions;
6
+ }
7
+ /**
8
+ * A declarative way to redirect to a route name
9
+ */
10
+ export declare const Redirect: ({ to, options }: RedirectProps) => null;
11
+ export {};
12
+ //# sourceMappingURL=redirect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redirect.d.ts","sourceRoot":"","sources":["../src/redirect.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAGnD,UAAU,aAAa;IACrB,8BAA8B;IAC9B,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,CAAC,EAAE,eAAe,CAAA;CAC1B;AAED;;GAEG;AACH,eAAO,MAAM,QAAQ,oBAAqB,aAAa,SAMtD,CAAA"}
@@ -0,0 +1,11 @@
1
+ import { useEffect } from "react";
2
+ import { navigate } from "./history.js";
3
+ const Redirect = ({ to, options }) => {
4
+ useEffect(() => {
5
+ navigate(to, options);
6
+ }, [to, options]);
7
+ return null;
8
+ };
9
+ export {
10
+ Redirect
11
+ };
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ /**
3
+ * this initial implementation borrows (heavily!) from madalyn's great work at gatsby:
4
+ * - issue: https://github.com/gatsbyjs/gatsby/issues/21059
5
+ * - PR: https://github.com/gatsbyjs/gatsby/pull/26376
6
+ */
7
+ declare const RouteAnnouncement: React.FC<RouteAnnouncementProps>;
8
+ export interface RouteAnnouncementProps {
9
+ children: React.ReactNode;
10
+ visuallyHidden?: boolean;
11
+ }
12
+ export default RouteAnnouncement;
13
+ //# sourceMappingURL=route-announcement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route-announcement.d.ts","sourceRoot":"","sources":["../src/route-announcement.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB;;;;GAIG;AACH,QAAA,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CA0BvD,CAAA;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AAED,eAAe,iBAAiB,CAAA"}
@@ -0,0 +1,31 @@
1
+ import React from "react";
2
+ const RouteAnnouncement = ({
3
+ children,
4
+ visuallyHidden = false,
5
+ ...props
6
+ }) => {
7
+ const hiddenStyle = {
8
+ position: `absolute`,
9
+ top: `0`,
10
+ width: `1`,
11
+ height: `1`,
12
+ padding: `0`,
13
+ overflow: `hidden`,
14
+ clip: `rect(0, 0, 0, 0)`,
15
+ whiteSpace: `nowrap`,
16
+ border: `0`
17
+ };
18
+ return /* @__PURE__ */ React.createElement(
19
+ "div",
20
+ {
21
+ ...props,
22
+ "data-redwood-route-announcement": true,
23
+ style: visuallyHidden ? hiddenStyle : {}
24
+ },
25
+ children
26
+ );
27
+ };
28
+ var route_announcement_default = RouteAnnouncement;
29
+ export {
30
+ route_announcement_default as default
31
+ };
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ /**
3
+ * this initial implementation borrows (heavily!) from madalyn's great work at gatsby:
4
+ * - issue: https://github.com/gatsbyjs/gatsby/issues/21059
5
+ * - PR: https://github.com/gatsbyjs/gatsby/pull/26376
6
+ */
7
+ declare const RouteFocus: React.FC<RouteFocusProps>;
8
+ export interface RouteFocusProps {
9
+ children: React.ReactNode;
10
+ }
11
+ export default RouteFocus;
12
+ //# sourceMappingURL=route-focus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route-focus.d.ts","sourceRoot":"","sources":["../src/route-focus.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB;;;;GAIG;AACH,QAAA,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAIzC,CAAA;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B;AAED,eAAe,UAAU,CAAA"}
@@ -0,0 +1,6 @@
1
+ import React from "react";
2
+ const RouteFocus = ({ children, ...props }) => /* @__PURE__ */ React.createElement("div", { ...props, "data-redwood-route-focus": true }, children);
3
+ var route_focus_default = RouteFocus;
4
+ export {
5
+ route_focus_default as default
6
+ };