molstar
Version:
A comprehensive macromolecular library.
148 lines (147 loc) • 4.78 kB
TypeScript
/**
* Copyright (c) 2018-2019 mol* contributors, licensed under MIT, See LICENSE file for more info.
*
* @author David Sehnal <david.sehnal@gmail.com>
* @author Alexander Rose <alexander.rose@weirdbyte.de>
*/
import * as React from 'react';
export declare class Slider extends React.Component<{
min: number;
max: number;
value: number;
step?: number;
onChange: (v: number) => void;
onChangeImmediate?: (v: number) => void;
disabled?: boolean;
onEnter?: () => void;
}, {
isChanging: boolean;
current: number;
}> {
state: {
isChanging: boolean;
current: number;
};
static getDerivedStateFromProps(props: {
value: number;
}, state: {
isChanging: boolean;
current: number;
}): {
current: number;
} | null;
begin: () => void;
end: (v: number) => void;
updateCurrent: (current: number) => void;
updateManually: (v: number) => void;
onManualBlur: () => void;
render(): JSX.Element;
}
export declare class Slider2 extends React.Component<{
min: number;
max: number;
value: [number, number];
step?: number;
onChange: (v: [number, number]) => void;
disabled?: boolean;
onEnter?: () => void;
}, {
isChanging: boolean;
current: [number, number];
}> {
state: {
isChanging: boolean;
current: [number, number];
};
static getDerivedStateFromProps(props: {
value: [number, number];
}, state: {
isChanging: boolean;
current: [number, number];
}): {
current: [number, number];
} | null;
begin: () => void;
end: (v: [number, number]) => void;
updateCurrent: (current: [number, number]) => void;
updateMax: (v: number) => void;
updateMin: (v: number) => void;
render(): JSX.Element;
}
export declare class Handle extends React.Component<Partial<HandleProps>, {}> {
render(): JSX.Element;
}
export interface SliderBaseProps {
min: number;
max: number;
step?: number;
defaultValue?: number | number[];
value?: number | number[];
marks?: any;
className?: string;
prefixCls?: string;
disabled?: boolean;
onBeforeChange?: (value: number | number[]) => void;
onChange?: (value: number | number[]) => void;
onAfterChange?: (value: number | number[]) => void;
handle?: JSX.Element;
tipFormatter?: (value: number, index: number) => any;
range?: boolean | number;
vertical?: boolean;
allowCross?: boolean;
pushable?: boolean | number;
}
export interface SliderBaseState {
handle: number | null;
recent: number;
bounds: number[];
}
export declare class SliderBase extends React.Component<SliderBaseProps, SliderBaseState> {
private sliderElement;
private handleElements;
constructor(props: SliderBaseProps);
static defaultProps: SliderBaseProps;
private dragOffset;
private startPosition;
private startValue;
private _getPointsCache;
componentDidUpdate(prevProps: SliderBaseProps): void;
onChange(state: this['state']): void;
onMouseDown: (e: MouseEvent) => void;
onMouseMove(e: MouseEvent): void;
onMove(e: MouseEvent | TouchEvent, position: number): void;
onStart(position: number): void;
onTouchMove: (e: TouchEvent) => void;
onTouchStart: (e: TouchEvent) => void;
/**
* Returns an array of possible slider points, taking into account both
* `marks` and `step`. The result is cached.
*/
getPoints(): any;
getPrecision(step: number): number;
getSliderLength(): number;
getSliderStart(): number;
getValue(): number;
private eventHandlers;
addDocumentEvents(type: 'touch' | 'mouse'): void;
calcOffset: (value: number) => number;
calcValue(offset: number): number;
calcValueByPos(position: number): number;
end(type: 'mouse' | 'touch'): void;
isEventFromHandle(e: MouseEvent | TouchEvent): boolean;
isValueOutOfBounds(value: number, props: SliderBaseProps): boolean;
pushHandle(bounds: number[], handle: number, direction: number, amount: number): boolean;
pushHandleOnePoint(bounds: number[], handle: number, direction: number): boolean;
pushSurroundingHandles(bounds: number[], handle: number, originalValue: number): void;
removeEvents(type: 'touch' | 'mouse'): void;
trimAlignValue(v: number, props?: SliderBaseProps): number;
render(): JSX.Element;
}
export interface HandleProps {
className: string;
vertical: boolean;
offset: number;
tipFormatter: (v: number, index: number) => any;
value: number;
index: number;
}