apeman-react-spinner
Version:
apeman react package for spinner.
81 lines (67 loc) • 5.9 kB
JavaScript
/**
* Higher order component with spinner
* @function withSpin
* @param {function} Component - A component constructor
* @returns {function} - Wrapped component
*/
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _breact = require('breact');
var _asobj = require('asobj');
var _ap_spinner = require('./ap_spinner');
var _ap_spinner2 = _interopRequireDefault(_ap_spinner);
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/** @lends withSpin */
function withSpin(Component) {
var propTypes = {
/** Show loading spinner */
spinning: _react.PropTypes.bool,
/** Theme of the spinner */
spinnerTheme: _react.PropTypes.string,
/** Size of spinner */
spinnerSize: _react.PropTypes.string,
/** Spinner instance */
spinner: _react.PropTypes.node
};
return (0, _breact.wrap)(Component, {
displayName: 'withSpin',
propTypes: propTypes,
getDefaultProps: function getDefaultProps() {
return {
spinning: false,
spinnerTheme: _ap_spinner2.default.DEFAULT_THEME,
spinnerSize: 'x-large',
spinner: undefined
};
},
render: function render() {
var s = this;
var props = s.props;
var spinnerTheme = props.spinnerTheme;
var spinnerSize = props.spinnerSize;
var spinning = props.spinning;
var _props$spinner = props.spinner;
var spinner = _props$spinner === undefined ? _react2.default.createElement(_ap_spinner2.default, { theme: spinnerTheme,
className: 'ap-spinner-cover',
size: spinnerSize,
enabled: spinning }) : _props$spinner;
var componentProps = (0, _asobj.clone)(props, {
without: Object.keys(propTypes)
});
return _react2.default.createElement(
Component,
_extends({}, componentProps, {
spinner: spinner
}),
props.children
);
}
});
}
exports.default = withSpin;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndpdGhfc3Bpbi5qc3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztBQU1BOzs7Ozs7OztBQUVBOztBQUNBOztBQUNBOzs7O0FBQ0E7Ozs7OztBQUVBO0FBQ0EsU0FBUyxRQUFULENBQW1CLFNBQW5CLEVBQThCO0FBQzVCLE1BQU0sWUFBWTtBQUNoQjtBQUNBLGNBQVUsaUJBQU0sSUFGQTtBQUdoQjtBQUNBLGtCQUFjLGlCQUFNLE1BSko7QUFLaEI7QUFDQSxpQkFBYSxpQkFBTSxNQU5IO0FBT2hCO0FBQ0EsYUFBUyxpQkFBTTtBQVJDLEdBQWxCO0FBVUEsU0FBTyxrQkFBSyxTQUFMLEVBQWdCO0FBQ3JCLGlCQUFhLFVBRFE7O0FBR3JCLHdCQUhxQjs7QUFLckIsbUJBTHFCLDZCQUtGO0FBQ2pCLGFBQU87QUFDTCxrQkFBVSxLQURMO0FBRUwsc0JBQWMscUJBQVUsYUFGbkI7QUFHTCxxQkFBYSxTQUhSO0FBSUwsaUJBQVM7QUFKSixPQUFQO0FBTUQsS0Fab0I7QUFjckIsVUFkcUIsb0JBY1g7QUFDUixVQUFNLElBQUksSUFBVjtBQURRLFVBRUYsS0FGRSxHQUVRLENBRlIsQ0FFRixLQUZFO0FBQUEsVUFJTixZQUpNLEdBYUosS0FiSSxDQUlOLFlBSk07QUFBQSxVQUtOLFdBTE0sR0FhSixLQWJJLENBS04sV0FMTTtBQUFBLFVBTU4sUUFOTSxHQWFKLEtBYkksQ0FNTixRQU5NO0FBQUEsMkJBYUosS0FiSSxDQU9OLE9BUE07QUFBQSxVQU9OLE9BUE0sa0NBUUosc0RBQVcsT0FBUSxZQUFuQjtBQUNXLG1CQUFVLGtCQURyQjtBQUVXLGNBQU8sV0FGbEI7QUFHVyxpQkFBVSxRQUhyQixHQVJJOztBQWNSLFVBQUksaUJBQWlCLGtCQUFNLEtBQU4sRUFBYTtBQUNoQyxpQkFBUyxPQUFPLElBQVAsQ0FBWSxTQUFaO0FBRHVCLE9BQWIsQ0FBckI7QUFHQSxhQUNFO0FBQUMsaUJBQUQ7QUFBQSxxQkFBZ0IsY0FBaEI7QUFDVyxtQkFBVTtBQURyQjtBQUdJLGNBQU07QUFIVixPQURGO0FBT0Q7QUF0Q29CLEdBQWhCLENBQVA7QUF3Q0Q7O2tCQUVjLFEiLCJmaWxlIjoid2l0aF9zcGluLmpzeCIsInNvdXJjZVJvb3QiOiJsaWIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEhpZ2hlciBvcmRlciBjb21wb25lbnQgd2l0aCBzcGlubmVyXG4gKiBAZnVuY3Rpb24gd2l0aFNwaW5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IENvbXBvbmVudCAtIEEgY29tcG9uZW50IGNvbnN0cnVjdG9yXG4gKiBAcmV0dXJucyB7ZnVuY3Rpb259IC0gV3JhcHBlZCBjb21wb25lbnRcbiAqL1xuJ3VzZSBzdHJpY3QnXG5cbmltcG9ydCB7d3JhcH0gZnJvbSAnYnJlYWN0J1xuaW1wb3J0IHtjbG9uZX0gZnJvbSAnYXNvYmonXG5pbXBvcnQgQXBTcGlubmVyIGZyb20gJy4vYXBfc3Bpbm5lcidcbmltcG9ydCBSZWFjdCwge1Byb3BUeXBlcyBhcyB0eXBlc30gZnJvbSAncmVhY3QnXG5cbi8qKiBAbGVuZHMgd2l0aFNwaW4gKi9cbmZ1bmN0aW9uIHdpdGhTcGluIChDb21wb25lbnQpIHtcbiAgY29uc3QgcHJvcFR5cGVzID0ge1xuICAgIC8qKiBTaG93IGxvYWRpbmcgc3Bpbm5lciAqL1xuICAgIHNwaW5uaW5nOiB0eXBlcy5ib29sLFxuICAgIC8qKiBUaGVtZSBvZiB0aGUgc3Bpbm5lciAqL1xuICAgIHNwaW5uZXJUaGVtZTogdHlwZXMuc3RyaW5nLFxuICAgIC8qKiBTaXplIG9mIHNwaW5uZXIgKi9cbiAgICBzcGlubmVyU2l6ZTogdHlwZXMuc3RyaW5nLFxuICAgIC8qKiBTcGlubmVyIGluc3RhbmNlICovXG4gICAgc3Bpbm5lcjogdHlwZXMubm9kZVxuICB9XG4gIHJldHVybiB3cmFwKENvbXBvbmVudCwge1xuICAgIGRpc3BsYXlOYW1lOiAnd2l0aFNwaW4nLFxuXG4gICAgcHJvcFR5cGVzLFxuXG4gICAgZ2V0RGVmYXVsdFByb3BzICgpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNwaW5uaW5nOiBmYWxzZSxcbiAgICAgICAgc3Bpbm5lclRoZW1lOiBBcFNwaW5uZXIuREVGQVVMVF9USEVNRSxcbiAgICAgICAgc3Bpbm5lclNpemU6ICd4LWxhcmdlJyxcbiAgICAgICAgc3Bpbm5lcjogdW5kZWZpbmVkXG4gICAgICB9XG4gICAgfSxcblxuICAgIHJlbmRlciAoKSB7XG4gICAgICBjb25zdCBzID0gdGhpc1xuICAgICAgbGV0IHsgcHJvcHMgfSA9IHNcbiAgICAgIGxldCB7XG4gICAgICAgIHNwaW5uZXJUaGVtZSxcbiAgICAgICAgc3Bpbm5lclNpemUsXG4gICAgICAgIHNwaW5uaW5nLFxuICAgICAgICBzcGlubmVyID0gKFxuICAgICAgICAgIDxBcFNwaW5uZXIgdGhlbWU9eyBzcGlubmVyVGhlbWUgfVxuICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPSdhcC1zcGlubmVyLWNvdmVyJ1xuICAgICAgICAgICAgICAgICAgICAgc2l6ZT17IHNwaW5uZXJTaXplIH1cbiAgICAgICAgICAgICAgICAgICAgIGVuYWJsZWQ9eyBzcGlubmluZyB9Lz5cbiAgICAgICAgKVxuICAgICAgfSA9IHByb3BzXG4gICAgICBsZXQgY29tcG9uZW50UHJvcHMgPSBjbG9uZShwcm9wcywge1xuICAgICAgICB3aXRob3V0OiBPYmplY3Qua2V5cyhwcm9wVHlwZXMpXG4gICAgICB9KVxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPENvbXBvbmVudCB7IC4uLmNvbXBvbmVudFByb3BzIH1cbiAgICAgICAgICAgICAgICAgICBzcGlubmVyPXsgc3Bpbm5lciB9XG4gICAgICAgID5cbiAgICAgICAgICB7IHByb3BzLmNoaWxkcmVuIH1cbiAgICAgICAgPC9Db21wb25lbnQ+XG4gICAgICApXG4gICAgfVxuICB9KVxufVxuXG5leHBvcnQgZGVmYXVsdCB3aXRoU3BpblxuIl19