import React, { FC, useEffect, useState } from 'react'; import { Box, Text } from 'ink'; const Spinner: FC<{ type?: keyof typeof spinners }> = ({ type = 'countdown' }) => { const { interval, frames } = spinners[type]; const [i, setI] = useState(0); useEffect(() => { const _ = setInterval(() => { setI(v => (v < frames.length - 1) ? v + 1 : 0) }, interval) return () => clearInterval(_); }, []) return frames[i] } const spinners = { countdown: { interval: 80, frames: [ {' '} , {' '} , {' '} , {' '} , {' '} , {' '} {' '} , {' '} {' '} {' '} , {' '} {' '} {' '} {' '} , {' '} {' '} {' '} {' '} {' '} , {' '} {' '} {' '} {' '} {' '} {' '} , {' '} {' '} {' '} {' '} {' '} {' '} {' '} , {' '} {' '} {' '} {' '} {' '} {' '} , {' '} {' '} {' '} {' '} {' '} , {' '} {' '} {' '} {' '} , {' '} {' '} {' '} , {' '} {' '} , {' '} , {' '} , {' '} , {' '} , {' '} , {' '} , {' '} {' '} , {' '} {' '} {' '} , {' '} {' '} {' '} {' '} , {' '} {' '} {' '} {' '} {' '} , {' '} {' '} {' '} {' '} {' '} {' '} , {' '} {' '} {' '} {' '} {' '} {' '} {' '} , {' '} {' '} {' '} {' '} {' '} {' '} , {' '} {' '} {' '} {' '} {' '} , {' '} {' '} {' '} {' '} , {' '} {' '} {' '} , {' '} {' '} , {' '} , ] } } export default Spinner;