react-error-boundaries
Version:
React HOC for error boundaries.
142 lines (114 loc) • 4.52 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
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);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var __ErrorBoundary = void 0;
if (process.env.NODE_ENV === "development" || process.env.ERROR_ENV === "development") {
var _require = require("./WithErrorHandler"),
ErrorBoundary = _require.ErrorBoundary,
FallbackView = _require.FallbackView;
var withErrorHandler = curry(function (FallbackComponent, Component) {
var WithErrorHandler = function WithErrorHandler(props) {
var onError = props.onError;
return _react2.default.createElement(
ErrorBoundary,
{ FallbackComponent: FallbackComponent, onError: onError },
_react2.default.createElement(Component, props)
);
};
WithErrorHandler.displayName = "WithErrorHandler(" + (Component.displayName || Component.name || "Component") + ")";
return WithErrorHandler;
});
__ErrorBoundary = ErrorBoundary;
exports.ErrorBoundary = ErrorBoundary;
exports.FallbackView = FallbackView;
exports.withErrorHandler = withErrorHandler;
exports.errorHandlerDecorator = withErrorHandler(FallbackView);
} else {
// production or other env (not development)
// NOOP ErrorBoundary
var _ErrorBoundary = function (_React$Component) {
(0, _inherits3.default)(_ErrorBoundary, _React$Component);
function _ErrorBoundary() {
(0, _classCallCheck3.default)(this, _ErrorBoundary);
return (0, _possibleConstructorReturn3.default)(this, (_ErrorBoundary.__proto__ || (0, _getPrototypeOf2.default)(_ErrorBoundary)).apply(this, arguments));
}
(0, _createClass3.default)(_ErrorBoundary, [{
key: "componentDidCatch",
value: function componentDidCatch(error, info) {
var _props2 = this.props,
onError = _props2.onError,
_props = (0, _objectWithoutProperties3.default)(_props2, ["onError"]);
if (typeof onError === "function") {
try {
onError.call(this, error, info, _props);
} catch (e) {}
}
}
}, {
key: "render",
value: function render() {
return this.props.children;
}
}]);
return _ErrorBoundary;
}(_react2.default.Component);
// NOOP HOC
var _withErrorHandler = curry(function (FallbackComponent, Component) {
var WithErrorHandler = function WithErrorHandler(props) {
var onError = props.onError;
return _react2.default.createElement(
_ErrorBoundary,
{ FallbackComponent: FallbackComponent, onError: onError },
_react2.default.createElement(Component, props)
);
};
return WithErrorHandler;
});
__ErrorBoundary = _ErrorBoundary;
exports.ErrorBoundary = _ErrorBoundary;
exports.withErrorHandler = _withErrorHandler;
exports.errorHandlerDecorator = _withErrorHandler(void 0);
}
function curry(fn) {
if (typeof fn !== "function") {
throw Error("curry only receive function params!");
}
var _len = fn.length,
_args = [];
function _curry() {
var args = [].concat(_args);
if (arguments.length >= _len) {
_args = [];
} else if (arguments.length + _args.length > _len) {
_args = [];
}
_args = _args.concat([].slice.call(arguments));
if (_args.length === _len) {
var rst = fn.apply(null, _args);
_args = args;
return rst;
}
return _curry;
}
_curry.toString = function () {
return fn.toString();
};
return _curry;
}
exports.default = __ErrorBoundary;