diff options
| author | kj_sh604 | 2026-03-15 16:19:35 -0400 |
|---|---|---|
| committer | kj_sh604 | 2026-03-15 16:19:35 -0400 |
| commit | 6ec259a0e71174651bae95d4628138bf6fd68742 (patch) | |
| tree | 5e33c6a5ec091ecabfcb257fdc7b6a88ed8754ac /packages/excalidraw/components/Spinner.tsx | |
| parent | 16c8578b15c727f22921f8a80a56ee4d4e7f2272 (diff) | |
refactor: packages/
Diffstat (limited to 'packages/excalidraw/components/Spinner.tsx')
| -rw-r--r-- | packages/excalidraw/components/Spinner.tsx | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/packages/excalidraw/components/Spinner.tsx b/packages/excalidraw/components/Spinner.tsx new file mode 100644 index 0000000..e8050ca --- /dev/null +++ b/packages/excalidraw/components/Spinner.tsx @@ -0,0 +1,43 @@ +import React from "react"; + +import "./Spinner.scss"; + +const Spinner = ({ + size = "1em", + circleWidth = 8, + synchronized = false, + className = "", +}: { + size?: string | number; + circleWidth?: number; + synchronized?: boolean; + className?: string; +}) => { + const mountTime = React.useRef(Date.now()); + const mountDelay = -(mountTime.current % 1600); + + return ( + <div className={`Spinner ${className}`}> + <svg + viewBox="0 0 100 100" + style={{ + width: size, + height: size, + // fix for remounting causing spinner flicker + ["--spinner-delay" as any]: synchronized ? `${mountDelay}ms` : 0, + }} + > + <circle + cx="50" + cy="50" + r={50 - circleWidth / 2} + strokeWidth={circleWidth} + fill="none" + strokeMiterlimit="10" + /> + </svg> + </div> + ); +}; + +export default Spinner; |
