UNPKG

next

Version:

The React Framework

151 lines (148 loc) 6.14 kB
"use strict"; 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