apeman-react-mixins
Version:
React mixin set of apeman.
77 lines (59 loc) • 4.96 kB
JavaScript
/**
* Mixin to handle error.
* @mixin ApExceptionMixin
*/
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _apemanpromise = require('apemanpromise');
var _apemanpromise2 = _interopRequireDefault(_apemanpromise);
var _defaults = require('defaults');
var _defaults2 = _interopRequireDefault(_defaults);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/** @lends ApExceptionMixin */
var ApExceptionMixin = {
// --------------------
// Custom
// --------------------
$apErrorMixed: true,
handleException: function handleException(err) {
var s = this;
return _apemanpromise2.default.resolve(err).then(function (err) {
return s.willHandleException(err);
}).then(function (err) {
return s.doHandleException(err);
}).then(function (err) {
return s.didHandleException(err);
});
},
// --------------------
// Specs
// --------------------
componentWillMount: function componentWillMount() {
var s = this;
var noop = function noop(value) {
return value;
};
(0, _defaults2.default)(s, {
willHandleException: noop,
didHandleException: noop
});
},
componentDidMount: function componentDidMount() {
var s = this;
if (!s.doHandleException) {
console.warn('[ApExceptionMixin] .doHandleException() is required.');
return;
}
window.addEventListener('error', s.handleException);
},
componentWillUnmount: function componentWillUnmount() {
var s = this;
window.removeEventListener('error', s.handleException);
}
};
exports.default = Object.freeze(ApExceptionMixin);
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwX2V4Y2VwdGlvbl9taXhpbi5qc3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFLQTs7Ozs7O0FBRUE7Ozs7QUFDQTs7OztBQUNBOzs7Ozs7O0FBR0EsSUFBSSxtQkFBbUI7Ozs7O0FBS3JCLGlCQUFlLElBTE07O0FBT3JCLGlCQVBxQiwyQkFPSixHQVBJLEVBT0M7QUFDcEIsUUFBTSxJQUFJLElBQVY7O0FBRUEsV0FBTyx3QkFBUSxPQUFSLENBQWdCLEdBQWhCLEVBQ0osSUFESSxDQUNDLFVBQUMsR0FBRDtBQUFBLGFBQVMsRUFBRSxtQkFBRixDQUFzQixHQUF0QixDQUFUO0FBQUEsS0FERCxFQUVKLElBRkksQ0FFQyxVQUFDLEdBQUQ7QUFBQSxhQUFTLEVBQUUsaUJBQUYsQ0FBb0IsR0FBcEIsQ0FBVDtBQUFBLEtBRkQsRUFHSixJQUhJLENBR0MsVUFBQyxHQUFEO0FBQUEsYUFBUyxFQUFFLGtCQUFGLENBQXFCLEdBQXJCLENBQVQ7QUFBQSxLQUhELENBQVA7QUFJRCxHQWRvQjs7Ozs7OztBQW9CckIsb0JBcEJxQixnQ0FvQkM7QUFDcEIsUUFBTSxJQUFJLElBQVY7QUFDQSxRQUFJLE9BQU8sU0FBUCxJQUFPLENBQUMsS0FBRDtBQUFBLGFBQVcsS0FBWDtBQUFBLEtBQVg7O0FBRUEsNEJBQVMsQ0FBVCxFQUFZO0FBQ1YsMkJBQXFCLElBRFg7QUFFViwwQkFBb0I7QUFGVixLQUFaO0FBSUQsR0E1Qm9CO0FBOEJyQixtQkE5QnFCLCtCQThCQTtBQUNuQixRQUFNLElBQUksSUFBVjtBQUNBLFFBQUksQ0FBQyxFQUFFLGlCQUFQLEVBQTBCO0FBQ3hCLGNBQVEsSUFBUixDQUFhLHNEQUFiO0FBQ0E7QUFDRDtBQUNELFdBQU8sZ0JBQVAsQ0FBd0IsT0FBeEIsRUFBaUMsRUFBRSxlQUFuQztBQUNELEdBckNvQjtBQXVDckIsc0JBdkNxQixrQ0F1Q0c7QUFDdEIsUUFBTSxJQUFJLElBQVY7QUFDQSxXQUFPLG1CQUFQLENBQTJCLE9BQTNCLEVBQW9DLEVBQUUsZUFBdEM7QUFDRDtBQTFDb0IsQ0FBdkI7O2tCQTZDZSxPQUFPLE1BQVAsQ0FBYyxnQkFBZCxDIiwiZmlsZSI6ImFwX2V4Y2VwdGlvbl9taXhpbi5qcyIsInNvdXJjZVJvb3QiOiIvVXNlcnMvb2t1bmlzaGluaXNoaS9Qcm9qZWN0cy9hcGVtYW4tcHJvamVjdHMvYXBlbWFuLXJlYWN0LW1peGlucy9saWIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIE1peGluIHRvIGhhbmRsZSBlcnJvci5cbiAqIEBtaXhpbiBBcEV4Y2VwdGlvbk1peGluXG4gKi9cblxuJ3VzZSBzdHJpY3QnXG5cbmltcG9ydCBSZWFjdCwge1Byb3BUeXBlcyBhcyB0eXBlc30gZnJvbSAncmVhY3QnXG5pbXBvcnQgUHJvbWlzZSBmcm9tICdhcGVtYW5wcm9taXNlJ1xuaW1wb3J0IGRlZmF1bHRzIGZyb20gJ2RlZmF1bHRzJ1xuXG4vKiogQGxlbmRzIEFwRXhjZXB0aW9uTWl4aW4gKi9cbmxldCBBcEV4Y2VwdGlvbk1peGluID0ge1xuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIEN1c3RvbVxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAkYXBFcnJvck1peGVkOiB0cnVlLFxuXG4gIGhhbmRsZUV4Y2VwdGlvbiAoZXJyKSB7XG4gICAgY29uc3QgcyA9IHRoaXNcblxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZXJyKVxuICAgICAgLnRoZW4oKGVycikgPT4gcy53aWxsSGFuZGxlRXhjZXB0aW9uKGVycikpXG4gICAgICAudGhlbigoZXJyKSA9PiBzLmRvSGFuZGxlRXhjZXB0aW9uKGVycikpXG4gICAgICAudGhlbigoZXJyKSA9PiBzLmRpZEhhbmRsZUV4Y2VwdGlvbihlcnIpKVxuICB9LFxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIFNwZWNzXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgY29tcG9uZW50V2lsbE1vdW50ICgpIHtcbiAgICBjb25zdCBzID0gdGhpc1xuICAgIGxldCBub29wID0gKHZhbHVlKSA9PiB2YWx1ZVxuXG4gICAgZGVmYXVsdHMocywge1xuICAgICAgd2lsbEhhbmRsZUV4Y2VwdGlvbjogbm9vcCxcbiAgICAgIGRpZEhhbmRsZUV4Y2VwdGlvbjogbm9vcFxuICAgIH0pXG4gIH0sXG5cbiAgY29tcG9uZW50RGlkTW91bnQgKCkge1xuICAgIGNvbnN0IHMgPSB0aGlzXG4gICAgaWYgKCFzLmRvSGFuZGxlRXhjZXB0aW9uKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1tBcEV4Y2VwdGlvbk1peGluXSAuZG9IYW5kbGVFeGNlcHRpb24oKSBpcyByZXF1aXJlZC4nKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIHMuaGFuZGxlRXhjZXB0aW9uKVxuICB9LFxuXG4gIGNvbXBvbmVudFdpbGxVbm1vdW50ICgpIHtcbiAgICBjb25zdCBzID0gdGhpc1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdlcnJvcicsIHMuaGFuZGxlRXhjZXB0aW9uKVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IE9iamVjdC5mcmVlemUoQXBFeGNlcHRpb25NaXhpbilcbiJdfQ==