UNPKG

apeman-react-mixins

Version:
111 lines (89 loc) 7.42 kB
/** * Mixin for views */ 'use strict'; 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==