@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.
- package/LICENSE +21 -0
- package/README.md +36 -0
- package/dist/ActivePageContext.d.ts +15 -0
- package/dist/ActivePageContext.d.ts.map +1 -0
- package/dist/ActivePageContext.js +17 -0
- package/dist/AuthenticatedRoute.d.ts +11 -0
- package/dist/AuthenticatedRoute.d.ts.map +1 -0
- package/dist/AuthenticatedRoute.js +49 -0
- package/dist/PageLoadingContext.d.ts +14 -0
- package/dist/PageLoadingContext.d.ts.map +1 -0
- package/dist/PageLoadingContext.js +29 -0
- package/dist/Route.d.ts +32 -0
- package/dist/Route.d.ts.map +1 -0
- package/dist/Route.js +7 -0
- package/dist/Set.d.ts +58 -0
- package/dist/Set.d.ts.map +1 -0
- package/dist/Set.js +28 -0
- package/dist/a11yUtils.d.ts +14 -0
- package/dist/a11yUtils.d.ts.map +1 -0
- package/dist/a11yUtils.js +35 -0
- package/dist/active-route-loader.d.ts +12 -0
- package/dist/active-route-loader.d.ts.map +1 -0
- package/dist/active-route-loader.js +82 -0
- package/dist/analyzeRoutes.d.ts +44 -0
- package/dist/analyzeRoutes.d.ts.map +1 -0
- package/dist/analyzeRoutes.js +128 -0
- package/dist/cjs/ActivePageContext.d.ts +15 -0
- package/dist/cjs/ActivePageContext.d.ts.map +1 -0
- package/dist/cjs/ActivePageContext.js +42 -0
- package/dist/cjs/AuthenticatedRoute.d.ts +11 -0
- package/dist/cjs/AuthenticatedRoute.d.ts.map +1 -0
- package/dist/cjs/AuthenticatedRoute.js +83 -0
- package/dist/cjs/PageLoadingContext.d.ts +14 -0
- package/dist/cjs/PageLoadingContext.d.ts.map +1 -0
- package/dist/cjs/PageLoadingContext.js +64 -0
- package/dist/cjs/Route.d.ts +32 -0
- package/dist/cjs/Route.d.ts.map +1 -0
- package/dist/cjs/Route.js +41 -0
- package/dist/cjs/Set.d.ts +58 -0
- package/dist/cjs/Set.d.ts.map +1 -0
- package/dist/cjs/Set.js +67 -0
- package/dist/cjs/a11yUtils.d.ts +14 -0
- package/dist/cjs/a11yUtils.d.ts.map +1 -0
- package/dist/cjs/a11yUtils.js +61 -0
- package/dist/cjs/active-route-loader.d.ts +12 -0
- package/dist/cjs/active-route-loader.d.ts.map +1 -0
- package/dist/cjs/active-route-loader.js +116 -0
- package/dist/cjs/analyzeRoutes.d.ts +44 -0
- package/dist/cjs/analyzeRoutes.d.ts.map +1 -0
- package/dist/cjs/analyzeRoutes.js +143 -0
- package/dist/cjs/createNamedContext.d.ts +3 -0
- package/dist/cjs/createNamedContext.d.ts.map +1 -0
- package/dist/cjs/createNamedContext.js +33 -0
- package/dist/cjs/dummyComponent.d.ts +3 -0
- package/dist/cjs/dummyComponent.d.ts.map +1 -0
- package/dist/cjs/dummyComponent.js +24 -0
- package/dist/cjs/history.d.ts +24 -0
- package/dist/cjs/history.d.ts.map +1 -0
- package/dist/cjs/history.js +146 -0
- package/dist/cjs/index.d.ts +35 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +110 -0
- package/dist/cjs/link.d.ts +9 -0
- package/dist/cjs/link.d.ts.map +1 -0
- package/dist/cjs/link.js +62 -0
- package/dist/cjs/location.d.ts +28 -0
- package/dist/cjs/location.d.ts.map +1 -0
- package/dist/cjs/location.js +110 -0
- package/dist/cjs/namedRoutes.d.ts +3 -0
- package/dist/cjs/namedRoutes.d.ts.map +1 -0
- package/dist/cjs/namedRoutes.js +28 -0
- package/dist/cjs/navLink.d.ts +11 -0
- package/dist/cjs/navLink.d.ts.map +1 -0
- package/dist/cjs/navLink.js +70 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/page.d.ts +28 -0
- package/dist/cjs/page.d.ts.map +1 -0
- package/dist/cjs/page.js +42 -0
- package/dist/cjs/params.d.ts +13 -0
- package/dist/cjs/params.d.ts.map +1 -0
- package/dist/cjs/params.js +64 -0
- package/dist/cjs/react-util.d.ts +3 -0
- package/dist/cjs/react-util.d.ts.map +1 -0
- package/dist/cjs/react-util.js +37 -0
- package/dist/cjs/redirect.d.ts +12 -0
- package/dist/cjs/redirect.d.ts.map +1 -0
- package/dist/cjs/redirect.js +35 -0
- package/dist/cjs/route-announcement.d.ts +13 -0
- package/dist/cjs/route-announcement.d.ts.map +1 -0
- package/dist/cjs/route-announcement.js +61 -0
- package/dist/cjs/route-focus.d.ts +12 -0
- package/dist/cjs/route-focus.d.ts.map +1 -0
- package/dist/cjs/route-focus.js +36 -0
- package/dist/cjs/route-validators.d.ts +21 -0
- package/dist/cjs/route-validators.d.ts.map +1 -0
- package/dist/cjs/route-validators.js +71 -0
- package/dist/cjs/routeParamsTypes.d.ts +49 -0
- package/dist/cjs/routeParamsTypes.d.ts.map +1 -0
- package/dist/cjs/routeParamsTypes.js +16 -0
- package/dist/cjs/router-context.d.ts +21 -0
- package/dist/cjs/router-context.d.ts.map +1 -0
- package/dist/cjs/router-context.js +69 -0
- package/dist/cjs/router.d.ts +11 -0
- package/dist/cjs/router.d.ts.map +1 -0
- package/dist/cjs/router.js +207 -0
- package/dist/cjs/rsc/ClientRouter.d.ts +4 -0
- package/dist/cjs/rsc/ClientRouter.d.ts.map +1 -0
- package/dist/cjs/rsc/ClientRouter.js +90 -0
- package/dist/cjs/rsc/RscCache.d.ts +23 -0
- package/dist/cjs/rsc/RscCache.d.ts.map +1 -0
- package/dist/cjs/rsc/RscCache.js +110 -0
- package/dist/cjs/rsc/RscRoutes.d.ts +7 -0
- package/dist/cjs/rsc/RscRoutes.d.ts.map +1 -0
- package/dist/cjs/rsc/RscRoutes.js +124 -0
- package/dist/cjs/rsc/ServerRouteLoader.d.ts +12 -0
- package/dist/cjs/rsc/ServerRouteLoader.d.ts.map +1 -0
- package/dist/cjs/rsc/ServerRouteLoader.js +65 -0
- package/dist/cjs/rsc/ServerRouter.d.ts +11 -0
- package/dist/cjs/rsc/ServerRouter.d.ts.map +1 -0
- package/dist/cjs/rsc/ServerRouter.js +170 -0
- package/dist/cjs/rsc/SsrRouter.d.ts +4 -0
- package/dist/cjs/rsc/SsrRouter.d.ts.map +1 -0
- package/dist/cjs/rsc/SsrRouter.js +56 -0
- package/dist/cjs/rsc/clientSsr.d.ts +2 -0
- package/dist/cjs/rsc/clientSsr.d.ts.map +1 -0
- package/dist/cjs/rsc/clientSsr.js +114 -0
- package/dist/cjs/rsc/rscCss.d.ts +2 -0
- package/dist/cjs/rsc/rscCss.d.ts.map +1 -0
- package/dist/cjs/rsc/rscCss.js +94 -0
- package/dist/cjs/rsc/ssrModuleMap.d.ts +14 -0
- package/dist/cjs/rsc/ssrModuleMap.d.ts.map +1 -0
- package/dist/cjs/rsc/ssrModuleMap.js +49 -0
- package/dist/cjs/rsc/utils.d.ts +20 -0
- package/dist/cjs/rsc/utils.d.ts.map +1 -0
- package/dist/cjs/rsc/utils.js +68 -0
- package/dist/cjs/rsc-link.d.ts +6 -0
- package/dist/cjs/rsc-link.d.ts.map +1 -0
- package/dist/cjs/rsc-link.js +41 -0
- package/dist/cjs/skipNav.d.ts +81 -0
- package/dist/cjs/skipNav.d.ts.map +1 -0
- package/dist/cjs/skipNav.js +69 -0
- package/dist/cjs/splash-page.d.ts +12 -0
- package/dist/cjs/splash-page.d.ts.map +1 -0
- package/dist/cjs/splash-page.js +515 -0
- package/dist/cjs/useBlocker.d.ts +11 -0
- package/dist/cjs/useBlocker.d.ts.map +1 -0
- package/dist/cjs/useBlocker.js +65 -0
- package/dist/cjs/useIsMounted.d.ts +2 -0
- package/dist/cjs/useIsMounted.d.ts.map +1 -0
- package/dist/cjs/useIsMounted.js +37 -0
- package/dist/cjs/useMatch.d.ts +43 -0
- package/dist/cjs/useMatch.d.ts.map +1 -0
- package/dist/cjs/useMatch.js +72 -0
- package/dist/cjs/useRouteName.d.ts +3 -0
- package/dist/cjs/useRouteName.d.ts.map +1 -0
- package/dist/cjs/useRouteName.js +40 -0
- package/dist/cjs/useRoutePaths.d.ts +4 -0
- package/dist/cjs/useRoutePaths.d.ts.map +1 -0
- package/dist/cjs/useRoutePaths.js +50 -0
- package/dist/cjs/util.d.ts +121 -0
- package/dist/cjs/util.d.ts.map +1 -0
- package/dist/cjs/util.js +214 -0
- package/dist/createNamedContext.d.ts +3 -0
- package/dist/createNamedContext.d.ts.map +1 -0
- package/dist/createNamedContext.js +9 -0
- package/dist/dummyComponent.d.ts +3 -0
- package/dist/dummyComponent.d.ts.map +1 -0
- package/dist/dummyComponent.js +4 -0
- package/dist/history.d.ts +24 -0
- package/dist/history.d.ts.map +1 -0
- package/dist/history.js +118 -0
- package/dist/index.d.ts +35 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +49 -0
- package/dist/link.d.ts +9 -0
- package/dist/link.d.ts.map +1 -0
- package/dist/link.js +28 -0
- package/dist/location.d.ts +28 -0
- package/dist/location.d.ts.map +1 -0
- package/dist/location.js +74 -0
- package/dist/namedRoutes.d.ts +3 -0
- package/dist/namedRoutes.d.ts.map +1 -0
- package/dist/namedRoutes.js +4 -0
- package/dist/navLink.d.ts +11 -0
- package/dist/navLink.d.ts.map +1 -0
- package/dist/navLink.js +36 -0
- package/dist/page.d.ts +28 -0
- package/dist/page.d.ts.map +1 -0
- package/dist/page.js +17 -0
- package/dist/params.d.ts +13 -0
- package/dist/params.d.ts.map +1 -0
- package/dist/params.js +28 -0
- package/dist/react-util.d.ts +3 -0
- package/dist/react-util.d.ts.map +1 -0
- package/dist/react-util.js +13 -0
- package/dist/redirect.d.ts +12 -0
- package/dist/redirect.d.ts.map +1 -0
- package/dist/redirect.js +11 -0
- package/dist/route-announcement.d.ts +13 -0
- package/dist/route-announcement.d.ts.map +1 -0
- package/dist/route-announcement.js +31 -0
- package/dist/route-focus.d.ts +12 -0
- package/dist/route-focus.d.ts.map +1 -0
- package/dist/route-focus.js +6 -0
- package/dist/route-validators.d.ts +21 -0
- package/dist/route-validators.d.ts.map +1 -0
- package/dist/route-validators.js +44 -0
- package/dist/routeParamsTypes.d.ts +49 -0
- package/dist/routeParamsTypes.d.ts.map +1 -0
- package/dist/routeParamsTypes.js +0 -0
- package/dist/router-context.d.ts +21 -0
- package/dist/router-context.d.ts.map +1 -0
- package/dist/router-context.js +34 -0
- package/dist/router.d.ts +11 -0
- package/dist/router.d.ts.map +1 -0
- package/dist/router.js +173 -0
- package/dist/rsc/ClientRouter.d.ts +4 -0
- package/dist/rsc/ClientRouter.d.ts.map +1 -0
- package/dist/rsc/ClientRouter.js +56 -0
- package/dist/rsc/RscCache.d.ts +23 -0
- package/dist/rsc/RscCache.d.ts.map +1 -0
- package/dist/rsc/RscCache.js +86 -0
- package/dist/rsc/RscRoutes.d.ts +7 -0
- package/dist/rsc/RscRoutes.d.ts.map +1 -0
- package/dist/rsc/RscRoutes.js +100 -0
- package/dist/rsc/ServerRouteLoader.d.ts +12 -0
- package/dist/rsc/ServerRouteLoader.d.ts.map +1 -0
- package/dist/rsc/ServerRouteLoader.js +31 -0
- package/dist/rsc/ServerRouter.d.ts +11 -0
- package/dist/rsc/ServerRouter.d.ts.map +1 -0
- package/dist/rsc/ServerRouter.js +136 -0
- package/dist/rsc/SsrRouter.d.ts +4 -0
- package/dist/rsc/SsrRouter.d.ts.map +1 -0
- package/dist/rsc/SsrRouter.js +22 -0
- package/dist/rsc/clientSsr.d.ts +2 -0
- package/dist/rsc/clientSsr.d.ts.map +1 -0
- package/dist/rsc/clientSsr.js +80 -0
- package/dist/rsc/rscCss.d.ts +2 -0
- package/dist/rsc/rscCss.d.ts.map +1 -0
- package/dist/rsc/rscCss.js +60 -0
- package/dist/rsc/ssrModuleMap.d.ts +14 -0
- package/dist/rsc/ssrModuleMap.d.ts.map +1 -0
- package/dist/rsc/ssrModuleMap.js +25 -0
- package/dist/rsc/utils.d.ts +20 -0
- package/dist/rsc/utils.d.ts.map +1 -0
- package/dist/rsc/utils.js +31 -0
- package/dist/rsc-link.d.ts +6 -0
- package/dist/rsc-link.d.ts.map +1 -0
- package/dist/rsc-link.js +7 -0
- package/dist/skipNav.d.ts +81 -0
- package/dist/skipNav.d.ts.map +1 -0
- package/dist/skipNav.js +34 -0
- package/dist/splash-page.d.ts +12 -0
- package/dist/splash-page.d.ts.map +1 -0
- package/dist/splash-page.js +481 -0
- package/dist/useBlocker.d.ts +11 -0
- package/dist/useBlocker.d.ts.map +1 -0
- package/dist/useBlocker.js +41 -0
- package/dist/useIsMounted.d.ts +2 -0
- package/dist/useIsMounted.d.ts.map +1 -0
- package/dist/useIsMounted.js +13 -0
- package/dist/useMatch.d.ts +43 -0
- package/dist/useMatch.d.ts.map +1 -0
- package/dist/useMatch.js +48 -0
- package/dist/useRouteName.d.ts +3 -0
- package/dist/useRouteName.d.ts.map +1 -0
- package/dist/useRouteName.js +16 -0
- package/dist/useRoutePaths.d.ts +4 -0
- package/dist/useRoutePaths.d.ts.map +1 -0
- package/dist/useRoutePaths.js +25 -0
- package/dist/util.d.ts +121 -0
- package/dist/util.d.ts.map +1 -0
- package/dist/util.js +183 -0
- package/package.json +127 -0
- package/skip-nav.css +31 -0
package/dist/history.js
ADDED
|
@@ -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
|
+
};
|
package/dist/index.d.ts
ADDED
|
@@ -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"}
|
package/dist/location.js
ADDED
|
@@ -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 @@
|
|
|
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,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"}
|
package/dist/navLink.js
ADDED
|
@@ -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
|
+
};
|
package/dist/params.d.ts
ADDED
|
@@ -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 @@
|
|
|
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"}
|
package/dist/redirect.js
ADDED
|
@@ -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"}
|