apeman-react-mixins
Version:
React mixin set of apeman.
135 lines (106 loc) • 8.72 kB
JavaScript
/**
* Show mixin.
* @module ApShowMixin
*
* Generated by coz on 1/31/2016,
* from a template provided by apeman-bud-react.
*
* @see https://facebook.github.io/react/
*/
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _assert = require('assert');
var _assert2 = _interopRequireDefault(_assert);
var _defaults = require('defaults');
var _defaults2 = _interopRequireDefault(_defaults);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var MODAL_WAY = 'PULL_UP';
var NAVIGATION_WAY = 'PUSH_LEFT';
var IMMEDIATE_WAY = 'NONE';
var ComponentsToShow = null;
/** @lends ApShowMixin */
var ApShowMixin = {
// --------------------
// Custom
// --------------------
$apShowMixed: true,
/**
* Show view as with navigation way.
* @param {object} name - Name of view component to show.
* @param {object} [params] - View params
* @returns {*|Promise}
*/
showAsNavigated: function showAsNavigated(name, params) {
var s = this;
return s._show(name, params, NAVIGATION_WAY);
},
/**
* Show view as with modal way.
* @param {object} name - Name of view component to show.
* @param {object} [params] - View params
* @returns {*|Promise}
*/
showAsModal: function showAsModal(name, params) {
var s = this;
return s._show(name, params, MODAL_WAY);
},
/**
* Show view as with immediate way.
* @param {object} name - Name of view component to show.
* @param {object} [params] - View params
* @returns {*|Promise}
*/
showAsImmediate: function showAsImmediate(name, params) {
var s = this;
return s._show(name, params, IMMEDIATE_WAY);
},
/**
* Register components to show.
* @param {object} components - View components.
*/
registerComponentsForShow: function registerComponentsForShow(components) {
ComponentsToShow = components.default || components;
},
// --------------------
// Lifecycle
// --------------------
componentWillMount: function componentWillMount() {
var s = this;
(0, _defaults2.default)(s, {
stackerToShow: function stackerToShow() {
return null;
}
});
},
// --------------------
// Private
// --------------------
/**
* Show a view.
* @param {object} name - Name of view component to show.
* @param {object} params - Component props.
* @param {string} way - How to show.
* @returns {Promise}
* @private
*/
_show: function _show(name, params, way) {
_assert2.default.ok(ComponentsToShow, 'Show not initialized. You need to call .registerComponentsForShow() before using show mixin');
var s = this;
var component = ComponentsToShow[name];
if (!component) {
throw new Error('Unknown component: ' + name);
}
var stacker = s.stackerToShow();
if (stacker) {
return stacker.pushView(component, params, way);
} else {
return s.pushViewToCurrentStack(component, params, way);
}
}
};
exports.default = ApShowMixin;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwX3Nob3dfbWl4aW4uanN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQVNBOzs7Ozs7QUFFQTs7OztBQUNBOzs7O0FBQ0E7Ozs7OztBQUVBLElBQU0sWUFBWSxTQUFsQjtBQUNBLElBQU0saUJBQWlCLFdBQXZCO0FBQ0EsSUFBTSxnQkFBZ0IsTUFBdEI7O0FBRUEsSUFBSSxtQkFBbUIsSUFBdkI7OztBQUdBLElBQUksY0FBYzs7Ozs7O0FBTWhCLGdCQUFjLElBTkU7Ozs7Ozs7O0FBY2hCLGlCQWRnQiwyQkFjQyxJQWRELEVBY08sTUFkUCxFQWNlO0FBQzdCLFFBQU0sSUFBSSxJQUFWO0FBQ0EsV0FBTyxFQUFFLEtBQUYsQ0FBUSxJQUFSLEVBQWMsTUFBZCxFQUFzQixjQUF0QixDQUFQO0FBQ0QsR0FqQmU7Ozs7Ozs7OztBQXlCaEIsYUF6QmdCLHVCQXlCSCxJQXpCRyxFQXlCRyxNQXpCSCxFQXlCVztBQUN6QixRQUFNLElBQUksSUFBVjtBQUNBLFdBQU8sRUFBRSxLQUFGLENBQVEsSUFBUixFQUFjLE1BQWQsRUFBc0IsU0FBdEIsQ0FBUDtBQUNELEdBNUJlOzs7Ozs7Ozs7QUFvQ2hCLGlCQXBDZ0IsMkJBb0NDLElBcENELEVBb0NPLE1BcENQLEVBb0NlO0FBQzdCLFFBQU0sSUFBSSxJQUFWO0FBQ0EsV0FBTyxFQUFFLEtBQUYsQ0FBUSxJQUFSLEVBQWMsTUFBZCxFQUFzQixhQUF0QixDQUFQO0FBQ0QsR0F2Q2U7Ozs7Ozs7QUE2Q2hCLDJCQTdDZ0IscUNBNkNXLFVBN0NYLEVBNkN1QjtBQUNyQyx1QkFBbUIsV0FBVyxPQUFYLElBQXNCLFVBQXpDO0FBQ0QsR0EvQ2U7Ozs7Ozs7QUFxRGhCLG9CQXJEZ0IsZ0NBcURNO0FBQ3BCLFFBQU0sSUFBSSxJQUFWO0FBQ0EsNEJBQVMsQ0FBVCxFQUFZO0FBQ1YscUJBQWU7QUFBQSxlQUFNLElBQU47QUFBQTtBQURMLEtBQVo7QUFHRCxHQTFEZTs7Ozs7Ozs7Ozs7Ozs7O0FBd0VoQixPQXhFZ0IsaUJBd0VULElBeEVTLEVBd0VILE1BeEVHLEVBd0VLLEdBeEVMLEVBd0VVO0FBQ3hCLHFCQUFPLEVBQVAsQ0FBVSxnQkFBVixFQUE0Qiw2RkFBNUI7O0FBRUEsUUFBTSxJQUFJLElBQVY7O0FBRUEsUUFBSSxZQUFZLGlCQUFrQixJQUFsQixDQUFoQjtBQUNBLFFBQUksQ0FBQyxTQUFMLEVBQWdCO0FBQ2QsWUFBTSxJQUFJLEtBQUoseUJBQWdDLElBQWhDLENBQU47QUFDRDtBQUNELFFBQUksVUFBVSxFQUFFLGFBQUYsRUFBZDtBQUNBLFFBQUksT0FBSixFQUFhO0FBQ1gsYUFBTyxRQUFRLFFBQVIsQ0FBaUIsU0FBakIsRUFBNEIsTUFBNUIsRUFBb0MsR0FBcEMsQ0FBUDtBQUNELEtBRkQsTUFFTztBQUNMLGFBQU8sRUFBRSxzQkFBRixDQUF5QixTQUF6QixFQUFvQyxNQUFwQyxFQUE0QyxHQUE1QyxDQUFQO0FBQ0Q7QUFDRjtBQXZGZSxDQUFsQjs7a0JBMEZlLFciLCJmaWxlIjoiYXBfc2hvd19taXhpbi5qcyIsInNvdXJjZVJvb3QiOiIvVXNlcnMvb2t1bmlzaGluaXNoaS9Qcm9qZWN0cy9hcGVtYW4tcHJvamVjdHMvYXBlbWFuLXJlYWN0LW1peGlucy9saWIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFNob3cgbWl4aW4uXG4gKiBAbW9kdWxlIEFwU2hvd01peGluXG4gKlxuICogR2VuZXJhdGVkIGJ5IGNveiBvbiAxLzMxLzIwMTYsXG4gKiBmcm9tIGEgdGVtcGxhdGUgcHJvdmlkZWQgYnkgYXBlbWFuLWJ1ZC1yZWFjdC5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L1xuICovXG4ndXNlIHN0cmljdCdcblxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnXG5pbXBvcnQgZGVmYXVsdHMgZnJvbSAnZGVmYXVsdHMnXG5cbmNvbnN0IE1PREFMX1dBWSA9ICdQVUxMX1VQJ1xuY29uc3QgTkFWSUdBVElPTl9XQVkgPSAnUFVTSF9MRUZUJ1xuY29uc3QgSU1NRURJQVRFX1dBWSA9ICdOT05FJ1xuXG5sZXQgQ29tcG9uZW50c1RvU2hvdyA9IG51bGxcblxuLyoqIEBsZW5kcyBBcFNob3dNaXhpbiAqL1xubGV0IEFwU2hvd01peGluID0ge1xuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIEN1c3RvbVxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICRhcFNob3dNaXhlZDogdHJ1ZSxcblxuICAvKipcbiAgICogU2hvdyB2aWV3IGFzIHdpdGggbmF2aWdhdGlvbiB3YXkuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBuYW1lIC0gTmFtZSBvZiB2aWV3IGNvbXBvbmVudCB0byBzaG93LlxuICAgKiBAcGFyYW0ge29iamVjdH0gW3BhcmFtc10gLSBWaWV3IHBhcmFtc1xuICAgKiBAcmV0dXJucyB7KnxQcm9taXNlfVxuICAgKi9cbiAgc2hvd0FzTmF2aWdhdGVkIChuYW1lLCBwYXJhbXMpIHtcbiAgICBjb25zdCBzID0gdGhpc1xuICAgIHJldHVybiBzLl9zaG93KG5hbWUsIHBhcmFtcywgTkFWSUdBVElPTl9XQVkpXG4gIH0sXG5cbiAgLyoqXG4gICAqIFNob3cgdmlldyBhcyB3aXRoIG1vZGFsIHdheS5cbiAgICogQHBhcmFtIHtvYmplY3R9IG5hbWUgLSBOYW1lIG9mIHZpZXcgY29tcG9uZW50IHRvIHNob3cuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBbcGFyYW1zXSAtIFZpZXcgcGFyYW1zXG4gICAqIEByZXR1cm5zIHsqfFByb21pc2V9XG4gICAqL1xuICBzaG93QXNNb2RhbCAobmFtZSwgcGFyYW1zKSB7XG4gICAgY29uc3QgcyA9IHRoaXNcbiAgICByZXR1cm4gcy5fc2hvdyhuYW1lLCBwYXJhbXMsIE1PREFMX1dBWSlcbiAgfSxcblxuICAvKipcbiAgICogU2hvdyB2aWV3IGFzIHdpdGggaW1tZWRpYXRlIHdheS5cbiAgICogQHBhcmFtIHtvYmplY3R9IG5hbWUgLSBOYW1lIG9mIHZpZXcgY29tcG9uZW50IHRvIHNob3cuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBbcGFyYW1zXSAtIFZpZXcgcGFyYW1zXG4gICAqIEByZXR1cm5zIHsqfFByb21pc2V9XG4gICAqL1xuICBzaG93QXNJbW1lZGlhdGUgKG5hbWUsIHBhcmFtcykge1xuICAgIGNvbnN0IHMgPSB0aGlzXG4gICAgcmV0dXJuIHMuX3Nob3cobmFtZSwgcGFyYW1zLCBJTU1FRElBVEVfV0FZKVxuICB9LFxuXG4gIC8qKlxuICAgKiBSZWdpc3RlciBjb21wb25lbnRzIHRvIHNob3cuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjb21wb25lbnRzIC0gVmlldyBjb21wb25lbnRzLlxuICAgKi9cbiAgcmVnaXN0ZXJDb21wb25lbnRzRm9yU2hvdyAoY29tcG9uZW50cykge1xuICAgIENvbXBvbmVudHNUb1Nob3cgPSBjb21wb25lbnRzLmRlZmF1bHQgfHwgY29tcG9uZW50c1xuICB9LFxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIExpZmVjeWNsZVxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIGNvbXBvbmVudFdpbGxNb3VudCAoKSB7XG4gICAgY29uc3QgcyA9IHRoaXNcbiAgICBkZWZhdWx0cyhzLCB7XG4gICAgICBzdGFja2VyVG9TaG93OiAoKSA9PiBudWxsXG4gICAgfSlcbiAgfSxcblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBQcml2YXRlXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgLyoqXG4gICAqIFNob3cgYSB2aWV3LlxuICAgKiBAcGFyYW0ge29iamVjdH0gbmFtZSAtIE5hbWUgb2YgdmlldyBjb21wb25lbnQgdG8gc2hvdy5cbiAgICogQHBhcmFtIHtvYmplY3R9IHBhcmFtcyAtIENvbXBvbmVudCBwcm9wcy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHdheSAtIEhvdyB0byBzaG93LlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZX1cbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9zaG93IChuYW1lLCBwYXJhbXMsIHdheSkge1xuICAgIGFzc2VydC5vayhDb21wb25lbnRzVG9TaG93LCAnU2hvdyBub3QgaW5pdGlhbGl6ZWQuIFlvdSBuZWVkIHRvIGNhbGwgLnJlZ2lzdGVyQ29tcG9uZW50c0ZvclNob3coKSBiZWZvcmUgdXNpbmcgc2hvdyBtaXhpbicpXG5cbiAgICBjb25zdCBzID0gdGhpc1xuXG4gICAgbGV0IGNvbXBvbmVudCA9IENvbXBvbmVudHNUb1Nob3dbIG5hbWUgXVxuICAgIGlmICghY29tcG9uZW50KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gY29tcG9uZW50OiAke25hbWV9YClcbiAgICB9XG4gICAgbGV0IHN0YWNrZXIgPSBzLnN0YWNrZXJUb1Nob3coKVxuICAgIGlmIChzdGFja2VyKSB7XG4gICAgICByZXR1cm4gc3RhY2tlci5wdXNoVmlldyhjb21wb25lbnQsIHBhcmFtcywgd2F5KVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcy5wdXNoVmlld1RvQ3VycmVudFN0YWNrKGNvbXBvbmVudCwgcGFyYW1zLCB3YXkpXG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEFwU2hvd01peGluXG4iXX0=