import * as React from "react"; import "./style.css"; export enum ESpinner { Plane = "Plane", Chase = "Chase", Bounce = "Bounce", Wave = "Wave", Pulse = "Pulse", Flow = "Flow", Swing = "Swing", Circle = "Circle", CircleFade = "CircleFade", Grid = "Grid", Fold = "Fold", Wander = "Wander", } export function Spinner({ spinner, delay = 0, ...rest }: { spinner: ESpinner; delay: number; } & React.HTMLAttributes) { const [show, setShow] = React.useState(() => (delay === 0 ? true : false)); React.useEffect(() => { const timeout = setTimeout(() => setShow(true), delay); return () => clearTimeout(timeout); }, [delay]); return (
{show ? (
) : (
)}
); } function InnerSpinner({ spinner = ESpinner.CircleFade, }: { spinner: ESpinner; }) { switch (spinner) { case ESpinner.Plane: return
; case ESpinner.Chase: return (
); case ESpinner.Bounce: return (
); case ESpinner.Wave: return (
); case ESpinner.Pulse: return
; case ESpinner.Flow: return (
); case ESpinner.Swing: return (
); case ESpinner.Circle: return (
); case ESpinner.CircleFade: return (
); case ESpinner.Grid: return (
); case ESpinner.Fold: return (
); case ESpinner.Wander: return (
); default: return null; } }