UNPKG

react-error-boundaries

Version:
121 lines (88 loc) 3.79 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.FallbackView = exports.ErrorBoundary = undefined; var _extends2 = require("babel-runtime/helpers/extends"); var _extends3 = _interopRequireDefault(_extends2); var _objectWithoutProperties2 = require("babel-runtime/helpers/objectWithoutProperties"); var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2); var _getPrototypeOf = require("babel-runtime/core-js/object/get-prototype-of"); var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck"); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = require("babel-runtime/helpers/createClass"); var _createClass3 = _interopRequireDefault(_createClass2); var _possibleConstructorReturn2 = require("babel-runtime/helpers/possibleConstructorReturn"); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); var _inherits2 = require("babel-runtime/helpers/inherits"); var _inherits3 = _interopRequireDefault(_inherits2); var _react = require("react"); var _react2 = _interopRequireDefault(_react); var _Fallback = require("./Fallback"); var _Fallback2 = _interopRequireDefault(_Fallback); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var ErrorBoundary = function (_React$PureComponent) { (0, _inherits3.default)(ErrorBoundary, _React$PureComponent); function ErrorBoundary() { (0, _classCallCheck3.default)(this, ErrorBoundary); var _this = (0, _possibleConstructorReturn3.default)(this, (ErrorBoundary.__proto__ || (0, _getPrototypeOf2.default)(ErrorBoundary)).call(this)); _this.closeErrorModal = _this.closeErrorModal.bind(_this); _this.state = { hasError: false, error: null, errorInfo: null }; return _this; } (0, _createClass3.default)(ErrorBoundary, [{ key: "closeErrorModal", value: function closeErrorModal() { this.setState({ hasError: false }); } }, { key: "componentDidCatch", value: function componentDidCatch(error, info) { // Update state if error happens this.setState({ hasError: true, error: error, errorInfo: info }); // Report errors here var _props2 = this.props, onError = _props2.onError, FallbackComponent = _props2.FallbackComponent, _props = (0, _objectWithoutProperties3.default)(_props2, ["onError", "FallbackComponent"]); if (typeof onError === "function") { try { onError.call(this, error, info, _props); } catch (e) {} } } }, { key: "render", value: function render() { var _props3 = this.props, onError = _props3.onError, FallbackComponent = _props3.FallbackComponent, children = _props3.children, _props = (0, _objectWithoutProperties3.default)(_props3, ["onError", "FallbackComponent", "children"]); // if state contains error and in development environment we render fallback component if (this.state.hasError) { var _state = this.state, error = _state.error, errorInfo = _state.errorInfo; return _react2.default.createElement(FallbackComponent, (0, _extends3.default)({}, _props, { closeErrorModal: this.closeErrorModal, error: error, errorInfo: errorInfo })); } return children; } }]); return ErrorBoundary; }(_react2.default.PureComponent); ErrorBoundary.defaultProps = { FallbackComponent: _Fallback2.default }; exports.ErrorBoundary = ErrorBoundary; exports.FallbackView = _Fallback2.default; exports.default = ErrorBoundary;