react-scrubber
Version:
React scrubber component with touch controls, styling, and lots event handlers
62 lines (61 loc) • 1.96 kB
TypeScript
import React, { Component } from 'react';
type Marker = {
start: number;
end?: number;
className?: string;
};
type Tooltip = {
enabledOnHover?: boolean;
enabledOnScrub?: boolean;
className?: string;
formatString?: (value: number) => string;
};
export type ScrubberProps = {
className?: string;
value: number;
min: number;
max: number;
bufferPosition?: number;
vertical?: boolean;
onScrubStart?: (value: number) => void;
onScrubEnd?: (value: number) => void;
onScrubChange?: (value: number) => void;
onMouseMove?: (value: number) => void;
onMouseOver?: (value: number) => void;
onMouseLeave?: (value: number) => void;
tooltip?: Tooltip;
markers?: Array<number | Marker>;
[key: string]: any;
};
type Nullable<T> = T | null;
type ScrubberState = {
seeking: boolean;
mouseX: Nullable<number>;
mouseY: Nullable<number>;
touchId: Nullable<number>;
touchX: Nullable<number>;
touchY: Nullable<number>;
hover: boolean;
};
export declare class Scrubber extends Component<ScrubberProps> {
barRef: React.RefObject<HTMLDivElement | null>;
state: ScrubberState;
componentDidMount(): void;
componentWillUnmount(): void;
getPositionFromMouseX: () => number;
getPositionFromMouseY: () => number;
getPositionFromCursor: () => number;
handleMouseOver: (e: MouseEvent) => void;
handleMouseLeave: (e: MouseEvent) => void;
handleMouseMove: (e: MouseEvent) => void;
handleTouchMove: (e: TouchEvent) => void;
handleSeekStart: (e: React.MouseEvent<HTMLDivElement>) => void;
handleTouchStart: (e: React.TouchEvent<HTMLDivElement>) => void;
handleSeekEnd: () => void;
handleTouchEnd: (e: TouchEvent) => void;
renderTooltip: () => React.JSX.Element | undefined;
renderMarkers: () => React.JSX.Element[] | null;
getValuePercent: (value: number) => string;
render(): React.JSX.Element;
}
export {};