UNPKG

apeman-react-spinner

Version:
81 lines (67 loc) 5.9 kB
/** * 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