UNPKG

4.06 kBTypeScriptView Raw
1import React, { PureComponent, ReactText, ReactElement, TouchEvent, SVGProps } from 'react';
2import { ScalePoint } from 'victory-vendor/d3-scale';
3import { Padding, DataKey } from '../util/types';
4type BrushTravellerType = ReactElement<SVGElement> | ((props: any) => ReactElement<SVGElement>);
5interface BrushStartEndIndex {
6 startIndex?: number;
7 endIndex?: number;
8}
9interface InternalBrushProps {
10 x?: number;
11 y?: number;
12 width?: number;
13 data?: any[];
14 updateId?: string | number;
15}
16interface BrushProps extends InternalBrushProps {
17 className?: string;
18 ariaLabel?: string;
19 height: number;
20 travellerWidth?: number;
21 traveller?: BrushTravellerType;
22 gap?: number;
23 padding?: Padding;
24 dataKey?: DataKey<any>;
25 startIndex?: number;
26 endIndex?: number;
27 tickFormatter?: (value: any, index: number) => ReactText;
28 children?: ReactElement;
29 onChange?: (newIndex: BrushStartEndIndex) => void;
30 onDragEnd?: (newIndex: BrushStartEndIndex) => void;
31 leaveTimeOut?: number;
32 alwaysShowText?: boolean;
33}
34export type Props = Omit<SVGProps<SVGElement>, 'onChange'> & BrushProps;
35type BrushTravellerId = 'startX' | 'endX';
36interface State {
37 isTravellerMoving?: boolean;
38 isTravellerFocused?: boolean;
39 isSlideMoving?: boolean;
40 startX?: number;
41 endX?: number;
42 slideMoveStartX?: number;
43 movingTravellerId?: BrushTravellerId;
44 isTextActive?: boolean;
45 brushMoveStartX?: number;
46 scale?: ScalePoint<number>;
47 scaleValues?: number[];
48 prevData?: any[];
49 prevWidth?: number;
50 prevX?: number;
51 prevTravellerWidth?: number;
52 prevUpdateId?: string | number;
53}
54export declare class Brush extends PureComponent<Props, State> {
55 static displayName: string;
56 static defaultProps: {
57 height: number;
58 travellerWidth: number;
59 gap: number;
60 fill: string;
61 stroke: string;
62 padding: {
63 top: number;
64 right: number;
65 bottom: number;
66 left: number;
67 };
68 leaveTimeOut: number;
69 alwaysShowText: boolean;
70 };
71 constructor(props: Props);
72 leaveTimer?: number;
73 travellerDragStartHandlers?: Record<BrushTravellerId, (event: React.MouseEvent<SVGGElement> | TouchEvent<SVGGElement>) => void>;
74 static renderDefaultTraveller(props: any): React.JSX.Element;
75 static renderTraveller(option: BrushTravellerType, props: any): React.JSX.Element;
76 static getDerivedStateFromProps(nextProps: Props, prevState: State): State;
77 componentWillUnmount(): void;
78 static getIndexInRange(valueRange: number[], x: number): number;
79 getIndex({ startX, endX }: {
80 startX: number;
81 endX: number;
82 }): {
83 startIndex: number;
84 endIndex: number;
85 };
86 getTextOfTick(index: number): any;
87 handleDrag: (e: React.Touch | React.MouseEvent<SVGGElement> | MouseEvent) => void;
88 handleTouchMove: (e: TouchEvent<SVGGElement>) => void;
89 attachDragEndListener(): void;
90 detachDragEndListener(): void;
91 handleDragEnd: () => void;
92 handleLeaveWrapper: () => void;
93 handleEnterSlideOrTraveller: () => void;
94 handleLeaveSlideOrTraveller: () => void;
95 handleSlideDragStart: (e: TouchEvent<SVGRectElement> | React.MouseEvent<SVGRectElement>) => void;
96 handleSlideDrag(e: React.Touch | React.MouseEvent<SVGGElement> | MouseEvent): void;
97 handleTravellerDragStart(id: BrushTravellerId, e: React.MouseEvent<SVGGElement> | TouchEvent<SVGGElement>): void;
98 handleTravellerMove(e: React.Touch | React.MouseEvent<SVGGElement> | MouseEvent): void;
99 handleTravellerMoveKeyboard(direction: 1 | -1, id: BrushTravellerId): void;
100 renderBackground(): React.JSX.Element;
101 renderPanorama(): React.ReactElement<any, string | React.JSXElementConstructor<any>>;
102 renderTravellerLayer(travellerX: number, id: BrushTravellerId): React.JSX.Element;
103 renderSlide(startX: number, endX: number): React.JSX.Element;
104 renderText(): React.JSX.Element;
105 render(): React.JSX.Element;
106}
107export {};