constructor(rangeElements, options = {}) {
    this._value = options.value || 0;

    this.rangeElement = rangeElements.slider;
    this.rangeInputElement = rangeElements.input;

    this._drawRangeElement();

    this.rangeWidth = this._getRangeWidth();
    this._min = options.min || 0;
    this._max = options.max || 100;
    this._useDecimal = options.useDecimal;
    this._absMax = this._min * -1 + this._max;
    this.realTimeEvent = options.realTimeEvent || false;
    this._userInputTimer = null;

    this.eventHandler = {
      startChangingSlide: this._startChangingSlide.bind(this),
      stopChangingSlide: this._stopChangingSlide.bind(this),
      changeSlide: this._changeSlide.bind(this),
      changeSlideFinally: this._changeSlideFinally.bind(this),
      changeInput: this._changeInput.bind(this),
      changeInputFinally: this._changeValueWithInput.bind(this, true),
      changeInputWithArrow: this._changeValueWithInputKeyEvent.bind(this),
    };

    this._addClickEvent();
    this._addDragEvent();
    this._addInputEvent();
    this.value = options.value;
    this.trigger('change');
  }
@constructor
@extends {View}
@param {Object} rangeElements - Html resources for creating sliders
 @param {HTMLElement} rangeElements.slider - b
 @param {HTMLElement} [rangeElements.input] - c
@param {Object} options - Slider make options
 @param {number} options.min - min value
 @param {number} options.max - max value
 @param {number} options.value - default value
 @param {number} [options.useDecimal] - Decimal point processing.
 @param {boolean} [options.realTimeEvent] - Reflect live events.