elfen-component-spinner
Version:
react components for loader or spinner
73 lines (54 loc) • 3.36 kB
JavaScript
;
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 _templateObject = _taggedTemplateLiteral(['\n 0%, 80%, 100% {\n // transform: scale(0);\n opacity: 0;\n }\n\n 40% {\n // transform: scale(1);\n opacity: 1;\n }\n'], ['\n 0%, 80%, 100% {\n // transform: scale(0);\n opacity: 0;\n }\n\n 40% {\n // transform: scale(1);\n opacity: 1;\n }\n']),
_templateObject2 = _taggedTemplateLiteral(['\n height: ', ';\n'], ['\n height: ', ';\n']),
_templateObject3 = _taggedTemplateLiteral(['\n border-radius: 50%;\n transform-origin: center;\n animation: ', ' infinite both;\n animation-delay: ', 's;\n animation-duration: ', 's;\n'], ['\n border-radius: 50%;\n transform-origin: center;\n animation: ', ' infinite both;\n animation-delay: ', 's;\n animation-duration: ', 's;\n']);
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _styledComponents = require('styled-components');
var _styledComponents2 = _interopRequireDefault(_styledComponents);
var _lib = require('../lib');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
function _taggedTemplateLiteral(strings, raw) { return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
var COUNT = 3;
var RADIUS = 50;
var MARGIN = 50;
// const CX = (RADIUS + MARGIN) + (RADIUS * 2 + MARGIN * 2) * i;
var CXs = (0, _lib.repeat)(COUNT).map(function (_, i) {
return RADIUS + MARGIN + (RADIUS * 2 + MARGIN * 2) * i;
});
var CY = RADIUS + MARGIN;
var VIEW_BOX = '0 0 ' + (RADIUS * 2 + MARGIN * 2) * COUNT + ' ' + (RADIUS * 2 + MARGIN * 2);
var beat360 = (0, _styledComponents.keyframes)(_templateObject);
var Svg = _styledComponents2.default.svg(_templateObject2, function (props) {
return typeof props.circleRadius === 'string' ? props.circleRadius : props.circleRadius * 4 + 'px';
});
var Circle = _styledComponents2.default.circle(_templateObject3, beat360, function (props) {
return -props.duration / (COUNT + 1) * (COUNT - props.offset);
}, function (props) {
return props.duration;
});
var BeatLoading = function BeatLoading(_ref) {
var duration = _ref.duration,
size = _ref.size,
props = _objectWithoutProperties(_ref, ['duration', 'size']);
return _react2.default.createElement(
Svg,
_extends({}, props, {
viewBox: VIEW_BOX,
circleRadius: size
}),
_react2.default.createElement(Circle, { offset: 0, duration: duration, r: RADIUS, cx: CXs[0], cy: CY }),
_react2.default.createElement(Circle, { offset: 1, duration: duration, r: RADIUS, cx: CXs[1], cy: CY }),
_react2.default.createElement(Circle, { offset: 2, duration: duration, r: RADIUS, cx: CXs[2], cy: CY })
);
};
BeatLoading.defaultProps = {
size: 5,
duration: 0.8
};
exports.default = BeatLoading;