@sanity/default-layout
Version:
The default layout components for Sanity
60 lines (59 loc) • 2.38 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.ErrorScreen = ErrorScreen;
var _react = _interopRequireDefault(require("react"));
var _ui = require("@sanity/ui");
var _ErrorAccordion = require("./main/ErrorAccordion");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function getErrorWithStack(err) {
var stack = err.stack || '';
var message = err.message;
return stack.indexOf(message) === -1 ? "".concat(message, "\n\n").concat(stack) : stack;
}
function limitStackLength(stack) {
return stack.split('\n').slice(0, 15).join('\n');
}
function formatStack(stack) {
return stack
// Prettify builder functions
.replace(/\(\.\.\.\)\./g, '(...)\n .')
// Remove webpack cruft from function names
.replace(/__WEBPACK_IMPORTED_MODULE_\d+_+/g, '')
// Remove default export postfix from function names
.replace(/___default\./g, '.')
// Replace full host path, leave only path to JS-file
.replace(new RegExp(" \\(https?:\\/\\/".concat(window.location.host), 'g'), ' (');
}
function ErrorScreen(props) {
var description = props.description,
error = props.error,
title = props.title;
return /*#__PURE__*/_react.default.createElement(_ui.Card, {
height: "fill",
paddingX: [3, 4, 5, 7],
paddingY: [5, 5, 6],
sizing: "border",
overflow: "auto"
}, /*#__PURE__*/_react.default.createElement(_ui.Container, null, /*#__PURE__*/_react.default.createElement(_ui.Stack, {
space: 4
}, /*#__PURE__*/_react.default.createElement(_ui.Heading, {
as: "h1"
}, title || /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, "Unknown error")), description && /*#__PURE__*/_react.default.createElement(_ui.Text, {
as: "p",
muted: true
}, description)), __DEV__ && /*#__PURE__*/_react.default.createElement(_ui.Box, {
marginTop: 5
}, error.stack ? /*#__PURE__*/_react.default.createElement(_ErrorAccordion.ErrorAccordion, {
open: __DEV__,
title: "Stack trace"
}, /*#__PURE__*/_react.default.createElement(_ui.Code, {
size: 1
}, formatStack(limitStackLength(getErrorWithStack(error))))) : /*#__PURE__*/_react.default.createElement(_ErrorAccordion.ErrorAccordion, {
open: __DEV__,
title: "Error"
}, /*#__PURE__*/_react.default.createElement(_ui.Code, {
size: 1
}, error.message)))));
}