/**
 * @author Timur Kuzhagaliyev <tim.kuzh@gmail.com>
 * @copyright 2020
 * @license MIT
 */

import React from 'react';

import { makeLocalChonkyStyles } from '../../util/styles';

export interface TextPlaceholderProps {
    minLength: number;
    maxLength: number;
}

const getRandomInt = (min: number, max: number) => {
    return min + Math.floor(Math.random() * Math.floor(max - min));
};
export const TextPlaceholder: React.FC<TextPlaceholderProps> = React.memo(props => {
    const { minLength, maxLength } = props;

    const placeholderLength = getRandomInt(minLength, maxLength);
    const whitespace = '&nbsp;'.repeat(placeholderLength);

    const classes = useStyles();
    return (
        <span
            className={classes.textPlaceholder}
            dangerouslySetInnerHTML={{ __html: whitespace }}
        />
    );
});

const useStyles = makeLocalChonkyStyles(() => ({
    '@keyframes loading-placeholder': {
        '0%': { opacity: 0.2 },
        '50%': { opacity: 0.4 },
        '100%': { opacity: 0.2 },
    },
    textPlaceholder: {
        animationName: '$loading-placeholder',
        animationIterationCount: 'infinite',
        animationTimingFunction: 'linear',
        animationDuration: '1.5s',
        backgroundColor: '#ccc',
        whiteSpace: 'nowrap',
        overflow: 'hidden',
        borderRadius: 4,
        maxWidth: '40%',
        minWidth: 20,
    },
}));
