import React, { FunctionComponent, HTMLAttributes } from 'react'; import classNames from '../../lib/classNames'; function calcStrokeDashOffset(value: number, radius: number) { const progress = value / 100; return 2 * Math.PI * radius * (1 - progress); } export interface PullToRefreshSpinnerProps extends HTMLAttributes { size?: number; strokeWidth?: number; on?: boolean; progress?: number; } const PullToRefreshSpinner: FunctionComponent = ({ on, progress, size, strokeWidth, style, }: PullToRefreshSpinnerProps) => { const radius = 0.5 * size - 0.5 * strokeWidth; const dasharray = 2 * Math.PI * radius; const circleCenter = 0.5 * size; const dashoffset = calcStrokeDashOffset(on ? 80 : progress, radius); return (
); }; PullToRefreshSpinner.defaultProps = { size: 24, strokeWidth: 2.5, on: true, progress: null, }; export default React.memo(PullToRefreshSpinner);