apeman-react-mixins
Version:
React mixin set of apeman.
78 lines (59 loc) • 4.34 kB
JavaScript
/**
* Mixin for busy.
* @class ApBusyMixin
*/
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _apemantimer = require('apemantimer');
var _apemantimer2 = _interopRequireDefault(_apemantimer);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/** @lends ApBusyMixin */
var ApBusyMixin = {
// --------------------
// Custom
// --------------------
$apBusyMixed: true,
busy: false,
isBusy: function isBusy() {
var s = this;
return s.busy;
},
setBusy: function setBusy(busy) {
var s = this;
s.busy = busy;
},
busyWhile: function busyWhile(duration) {
var s = this;
var _busyTimer = s._busyTimer;
_busyTimer.cancelAll();
_busyTimer.timeout(function () {
return s.setBusy(false);
}, duration);
s.setBusy(true);
},
clearBusyWhile: function clearBusyWhile() {
var s = this;
var _busyTimer = s._busyTimer;
_busyTimer.cancelAll();
},
// --------------------
// Specs
// --------------------
componentWillMount: function componentWillMount() {
var s = this;
s._busyTimer = _apemantimer2.default.create();
},
componentWillUnmount: function componentWillUnmount() {
var s = this;
s.clearBusyWhile();
}
// --------------------
// Lifecycle
// --------------------
};
exports.default = Object.freeze(ApBusyMixin);
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwX2J1c3lfbWl4aW4uanN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBS0E7Ozs7OztBQUVBOzs7O0FBQ0E7Ozs7Ozs7QUFHQSxJQUFNLGNBQWM7Ozs7O0FBS2xCLGdCQUFjLElBTEk7O0FBT2xCLFFBQU0sS0FQWTs7QUFTbEIsUUFUa0Isb0JBU1I7QUFDUixRQUFNLElBQUksSUFBVjtBQUNBLFdBQU8sRUFBRSxJQUFUO0FBQ0QsR0FaaUI7QUFjbEIsU0Fka0IsbUJBY1QsSUFkUyxFQWNIO0FBQ2IsUUFBTSxJQUFJLElBQVY7QUFDQSxNQUFFLElBQUYsR0FBUyxJQUFUO0FBQ0QsR0FqQmlCO0FBbUJsQixXQW5Ca0IscUJBbUJQLFFBbkJPLEVBbUJHO0FBQ25CLFFBQU0sSUFBSSxJQUFWO0FBRG1CLFFBRWIsVUFGYSxHQUVFLENBRkYsQ0FFYixVQUZhOztBQUduQixlQUFXLFNBQVg7QUFDQSxlQUFXLE9BQVgsQ0FBbUI7QUFBQSxhQUFNLEVBQUUsT0FBRixDQUFVLEtBQVYsQ0FBTjtBQUFBLEtBQW5CLEVBQTJDLFFBQTNDO0FBQ0EsTUFBRSxPQUFGLENBQVUsSUFBVjtBQUNELEdBekJpQjtBQTJCbEIsZ0JBM0JrQiw0QkEyQkE7QUFDaEIsUUFBTSxJQUFJLElBQVY7QUFEZ0IsUUFFVixVQUZVLEdBRUssQ0FGTCxDQUVWLFVBRlU7O0FBR2hCLGVBQVcsU0FBWDtBQUNELEdBL0JpQjs7Ozs7OztBQXFDbEIsb0JBckNrQixnQ0FxQ0k7QUFDcEIsUUFBTSxJQUFJLElBQVY7QUFDQSxNQUFFLFVBQUYsR0FBZSxzQkFBWSxNQUFaLEVBQWY7QUFDRCxHQXhDaUI7QUEwQ2xCLHNCQTFDa0Isa0NBMENNO0FBQ3RCLFFBQU0sSUFBSSxJQUFWO0FBQ0EsTUFBRSxjQUFGO0FBQ0Q7Ozs7OztBQTdDaUIsQ0FBcEI7O2tCQXFEZSxPQUFPLE1BQVAsQ0FBYyxXQUFkLEMiLCJmaWxlIjoiYXBfYnVzeV9taXhpbi5qcyIsInNvdXJjZVJvb3QiOiIvVXNlcnMvb2t1bmlzaGluaXNoaS9Qcm9qZWN0cy9hcGVtYW4tcHJvamVjdHMvYXBlbWFuLXJlYWN0LW1peGlucy9saWIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIE1peGluIGZvciBidXN5LlxuICogQGNsYXNzIEFwQnVzeU1peGluXG4gKi9cblxuJ3VzZSBzdHJpY3QnXG5cbmltcG9ydCBSZWFjdCwge1Byb3BUeXBlcyBhcyB0eXBlc30gZnJvbSAncmVhY3QnXG5pbXBvcnQgQXBlbWFudGltZXIgZnJvbSAnYXBlbWFudGltZXInXG5cbi8qKiBAbGVuZHMgQXBCdXN5TWl4aW4gKi9cbmNvbnN0IEFwQnVzeU1peGluID0ge1xuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIEN1c3RvbVxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAkYXBCdXN5TWl4ZWQ6IHRydWUsXG5cbiAgYnVzeTogZmFsc2UsXG5cbiAgaXNCdXN5ICgpIHtcbiAgICBjb25zdCBzID0gdGhpc1xuICAgIHJldHVybiBzLmJ1c3lcbiAgfSxcblxuICBzZXRCdXN5IChidXN5KSB7XG4gICAgY29uc3QgcyA9IHRoaXNcbiAgICBzLmJ1c3kgPSBidXN5XG4gIH0sXG5cbiAgYnVzeVdoaWxlIChkdXJhdGlvbikge1xuICAgIGNvbnN0IHMgPSB0aGlzXG4gICAgbGV0IHsgX2J1c3lUaW1lciB9ID0gc1xuICAgIF9idXN5VGltZXIuY2FuY2VsQWxsKClcbiAgICBfYnVzeVRpbWVyLnRpbWVvdXQoKCkgPT4gcy5zZXRCdXN5KGZhbHNlKSwgZHVyYXRpb24pXG4gICAgcy5zZXRCdXN5KHRydWUpXG4gIH0sXG5cbiAgY2xlYXJCdXN5V2hpbGUgKCkge1xuICAgIGNvbnN0IHMgPSB0aGlzXG4gICAgbGV0IHsgX2J1c3lUaW1lciB9ID0gc1xuICAgIF9idXN5VGltZXIuY2FuY2VsQWxsKClcbiAgfSxcblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBTcGVjc1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIGNvbXBvbmVudFdpbGxNb3VudCAoKSB7XG4gICAgY29uc3QgcyA9IHRoaXNcbiAgICBzLl9idXN5VGltZXIgPSBBcGVtYW50aW1lci5jcmVhdGUoKVxuICB9LFxuXG4gIGNvbXBvbmVudFdpbGxVbm1vdW50ICgpIHtcbiAgICBjb25zdCBzID0gdGhpc1xuICAgIHMuY2xlYXJCdXN5V2hpbGUoKVxuICB9XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gTGlmZWN5Y2xlXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbn1cblxuZXhwb3J0IGRlZmF1bHQgT2JqZWN0LmZyZWV6ZShBcEJ1c3lNaXhpbilcbiJdfQ==