UNPKG

5.87 kBJavaScriptView Raw
1"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }/**
2 * react-router v7.14.1
3 *
4 * Copyright (c) Remix Software Inc.
5 *
6 * This source code is licensed under the MIT license found in the
7 * LICENSE.md file in the root directory of this source tree.
8 *
9 * @license MIT
10 */
11
12
13
14
15
16
17var _chunkYMKMFAYZjs = require('./chunk-YMKMFAYZ.js');
18
19// lib/dom/ssr/hydration.tsx
20function getHydrationData({
21 state,
22 routes,
23 getRouteInfo,
24 location,
25 basename,
26 isSpaMode
27}) {
28 let hydrationData = {
29 ...state,
30 loaderData: { ...state.loaderData }
31 };
32 let initialMatches = _chunkYMKMFAYZjs.matchRoutes.call(void 0, routes, location, basename);
33 if (initialMatches) {
34 for (let match of initialMatches) {
35 let routeId = match.route.id;
36 let routeInfo = getRouteInfo(routeId);
37 if (_chunkYMKMFAYZjs.shouldHydrateRouteLoader.call(void 0,
38 routeId,
39 routeInfo.clientLoader,
40 routeInfo.hasLoader,
41 isSpaMode
42 ) && (routeInfo.hasHydrateFallback || !routeInfo.hasLoader)) {
43 delete hydrationData.loaderData[routeId];
44 } else if (!routeInfo.hasLoader) {
45 hydrationData.loaderData[routeId] = null;
46 }
47 }
48 }
49 return hydrationData;
50}
51
52// lib/rsc/errorBoundaries.tsx
53var _react = require('react'); var _react2 = _interopRequireDefault(_react);
54var RSCRouterGlobalErrorBoundary = class extends _react2.default.Component {
55 constructor(props) {
56 super(props);
57 this.state = { error: null, location: props.location };
58 }
59 static getDerivedStateFromError(error) {
60 return { error };
61 }
62 static getDerivedStateFromProps(props, state) {
63 if (state.location !== props.location) {
64 return { error: null, location: props.location };
65 }
66 return { error: state.error, location: state.location };
67 }
68 render() {
69 if (this.state.error) {
70 return /* @__PURE__ */ _react2.default.createElement(
71 RSCDefaultRootErrorBoundaryImpl,
72 {
73 error: this.state.error,
74 renderAppShell: true
75 }
76 );
77 } else {
78 return this.props.children;
79 }
80 }
81};
82function ErrorWrapper({
83 renderAppShell,
84 title,
85 children
86}) {
87 if (!renderAppShell) {
88 return children;
89 }
90 return /* @__PURE__ */ _react2.default.createElement("html", { lang: "en" }, /* @__PURE__ */ _react2.default.createElement("head", null, /* @__PURE__ */ _react2.default.createElement("meta", { charSet: "utf-8" }), /* @__PURE__ */ _react2.default.createElement(
91 "meta",
92 {
93 name: "viewport",
94 content: "width=device-width,initial-scale=1,viewport-fit=cover"
95 }
96 ), /* @__PURE__ */ _react2.default.createElement("title", null, title)), /* @__PURE__ */ _react2.default.createElement("body", null, /* @__PURE__ */ _react2.default.createElement("main", { style: { fontFamily: "system-ui, sans-serif", padding: "2rem" } }, children)));
97}
98function RSCDefaultRootErrorBoundaryImpl({
99 error,
100 renderAppShell
101}) {
102 console.error(error);
103 let heyDeveloper = /* @__PURE__ */ _react2.default.createElement(
104 "script",
105 {
106 dangerouslySetInnerHTML: {
107 __html: `
108 console.log(
109 "\u{1F4BF} Hey developer \u{1F44B}. You can provide a way better UX than this when your app throws errors. Check out https://reactrouter.com/how-to/error-boundary for more information."
110 );
111 `
112 }
113 }
114 );
115 if (_chunkYMKMFAYZjs.isRouteErrorResponse.call(void 0, error)) {
116 return /* @__PURE__ */ _react2.default.createElement(
117 ErrorWrapper,
118 {
119 renderAppShell,
120 title: "Unhandled Thrown Response!"
121 },
122 /* @__PURE__ */ _react2.default.createElement("h1", { style: { fontSize: "24px" } }, error.status, " ", error.statusText),
123 _chunkYMKMFAYZjs.ENABLE_DEV_WARNINGS ? heyDeveloper : null
124 );
125 }
126 let errorInstance;
127 if (error instanceof Error) {
128 errorInstance = error;
129 } else {
130 let errorString = error == null ? "Unknown Error" : typeof error === "object" && "toString" in error ? error.toString() : JSON.stringify(error);
131 errorInstance = new Error(errorString);
132 }
133 return /* @__PURE__ */ _react2.default.createElement(ErrorWrapper, { renderAppShell, title: "Application Error!" }, /* @__PURE__ */ _react2.default.createElement("h1", { style: { fontSize: "24px" } }, "Application Error"), /* @__PURE__ */ _react2.default.createElement(
134 "pre",
135 {
136 style: {
137 padding: "2rem",
138 background: "hsla(10, 50%, 50%, 0.1)",
139 color: "red",
140 overflow: "auto"
141 }
142 },
143 errorInstance.stack
144 ), heyDeveloper);
145}
146function RSCDefaultRootErrorBoundary({
147 hasRootLayout
148}) {
149 let error = _chunkYMKMFAYZjs.useRouteError.call(void 0, );
150 if (hasRootLayout === void 0) {
151 throw new Error("Missing 'hasRootLayout' prop");
152 }
153 return /* @__PURE__ */ _react2.default.createElement(
154 RSCDefaultRootErrorBoundaryImpl,
155 {
156 renderAppShell: !hasRootLayout,
157 error
158 }
159 );
160}
161
162// lib/rsc/route-modules.ts
163function createRSCRouteModules(payload) {
164 const routeModules = {};
165 for (const match of payload.matches) {
166 populateRSCRouteModules(routeModules, match);
167 }
168 return routeModules;
169}
170function populateRSCRouteModules(routeModules, matches) {
171 matches = Array.isArray(matches) ? matches : [matches];
172 for (const match of matches) {
173 routeModules[match.id] = {
174 links: match.links,
175 meta: match.meta,
176 default: noopComponent
177 };
178 }
179}
180var noopComponent = () => null;
181
182
183
184
185
186
187
188exports.getHydrationData = getHydrationData; exports.RSCRouterGlobalErrorBoundary = RSCRouterGlobalErrorBoundary; exports.RSCDefaultRootErrorBoundary = RSCDefaultRootErrorBoundary; exports.createRSCRouteModules = createRSCRouteModules; exports.populateRSCRouteModules = populateRSCRouteModules;