UNPKG

@sanity/default-layout

Version:

The default layout components for Sanity

76 lines (74 loc) 3.56 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SchemaErrorReporter = void 0; var _react = _interopRequireDefault(require("react")); var _schema = _interopRequireDefault(require("part:@sanity/base/schema")); var _initialValueTemplates = require("@sanity/base/initial-value-templates"); var _InitialValueTemplateError = _interopRequireDefault(require("./InitialValueTemplateError")); var _SchemaErrors = _interopRequireDefault(require("./SchemaErrors")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); } function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } // @todo: remove the following line when part imports has been removed from this file ///<reference types="@sanity/types/parts" /> function renderPath(path) { return path.map(segment => { if (segment.kind === 'type') { return "".concat(segment.name || '<unnamed>', "(").concat(segment.type, ")"); } if (segment.kind === 'property') { return segment.name; } if (segment.kind === 'type') { return "".concat(segment.type, "(").concat(segment.name || '<unnamed>', ")"); } return null; }).filter(Boolean).join(' > '); } function reportWarnings() { if (!__DEV__) { return; } /* eslint-disable no-console */ var problemGroups = _schema.default._validation; var groupsWithWarnings = problemGroups.filter(group => group.problems.some(problem => problem.severity === 'warning')); if (groupsWithWarnings.length === 0) { return; } console.groupCollapsed("\u26A0\uFE0F Schema has ".concat(groupsWithWarnings.length, " warnings")); groupsWithWarnings.forEach((group, i) => { var path = renderPath(group.path); console.group("%cAt ".concat(path), 'color: #FF7636'); group.problems.forEach((problem, j) => { console.log(problem.message); }); console.groupEnd("At ".concat(path)); }); console.groupEnd('Schema warnings'); /* eslint-enable no-console */ } class SchemaErrorReporter extends _react.default.Component { constructor() { super(...arguments); _defineProperty(this, "componentDidMount", reportWarnings); } render() { var problemGroups = _schema.default._validation; var groupsWithErrors = problemGroups.filter(group => group.problems.some(problem => problem.severity === 'error')); if (groupsWithErrors.length > 0) { return /*#__PURE__*/_react.default.createElement(_SchemaErrors.default, { problemGroups: groupsWithErrors }); } var templateErrors = (0, _initialValueTemplates.getTemplateErrors)(undefined); if (templateErrors.length > 0) { return /*#__PURE__*/_react.default.createElement(_InitialValueTemplateError.default, { errors: templateErrors }); } return this.props.children(); } } exports.SchemaErrorReporter = SchemaErrorReporter;