import * as React from "react" ; import { polyfill } from "react-lifecycles-compat" ; import { AbstractPureComponent2 , Intent } from "../../common" ; import * as Errors from "../../common/errors" ; import { DISPLAYNAME_PREFIX } from "../../common/props" ; import { ISliderBaseProps , MultiSlider } from "./multiSlider" ; export type NumberRange = [ number , number ] ; enum RangeIndex { START = 0 , END = 1 } export type RangeSliderProps = IRangeSliderProps ; deprecated export interface IRangeSliderProps extends ISliderBaseProps { default value ? : NumberRange ; /** Callback invoked when the range value changes. */ onChange ? ( value ) : void ; /** Callback invoked when a handle is released. */ onRelease ? ( value ) : void ; } @ polyfill export class RangeSlider extends AbstractPureComponent2 < RangeSliderProps > { public static defaultProps : RangeSliderProps = { ... MultiSlider . defaultSliderProps , intent : Intent . PRIMARY , value : [ 0 , 10 ] , } ; public static displayName = `${ DISPLAYNAME_PREFIX }.RangeSlider` ; public render ( ) { const { value , ... props } = this . props ; return ( < MultiSlider { ... props } > < MultiSlider . Handle value = { value ! [ RangeIndex . START ] } type = "start" intentAfter = { props . intent } / > < MultiSlider . Handle value = { value ! [ RangeIndex . END ] } type = "end" / > < /MultiSlider>); } protected validateProps ( props ) { const { value } = props ; if ( value == null || value [ RangeIndex . START ] == null || value [ RangeIndex . END ] == null ) { throw new Error ( Errors . RANGESLIDER_NULL_VALUE ) ; } } }