/**
 * Range
 *
 */
import type { PickClassStyleType, ReactPropsBase } from 'jamis-core';
import type { FormBaseControlSchema, FormControlProps, SchemaObject } from '../types';
export interface MultipleValue {
    min: number;
    max: number;
}
export type MarksType = {
    [index: string | number]: MarksValue;
};
type MarksValue = string | number | SchemaObject | {
    style?: React.CSSProperties;
    label?: string;
};
export type InputRangeValue = string | MultipleValue | number | [number, number];
export type RangeFormatValue = MultipleValue | number;
export type TooltipPosType = 'auto' | 'top' | 'right' | 'bottom' | 'left';
export type InputRangeRendererEvent = 'change' | 'blur' | 'focus';
export type InputRangeRendererAction = 'clear';
export interface HandleItemProps extends ReactPropsBase, PickClassStyleType {
    disabled: boolean;
    value: number;
    min: number;
    max: number;
    type?: 'min' | 'max';
    onChange: (value: number, type: 'min' | 'max') => void;
    onAfterChange: () => void;
    tooltipVisible?: boolean;
    tipFormatter?: (value: InputRangeValue) => boolean;
    unit?: string;
    tooltipPlacement?: string;
}
export interface RangeLabelProps extends ReactPropsBase, PickClassStyleType {
    show: boolean;
    value: number;
    tooltipVisible?: boolean;
    tipFormatter?: (value: InputRangeValue) => boolean;
    unit?: string;
    placement?: string;
    activePlacement?: string;
    positionLeft?: number;
    positionTop?: number;
}
export interface RangeControlSchema extends FormBaseControlSchema {
    type: 'input-range';
    /**
     * 滑块值
     */
    value?: InputRangeValue;
    /**
     * 最大值
     */
    max?: number;
    /**
     * 最小值
     */
    min?: number;
    /**
     * 步长
     */
    step?: number;
    /**
     * 单位
     */
    unit?: string;
    /**
     * 是否展示步长
     */
    showSteps?: boolean;
    /**
     * 分割块数
     */
    parts?: number | number[];
    /**
     * 刻度
     */
    marks?: MarksType;
    /**
     * 是否展示标签
     */
    tooltipVisible?: boolean;
    /**
     * 标签方向
     */
    tooltipPlacement?: TooltipPosType;
    /**
     * 是否为双滑块
     */
    multiple?: boolean;
    /**
     * 是否通过分隔符连接
     */
    joinValues?: boolean;
    /**
     * 分隔符
     */
    delimiter?: string;
    /**
     * 是否展示输入框
     */
    showInput?: boolean;
    /**
     * 是否禁用
     */
    disabled?: boolean;
}
export interface RangeProps extends FormControlProps {
    /**
     * 滑块值
     */
    value: InputRangeValue;
    /**
     * 最小值
     */
    min: number;
    /**
     * 最大值
     */
    max: number;
    /**
     * 步长
     */
    step: number;
    /**
     * 是否展示步长
     */
    showSteps: boolean;
    /**
     * 分割块数
     */
    parts: number;
    /**
     * 刻度
     */
    marks?: MarksType;
    /**
     * 是否展示标签
     */
    tooltipVisible: boolean;
    /**
     * 标签方向
     */
    tooltipPlacement: TooltipPosType;
    /**
     * 控制滑块标签显隐函数
     */
    tipFormatter?: (value: InputRangeValue) => boolean;
    /**
     * 是否为双滑块
     */
    multiple: boolean;
    /**
     * 是否通过分隔符连接
     */
    joinValues: boolean;
    /**
     * 分隔符
     */
    delimiter: string;
    /**
     * 单位
     */
    unit?: string;
    /**
     * 是否展示输入框
     */
    showInput: boolean;
    /**
     * 是否禁用
     */
    disabled: boolean;
    /**
     * 输入框是否可清除
     */
    clearable?: boolean;
    /**
     * value改变事件
     */
    onChange: (value: InputRangeValue) => void;
    /**
     * 鼠标松开事件
     */
    onAfterChange?: (value: InputRangeValue) => any;
}
export interface RangeItemProps extends RangeProps {
    value: RangeFormatValue;
    updateValue: (value: InputRangeValue) => void;
    onAfterChange: () => void;
}
export {};
