next
Version:
The React Framework
151 lines (148 loc) • 6.14 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "default", {
enumerable: true,
get: function() {
return Error;
}
});
const _interop_require_default = require("@swc/helpers/_/_interop_require_default");
const _jsxruntime = require("react/jsx-runtime");
const _react = /*#__PURE__*/ _interop_require_default._(require("react"));
const _head = /*#__PURE__*/ _interop_require_default._(require("../shared/lib/head"));
const statusCodes = {
400: 'Bad Request',
404: 'This page could not be found',
405: 'Method Not Allowed',
500: 'Internal Server Error'
};
function _getInitialProps(param) {
let { req, res, err } = param;
const statusCode = res && res.statusCode ? res.statusCode : err ? err.statusCode : 404;
let hostname;
if (typeof window !== 'undefined') {
hostname = window.location.hostname;
} else if (req) {
const { getRequestMeta } = require('../server/request-meta');
const initUrl = getRequestMeta(req, 'initURL');
if (initUrl) {
const url = new URL(initUrl);
hostname = url.hostname;
}
}
return {
statusCode,
hostname
};
}
const styles = {
error: {
// https://github.com/sindresorhus/modern-normalize/blob/main/modern-normalize.css#L38-L52
fontFamily: 'system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"',
height: '100vh',
textAlign: 'center',
display: 'flex',
flexDirection: 'column',
alignItems: 'center',
justifyContent: 'center'
},
desc: {
lineHeight: '48px'
},
h1: {
display: 'inline-block',
margin: '0 20px 0 0',
paddingRight: 23,
fontSize: 24,
fontWeight: 500,
verticalAlign: 'top'
},
h2: {
fontSize: 14,
fontWeight: 400,
lineHeight: '28px'
},
wrap: {
display: 'inline-block'
}
};
class Error extends _react.default.Component {
render() {
const { statusCode, withDarkMode = true } = this.props;
const title = this.props.title || statusCodes[statusCode] || 'An unexpected error has occurred';
return /*#__PURE__*/ (0, _jsxruntime.jsxs)("div", {
style: styles.error,
children: [
/*#__PURE__*/ (0, _jsxruntime.jsx)(_head.default, {
children: /*#__PURE__*/ (0, _jsxruntime.jsx)("title", {
children: statusCode ? statusCode + ": " + title : 'Application error: a client-side exception has occurred'
})
}),
/*#__PURE__*/ (0, _jsxruntime.jsxs)("div", {
style: styles.desc,
children: [
/*#__PURE__*/ (0, _jsxruntime.jsx)("style", {
dangerouslySetInnerHTML: {
/* CSS minified from
body { margin: 0; color: #000; background: #fff; }
.next-error-h1 {
border-right: 1px solid rgba(0, 0, 0, .3);
}
${
withDarkMode
? `@media (prefers-color-scheme: dark) {
body { color: #fff; background: #000; }
.next-error-h1 {
border-right: 1px solid rgba(255, 255, 255, .3);
}
}`
: ''
}
*/ __html: "body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}" + (withDarkMode ? '@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}' : '')
}
}),
statusCode ? /*#__PURE__*/ (0, _jsxruntime.jsx)("h1", {
className: "next-error-h1",
style: styles.h1,
children: statusCode
}) : null,
/*#__PURE__*/ (0, _jsxruntime.jsx)("div", {
style: styles.wrap,
children: /*#__PURE__*/ (0, _jsxruntime.jsxs)("h2", {
style: styles.h2,
children: [
this.props.title || statusCode ? title : /*#__PURE__*/ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, {
children: [
"Application error: a client-side exception has occurred",
' ',
Boolean(this.props.hostname) && /*#__PURE__*/ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, {
children: [
"while loading ",
this.props.hostname
]
}),
' ',
"(see the browser console for more information)"
]
}),
"."
]
})
})
]
})
]
});
}
}
Error.displayName = 'ErrorPage';
Error.getInitialProps = _getInitialProps;
Error.origGetInitialProps = _getInitialProps;
if ((typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) && typeof exports.default.__esModule === 'undefined') {
Object.defineProperty(exports.default, '__esModule', { value: true });
Object.assign(exports.default, exports);
module.exports = exports.default;
}
//# sourceMappingURL=_error.js.map
;