@nekobird/controls
Version:
A collection of opinionated user-interface controls.
49 lines (48 loc) • 1.74 kB
TypeScript
export interface DuoKnobSliderConfig {
trackElement?: HTMLElement;
knobOneElement?: HTMLElement;
knobTwoElement?: HTMLElement;
highlightElement?: HTMLElement;
minValueElement?: HTMLElement;
maxValueElement?: HTMLElement;
range: [number, number];
interval: number;
useInterval: boolean;
onInit: (slider: DuoKnobSlider) => void;
onActivate: (slider: DuoKnobSlider) => void;
onDeactivate: (slider: DuoKnobSlider) => void;
onUpdate: (slider: DuoKnobSlider) => void;
moveKnob: (knob: HTMLElement, left: number) => void;
updateHighlight: (highlight: HTMLElement, left: number, width: number, slider: DuoKnobSlider) => void;
}
export declare const DUO_KNOB_SLIDER_DEFAULT_CONFIG: DuoKnobSliderConfig;
export declare class DuoKnobSlider {
config: DuoKnobSliderConfig;
isActive: boolean;
isDisabled: boolean;
knobOneIsActive: boolean;
knobTwoIsActive: boolean;
private knobOneLeftOffset;
private knobTwoLeftOffset;
private knobOnePointerDragEventManager?;
private knobTwoPointerDragEventManager?;
knobOneValue: number;
knobTwoValue: number;
private currentValue;
constructor(config: Partial<DuoKnobSliderConfig>);
setConfig(config: Partial<DuoKnobSliderConfig>): this;
value: [number, number];
readonly normalizedValue: [number, number];
private updateValueFromKnobValues;
private getSliderRect;
private offsetInterval;
private knobOneEventHandlerStart;
private knobTwoEventHandlerStart;
private knobOneEventHandlerDrag;
private knobTwoEventHandlerDrag;
private knobOneEventHandlerEnd;
private knobTwoEventHandlerEnd;
private checkIfActive;
private onUpdate;
listen(): void;
}