including-modules
This commit is contained in:
+141
@@ -0,0 +1,141 @@
|
||||
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
||||
import React from 'react';
|
||||
import Head from '../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({ req, res, err }) {
|
||||
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'
|
||||
}
|
||||
};
|
||||
/**
|
||||
* `Error` component used for handling errors.
|
||||
*/ export default class Error extends React.Component {
|
||||
static{
|
||||
this.displayName = 'ErrorPage';
|
||||
}
|
||||
static{
|
||||
this.getInitialProps = _getInitialProps;
|
||||
}
|
||||
static{
|
||||
this.origGetInitialProps = _getInitialProps;
|
||||
}
|
||||
render() {
|
||||
const { statusCode, withDarkMode = true } = this.props;
|
||||
const title = this.props.title || statusCodes[statusCode] || 'An unexpected error has occurred';
|
||||
return /*#__PURE__*/ _jsxs("div", {
|
||||
style: styles.error,
|
||||
children: [
|
||||
/*#__PURE__*/ _jsx(Head, {
|
||||
children: /*#__PURE__*/ _jsx("title", {
|
||||
children: statusCode ? `${statusCode}: ${title}` : 'Application error: a client-side exception has occurred'
|
||||
})
|
||||
}),
|
||||
/*#__PURE__*/ _jsxs("div", {
|
||||
style: styles.desc,
|
||||
children: [
|
||||
/*#__PURE__*/ _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__*/ _jsx("h1", {
|
||||
className: "next-error-h1",
|
||||
style: styles.h1,
|
||||
children: statusCode
|
||||
}) : null,
|
||||
/*#__PURE__*/ _jsx("div", {
|
||||
style: styles.wrap,
|
||||
children: /*#__PURE__*/ _jsxs("h2", {
|
||||
style: styles.h2,
|
||||
children: [
|
||||
this.props.title || statusCode ? title : /*#__PURE__*/ _jsxs(_Fragment, {
|
||||
children: [
|
||||
"Application error: a client-side exception has occurred",
|
||||
' ',
|
||||
Boolean(this.props.hostname) && /*#__PURE__*/ _jsxs(_Fragment, {
|
||||
children: [
|
||||
"while loading ",
|
||||
this.props.hostname
|
||||
]
|
||||
}),
|
||||
' ',
|
||||
"(see the browser console for more information)"
|
||||
]
|
||||
}),
|
||||
"."
|
||||
]
|
||||
})
|
||||
})
|
||||
]
|
||||
})
|
||||
]
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
//# sourceMappingURL=_error.js.map
|
||||
Reference in New Issue
Block a user