import React from 'react';
import PropTypes from 'prop-types';
import styled from '@emotion/styled';
import { css, keyframes } from '@emotion/core';
import CSSTransition from 'react-transition-group/CSSTransition';
import { colors } from './styles';
const styles = {
disabled: css`
display: none;
`,
active: css`
display: block;
`,
enter: css`
opacity: 0.01;
`,
enterActive: css`
opacity: 1;
transition: opacity 500ms ease-in;
`,
exit: css`
opacity: 1;
`,
exitActive: css`
opacity: 0.01;
transition: opacity 300ms ease-in;
`,
};
const animations = {
loader: keyframes`
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
`,
};
const LoaderText = styled.div`
width: auto !important;
height: auto !important;
text-align: center;
color: #767676;
margin-top: 55px;
line-height: 35px;
`;
const LoaderItem = styled.div`
position: absolute;
white-space: nowrap;
transform: translateX(-50%);
`;
export class Loader extends React.Component {
static propTypes = {
children: PropTypes.node,
className: PropTypes.string,
};
state = {
currentItem: 0,
};
componentWillUnmount() {
if (this.interval) {
clearInterval(this.interval);
}
}
setAnimation = () => {
if (this.interval) return;
const { children } = this.props;
this.interval = setInterval(() => {
const nextItem =
this.state.currentItem === children.length - 1 ? 0 : this.state.currentItem + 1;
this.setState({ currentItem: nextItem });
}, 5000);
};
renderChild = () => {
const { children } = this.props;
const { currentItem } = this.state;
if (!children) {
return null;
} else if (typeof children == 'string') {
return