apeman-react-mixins
Version:
React mixin set of apeman.
111 lines (89 loc) • 7.42 kB
JavaScript
/**
* Mixin for views
*/
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/** @lends ApViewMixin */
var ApViewMixin = {
// --------------------
// Custom
// --------------------
$apViewMixed: true,
/**
* Pop this view from the current stack only if this view is the top.
*/
popThisViewFromCurrentStack: function popThisViewFromCurrentStack() {
var s = this;
var props = s.props;
var topView = props.viewTop();
var isTop = topView.id === props.viewId;
if (!isTop) {
console.warn('The top view of current stack is not this view.');
return;
}
return s.popViewFromCurrentStack();
},
/**
* Pop a view from the current stack.
*/
popViewFromCurrentStack: function popViewFromCurrentStack() {
var s = this;
return s._popView();
},
/**
* Push a view to the current stack.
* @param {object} view - View component class.
* @param {object} params - View params.
* @param {string} way - View push way.
*/
pushViewToCurrentStack: function pushViewToCurrentStack(view, params, way) {
var s = this;
return s._pushView(view, params, way);
},
// --------------------
// Specs
// --------------------
propTypes: {
viewId: _react.PropTypes.string.isRequired,
viewWay: _react.PropTypes.string.isRequired,
viewPush: _react.PropTypes.func.isRequired,
viewPop: _react.PropTypes.func.isRequired,
viewTop: _react.PropTypes.func.isRequired,
onViewPop: _react.PropTypes.func,
onViewPush: _react.PropTypes.func
},
getDefaultProps: function getDefaultProps() {
var noop = function noop(values) {
return values;
};
return {
viewId: null,
viewWay: null,
viewPush: null,
viewPop: null,
viewTop: null,
onViewPop: noop,
onViewPush: noop
};
},
// --------------------
// Private
// --------------------
_pushView: function _pushView(view, params, way) {
var s = this;
var props = s.props;
return props.viewPush(view, params, way).then(props.onViewPush);
},
_popView: function _popView() {
var s = this;
var props = s.props;
return props.viewPop().then(props.onViewPop);
}
};
exports.default = Object.freeze(ApViewMixin);
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwX3ZpZXdfbWl4aW4uanN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUdBOzs7Ozs7QUFFQTs7Ozs7OztBQUdBLElBQU0sY0FBYzs7Ozs7QUFLbEIsZ0JBQWMsSUFMSTs7Ozs7QUFVbEIsNkJBVmtCLHlDQVVhO0FBQzdCLFFBQU0sSUFBSSxJQUFWO0FBRDZCLFFBRXZCLEtBRnVCLEdBRWIsQ0FGYSxDQUV2QixLQUZ1Qjs7QUFHN0IsUUFBSSxVQUFVLE1BQU0sT0FBTixFQUFkO0FBQ0EsUUFBSSxRQUFRLFFBQVEsRUFBUixLQUFlLE1BQU0sTUFBakM7QUFDQSxRQUFJLENBQUMsS0FBTCxFQUFZO0FBQ1YsY0FBUSxJQUFSLENBQWEsaURBQWI7QUFDQTtBQUNEO0FBQ0QsV0FBTyxFQUFFLHVCQUFGLEVBQVA7QUFDRCxHQXBCaUI7Ozs7OztBQXlCbEIseUJBekJrQixxQ0F5QlM7QUFDekIsUUFBTSxJQUFJLElBQVY7QUFDQSxXQUFPLEVBQUUsUUFBRixFQUFQO0FBQ0QsR0E1QmlCOzs7Ozs7Ozs7QUFvQ2xCLHdCQXBDa0Isa0NBb0NNLElBcENOLEVBb0NZLE1BcENaLEVBb0NvQixHQXBDcEIsRUFvQ3lCO0FBQ3pDLFFBQU0sSUFBSSxJQUFWO0FBQ0EsV0FBTyxFQUFFLFNBQUYsQ0FBWSxJQUFaLEVBQWtCLE1BQWxCLEVBQTBCLEdBQTFCLENBQVA7QUFDRCxHQXZDaUI7Ozs7Ozs7QUE2Q2xCLGFBQVc7QUFDVCxZQUFRLGlCQUFNLE1BQU4sQ0FBYSxVQURaO0FBRVQsYUFBUyxpQkFBTSxNQUFOLENBQWEsVUFGYjtBQUdULGNBQVUsaUJBQU0sSUFBTixDQUFXLFVBSFo7QUFJVCxhQUFTLGlCQUFNLElBQU4sQ0FBVyxVQUpYO0FBS1QsYUFBUyxpQkFBTSxJQUFOLENBQVcsVUFMWDtBQU1ULGVBQVcsaUJBQU0sSUFOUjtBQU9ULGdCQUFZLGlCQUFNO0FBUFQsR0E3Q087O0FBdURsQixpQkF2RGtCLDZCQXVEQztBQUNqQixRQUFJLE9BQU8sU0FBUCxJQUFPLENBQUMsTUFBRDtBQUFBLGFBQVksTUFBWjtBQUFBLEtBQVg7QUFDQSxXQUFPO0FBQ0wsY0FBUSxJQURIO0FBRUwsZUFBUyxJQUZKO0FBR0wsZ0JBQVUsSUFITDtBQUlMLGVBQVMsSUFKSjtBQUtMLGVBQVMsSUFMSjtBQU1MLGlCQUFXLElBTk47QUFPTCxrQkFBWTtBQVBQLEtBQVA7QUFTRCxHQWxFaUI7Ozs7Ozs7QUF3RWxCLFdBeEVrQixxQkF3RVAsSUF4RU8sRUF3RUQsTUF4RUMsRUF3RU8sR0F4RVAsRUF3RVk7QUFDNUIsUUFBTSxJQUFJLElBQVY7QUFENEIsUUFFdEIsS0FGc0IsR0FFWixDQUZZLENBRXRCLEtBRnNCOztBQUc1QixXQUFPLE1BQU0sUUFBTixDQUFlLElBQWYsRUFBcUIsTUFBckIsRUFBNkIsR0FBN0IsRUFBa0MsSUFBbEMsQ0FBdUMsTUFBTSxVQUE3QyxDQUFQO0FBQ0QsR0E1RWlCO0FBOEVsQixVQTlFa0Isc0JBOEVQO0FBQ1QsUUFBTSxJQUFJLElBQVY7QUFEUyxRQUVILEtBRkcsR0FFTyxDQUZQLENBRUgsS0FGRzs7QUFHVCxXQUFPLE1BQU0sT0FBTixHQUFnQixJQUFoQixDQUFxQixNQUFNLFNBQTNCLENBQVA7QUFDRDtBQWxGaUIsQ0FBcEI7O2tCQXNGZSxPQUFPLE1BQVAsQ0FBYyxXQUFkLEMiLCJmaWxlIjoiYXBfdmlld19taXhpbi5qcyIsInNvdXJjZVJvb3QiOiIvVXNlcnMvb2t1bmlzaGluaXNoaS9Qcm9qZWN0cy9hcGVtYW4tcHJvamVjdHMvYXBlbWFuLXJlYWN0LW1peGlucy9saWIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIE1peGluIGZvciB2aWV3c1xuICovXG4ndXNlIHN0cmljdCdcblxuaW1wb3J0IFJlYWN0LCB7UHJvcFR5cGVzIGFzIHR5cGVzfSBmcm9tICdyZWFjdCdcblxuLyoqIEBsZW5kcyBBcFZpZXdNaXhpbiAqL1xuY29uc3QgQXBWaWV3TWl4aW4gPSB7XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gQ3VzdG9tXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICRhcFZpZXdNaXhlZDogdHJ1ZSxcblxuICAvKipcbiAgICogUG9wIHRoaXMgdmlldyBmcm9tIHRoZSBjdXJyZW50IHN0YWNrIG9ubHkgaWYgdGhpcyB2aWV3IGlzIHRoZSB0b3AuXG4gICAqL1xuICBwb3BUaGlzVmlld0Zyb21DdXJyZW50U3RhY2sgKCkge1xuICAgIGNvbnN0IHMgPSB0aGlzXG4gICAgbGV0IHsgcHJvcHMgfSA9IHNcbiAgICBsZXQgdG9wVmlldyA9IHByb3BzLnZpZXdUb3AoKVxuICAgIGxldCBpc1RvcCA9IHRvcFZpZXcuaWQgPT09IHByb3BzLnZpZXdJZFxuICAgIGlmICghaXNUb3ApIHtcbiAgICAgIGNvbnNvbGUud2FybignVGhlIHRvcCB2aWV3IG9mIGN1cnJlbnQgc3RhY2sgaXMgbm90IHRoaXMgdmlldy4nKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHJldHVybiBzLnBvcFZpZXdGcm9tQ3VycmVudFN0YWNrKClcbiAgfSxcblxuICAvKipcbiAgICogUG9wIGEgdmlldyBmcm9tIHRoZSBjdXJyZW50IHN0YWNrLlxuICAgKi9cbiAgcG9wVmlld0Zyb21DdXJyZW50U3RhY2sgKCkge1xuICAgIGNvbnN0IHMgPSB0aGlzXG4gICAgcmV0dXJuIHMuX3BvcFZpZXcoKVxuICB9LFxuXG4gIC8qKlxuICAgKiBQdXNoIGEgdmlldyB0byB0aGUgY3VycmVudCBzdGFjay5cbiAgICogQHBhcmFtIHtvYmplY3R9IHZpZXcgLSBWaWV3IGNvbXBvbmVudCBjbGFzcy5cbiAgICogQHBhcmFtIHtvYmplY3R9IHBhcmFtcyAtIFZpZXcgcGFyYW1zLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gd2F5IC0gVmlldyBwdXNoIHdheS5cbiAgICovXG4gIHB1c2hWaWV3VG9DdXJyZW50U3RhY2sgKHZpZXcsIHBhcmFtcywgd2F5KSB7XG4gICAgY29uc3QgcyA9IHRoaXNcbiAgICByZXR1cm4gcy5fcHVzaFZpZXcodmlldywgcGFyYW1zLCB3YXkpXG4gIH0sXG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gU3BlY3NcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICBwcm9wVHlwZXM6IHtcbiAgICB2aWV3SWQ6IHR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIHZpZXdXYXk6IHR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIHZpZXdQdXNoOiB0eXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgdmlld1BvcDogdHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgIHZpZXdUb3A6IHR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICBvblZpZXdQb3A6IHR5cGVzLmZ1bmMsXG4gICAgb25WaWV3UHVzaDogdHlwZXMuZnVuY1xuICB9LFxuXG4gIGdldERlZmF1bHRQcm9wcyAoKSB7XG4gICAgbGV0IG5vb3AgPSAodmFsdWVzKSA9PiB2YWx1ZXNcbiAgICByZXR1cm4ge1xuICAgICAgdmlld0lkOiBudWxsLFxuICAgICAgdmlld1dheTogbnVsbCxcbiAgICAgIHZpZXdQdXNoOiBudWxsLFxuICAgICAgdmlld1BvcDogbnVsbCxcbiAgICAgIHZpZXdUb3A6IG51bGwsXG4gICAgICBvblZpZXdQb3A6IG5vb3AsXG4gICAgICBvblZpZXdQdXNoOiBub29wXG4gICAgfVxuICB9LFxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIFByaXZhdGVcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICBfcHVzaFZpZXcgKHZpZXcsIHBhcmFtcywgd2F5KSB7XG4gICAgY29uc3QgcyA9IHRoaXNcbiAgICBsZXQgeyBwcm9wcyB9ID0gc1xuICAgIHJldHVybiBwcm9wcy52aWV3UHVzaCh2aWV3LCBwYXJhbXMsIHdheSkudGhlbihwcm9wcy5vblZpZXdQdXNoKVxuICB9LFxuXG4gIF9wb3BWaWV3KCkge1xuICAgIGNvbnN0IHMgPSB0aGlzXG4gICAgbGV0IHsgcHJvcHMgfSA9IHNcbiAgICByZXR1cm4gcHJvcHMudmlld1BvcCgpLnRoZW4ocHJvcHMub25WaWV3UG9wKVxuICB9XG5cbn1cblxuZXhwb3J0IGRlZmF1bHQgT2JqZWN0LmZyZWV6ZShBcFZpZXdNaXhpbilcbiJdfQ==