1 | import React, { PureComponent, ReactText, ReactElement, TouchEvent, SVGProps } from 'react';
|
2 | import { ScalePoint } from 'victory-vendor/d3-scale';
|
3 | import { Padding, DataKey } from '../util/types';
|
4 | type BrushTravellerType = ReactElement<SVGElement> | ((props: any) => ReactElement<SVGElement>);
|
5 | interface BrushStartEndIndex {
|
6 | startIndex?: number;
|
7 | endIndex?: number;
|
8 | }
|
9 | interface InternalBrushProps {
|
10 | x?: number;
|
11 | y?: number;
|
12 | width?: number;
|
13 | data?: any[];
|
14 | updateId?: string | number;
|
15 | }
|
16 | interface 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 | }
|
34 | export type Props = Omit<SVGProps<SVGElement>, 'onChange'> & BrushProps;
|
35 | type BrushTravellerId = 'startX' | 'endX';
|
36 | interface 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 | }
|
54 | export 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 | }
|
107 | export {};
|