react-router 0.0.0-experimental-1ebb6d403 → 0.0.0-experimental-e41ede670
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/CHANGELOG.md +0 -10
- package/dist/development/{chunk-5XVYBMAF.mjs → chunk-H3OBLXFX.mjs} +767 -514
- package/dist/development/dom-export.d.mts +13 -3
- package/dist/development/dom-export.d.ts +13 -3
- package/dist/development/dom-export.js +272 -108
- package/dist/development/dom-export.mjs +9 -6
- package/dist/{production/fog-of-war-7V7BguJA.d.ts → development/fog-of-war-Bt7PejVF.d.ts} +91 -6
- package/dist/development/{fog-of-war-NQCW9yWR.d.mts → fog-of-war-Dz4n-TU-.d.mts} +91 -6
- package/dist/development/index.d.mts +10 -19
- package/dist/development/index.d.ts +10 -19
- package/dist/development/index.js +767 -514
- package/dist/development/index.mjs +2 -2
- package/dist/development/lib/types/route-module.d.mts +6 -2
- package/dist/development/lib/types/route-module.d.ts +6 -2
- package/dist/development/lib/types/route-module.js +1 -1
- package/dist/development/lib/types/route-module.mjs +1 -1
- package/dist/development/{route-data-JFOfNyPS.d.ts → route-data-C96IyGKo.d.mts} +37 -15
- package/dist/{production/route-data-JFOfNyPS.d.mts → development/route-data-C96IyGKo.d.ts} +37 -15
- package/dist/production/{chunk-CKFZHSMW.mjs → chunk-YBZNESR7.mjs} +767 -514
- package/dist/production/dom-export.d.mts +13 -3
- package/dist/production/dom-export.d.ts +13 -3
- package/dist/production/dom-export.js +272 -108
- package/dist/production/dom-export.mjs +9 -6
- package/dist/{development/fog-of-war-7V7BguJA.d.ts → production/fog-of-war-Bt7PejVF.d.ts} +91 -6
- package/dist/production/{fog-of-war-NQCW9yWR.d.mts → fog-of-war-Dz4n-TU-.d.mts} +91 -6
- package/dist/production/index.d.mts +10 -19
- package/dist/production/index.d.ts +10 -19
- package/dist/production/index.js +767 -514
- package/dist/production/index.mjs +2 -2
- package/dist/production/lib/types/route-module.d.mts +6 -2
- package/dist/production/lib/types/route-module.d.ts +6 -2
- package/dist/production/lib/types/route-module.js +1 -1
- package/dist/production/lib/types/route-module.mjs +1 -1
- package/dist/production/{route-data-JFOfNyPS.d.ts → route-data-C96IyGKo.d.mts} +37 -15
- package/dist/{development/route-data-JFOfNyPS.d.mts → production/route-data-C96IyGKo.d.ts} +37 -15
- package/package.json +2 -17
- package/dist/development/server.d.mts +0 -988
- package/dist/development/server.d.ts +0 -988
- package/dist/development/server.js +0 -1429
- package/dist/development/server.mjs +0 -1406
- package/dist/production/server.d.mts +0 -988
- package/dist/production/server.d.ts +0 -988
- package/dist/production/server.js +0 -1405
- package/dist/production/server.mjs +0 -1382
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* react-router v0.0.0-experimental-
|
|
2
|
+
* react-router v0.0.0-experimental-e41ede670
|
|
3
3
|
*
|
|
4
4
|
* Copyright (c) Remix Software Inc.
|
|
5
5
|
*
|
|
@@ -46,7 +46,7 @@ __export(dom_export_exports, {
|
|
|
46
46
|
module.exports = __toCommonJS(dom_export_exports);
|
|
47
47
|
|
|
48
48
|
// lib/dom-export/dom-router-provider.tsx
|
|
49
|
-
var
|
|
49
|
+
var React10 = __toESM(require("react"));
|
|
50
50
|
var ReactDOM = __toESM(require("react-dom"));
|
|
51
51
|
|
|
52
52
|
// lib/router/history.ts
|
|
@@ -679,7 +679,10 @@ var redirect = (url, init = 302) => {
|
|
|
679
679
|
}
|
|
680
680
|
let headers = new Headers(responseInit.headers);
|
|
681
681
|
headers.set("Location", url);
|
|
682
|
-
return new Response(null, {
|
|
682
|
+
return new Response(null, {
|
|
683
|
+
...responseInit,
|
|
684
|
+
headers
|
|
685
|
+
});
|
|
683
686
|
};
|
|
684
687
|
var ErrorResponseImpl = class {
|
|
685
688
|
constructor(status, statusText, data2, internal = false) {
|
|
@@ -764,6 +767,7 @@ function createRouter(init) {
|
|
|
764
767
|
);
|
|
765
768
|
let inFlightDataRoutes;
|
|
766
769
|
let basename = init.basename || "/";
|
|
770
|
+
let routerContext = typeof init.context !== "undefined" ? init.context : {};
|
|
767
771
|
let dataStrategyImpl = init.dataStrategy || defaultDataStrategy;
|
|
768
772
|
let patchRoutesOnNavigationImpl = init.patchRoutesOnNavigation;
|
|
769
773
|
let future = {
|
|
@@ -952,11 +956,6 @@ function createRouter(init) {
|
|
|
952
956
|
}
|
|
953
957
|
}
|
|
954
958
|
});
|
|
955
|
-
fetchersQueuedForDeletion.forEach((key) => {
|
|
956
|
-
if (!state.fetchers.has(key) && !fetchControllers.has(key)) {
|
|
957
|
-
unmountedFetchers.push(key);
|
|
958
|
-
}
|
|
959
|
-
});
|
|
960
959
|
[...subscribers].forEach(
|
|
961
960
|
(subscriber) => subscriber(state, {
|
|
962
961
|
deletedFetchers: unmountedFetchers,
|
|
@@ -1339,6 +1338,14 @@ function createRouter(init) {
|
|
|
1339
1338
|
null
|
|
1340
1339
|
);
|
|
1341
1340
|
result = results[actionMatch.route.id];
|
|
1341
|
+
if (!result) {
|
|
1342
|
+
for (let match of matches) {
|
|
1343
|
+
if (results[match.route.id]) {
|
|
1344
|
+
result = results[match.route.id];
|
|
1345
|
+
break;
|
|
1346
|
+
}
|
|
1347
|
+
}
|
|
1348
|
+
}
|
|
1342
1349
|
if (request.signal.aborted) {
|
|
1343
1350
|
return { shortCircuited: true };
|
|
1344
1351
|
}
|
|
@@ -2000,13 +2007,13 @@ function createRouter(init) {
|
|
|
2000
2007
|
results = await callDataStrategyImpl(
|
|
2001
2008
|
dataStrategyImpl,
|
|
2002
2009
|
type,
|
|
2003
|
-
state2,
|
|
2004
2010
|
request,
|
|
2005
2011
|
matchesToLoad,
|
|
2006
2012
|
matches,
|
|
2007
2013
|
fetcherKey,
|
|
2008
2014
|
manifest,
|
|
2009
|
-
mapRouteProperties2
|
|
2015
|
+
mapRouteProperties2,
|
|
2016
|
+
routerContext
|
|
2010
2017
|
);
|
|
2011
2018
|
} catch (e) {
|
|
2012
2019
|
matchesToLoad.forEach((m) => {
|
|
@@ -2797,20 +2804,124 @@ async function loadLazyRouteModule(route, mapRouteProperties2, manifest) {
|
|
|
2797
2804
|
lazy: void 0
|
|
2798
2805
|
});
|
|
2799
2806
|
}
|
|
2800
|
-
async function defaultDataStrategy({
|
|
2801
|
-
matches
|
|
2802
|
-
|
|
2803
|
-
let
|
|
2804
|
-
|
|
2805
|
-
|
|
2806
|
-
|
|
2807
|
-
|
|
2807
|
+
async function defaultDataStrategy(args) {
|
|
2808
|
+
let matchesToLoad = args.matches.filter((m) => m.shouldLoad);
|
|
2809
|
+
let lastIndex = args.matches.length - 1;
|
|
2810
|
+
for (let i = lastIndex; i >= 0; i--) {
|
|
2811
|
+
if (args.matches[i].shouldLoad) {
|
|
2812
|
+
lastIndex = i;
|
|
2813
|
+
break;
|
|
2814
|
+
}
|
|
2815
|
+
}
|
|
2816
|
+
let results = await runMiddlewarePipeline(
|
|
2817
|
+
args,
|
|
2818
|
+
lastIndex,
|
|
2819
|
+
false,
|
|
2820
|
+
async (keyedResults) => {
|
|
2821
|
+
let results2 = await Promise.all(matchesToLoad.map((m) => m.resolve()));
|
|
2822
|
+
results2.forEach((result, i) => {
|
|
2823
|
+
keyedResults[matchesToLoad[i].route.id] = result;
|
|
2824
|
+
});
|
|
2825
|
+
}
|
|
2808
2826
|
);
|
|
2827
|
+
return results;
|
|
2809
2828
|
}
|
|
2810
|
-
async function
|
|
2829
|
+
async function runMiddlewarePipeline({
|
|
2830
|
+
request,
|
|
2831
|
+
params,
|
|
2832
|
+
context,
|
|
2833
|
+
matches
|
|
2834
|
+
}, lastIndex, propagateResult, handler) {
|
|
2835
|
+
let keyedResults = {};
|
|
2836
|
+
try {
|
|
2837
|
+
let result = await callRouteMiddleware(
|
|
2838
|
+
matches.slice(0, lastIndex + 1).flatMap(
|
|
2839
|
+
(m) => m.route.middleware ? m.route.middleware.map((fn) => [m.route.id, fn]) : []
|
|
2840
|
+
),
|
|
2841
|
+
0,
|
|
2842
|
+
{ request, params, context },
|
|
2843
|
+
keyedResults,
|
|
2844
|
+
propagateResult,
|
|
2845
|
+
handler
|
|
2846
|
+
);
|
|
2847
|
+
return propagateResult ? result : keyedResults;
|
|
2848
|
+
} catch (e) {
|
|
2849
|
+
if (!(e instanceof MiddlewareError)) {
|
|
2850
|
+
throw e;
|
|
2851
|
+
}
|
|
2852
|
+
if (propagateResult && isResponse(e.error)) {
|
|
2853
|
+
throw e.error;
|
|
2854
|
+
}
|
|
2855
|
+
return {
|
|
2856
|
+
...keyedResults,
|
|
2857
|
+
[e.routeId]: { type: "error", result: e.error }
|
|
2858
|
+
};
|
|
2859
|
+
}
|
|
2860
|
+
}
|
|
2861
|
+
var MiddlewareError = class {
|
|
2862
|
+
constructor(routeId, error) {
|
|
2863
|
+
this.routeId = routeId;
|
|
2864
|
+
this.error = error;
|
|
2865
|
+
}
|
|
2866
|
+
};
|
|
2867
|
+
async function callRouteMiddleware(middlewares, idx, args, keyedResults, propagateResult, handler) {
|
|
2868
|
+
let { request } = args;
|
|
2869
|
+
if (request.signal.aborted) {
|
|
2870
|
+
if (request.signal.reason) {
|
|
2871
|
+
throw request.signal.reason;
|
|
2872
|
+
}
|
|
2873
|
+
throw new Error(
|
|
2874
|
+
`Request aborted without an \`AbortSignal.reason\`: ${request.method} ${request.url}`
|
|
2875
|
+
);
|
|
2876
|
+
}
|
|
2877
|
+
let tuple = middlewares[idx];
|
|
2878
|
+
if (!tuple) {
|
|
2879
|
+
let result = await handler(keyedResults);
|
|
2880
|
+
return result;
|
|
2881
|
+
}
|
|
2882
|
+
let [routeId, middleware] = tuple;
|
|
2883
|
+
let nextCalled = false;
|
|
2884
|
+
let next = async () => {
|
|
2885
|
+
if (nextCalled) {
|
|
2886
|
+
throw new Error("You may only call `next()` once per middleware");
|
|
2887
|
+
}
|
|
2888
|
+
nextCalled = true;
|
|
2889
|
+
let result = await callRouteMiddleware(
|
|
2890
|
+
middlewares,
|
|
2891
|
+
idx + 1,
|
|
2892
|
+
args,
|
|
2893
|
+
keyedResults,
|
|
2894
|
+
propagateResult,
|
|
2895
|
+
handler
|
|
2896
|
+
);
|
|
2897
|
+
return propagateResult ? result : void 0;
|
|
2898
|
+
};
|
|
2899
|
+
try {
|
|
2900
|
+
let result = await middleware(args, next);
|
|
2901
|
+
if (!nextCalled) {
|
|
2902
|
+
result = await next();
|
|
2903
|
+
}
|
|
2904
|
+
return result;
|
|
2905
|
+
} catch (e) {
|
|
2906
|
+
if (e instanceof MiddlewareError) {
|
|
2907
|
+
throw e;
|
|
2908
|
+
}
|
|
2909
|
+
throw new MiddlewareError(routeId, e);
|
|
2910
|
+
}
|
|
2911
|
+
}
|
|
2912
|
+
async function callDataStrategyImpl(dataStrategyImpl, type, request, matchesToLoad, matches, fetcherKey, manifest, mapRouteProperties2, routerContext) {
|
|
2811
2913
|
let loadRouteDefinitionsPromises = matches.map(
|
|
2812
2914
|
(m) => m.route.lazy ? loadLazyRouteModule(m.route, mapRouteProperties2, manifest) : void 0
|
|
2813
2915
|
);
|
|
2916
|
+
let lazyMiddlewarePromises = matches.map(
|
|
2917
|
+
(m, i) => m.route.lazy && !("middleware" in m.route) ? (
|
|
2918
|
+
// Swallow the error here, let it bubble up from resolve()
|
|
2919
|
+
loadRouteDefinitionsPromises[i].catch((e) => e)
|
|
2920
|
+
) : null
|
|
2921
|
+
).filter((p) => p != null);
|
|
2922
|
+
if (lazyMiddlewarePromises.length > 0) {
|
|
2923
|
+
await Promise.all(lazyMiddlewarePromises);
|
|
2924
|
+
}
|
|
2814
2925
|
let dsMatches = matches.map((match, i) => {
|
|
2815
2926
|
let loadRoutePromise = loadRouteDefinitionsPromises[i];
|
|
2816
2927
|
let shouldLoad = matchesToLoad.some((m) => m.route.id === match.route.id);
|
|
@@ -2824,7 +2935,7 @@ async function callDataStrategyImpl(dataStrategyImpl, type, state, request, matc
|
|
|
2824
2935
|
match,
|
|
2825
2936
|
loadRoutePromise,
|
|
2826
2937
|
handlerOverride,
|
|
2827
|
-
|
|
2938
|
+
routerContext
|
|
2828
2939
|
) : Promise.resolve({ type: "data" /* data */, result: void 0 });
|
|
2829
2940
|
};
|
|
2830
2941
|
return {
|
|
@@ -2838,7 +2949,7 @@ async function callDataStrategyImpl(dataStrategyImpl, type, state, request, matc
|
|
|
2838
2949
|
request,
|
|
2839
2950
|
params: matches[0].params,
|
|
2840
2951
|
fetcherKey,
|
|
2841
|
-
context:
|
|
2952
|
+
context: routerContext
|
|
2842
2953
|
});
|
|
2843
2954
|
try {
|
|
2844
2955
|
await Promise.all(loadRouteDefinitionsPromises);
|
|
@@ -2846,7 +2957,7 @@ async function callDataStrategyImpl(dataStrategyImpl, type, state, request, matc
|
|
|
2846
2957
|
}
|
|
2847
2958
|
return results;
|
|
2848
2959
|
}
|
|
2849
|
-
async function callLoaderOrAction(type, request, match, loadRoutePromise, handlerOverride,
|
|
2960
|
+
async function callLoaderOrAction(type, request, match, loadRoutePromise, handlerOverride, routerContext) {
|
|
2850
2961
|
let result;
|
|
2851
2962
|
let onReject;
|
|
2852
2963
|
let runHandler = (handler) => {
|
|
@@ -2866,7 +2977,7 @@ async function callLoaderOrAction(type, request, match, loadRoutePromise, handle
|
|
|
2866
2977
|
{
|
|
2867
2978
|
request,
|
|
2868
2979
|
params: match.params,
|
|
2869
|
-
context:
|
|
2980
|
+
context: routerContext
|
|
2870
2981
|
},
|
|
2871
2982
|
...ctx !== void 0 ? [ctx] : []
|
|
2872
2983
|
);
|
|
@@ -3491,7 +3602,7 @@ function createDeferred() {
|
|
|
3491
3602
|
}
|
|
3492
3603
|
|
|
3493
3604
|
// lib/components.tsx
|
|
3494
|
-
var
|
|
3605
|
+
var React3 = __toESM(require("react"));
|
|
3495
3606
|
|
|
3496
3607
|
// lib/context.ts
|
|
3497
3608
|
var React = __toESM(require("react"));
|
|
@@ -3869,8 +3980,7 @@ function warnOnce(condition, message) {
|
|
|
3869
3980
|
}
|
|
3870
3981
|
}
|
|
3871
3982
|
|
|
3872
|
-
// lib/
|
|
3873
|
-
var React3 = __toESM(require("react"));
|
|
3983
|
+
// lib/components.tsx
|
|
3874
3984
|
var ENABLE_DEV_WARNINGS2 = true;
|
|
3875
3985
|
function mapRouteProperties(route) {
|
|
3876
3986
|
let updates = {
|
|
@@ -3922,8 +4032,6 @@ function mapRouteProperties(route) {
|
|
|
3922
4032
|
}
|
|
3923
4033
|
return updates;
|
|
3924
4034
|
}
|
|
3925
|
-
|
|
3926
|
-
// lib/components.tsx
|
|
3927
4035
|
var Deferred = class {
|
|
3928
4036
|
constructor() {
|
|
3929
4037
|
this.status = "pending";
|
|
@@ -3947,23 +4055,23 @@ function RouterProvider({
|
|
|
3947
4055
|
router: router2,
|
|
3948
4056
|
flushSync: reactDomFlushSyncImpl
|
|
3949
4057
|
}) {
|
|
3950
|
-
let [state, setStateImpl] =
|
|
3951
|
-
let [pendingState, setPendingState] =
|
|
3952
|
-
let [vtContext, setVtContext] =
|
|
4058
|
+
let [state, setStateImpl] = React3.useState(router2.state);
|
|
4059
|
+
let [pendingState, setPendingState] = React3.useState();
|
|
4060
|
+
let [vtContext, setVtContext] = React3.useState({
|
|
3953
4061
|
isTransitioning: false
|
|
3954
4062
|
});
|
|
3955
|
-
let [renderDfd, setRenderDfd] =
|
|
3956
|
-
let [transition, setTransition] =
|
|
3957
|
-
let [interruption, setInterruption] =
|
|
3958
|
-
let fetcherData =
|
|
3959
|
-
let setState =
|
|
4063
|
+
let [renderDfd, setRenderDfd] = React3.useState();
|
|
4064
|
+
let [transition, setTransition] = React3.useState();
|
|
4065
|
+
let [interruption, setInterruption] = React3.useState();
|
|
4066
|
+
let fetcherData = React3.useRef(/* @__PURE__ */ new Map());
|
|
4067
|
+
let setState = React3.useCallback(
|
|
3960
4068
|
(newState, { deletedFetchers, flushSync: flushSync2, viewTransitionOpts }) => {
|
|
4069
|
+
deletedFetchers.forEach((key) => fetcherData.current.delete(key));
|
|
3961
4070
|
newState.fetchers.forEach((fetcher, key) => {
|
|
3962
4071
|
if (fetcher.data !== void 0) {
|
|
3963
4072
|
fetcherData.current.set(key, fetcher.data);
|
|
3964
4073
|
}
|
|
3965
4074
|
});
|
|
3966
|
-
deletedFetchers.forEach((key) => fetcherData.current.delete(key));
|
|
3967
4075
|
warnOnce(
|
|
3968
4076
|
flushSync2 === false || reactDomFlushSyncImpl != null,
|
|
3969
4077
|
'You provided the `flushSync` option to a router update, but you are not using the `<RouterProvider>` from `react-router/dom` so `ReactDOM.flushSync()` is unavailable. Please update your app to `import { RouterProvider } from "react-router/dom"` and ensure you have `react-dom` installed as a dependency to use the `flushSync` option.'
|
|
@@ -3977,7 +4085,7 @@ function RouterProvider({
|
|
|
3977
4085
|
if (reactDomFlushSyncImpl && flushSync2) {
|
|
3978
4086
|
reactDomFlushSyncImpl(() => setStateImpl(newState));
|
|
3979
4087
|
} else {
|
|
3980
|
-
|
|
4088
|
+
React3.startTransition(() => setStateImpl(newState));
|
|
3981
4089
|
}
|
|
3982
4090
|
return;
|
|
3983
4091
|
}
|
|
@@ -4028,18 +4136,18 @@ function RouterProvider({
|
|
|
4028
4136
|
},
|
|
4029
4137
|
[router2.window, reactDomFlushSyncImpl, transition, renderDfd]
|
|
4030
4138
|
);
|
|
4031
|
-
|
|
4032
|
-
|
|
4139
|
+
React3.useLayoutEffect(() => router2.subscribe(setState), [router2, setState]);
|
|
4140
|
+
React3.useEffect(() => {
|
|
4033
4141
|
if (vtContext.isTransitioning && !vtContext.flushSync) {
|
|
4034
4142
|
setRenderDfd(new Deferred());
|
|
4035
4143
|
}
|
|
4036
4144
|
}, [vtContext]);
|
|
4037
|
-
|
|
4145
|
+
React3.useEffect(() => {
|
|
4038
4146
|
if (renderDfd && pendingState && router2.window) {
|
|
4039
4147
|
let newState = pendingState;
|
|
4040
4148
|
let renderPromise = renderDfd.promise;
|
|
4041
4149
|
let transition2 = router2.window.document.startViewTransition(async () => {
|
|
4042
|
-
|
|
4150
|
+
React3.startTransition(() => setStateImpl(newState));
|
|
4043
4151
|
await renderPromise;
|
|
4044
4152
|
});
|
|
4045
4153
|
transition2.finished.finally(() => {
|
|
@@ -4051,12 +4159,12 @@ function RouterProvider({
|
|
|
4051
4159
|
setTransition(transition2);
|
|
4052
4160
|
}
|
|
4053
4161
|
}, [pendingState, renderDfd, router2.window]);
|
|
4054
|
-
|
|
4162
|
+
React3.useEffect(() => {
|
|
4055
4163
|
if (renderDfd && pendingState && state.location.key === pendingState.location.key) {
|
|
4056
4164
|
renderDfd.resolve();
|
|
4057
4165
|
}
|
|
4058
4166
|
}, [renderDfd, transition, state.location, pendingState]);
|
|
4059
|
-
|
|
4167
|
+
React3.useEffect(() => {
|
|
4060
4168
|
if (!vtContext.isTransitioning && interruption) {
|
|
4061
4169
|
setPendingState(interruption.state);
|
|
4062
4170
|
setVtContext({
|
|
@@ -4068,7 +4176,7 @@ function RouterProvider({
|
|
|
4068
4176
|
setInterruption(void 0);
|
|
4069
4177
|
}
|
|
4070
4178
|
}, [vtContext.isTransitioning, interruption]);
|
|
4071
|
-
let navigator2 =
|
|
4179
|
+
let navigator2 = React3.useMemo(() => {
|
|
4072
4180
|
return {
|
|
4073
4181
|
createHref: router2.createHref,
|
|
4074
4182
|
encodeLocation: router2.encodeLocation,
|
|
@@ -4085,7 +4193,7 @@ function RouterProvider({
|
|
|
4085
4193
|
};
|
|
4086
4194
|
}, [router2]);
|
|
4087
4195
|
let basename = router2.basename || "/";
|
|
4088
|
-
let dataRouterContext =
|
|
4196
|
+
let dataRouterContext = React3.useMemo(
|
|
4089
4197
|
() => ({
|
|
4090
4198
|
router: router2,
|
|
4091
4199
|
navigator: navigator2,
|
|
@@ -4094,7 +4202,7 @@ function RouterProvider({
|
|
|
4094
4202
|
}),
|
|
4095
4203
|
[router2, navigator2, basename]
|
|
4096
4204
|
);
|
|
4097
|
-
return /* @__PURE__ */
|
|
4205
|
+
return /* @__PURE__ */ React3.createElement(React3.Fragment, null, /* @__PURE__ */ React3.createElement(DataRouterContext.Provider, { value: dataRouterContext }, /* @__PURE__ */ React3.createElement(DataRouterStateContext.Provider, { value: state }, /* @__PURE__ */ React3.createElement(FetchersContext.Provider, { value: fetcherData.current }, /* @__PURE__ */ React3.createElement(ViewTransitionContext.Provider, { value: vtContext }, /* @__PURE__ */ React3.createElement(
|
|
4098
4206
|
Router,
|
|
4099
4207
|
{
|
|
4100
4208
|
basename,
|
|
@@ -4102,7 +4210,7 @@ function RouterProvider({
|
|
|
4102
4210
|
navigationType: state.historyAction,
|
|
4103
4211
|
navigator: navigator2
|
|
4104
4212
|
},
|
|
4105
|
-
/* @__PURE__ */
|
|
4213
|
+
/* @__PURE__ */ React3.createElement(
|
|
4106
4214
|
MemoizedDataRoutes,
|
|
4107
4215
|
{
|
|
4108
4216
|
routes: router2.routes,
|
|
@@ -4112,7 +4220,7 @@ function RouterProvider({
|
|
|
4112
4220
|
)
|
|
4113
4221
|
))))), null);
|
|
4114
4222
|
}
|
|
4115
|
-
var MemoizedDataRoutes =
|
|
4223
|
+
var MemoizedDataRoutes = React3.memo(DataRoutes);
|
|
4116
4224
|
function DataRoutes({
|
|
4117
4225
|
routes,
|
|
4118
4226
|
future,
|
|
@@ -4133,7 +4241,7 @@ function Router({
|
|
|
4133
4241
|
`You cannot render a <Router> inside another <Router>. You should never have more than one in your app.`
|
|
4134
4242
|
);
|
|
4135
4243
|
let basename = basenameProp.replace(/^\/*/, "/");
|
|
4136
|
-
let navigationContext =
|
|
4244
|
+
let navigationContext = React3.useMemo(
|
|
4137
4245
|
() => ({
|
|
4138
4246
|
basename,
|
|
4139
4247
|
navigator: navigator2,
|
|
@@ -4152,7 +4260,7 @@ function Router({
|
|
|
4152
4260
|
state = null,
|
|
4153
4261
|
key = "default"
|
|
4154
4262
|
} = locationProp;
|
|
4155
|
-
let locationContext =
|
|
4263
|
+
let locationContext = React3.useMemo(() => {
|
|
4156
4264
|
let trailingPathname = stripBasename(pathname, basename);
|
|
4157
4265
|
if (trailingPathname == null) {
|
|
4158
4266
|
return null;
|
|
@@ -4175,11 +4283,11 @@ function Router({
|
|
|
4175
4283
|
if (locationContext == null) {
|
|
4176
4284
|
return null;
|
|
4177
4285
|
}
|
|
4178
|
-
return /* @__PURE__ */
|
|
4286
|
+
return /* @__PURE__ */ React3.createElement(NavigationContext.Provider, { value: navigationContext }, /* @__PURE__ */ React3.createElement(LocationContext.Provider, { children, value: locationContext }));
|
|
4179
4287
|
}
|
|
4180
4288
|
|
|
4181
4289
|
// lib/dom/ssr/components.tsx
|
|
4182
|
-
var
|
|
4290
|
+
var React9 = __toESM(require("react"));
|
|
4183
4291
|
|
|
4184
4292
|
// lib/dom/ssr/invariant.ts
|
|
4185
4293
|
function invariant2(value, message) {
|
|
@@ -4282,7 +4390,7 @@ function createHtml(html) {
|
|
|
4282
4390
|
}
|
|
4283
4391
|
|
|
4284
4392
|
// lib/dom/ssr/single-fetch.tsx
|
|
4285
|
-
var
|
|
4393
|
+
var React4 = __toESM(require("react"));
|
|
4286
4394
|
var import_turbo_stream = require("turbo-stream");
|
|
4287
4395
|
|
|
4288
4396
|
// lib/dom/ssr/data.ts
|
|
@@ -4309,20 +4417,54 @@ async function createRequestInit(request) {
|
|
|
4309
4417
|
// lib/dom/ssr/single-fetch.tsx
|
|
4310
4418
|
var SingleFetchRedirectSymbol = Symbol("SingleFetchRedirect");
|
|
4311
4419
|
function getSingleFetchDataStrategy(manifest, routeModules, getRouter) {
|
|
4312
|
-
return async (
|
|
4420
|
+
return async (args) => {
|
|
4421
|
+
let { request, matches, fetcherKey } = args;
|
|
4313
4422
|
if (request.method !== "GET") {
|
|
4314
|
-
return
|
|
4423
|
+
return runMiddlewarePipeline(
|
|
4424
|
+
args,
|
|
4425
|
+
matches.findIndex((m) => m.shouldLoad),
|
|
4426
|
+
false,
|
|
4427
|
+
async (keyedResults) => {
|
|
4428
|
+
let results = await singleFetchActionStrategy(request, matches);
|
|
4429
|
+
Object.assign(keyedResults, results);
|
|
4430
|
+
}
|
|
4431
|
+
);
|
|
4315
4432
|
}
|
|
4316
4433
|
if (fetcherKey) {
|
|
4317
|
-
return
|
|
4434
|
+
return runMiddlewarePipeline(
|
|
4435
|
+
args,
|
|
4436
|
+
matches.findIndex((m) => m.shouldLoad),
|
|
4437
|
+
false,
|
|
4438
|
+
async (keyedResults) => {
|
|
4439
|
+
let results = await singleFetchLoaderFetcherStrategy(
|
|
4440
|
+
request,
|
|
4441
|
+
matches
|
|
4442
|
+
);
|
|
4443
|
+
Object.assign(keyedResults, results);
|
|
4444
|
+
}
|
|
4445
|
+
);
|
|
4318
4446
|
}
|
|
4319
|
-
|
|
4447
|
+
let lowestLoadingIndex = getLowestLoadingIndex(
|
|
4320
4448
|
manifest,
|
|
4321
4449
|
routeModules,
|
|
4322
4450
|
getRouter(),
|
|
4323
|
-
request,
|
|
4324
4451
|
matches
|
|
4325
4452
|
);
|
|
4453
|
+
return runMiddlewarePipeline(
|
|
4454
|
+
args,
|
|
4455
|
+
lowestLoadingIndex,
|
|
4456
|
+
false,
|
|
4457
|
+
async (keyedResults) => {
|
|
4458
|
+
let results = await singleFetchLoaderNavigationStrategy(
|
|
4459
|
+
manifest,
|
|
4460
|
+
routeModules,
|
|
4461
|
+
getRouter(),
|
|
4462
|
+
request,
|
|
4463
|
+
matches
|
|
4464
|
+
);
|
|
4465
|
+
Object.assign(keyedResults, results);
|
|
4466
|
+
}
|
|
4467
|
+
);
|
|
4326
4468
|
};
|
|
4327
4469
|
}
|
|
4328
4470
|
async function singleFetchActionStrategy(request, matches) {
|
|
@@ -4352,6 +4494,20 @@ async function singleFetchActionStrategy(request, matches) {
|
|
|
4352
4494
|
}
|
|
4353
4495
|
};
|
|
4354
4496
|
}
|
|
4497
|
+
function isOptedOut(manifestRoute, routeModule, match, router2) {
|
|
4498
|
+
return match.route.id in router2.state.loaderData && manifestRoute && manifestRoute.hasLoader && routeModule && routeModule.shouldRevalidate;
|
|
4499
|
+
}
|
|
4500
|
+
function getLowestLoadingIndex(manifest, routeModules, router2, matches) {
|
|
4501
|
+
let tailIdx = [...matches].reverse().findIndex(
|
|
4502
|
+
(m) => m.shouldLoad || !isOptedOut(
|
|
4503
|
+
manifest.routes[m.route.id],
|
|
4504
|
+
routeModules[m.route.id],
|
|
4505
|
+
m,
|
|
4506
|
+
router2
|
|
4507
|
+
)
|
|
4508
|
+
);
|
|
4509
|
+
return tailIdx < 0 ? 0 : matches.length - 1 - tailIdx;
|
|
4510
|
+
}
|
|
4355
4511
|
async function singleFetchLoaderNavigationStrategy(manifest, routeModules, router2, request, matches) {
|
|
4356
4512
|
let routesParams = /* @__PURE__ */ new Set();
|
|
4357
4513
|
let foundOptOutRoute = false;
|
|
@@ -4370,7 +4526,7 @@ async function singleFetchLoaderNavigationStrategy(manifest, routeModules, route
|
|
|
4370
4526
|
if (!router2.state.initialized) {
|
|
4371
4527
|
return;
|
|
4372
4528
|
}
|
|
4373
|
-
if (
|
|
4529
|
+
if (isOptedOut(manifestRoute, routeModules[m.route.id], m, router2)) {
|
|
4374
4530
|
foundOptOutRoute = true;
|
|
4375
4531
|
return;
|
|
4376
4532
|
}
|
|
@@ -4546,7 +4702,7 @@ function unwrapSingleFetchResult(result, routeId) {
|
|
|
4546
4702
|
if (result.replace) {
|
|
4547
4703
|
headers["X-Remix-Replace"] = "yes";
|
|
4548
4704
|
}
|
|
4549
|
-
|
|
4705
|
+
return redirect(result.redirect, { status: result.status, headers });
|
|
4550
4706
|
} else if ("data" in result) {
|
|
4551
4707
|
return result.data;
|
|
4552
4708
|
} else {
|
|
@@ -4582,14 +4738,14 @@ function createDeferred2() {
|
|
|
4582
4738
|
}
|
|
4583
4739
|
|
|
4584
4740
|
// lib/dom/ssr/fog-of-war.ts
|
|
4585
|
-
var
|
|
4741
|
+
var React8 = __toESM(require("react"));
|
|
4586
4742
|
|
|
4587
4743
|
// lib/dom/ssr/routes.tsx
|
|
4588
|
-
var
|
|
4744
|
+
var React7 = __toESM(require("react"));
|
|
4589
4745
|
|
|
4590
4746
|
// lib/dom/ssr/errorBoundaries.tsx
|
|
4591
|
-
var
|
|
4592
|
-
var RemixErrorBoundary = class extends
|
|
4747
|
+
var React5 = __toESM(require("react"));
|
|
4748
|
+
var RemixErrorBoundary = class extends React5.Component {
|
|
4593
4749
|
constructor(props) {
|
|
4594
4750
|
super(props);
|
|
4595
4751
|
this.state = { error: props.error || null, location: props.location };
|
|
@@ -4605,7 +4761,7 @@ var RemixErrorBoundary = class extends React6.Component {
|
|
|
4605
4761
|
}
|
|
4606
4762
|
render() {
|
|
4607
4763
|
if (this.state.error) {
|
|
4608
|
-
return /* @__PURE__ */
|
|
4764
|
+
return /* @__PURE__ */ React5.createElement(
|
|
4609
4765
|
RemixRootDefaultErrorBoundary,
|
|
4610
4766
|
{
|
|
4611
4767
|
error: this.state.error,
|
|
@@ -4622,7 +4778,7 @@ function RemixRootDefaultErrorBoundary({
|
|
|
4622
4778
|
isOutsideRemixApp
|
|
4623
4779
|
}) {
|
|
4624
4780
|
console.error(error);
|
|
4625
|
-
let heyDeveloper = /* @__PURE__ */
|
|
4781
|
+
let heyDeveloper = /* @__PURE__ */ React5.createElement(
|
|
4626
4782
|
"script",
|
|
4627
4783
|
{
|
|
4628
4784
|
dangerouslySetInnerHTML: {
|
|
@@ -4635,7 +4791,7 @@ function RemixRootDefaultErrorBoundary({
|
|
|
4635
4791
|
}
|
|
4636
4792
|
);
|
|
4637
4793
|
if (isRouteErrorResponse(error)) {
|
|
4638
|
-
return /* @__PURE__ */
|
|
4794
|
+
return /* @__PURE__ */ React5.createElement(BoundaryShell, { title: "Unhandled Thrown Response!" }, /* @__PURE__ */ React5.createElement("h1", { style: { fontSize: "24px" } }, error.status, " ", error.statusText), heyDeveloper);
|
|
4639
4795
|
}
|
|
4640
4796
|
let errorInstance;
|
|
4641
4797
|
if (error instanceof Error) {
|
|
@@ -4644,14 +4800,14 @@ function RemixRootDefaultErrorBoundary({
|
|
|
4644
4800
|
let errorString = error == null ? "Unknown Error" : typeof error === "object" && "toString" in error ? error.toString() : JSON.stringify(error);
|
|
4645
4801
|
errorInstance = new Error(errorString);
|
|
4646
4802
|
}
|
|
4647
|
-
return /* @__PURE__ */
|
|
4803
|
+
return /* @__PURE__ */ React5.createElement(
|
|
4648
4804
|
BoundaryShell,
|
|
4649
4805
|
{
|
|
4650
4806
|
title: "Application Error!",
|
|
4651
4807
|
isOutsideRemixApp
|
|
4652
4808
|
},
|
|
4653
|
-
/* @__PURE__ */
|
|
4654
|
-
/* @__PURE__ */
|
|
4809
|
+
/* @__PURE__ */ React5.createElement("h1", { style: { fontSize: "24px" } }, "Application Error"),
|
|
4810
|
+
/* @__PURE__ */ React5.createElement(
|
|
4655
4811
|
"pre",
|
|
4656
4812
|
{
|
|
4657
4813
|
style: {
|
|
@@ -4676,19 +4832,19 @@ function BoundaryShell({
|
|
|
4676
4832
|
if (routeModules.root?.Layout && !isOutsideRemixApp) {
|
|
4677
4833
|
return children;
|
|
4678
4834
|
}
|
|
4679
|
-
return /* @__PURE__ */
|
|
4835
|
+
return /* @__PURE__ */ React5.createElement("html", { lang: "en" }, /* @__PURE__ */ React5.createElement("head", null, /* @__PURE__ */ React5.createElement("meta", { charSet: "utf-8" }), /* @__PURE__ */ React5.createElement(
|
|
4680
4836
|
"meta",
|
|
4681
4837
|
{
|
|
4682
4838
|
name: "viewport",
|
|
4683
4839
|
content: "width=device-width,initial-scale=1,viewport-fit=cover"
|
|
4684
4840
|
}
|
|
4685
|
-
), /* @__PURE__ */
|
|
4841
|
+
), /* @__PURE__ */ React5.createElement("title", null, title)), /* @__PURE__ */ React5.createElement("body", null, /* @__PURE__ */ React5.createElement("main", { style: { fontFamily: "system-ui, sans-serif", padding: "2rem" } }, children, renderScripts ? /* @__PURE__ */ React5.createElement(Scripts, null) : null)));
|
|
4686
4842
|
}
|
|
4687
4843
|
|
|
4688
4844
|
// lib/dom/ssr/fallback.tsx
|
|
4689
|
-
var
|
|
4845
|
+
var React6 = __toESM(require("react"));
|
|
4690
4846
|
function RemixRootDefaultHydrateFallback() {
|
|
4691
|
-
return /* @__PURE__ */
|
|
4847
|
+
return /* @__PURE__ */ React6.createElement(BoundaryShell, { title: "Loading...", renderScripts: true }, /* @__PURE__ */ React6.createElement(
|
|
4692
4848
|
"script",
|
|
4693
4849
|
{
|
|
4694
4850
|
dangerouslySetInnerHTML: {
|
|
@@ -4722,17 +4878,17 @@ function groupRoutesByParentId(manifest) {
|
|
|
4722
4878
|
function getRouteComponents(route, routeModule, isSpaMode) {
|
|
4723
4879
|
let Component4 = getRouteModuleComponent(routeModule);
|
|
4724
4880
|
let HydrateFallback = routeModule.HydrateFallback && (!isSpaMode || route.id === "root") ? routeModule.HydrateFallback : route.id === "root" ? RemixRootDefaultHydrateFallback : void 0;
|
|
4725
|
-
let ErrorBoundary = routeModule.ErrorBoundary ? routeModule.ErrorBoundary : route.id === "root" ? () => /* @__PURE__ */
|
|
4881
|
+
let ErrorBoundary = routeModule.ErrorBoundary ? routeModule.ErrorBoundary : route.id === "root" ? () => /* @__PURE__ */ React7.createElement(RemixRootDefaultErrorBoundary, { error: useRouteError() }) : void 0;
|
|
4726
4882
|
if (route.id === "root" && routeModule.Layout) {
|
|
4727
4883
|
return {
|
|
4728
4884
|
...Component4 ? {
|
|
4729
|
-
element: /* @__PURE__ */
|
|
4885
|
+
element: /* @__PURE__ */ React7.createElement(routeModule.Layout, null, /* @__PURE__ */ React7.createElement(Component4, null))
|
|
4730
4886
|
} : { Component: Component4 },
|
|
4731
4887
|
...ErrorBoundary ? {
|
|
4732
|
-
errorElement: /* @__PURE__ */
|
|
4888
|
+
errorElement: /* @__PURE__ */ React7.createElement(routeModule.Layout, null, /* @__PURE__ */ React7.createElement(ErrorBoundary, null))
|
|
4733
4889
|
} : { ErrorBoundary },
|
|
4734
4890
|
...HydrateFallback ? {
|
|
4735
|
-
hydrateFallbackElement: /* @__PURE__ */
|
|
4891
|
+
hydrateFallbackElement: /* @__PURE__ */ React7.createElement(routeModule.Layout, null, /* @__PURE__ */ React7.createElement(HydrateFallback, null))
|
|
4736
4892
|
} : { HydrateFallback }
|
|
4737
4893
|
};
|
|
4738
4894
|
}
|
|
@@ -4807,6 +4963,7 @@ function createClientRoutes(manifest, routeModulesCache, initialState, isSpaMode
|
|
|
4807
4963
|
Object.assign(dataRoute, {
|
|
4808
4964
|
...dataRoute,
|
|
4809
4965
|
...getRouteComponents(route, routeModule, isSpaMode),
|
|
4966
|
+
middleware: routeModule.clientMiddleware,
|
|
4810
4967
|
handle: routeModule.handle,
|
|
4811
4968
|
shouldRevalidate: getShouldRevalidateFunction(
|
|
4812
4969
|
routeModule,
|
|
@@ -4819,7 +4976,7 @@ function createClientRoutes(manifest, routeModulesCache, initialState, isSpaMode
|
|
|
4819
4976
|
let hasInitialError = initialState && initialState.errors && route.id in initialState.errors;
|
|
4820
4977
|
let initialError = hasInitialError ? initialState?.errors?.[route.id] : void 0;
|
|
4821
4978
|
let isHydrationRequest = needsRevalidation == null && (routeModule.clientLoader?.hydrate === true || !route.hasLoader);
|
|
4822
|
-
dataRoute.loader = async ({ request, params }, singleFetch) => {
|
|
4979
|
+
dataRoute.loader = async ({ request, params, context }, singleFetch) => {
|
|
4823
4980
|
try {
|
|
4824
4981
|
let result = await prefetchStylesAndCallHandler(async () => {
|
|
4825
4982
|
invariant2(
|
|
@@ -4833,6 +4990,7 @@ function createClientRoutes(manifest, routeModulesCache, initialState, isSpaMode
|
|
|
4833
4990
|
return routeModule.clientLoader({
|
|
4834
4991
|
request,
|
|
4835
4992
|
params,
|
|
4993
|
+
context,
|
|
4836
4994
|
async serverLoader() {
|
|
4837
4995
|
preventInvalidServerHandlerCall("loader", route, isSpaMode);
|
|
4838
4996
|
if (isHydrationRequest) {
|
|
@@ -4857,7 +5015,7 @@ function createClientRoutes(manifest, routeModulesCache, initialState, isSpaMode
|
|
|
4857
5015
|
routeModule,
|
|
4858
5016
|
isSpaMode
|
|
4859
5017
|
);
|
|
4860
|
-
dataRoute.action = ({ request, params }, singleFetch) => {
|
|
5018
|
+
dataRoute.action = ({ request, params, context }, singleFetch) => {
|
|
4861
5019
|
return prefetchStylesAndCallHandler(async () => {
|
|
4862
5020
|
invariant2(
|
|
4863
5021
|
routeModule,
|
|
@@ -4872,6 +5030,7 @@ function createClientRoutes(manifest, routeModulesCache, initialState, isSpaMode
|
|
|
4872
5030
|
return routeModule.clientAction({
|
|
4873
5031
|
request,
|
|
4874
5032
|
params,
|
|
5033
|
+
context,
|
|
4875
5034
|
async serverAction() {
|
|
4876
5035
|
preventInvalidServerHandlerCall("action", route, isSpaMode);
|
|
4877
5036
|
return fetchServerAction(singleFetch);
|
|
@@ -4881,13 +5040,13 @@ function createClientRoutes(manifest, routeModulesCache, initialState, isSpaMode
|
|
|
4881
5040
|
};
|
|
4882
5041
|
} else {
|
|
4883
5042
|
if (!route.hasClientLoader) {
|
|
4884
|
-
dataRoute.loader = (
|
|
5043
|
+
dataRoute.loader = (_, singleFetch) => prefetchStylesAndCallHandler(() => {
|
|
4885
5044
|
if (isSpaMode) return Promise.resolve(null);
|
|
4886
5045
|
return fetchServerLoader(singleFetch);
|
|
4887
5046
|
});
|
|
4888
5047
|
}
|
|
4889
5048
|
if (!route.hasClientAction) {
|
|
4890
|
-
dataRoute.action = (
|
|
5049
|
+
dataRoute.action = (_, singleFetch) => prefetchStylesAndCallHandler(() => {
|
|
4891
5050
|
if (isSpaMode) {
|
|
4892
5051
|
throw noActionDefinedError("clientAction", route.id);
|
|
4893
5052
|
}
|
|
@@ -4923,6 +5082,7 @@ function createClientRoutes(manifest, routeModulesCache, initialState, isSpaMode
|
|
|
4923
5082
|
return {
|
|
4924
5083
|
...lazyRoute.loader ? { loader: lazyRoute.loader } : {},
|
|
4925
5084
|
...lazyRoute.action ? { action: lazyRoute.action } : {},
|
|
5085
|
+
middleware: mod.clientMiddleware,
|
|
4926
5086
|
hasErrorBoundary: lazyRoute.hasErrorBoundary,
|
|
4927
5087
|
shouldRevalidate: getShouldRevalidateFunction(
|
|
4928
5088
|
lazyRoute,
|
|
@@ -4980,6 +5140,7 @@ async function loadRouteModuleWithBlockingLinks(route, routeModules) {
|
|
|
4980
5140
|
return {
|
|
4981
5141
|
Component: getRouteModuleComponent(routeModule),
|
|
4982
5142
|
ErrorBoundary: routeModule.ErrorBoundary,
|
|
5143
|
+
clientMiddleware: routeModule.clientMiddleware,
|
|
4983
5144
|
clientAction: routeModule.clientAction,
|
|
4984
5145
|
clientLoader: routeModule.clientLoader,
|
|
4985
5146
|
handle: routeModule.handle,
|
|
@@ -5050,7 +5211,7 @@ function getPatchRoutesOnNavigationFunction(manifest, routeModules, isSpaMode, b
|
|
|
5050
5211
|
};
|
|
5051
5212
|
}
|
|
5052
5213
|
function useFogOFWarDiscovery(router2, manifest, routeModules, isSpaMode) {
|
|
5053
|
-
|
|
5214
|
+
React8.useEffect(() => {
|
|
5054
5215
|
if (!isFogOfWarEnabled(isSpaMode) || navigator.connection?.saveData === true) {
|
|
5055
5216
|
return;
|
|
5056
5217
|
}
|
|
@@ -5179,7 +5340,7 @@ function debounce(callback, wait) {
|
|
|
5179
5340
|
|
|
5180
5341
|
// lib/dom/ssr/components.tsx
|
|
5181
5342
|
function useDataRouterContext() {
|
|
5182
|
-
let context =
|
|
5343
|
+
let context = React9.useContext(DataRouterContext);
|
|
5183
5344
|
invariant2(
|
|
5184
5345
|
context,
|
|
5185
5346
|
"You must render this element inside a <DataRouterContext.Provider> element"
|
|
@@ -5187,17 +5348,17 @@ function useDataRouterContext() {
|
|
|
5187
5348
|
return context;
|
|
5188
5349
|
}
|
|
5189
5350
|
function useDataRouterStateContext() {
|
|
5190
|
-
let context =
|
|
5351
|
+
let context = React9.useContext(DataRouterStateContext);
|
|
5191
5352
|
invariant2(
|
|
5192
5353
|
context,
|
|
5193
5354
|
"You must render this element inside a <DataRouterStateContext.Provider> element"
|
|
5194
5355
|
);
|
|
5195
5356
|
return context;
|
|
5196
5357
|
}
|
|
5197
|
-
var FrameworkContext =
|
|
5358
|
+
var FrameworkContext = React9.createContext(void 0);
|
|
5198
5359
|
FrameworkContext.displayName = "FrameworkContext";
|
|
5199
5360
|
function useFrameworkContext() {
|
|
5200
|
-
let context =
|
|
5361
|
+
let context = React9.useContext(FrameworkContext);
|
|
5201
5362
|
invariant2(
|
|
5202
5363
|
context,
|
|
5203
5364
|
"You must render this element inside a <HydratedRouter> element"
|
|
@@ -5224,10 +5385,10 @@ function Scripts(props) {
|
|
|
5224
5385
|
renderMeta.didRenderScripts = true;
|
|
5225
5386
|
}
|
|
5226
5387
|
let matches = getActiveMatches(routerMatches, null, isSpaMode);
|
|
5227
|
-
|
|
5388
|
+
React9.useEffect(() => {
|
|
5228
5389
|
isHydrated = true;
|
|
5229
5390
|
}, []);
|
|
5230
|
-
let initialScripts =
|
|
5391
|
+
let initialScripts = React9.useMemo(() => {
|
|
5231
5392
|
let streamScript = "window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamController = controller;}}).pipeThrough(new TextEncoderStream());";
|
|
5232
5393
|
let contextScript = staticContext ? `window.__reactRouterContext = ${serverHandoffString};${streamScript}` : " ";
|
|
5233
5394
|
let routeModulesScript = !isStatic ? " " : `${manifest.hmr?.runtime ? `import ${JSON.stringify(manifest.hmr.runtime)};` : ""}${!enableFogOfWar ? `import ${JSON.stringify(manifest.url)}` : ""};
|
|
@@ -5247,7 +5408,7 @@ ${matches.map(
|
|
|
5247
5408
|
window.__reactRouterRouteModules = {${matches.map((match, index) => `${JSON.stringify(match.route.id)}:route${index}`).join(",")}};
|
|
5248
5409
|
|
|
5249
5410
|
import(${JSON.stringify(manifest.entry.module)});`;
|
|
5250
|
-
return /* @__PURE__ */
|
|
5411
|
+
return /* @__PURE__ */ React9.createElement(React9.Fragment, null, /* @__PURE__ */ React9.createElement(
|
|
5251
5412
|
"script",
|
|
5252
5413
|
{
|
|
5253
5414
|
...props,
|
|
@@ -5255,7 +5416,7 @@ import(${JSON.stringify(manifest.entry.module)});`;
|
|
|
5255
5416
|
dangerouslySetInnerHTML: createHtml(contextScript),
|
|
5256
5417
|
type: void 0
|
|
5257
5418
|
}
|
|
5258
|
-
), /* @__PURE__ */
|
|
5419
|
+
), /* @__PURE__ */ React9.createElement(
|
|
5259
5420
|
"script",
|
|
5260
5421
|
{
|
|
5261
5422
|
...props,
|
|
@@ -5271,21 +5432,21 @@ import(${JSON.stringify(manifest.entry.module)});`;
|
|
|
5271
5432
|
return route ? (route.imports || []).concat([route.module]) : [];
|
|
5272
5433
|
}).flat(1);
|
|
5273
5434
|
let preloads = isHydrated ? [] : manifest.entry.imports.concat(routePreloads);
|
|
5274
|
-
return isHydrated ? null : /* @__PURE__ */
|
|
5435
|
+
return isHydrated ? null : /* @__PURE__ */ React9.createElement(React9.Fragment, null, !enableFogOfWar ? /* @__PURE__ */ React9.createElement(
|
|
5275
5436
|
"link",
|
|
5276
5437
|
{
|
|
5277
5438
|
rel: "modulepreload",
|
|
5278
5439
|
href: manifest.url,
|
|
5279
5440
|
crossOrigin: props.crossOrigin
|
|
5280
5441
|
}
|
|
5281
|
-
) : null, /* @__PURE__ */
|
|
5442
|
+
) : null, /* @__PURE__ */ React9.createElement(
|
|
5282
5443
|
"link",
|
|
5283
5444
|
{
|
|
5284
5445
|
rel: "modulepreload",
|
|
5285
5446
|
href: manifest.entry.module,
|
|
5286
5447
|
crossOrigin: props.crossOrigin
|
|
5287
5448
|
}
|
|
5288
|
-
), dedupe(preloads).map((path) => /* @__PURE__ */
|
|
5449
|
+
), dedupe(preloads).map((path) => /* @__PURE__ */ React9.createElement(
|
|
5289
5450
|
"link",
|
|
5290
5451
|
{
|
|
5291
5452
|
key: path,
|
|
@@ -5338,11 +5499,11 @@ function deserializeErrors(errors) {
|
|
|
5338
5499
|
|
|
5339
5500
|
// lib/dom-export/dom-router-provider.tsx
|
|
5340
5501
|
function RouterProvider2(props) {
|
|
5341
|
-
return /* @__PURE__ */
|
|
5502
|
+
return /* @__PURE__ */ React10.createElement(RouterProvider, { flushSync: ReactDOM.flushSync, ...props });
|
|
5342
5503
|
}
|
|
5343
5504
|
|
|
5344
5505
|
// lib/dom-export/hydrated-router.tsx
|
|
5345
|
-
var
|
|
5506
|
+
var React11 = __toESM(require("react"));
|
|
5346
5507
|
var ssrInfo = null;
|
|
5347
5508
|
var router = null;
|
|
5348
5509
|
function initSsrInfo() {
|
|
@@ -5357,7 +5518,9 @@ function initSsrInfo() {
|
|
|
5357
5518
|
};
|
|
5358
5519
|
}
|
|
5359
5520
|
}
|
|
5360
|
-
function createHydratedRouter(
|
|
5521
|
+
function createHydratedRouter({
|
|
5522
|
+
context
|
|
5523
|
+
}) {
|
|
5361
5524
|
initSsrInfo();
|
|
5362
5525
|
if (!ssrInfo) {
|
|
5363
5526
|
throw new Error(
|
|
@@ -5423,9 +5586,10 @@ function createHydratedRouter() {
|
|
|
5423
5586
|
routes,
|
|
5424
5587
|
history: createBrowserHistory(),
|
|
5425
5588
|
basename: ssrInfo.context.basename,
|
|
5589
|
+
context,
|
|
5426
5590
|
hydrationData,
|
|
5427
5591
|
mapRouteProperties,
|
|
5428
|
-
dataStrategy: getSingleFetchDataStrategy(
|
|
5592
|
+
dataStrategy: ssrInfo.context.isSpaMode ? void 0 : getSingleFetchDataStrategy(
|
|
5429
5593
|
ssrInfo.manifest,
|
|
5430
5594
|
ssrInfo.routeModules,
|
|
5431
5595
|
() => router2
|
|
@@ -5447,11 +5611,11 @@ function createHydratedRouter() {
|
|
|
5447
5611
|
window.__reactRouterDataRouter = router2;
|
|
5448
5612
|
return router2;
|
|
5449
5613
|
}
|
|
5450
|
-
function HydratedRouter() {
|
|
5614
|
+
function HydratedRouter(props) {
|
|
5451
5615
|
if (!router) {
|
|
5452
|
-
router = createHydratedRouter();
|
|
5616
|
+
router = createHydratedRouter({ context: props.context });
|
|
5453
5617
|
}
|
|
5454
|
-
let [criticalCss, setCriticalCss] =
|
|
5618
|
+
let [criticalCss, setCriticalCss] = React11.useState(
|
|
5455
5619
|
process.env.NODE_ENV === "development" ? ssrInfo?.context.criticalCss : void 0
|
|
5456
5620
|
);
|
|
5457
5621
|
if (process.env.NODE_ENV === "development") {
|
|
@@ -5459,14 +5623,14 @@ function HydratedRouter() {
|
|
|
5459
5623
|
window.__reactRouterClearCriticalCss = () => setCriticalCss(void 0);
|
|
5460
5624
|
}
|
|
5461
5625
|
}
|
|
5462
|
-
let [location, setLocation] =
|
|
5463
|
-
|
|
5626
|
+
let [location, setLocation] = React11.useState(router.state.location);
|
|
5627
|
+
React11.useLayoutEffect(() => {
|
|
5464
5628
|
if (ssrInfo && ssrInfo.router && !ssrInfo.routerInitialized) {
|
|
5465
5629
|
ssrInfo.routerInitialized = true;
|
|
5466
5630
|
ssrInfo.router.initialize();
|
|
5467
5631
|
}
|
|
5468
5632
|
}, []);
|
|
5469
|
-
|
|
5633
|
+
React11.useLayoutEffect(() => {
|
|
5470
5634
|
if (ssrInfo && ssrInfo.router) {
|
|
5471
5635
|
return ssrInfo.router.subscribe((newState) => {
|
|
5472
5636
|
if (newState.location !== location) {
|
|
@@ -5485,7 +5649,7 @@ function HydratedRouter() {
|
|
|
5485
5649
|
return (
|
|
5486
5650
|
// This fragment is important to ensure we match the <ServerRouter> JSX
|
|
5487
5651
|
// structure so that useId values hydrate correctly
|
|
5488
|
-
/* @__PURE__ */
|
|
5652
|
+
/* @__PURE__ */ React11.createElement(React11.Fragment, null, /* @__PURE__ */ React11.createElement(
|
|
5489
5653
|
FrameworkContext.Provider,
|
|
5490
5654
|
{
|
|
5491
5655
|
value: {
|
|
@@ -5496,8 +5660,8 @@ function HydratedRouter() {
|
|
|
5496
5660
|
isSpaMode: ssrInfo.context.isSpaMode
|
|
5497
5661
|
}
|
|
5498
5662
|
},
|
|
5499
|
-
/* @__PURE__ */
|
|
5500
|
-
), /* @__PURE__ */
|
|
5663
|
+
/* @__PURE__ */ React11.createElement(RemixErrorBoundary, { location }, /* @__PURE__ */ React11.createElement(RouterProvider2, { router }))
|
|
5664
|
+
), /* @__PURE__ */ React11.createElement(React11.Fragment, null))
|
|
5501
5665
|
);
|
|
5502
5666
|
}
|
|
5503
5667
|
// Annotate the CommonJS export names for ESM import in node:
|