@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
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { Spec } from './page.js';
|
|
3
|
+
interface Props {
|
|
4
|
+
path: string;
|
|
5
|
+
spec: Spec;
|
|
6
|
+
params?: Record<string, string>;
|
|
7
|
+
whileLoadingPage?: () => React.ReactNode | null;
|
|
8
|
+
children?: React.ReactNode;
|
|
9
|
+
}
|
|
10
|
+
export declare const ActiveRouteLoader: ({ spec, params, whileLoadingPage, }: Props) => React.JSX.Element;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=active-route-loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"active-route-loader.d.ts","sourceRoot":"","sources":["../../src/active-route-loader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAA;AAG1D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAIrC,UAAU,KAAK;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,IAAI,CAAA;IACV,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,gBAAgB,CAAC,EAAE,MAAM,KAAK,CAAC,SAAS,GAAG,IAAI,CAAA;IAC/C,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC3B;AAiCD,eAAO,MAAM,iBAAiB,wCAI3B,KAAK,sBAmEP,CAAA"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var active_route_loader_exports = {};
|
|
30
|
+
__export(active_route_loader_exports, {
|
|
31
|
+
ActiveRouteLoader: () => ActiveRouteLoader
|
|
32
|
+
});
|
|
33
|
+
module.exports = __toCommonJS(active_route_loader_exports);
|
|
34
|
+
var import_react = __toESM(require("react"), 1);
|
|
35
|
+
var import_a11yUtils = require("./a11yUtils.js");
|
|
36
|
+
var import_PageLoadingContext = require("./PageLoadingContext.js");
|
|
37
|
+
var import_util = require("./util.js");
|
|
38
|
+
let isPrerendered = false;
|
|
39
|
+
if (typeof window !== "undefined") {
|
|
40
|
+
const redwoodAppElement = document.getElementById("redwood-app");
|
|
41
|
+
if (redwoodAppElement && redwoodAppElement.children.length > 0) {
|
|
42
|
+
isPrerendered = true;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
let firstLoad = true;
|
|
46
|
+
const Fallback = ({ children }) => {
|
|
47
|
+
const { loading, setPageLoadingContext, delay } = (0, import_PageLoadingContext.usePageLoadingContext)();
|
|
48
|
+
(0, import_react.useEffect)(() => {
|
|
49
|
+
const timer = setTimeout(() => {
|
|
50
|
+
setPageLoadingContext(true);
|
|
51
|
+
}, delay);
|
|
52
|
+
return () => {
|
|
53
|
+
clearTimeout(timer);
|
|
54
|
+
setPageLoadingContext(false);
|
|
55
|
+
};
|
|
56
|
+
}, [delay, setPageLoadingContext]);
|
|
57
|
+
return /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, loading ? children : null);
|
|
58
|
+
};
|
|
59
|
+
const ActiveRouteLoader = ({
|
|
60
|
+
spec,
|
|
61
|
+
params,
|
|
62
|
+
whileLoadingPage
|
|
63
|
+
}) => {
|
|
64
|
+
const announcementRef = (0, import_react.useRef)(null);
|
|
65
|
+
const usePrerenderLoader = (
|
|
66
|
+
// Prerendering doesn't work with Streaming/SSR yet. So we disable it.
|
|
67
|
+
!globalThis.RWJS_EXP_STREAMING_SSR && (globalThis.__REDWOOD__PRERENDERING || isPrerendered && firstLoad)
|
|
68
|
+
);
|
|
69
|
+
const LazyRouteComponent = usePrerenderLoader ? spec.prerenderLoader(spec.name).default : spec.LazyComponent;
|
|
70
|
+
if (firstLoad) {
|
|
71
|
+
firstLoad = false;
|
|
72
|
+
}
|
|
73
|
+
(0, import_react.useEffect)(() => {
|
|
74
|
+
if ((0, import_util.inIframe)()) {
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
if (announcementRef.current) {
|
|
78
|
+
announcementRef.current.innerText = (0, import_a11yUtils.getAnnouncement)();
|
|
79
|
+
}
|
|
80
|
+
const routeFocus = (0, import_a11yUtils.getFocus)();
|
|
81
|
+
if (!routeFocus) {
|
|
82
|
+
(0, import_a11yUtils.resetFocus)();
|
|
83
|
+
} else {
|
|
84
|
+
routeFocus.focus();
|
|
85
|
+
}
|
|
86
|
+
}, [spec, params]);
|
|
87
|
+
if (params) {
|
|
88
|
+
delete params["ref"];
|
|
89
|
+
delete params["key"];
|
|
90
|
+
}
|
|
91
|
+
return /* @__PURE__ */ import_react.default.createElement(import_react.Suspense, { fallback: /* @__PURE__ */ import_react.default.createElement(Fallback, null, whileLoadingPage?.()) }, /* @__PURE__ */ import_react.default.createElement(LazyRouteComponent, { ...params }), /* @__PURE__ */ import_react.default.createElement(
|
|
92
|
+
"div",
|
|
93
|
+
{
|
|
94
|
+
id: "redwood-announcer",
|
|
95
|
+
style: {
|
|
96
|
+
position: "absolute",
|
|
97
|
+
top: 0,
|
|
98
|
+
width: 1,
|
|
99
|
+
height: 1,
|
|
100
|
+
padding: 0,
|
|
101
|
+
overflow: "hidden",
|
|
102
|
+
clip: "rect(0, 0, 0, 0)",
|
|
103
|
+
whiteSpace: "nowrap",
|
|
104
|
+
border: 0
|
|
105
|
+
},
|
|
106
|
+
role: "alert",
|
|
107
|
+
"aria-live": "assertive",
|
|
108
|
+
"aria-atomic": "true",
|
|
109
|
+
ref: announcementRef
|
|
110
|
+
}
|
|
111
|
+
));
|
|
112
|
+
};
|
|
113
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
114
|
+
0 && (module.exports = {
|
|
115
|
+
ActiveRouteLoader
|
|
116
|
+
});
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { ReactElement, ReactNode } from 'react';
|
|
2
|
+
import type { PageType } from './page.js';
|
|
3
|
+
import { type ParamType } from './util.js';
|
|
4
|
+
type WhileLoadingPage = () => ReactElement | null;
|
|
5
|
+
export type GeneratedRoutesMap = {
|
|
6
|
+
[key: string]: (args?: Record<string | number, string | number | boolean>) => string;
|
|
7
|
+
};
|
|
8
|
+
export type Wrappers = ((props: any) => ReactNode)[];
|
|
9
|
+
interface Set {
|
|
10
|
+
id: string;
|
|
11
|
+
wrappers: Wrappers;
|
|
12
|
+
isPrivate: boolean;
|
|
13
|
+
props: {
|
|
14
|
+
private?: boolean;
|
|
15
|
+
[key: string]: unknown;
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
type RoutePath = string;
|
|
19
|
+
/**
|
|
20
|
+
* This is essentially the same as RouteProps
|
|
21
|
+
* but it allows for page and redirect to be null or undefined
|
|
22
|
+
* Keeping the shape consistent makes it easier to use
|
|
23
|
+
*/
|
|
24
|
+
interface AnalyzedRoute {
|
|
25
|
+
path: RoutePath;
|
|
26
|
+
name: string | null;
|
|
27
|
+
whileLoadingPage?: WhileLoadingPage;
|
|
28
|
+
page: PageType | null;
|
|
29
|
+
redirect: string | null;
|
|
30
|
+
sets: Set[];
|
|
31
|
+
}
|
|
32
|
+
interface AnalyzeRoutesOptions {
|
|
33
|
+
currentPathName: string;
|
|
34
|
+
userParamTypes?: Record<string, ParamType>;
|
|
35
|
+
}
|
|
36
|
+
export declare function analyzeRoutes(children: ReactNode, { currentPathName, userParamTypes }: AnalyzeRoutesOptions): {
|
|
37
|
+
pathRouteMap: Record<string, AnalyzedRoute>;
|
|
38
|
+
namedRoutesMap: GeneratedRoutesMap;
|
|
39
|
+
hasRootRoute: boolean;
|
|
40
|
+
NotFoundPage: PageType | undefined;
|
|
41
|
+
activeRoutePath: string | undefined;
|
|
42
|
+
};
|
|
43
|
+
export {};
|
|
44
|
+
//# sourceMappingURL=analyzeRoutes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analyzeRoutes.d.ts","sourceRoot":"","sources":["../../src/analyzeRoutes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAGpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAQzC,OAAO,EAIL,KAAK,SAAS,EACf,MAAM,WAAW,CAAA;AAElB,KAAK,gBAAgB,GAAG,MAAM,YAAY,GAAG,IAAI,CAAA;AAIjD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,CAAC,GAAG,EAAE,MAAM,GAAG,CACb,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,KACtD,MAAM,CAAA;CACZ,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,KAAK,SAAS,CAAC,EAAE,CAAA;AAEpD,UAAU,GAAG;IACX,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,QAAQ,CAAA;IAClB,SAAS,EAAE,OAAO,CAAA;IAClB,KAAK,EAAE;QACL,OAAO,CAAC,EAAE,OAAO,CAAA;QACjB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KACvB,CAAA;CACF;AAED,KAAK,SAAS,GAAG,MAAM,CAAA;AAEvB;;;;GAIG;AACH,UAAU,aAAa;IACrB,IAAI,EAAE,SAAS,CAAA;IACf,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAA;IACrB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,IAAI,EAAE,GAAG,EAAE,CAAA;CACZ;AAED,UAAU,oBAAoB;IAC5B,eAAe,EAAE,MAAM,CAAA;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;CAC3C;AAED,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,SAAS,EACnB,EAAE,eAAe,EAAE,cAAc,EAAE,EAAE,oBAAoB;;;;;;EA6K1D"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var analyzeRoutes_exports = {};
|
|
20
|
+
__export(analyzeRoutes_exports, {
|
|
21
|
+
analyzeRoutes: () => analyzeRoutes
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(analyzeRoutes_exports);
|
|
24
|
+
var import_react = require("react");
|
|
25
|
+
var import_route_validators = require("./route-validators.js");
|
|
26
|
+
var import_Set = require("./Set.js");
|
|
27
|
+
var import_util = require("./util.js");
|
|
28
|
+
function analyzeRoutes(children, { currentPathName, userParamTypes }) {
|
|
29
|
+
const pathRouteMap = {};
|
|
30
|
+
const namedRoutesMap = {};
|
|
31
|
+
let hasRootRoute = false;
|
|
32
|
+
let NotFoundPage;
|
|
33
|
+
let activeRoutePath;
|
|
34
|
+
const recurseThroughRouter = ({
|
|
35
|
+
nodes,
|
|
36
|
+
whileLoadingPageFromSet,
|
|
37
|
+
sets: previousSets = []
|
|
38
|
+
}) => {
|
|
39
|
+
let nextSetId = 0;
|
|
40
|
+
nodes.forEach((node) => {
|
|
41
|
+
if ((0, import_route_validators.isValidRoute)(node)) {
|
|
42
|
+
const route = node;
|
|
43
|
+
if ((0, import_route_validators.isNotFoundRoute)(route)) {
|
|
44
|
+
NotFoundPage = route.props.page;
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
if (route.props.path === "/") {
|
|
48
|
+
hasRootRoute = true;
|
|
49
|
+
}
|
|
50
|
+
if ((0, import_route_validators.isRedirectRoute)(route)) {
|
|
51
|
+
const { name, redirect, path } = route.props;
|
|
52
|
+
(0, import_util.validatePath)(path, name || path);
|
|
53
|
+
const { match } = (0, import_util.matchPath)(path, currentPathName, {
|
|
54
|
+
userParamTypes
|
|
55
|
+
});
|
|
56
|
+
if (match && !activeRoutePath) {
|
|
57
|
+
activeRoutePath = path;
|
|
58
|
+
}
|
|
59
|
+
pathRouteMap[path] = {
|
|
60
|
+
redirect,
|
|
61
|
+
name: name || null,
|
|
62
|
+
path,
|
|
63
|
+
page: null,
|
|
64
|
+
// Redirects don't need pages. We set this to null for consistency
|
|
65
|
+
sets: previousSets
|
|
66
|
+
};
|
|
67
|
+
if (name) {
|
|
68
|
+
namedRoutesMap[name] = (args = {}) => (0, import_util.replaceParams)(path, args);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
if ((0, import_route_validators.isStandardRoute)(route)) {
|
|
72
|
+
const { name, path, page } = route.props;
|
|
73
|
+
(0, import_util.validatePath)(path, name);
|
|
74
|
+
const { match } = (0, import_util.matchPath)(path, currentPathName, {
|
|
75
|
+
userParamTypes
|
|
76
|
+
});
|
|
77
|
+
if (match && !activeRoutePath) {
|
|
78
|
+
activeRoutePath = path;
|
|
79
|
+
}
|
|
80
|
+
pathRouteMap[path] = {
|
|
81
|
+
redirect: null,
|
|
82
|
+
name,
|
|
83
|
+
path,
|
|
84
|
+
whileLoadingPage: route.props.whileLoadingPage || whileLoadingPageFromSet,
|
|
85
|
+
page,
|
|
86
|
+
sets: previousSets
|
|
87
|
+
};
|
|
88
|
+
namedRoutesMap[name] = (args = {}) => (0, import_util.replaceParams)(path, args);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
if ((0, import_Set.isSetNode)(node)) {
|
|
92
|
+
const {
|
|
93
|
+
children: children2,
|
|
94
|
+
whileLoadingPage: whileLoadingPageFromCurrentSet,
|
|
95
|
+
wrap: wrapFromCurrentSet,
|
|
96
|
+
...otherPropsFromCurrentSet
|
|
97
|
+
} = node.props;
|
|
98
|
+
let wrapperComponentsArray = [];
|
|
99
|
+
if (wrapFromCurrentSet) {
|
|
100
|
+
wrapperComponentsArray = Array.isArray(wrapFromCurrentSet) ? wrapFromCurrentSet : [wrapFromCurrentSet];
|
|
101
|
+
}
|
|
102
|
+
nextSetId = nextSetId + 1;
|
|
103
|
+
recurseThroughRouter({
|
|
104
|
+
nodes: import_react.Children.toArray(children2),
|
|
105
|
+
// When there's a whileLoadingPage prop on a Set, we pass it down to all its children
|
|
106
|
+
// If the parent node was also a Set with whileLoadingPage, we pass it down. The child's whileLoadingPage
|
|
107
|
+
// will always take precedence over the parent's
|
|
108
|
+
whileLoadingPageFromSet: whileLoadingPageFromCurrentSet || whileLoadingPageFromSet,
|
|
109
|
+
sets: [
|
|
110
|
+
...previousSets,
|
|
111
|
+
{
|
|
112
|
+
id: createSetId(nextSetId, previousSets),
|
|
113
|
+
wrappers: wrapperComponentsArray,
|
|
114
|
+
isPrivate: (0, import_Set.isPrivateSetNode)(node) || // The following two conditions can be removed when we remove
|
|
115
|
+
// the deprecated private prop
|
|
116
|
+
(0, import_Set.isPrivateNode)(node) || !!otherPropsFromCurrentSet.private,
|
|
117
|
+
props: otherPropsFromCurrentSet
|
|
118
|
+
}
|
|
119
|
+
]
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
};
|
|
124
|
+
recurseThroughRouter({ nodes: import_react.Children.toArray(children) });
|
|
125
|
+
return {
|
|
126
|
+
pathRouteMap,
|
|
127
|
+
namedRoutesMap,
|
|
128
|
+
hasRootRoute,
|
|
129
|
+
NotFoundPage,
|
|
130
|
+
activeRoutePath
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
function createSetId(nextSetId, previousSets) {
|
|
134
|
+
const firstLevel = previousSets.length === 0;
|
|
135
|
+
if (firstLevel) {
|
|
136
|
+
return nextSetId.toString();
|
|
137
|
+
}
|
|
138
|
+
return previousSets.at(-1)?.id + "." + nextSetId;
|
|
139
|
+
}
|
|
140
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
141
|
+
0 && (module.exports = {
|
|
142
|
+
analyzeRoutes
|
|
143
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createNamedContext.d.ts","sourceRoot":"","sources":["../../src/createNamedContext.ts"],"names":[],"mappings":"AAEA,kDAAkD;AAClD,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,CAAC,0CAInE"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var createNamedContext_exports = {};
|
|
20
|
+
__export(createNamedContext_exports, {
|
|
21
|
+
createNamedContext: () => createNamedContext
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(createNamedContext_exports);
|
|
24
|
+
var import_react = require("react");
|
|
25
|
+
function createNamedContext(name, defaultValue) {
|
|
26
|
+
const Ctx = (0, import_react.createContext)(defaultValue);
|
|
27
|
+
Ctx.displayName = name;
|
|
28
|
+
return Ctx;
|
|
29
|
+
}
|
|
30
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
31
|
+
0 && (module.exports = {
|
|
32
|
+
createNamedContext
|
|
33
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dummyComponent.d.ts","sourceRoot":"","sources":["../../src/dummyComponent.ts"],"names":[],"mappings":";AAEA,wBAAyB"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var dummyComponent_exports = {};
|
|
20
|
+
__export(dummyComponent_exports, {
|
|
21
|
+
default: () => dummyComponent_default
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(dummyComponent_exports);
|
|
24
|
+
var dummyComponent_default = () => null;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export interface NavigateOptions {
|
|
2
|
+
replace?: boolean;
|
|
3
|
+
scroll?: boolean;
|
|
4
|
+
}
|
|
5
|
+
export type Listener = (ev?: PopStateEvent, options?: NavigateOptions) => any;
|
|
6
|
+
export type BeforeUnloadListener = (ev: BeforeUnloadEvent) => any;
|
|
7
|
+
export type BlockerCallback = (tx: {
|
|
8
|
+
retry: () => void;
|
|
9
|
+
}) => void;
|
|
10
|
+
export type Blocker = {
|
|
11
|
+
id: string;
|
|
12
|
+
callback: BlockerCallback;
|
|
13
|
+
};
|
|
14
|
+
declare const gHistory: {
|
|
15
|
+
listen: (listener: Listener) => string;
|
|
16
|
+
navigate: (to: string, options?: NavigateOptions) => void;
|
|
17
|
+
back: () => void;
|
|
18
|
+
remove: (listenerId: string) => void;
|
|
19
|
+
block: (id: string, callback: BlockerCallback) => void;
|
|
20
|
+
unblock: (id: string) => void;
|
|
21
|
+
};
|
|
22
|
+
declare const navigate: (to: string, options?: NavigateOptions) => void, back: () => void, block: (id: string, callback: BlockerCallback) => void, unblock: (id: string) => void;
|
|
23
|
+
export { gHistory, navigate, back, block, unblock };
|
|
24
|
+
//# sourceMappingURL=history.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/history.tsx"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED,MAAM,MAAM,QAAQ,GAAG,CAAC,EAAE,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,eAAe,KAAK,GAAG,CAAA;AAC7E,MAAM,MAAM,oBAAoB,GAAG,CAAC,EAAE,EAAE,iBAAiB,KAAK,GAAG,CAAA;AACjE,MAAM,MAAM,eAAe,GAAG,CAAC,EAAE,EAAE;IAAE,KAAK,EAAE,MAAM,IAAI,CAAA;CAAE,KAAK,IAAI,CAAA;AACjE,MAAM,MAAM,OAAO,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,eAAe,CAAA;CAAE,CAAA;AAgI/D,QAAA,MAAM,QAAQ;uBAxHS,QAAQ;mBAOrB,MAAM,YACD,eAAe;;yBA8CL,MAAM;gBAWf,MAAM,YAAY,eAAe;kBAa/B,MAAM;CA0CQ,CAAA;AAEhC,QAAA,MAAQ,QAAQ,OAnHN,MAAM,YACD,eAAe,WAkHZ,IAAI,cAAE,KAAK,OAzDb,MAAM,YAAY,eAAe,WAyDlB,OAAO,OA5CpB,MAAM,SA4C2B,CAAA;AAEnD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAA"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var history_exports = {};
|
|
20
|
+
__export(history_exports, {
|
|
21
|
+
back: () => back,
|
|
22
|
+
block: () => block,
|
|
23
|
+
gHistory: () => gHistory,
|
|
24
|
+
navigate: () => navigate,
|
|
25
|
+
unblock: () => unblock
|
|
26
|
+
});
|
|
27
|
+
module.exports = __toCommonJS(history_exports);
|
|
28
|
+
const createHistory = () => {
|
|
29
|
+
const listeners = {};
|
|
30
|
+
const blockers = [];
|
|
31
|
+
let beforeUnloadListener = null;
|
|
32
|
+
const history = {
|
|
33
|
+
listen: (listener) => {
|
|
34
|
+
const listenerId = "RW_HISTORY_LISTENER_ID_" + Date.now();
|
|
35
|
+
listeners[listenerId] = listener;
|
|
36
|
+
globalThis.addEventListener("popstate", listener);
|
|
37
|
+
return listenerId;
|
|
38
|
+
},
|
|
39
|
+
navigate: (to, options = {
|
|
40
|
+
scroll: true
|
|
41
|
+
}) => {
|
|
42
|
+
const performNavigation = () => {
|
|
43
|
+
const { pathname, search, hash } = new URL(
|
|
44
|
+
globalThis?.location?.origin + to
|
|
45
|
+
);
|
|
46
|
+
if (globalThis?.location?.pathname !== pathname || globalThis?.location?.search !== search || globalThis?.location?.hash !== hash) {
|
|
47
|
+
if (options?.replace) {
|
|
48
|
+
globalThis.history.replaceState({}, "", to);
|
|
49
|
+
} else {
|
|
50
|
+
globalThis.history.pushState({}, "", to);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
for (const listener of Object.values(listeners)) {
|
|
54
|
+
listener(void 0, options);
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
if (blockers.length > 0) {
|
|
58
|
+
processBlockers(0, performNavigation);
|
|
59
|
+
} else {
|
|
60
|
+
performNavigation();
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
back: () => {
|
|
64
|
+
const performBack = () => {
|
|
65
|
+
globalThis.history.back();
|
|
66
|
+
for (const listener of Object.values(listeners)) {
|
|
67
|
+
listener();
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
if (blockers.length > 0) {
|
|
71
|
+
processBlockers(0, performBack);
|
|
72
|
+
} else {
|
|
73
|
+
performBack();
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
remove: (listenerId) => {
|
|
77
|
+
if (listeners[listenerId]) {
|
|
78
|
+
const listener = listeners[listenerId];
|
|
79
|
+
globalThis.removeEventListener("popstate", listener);
|
|
80
|
+
delete listeners[listenerId];
|
|
81
|
+
} else {
|
|
82
|
+
console.warn(
|
|
83
|
+
"History Listener with ID: " + listenerId + " does not exist."
|
|
84
|
+
);
|
|
85
|
+
}
|
|
86
|
+
},
|
|
87
|
+
block: (id, callback) => {
|
|
88
|
+
const existingBlockerIndex = blockers.findIndex(
|
|
89
|
+
(blocker) => blocker.id === id
|
|
90
|
+
);
|
|
91
|
+
if (existingBlockerIndex !== -1) {
|
|
92
|
+
blockers[existingBlockerIndex] = { id, callback };
|
|
93
|
+
} else {
|
|
94
|
+
blockers.push({ id, callback });
|
|
95
|
+
if (blockers.length === 1) {
|
|
96
|
+
addBeforeUnloadListener();
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
unblock: (id) => {
|
|
101
|
+
const index = blockers.findIndex((blocker) => blocker.id === id);
|
|
102
|
+
if (index !== -1) {
|
|
103
|
+
blockers.splice(index, 1);
|
|
104
|
+
if (blockers.length === 0) {
|
|
105
|
+
removeBeforeUnloadListener();
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
const processBlockers = (index, navigate2) => {
|
|
111
|
+
if (index < blockers.length) {
|
|
112
|
+
blockers[index].callback({
|
|
113
|
+
retry: () => processBlockers(index + 1, navigate2)
|
|
114
|
+
});
|
|
115
|
+
} else {
|
|
116
|
+
navigate2();
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
const addBeforeUnloadListener = () => {
|
|
120
|
+
if (!beforeUnloadListener) {
|
|
121
|
+
beforeUnloadListener = (event) => {
|
|
122
|
+
if (blockers.length > 0) {
|
|
123
|
+
event.preventDefault();
|
|
124
|
+
}
|
|
125
|
+
};
|
|
126
|
+
globalThis.addEventListener("beforeunload", beforeUnloadListener);
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
const removeBeforeUnloadListener = () => {
|
|
130
|
+
if (beforeUnloadListener) {
|
|
131
|
+
globalThis.removeEventListener("beforeunload", beforeUnloadListener);
|
|
132
|
+
beforeUnloadListener = null;
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
return history;
|
|
136
|
+
};
|
|
137
|
+
const gHistory = createHistory();
|
|
138
|
+
const { navigate, back, block, unblock } = gHistory;
|
|
139
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
140
|
+
0 && (module.exports = {
|
|
141
|
+
back,
|
|
142
|
+
block,
|
|
143
|
+
gHistory,
|
|
144
|
+
navigate,
|
|
145
|
+
unblock
|
|
146
|
+
});
|
|
@@ -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"}
|