{"version":3,"file":"ui-vts-kit-ng-vts-slider.mjs","sources":["../../components/slider/slider.service.ts","../../components/slider/handle.component.ts","../../components/slider/track.component.ts","../../components/slider/step.component.ts","../../components/slider/marks.component.ts","../../components/slider/slider.component.ts","../../components/slider/slider.module.ts","../../components/slider/typings.ts","../../components/slider/public-api.ts","../../components/slider/ui-vts-kit-ng-vts-slider.ts"],"sourcesContent":["/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class VtsSliderService {\n  isDragging = false;\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { Direction } from '@angular/cdk/bidi';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  Input,\n  OnChanges,\n  SimpleChanges,\n  ViewChild,\n  ViewEncapsulation\n} from '@angular/core';\nimport { BooleanInput, NgStyleInterface } from '@ui-vts-kit/ng-vts/core/types';\nimport { InputBoolean } from '@ui-vts-kit/ng-vts/core/util';\n\nimport { VtsTooltipDirective } from '@ui-vts-kit/ng-vts/tooltip';\nimport { VtsSliderService } from './slider.service';\nimport { VtsSliderShowTooltip } from './typings';\n\n@Component({\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  selector: 'vts-slider-handle',\n  exportAs: 'vtsSliderHandle',\n  preserveWhitespaces: false,\n  template: `\n    <div\n      #handle\n      class=\"vts-slider-handle\"\n      tabindex=\"0\"\n      vts-tooltip\n      [ngStyle]=\"style\"\n      [vtsTooltipTitle]=\"\n        tooltipFormatter === null || tooltipVisible === 'never' ? null : tooltipTitle\n      \"\n      [vtsTooltipTrigger]=\"null\"\n      [vtsTooltipPlacement]=\"tooltipPlacement\"\n    ></div>\n  `,\n  host: {\n    '(mouseenter)': 'enterHandle()',\n    '(mouseleave)': 'leaveHandle()'\n  }\n})\nexport class VtsSliderHandleComponent implements OnChanges {\n  static ngAcceptInputType_active: BooleanInput;\n\n  @ViewChild('handle', { static: false }) handleEl?: ElementRef;\n  @ViewChild(VtsTooltipDirective, { static: false })\n  tooltip?: VtsTooltipDirective;\n\n  @Input() vertical?: boolean;\n  @Input() reverse?: boolean;\n  @Input() offset?: number;\n  @Input() value?: number;\n  @Input() tooltipVisible: VtsSliderShowTooltip = 'default';\n  @Input() tooltipPlacement?: string;\n  @Input() tooltipFormatter?: null | ((value: number) => string);\n  @Input() @InputBoolean() active = false;\n  @Input() dir: Direction = 'ltr';\n\n  tooltipTitle?: string;\n  style: NgStyleInterface = {};\n\n  constructor(private sliderService: VtsSliderService, private cdr: ChangeDetectorRef) {}\n\n  ngOnChanges(changes: SimpleChanges): void {\n    const { offset, value, active, tooltipVisible, reverse, dir } = changes;\n\n    if (offset || reverse || dir) {\n      this.updateStyle();\n    }\n\n    if (value) {\n      this.updateTooltipTitle();\n      this.updateTooltipPosition();\n    }\n\n    if (active) {\n      if (active.currentValue) {\n        this.toggleTooltip(true);\n      } else {\n        this.toggleTooltip(false);\n      }\n    }\n\n    if (tooltipVisible?.currentValue === 'always') {\n      Promise.resolve().then(() => this.toggleTooltip(true, true));\n    }\n  }\n\n  enterHandle = () => {\n    if (!this.sliderService.isDragging) {\n      this.toggleTooltip(true);\n      this.updateTooltipPosition();\n      this.cdr.detectChanges();\n    }\n  };\n\n  leaveHandle = () => {\n    if (!this.sliderService.isDragging) {\n      this.toggleTooltip(false);\n      this.cdr.detectChanges();\n    }\n  };\n\n  focus(): void {\n    this.handleEl?.nativeElement.focus();\n  }\n\n  private toggleTooltip(show: boolean, force: boolean = false): void {\n    if (!force && (this.tooltipVisible !== 'default' || !this.tooltip)) {\n      return;\n    }\n\n    if (show) {\n      this.tooltip?.show();\n    } else {\n      this.tooltip?.hide();\n    }\n  }\n\n  private updateTooltipTitle(): void {\n    this.tooltipTitle = this.tooltipFormatter\n      ? this.tooltipFormatter(this.value!)\n      : `${this.value}`;\n  }\n\n  private updateTooltipPosition(): void {\n    if (this.tooltip) {\n      Promise.resolve().then(() => this.tooltip?.updatePosition());\n    }\n  }\n\n  private updateStyle(): void {\n    const vertical = this.vertical;\n    const reverse = this.reverse;\n    const offset = this.offset;\n\n    const positionStyle = vertical\n      ? {\n          [reverse ? 'top' : 'bottom']: `${offset}%`,\n          [reverse ? 'bottom' : 'top']: 'auto',\n          transform: reverse ? null : `translateY(+50%)`\n        }\n      : {\n          ...this.getHorizontalStylePosition(),\n          transform: `translateX(${\n            reverse ? (this.dir === 'rtl' ? '-' : '+') : this.dir === 'rtl' ? '+' : '-'\n          }50%)`\n        };\n\n    this.style = positionStyle;\n    this.cdr.markForCheck();\n  }\n\n  private getHorizontalStylePosition(): { left: string; right: string } {\n    let left = this.reverse ? 'auto' : `${this.offset}%`;\n    let right = this.reverse ? `${this.offset}%` : 'auto';\n    if (this.dir === 'rtl') {\n      const tmp = left;\n      left = right;\n      right = tmp;\n    }\n    return { left, right };\n  }\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { Direction } from '@angular/cdk/bidi';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  Input,\n  OnChanges,\n  ViewEncapsulation\n} from '@angular/core';\nimport { BooleanInput, NumberInput } from '@ui-vts-kit/ng-vts/core/types';\nimport { InputBoolean, InputNumber } from '@ui-vts-kit/ng-vts/core/util';\n\nexport interface VtsSliderTrackStyle {\n  bottom?: string | null;\n  height?: string | null;\n  left?: string | null;\n  right?: string | null;\n  width?: string | null;\n  visibility?: string;\n}\n\n@Component({\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  selector: 'vts-slider-track',\n  exportAs: 'vtsSliderTrack',\n  preserveWhitespaces: false,\n  template: `\n    <div class=\"vts-slider-track\" [ngStyle]=\"style\"></div>\n  `\n})\nexport class VtsSliderTrackComponent implements OnChanges {\n  static ngAcceptInputType_offset: NumberInput;\n  static ngAcceptInputType_length: NumberInput;\n  static ngAcceptInputType_vertical: BooleanInput;\n  static ngAcceptInputType_included: BooleanInput;\n  static ngAcceptInputType_reverse: BooleanInput;\n\n  @Input() @InputNumber() offset: number = 0;\n  @Input() @InputBoolean() reverse: boolean = false;\n  @Input() dir: Direction = 'ltr';\n  @Input() @InputNumber() length: number = 0;\n  @Input() @InputBoolean() vertical = false;\n  @Input() @InputBoolean() included = false;\n\n  style: VtsSliderTrackStyle = {};\n\n  ngOnChanges(): void {\n    const vertical = this.vertical;\n    const reverse = this.reverse;\n    const visibility = this.included ? 'visible' : 'hidden';\n    const offset = this.offset;\n    const length = this.length;\n\n    const positonStyle: VtsSliderTrackStyle = vertical\n      ? {\n          [reverse ? 'top' : 'bottom']: `${offset}%`,\n          [reverse ? 'bottom' : 'top']: 'auto',\n          height: `${length}%`,\n          visibility\n        }\n      : {\n          ...this.getHorizontalStylePosition(),\n          width: `${length}%`,\n          visibility\n        };\n\n    this.style = positonStyle;\n  }\n\n  private getHorizontalStylePosition(): { left: string; right: string } {\n    let left = this.reverse ? 'auto' : `${this.offset}%`;\n    let right = this.reverse ? `${this.offset}%` : 'auto';\n    if (this.dir === 'rtl') {\n      const tmp = left;\n      left = right;\n      right = tmp;\n    }\n    return { left, right };\n  }\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  Input,\n  OnChanges,\n  SimpleChanges,\n  ViewEncapsulation\n} from '@angular/core';\nimport { BooleanInput } from '@ui-vts-kit/ng-vts/core/types';\n\nimport { InputBoolean } from '@ui-vts-kit/ng-vts/core/util';\n\nimport { VtsDisplayedStep, VtsExtendedMark } from './typings';\n\n@Component({\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  selector: 'vts-slider-step',\n  exportAs: 'vtsSliderStep',\n  preserveWhitespaces: false,\n  template: `\n    <div class=\"vts-slider-step\">\n      <span\n        class=\"vts-slider-dot\"\n        *ngFor=\"let mark of steps; trackBy: trackById\"\n        [class.vts-slider-dot-active]=\"mark.active\"\n        [ngStyle]=\"mark.style!\"\n      ></span>\n    </div>\n  `\n})\nexport class VtsSliderStepComponent implements OnChanges {\n  static ngAcceptInputType_vertical: BooleanInput;\n  static ngAcceptInputType_included: BooleanInput;\n\n  @Input() lowerBound: number | null = null;\n  @Input() upperBound: number | null = null;\n  @Input() marksArray: VtsExtendedMark[] = [];\n  @Input() min!: number;\n  @Input() max!: number;\n  @Input() @InputBoolean() vertical = false;\n  @Input() @InputBoolean() included = false;\n  @Input() reverse!: boolean;\n\n  steps: VtsDisplayedStep[] = [];\n\n  ngOnChanges(changes: SimpleChanges): void {\n    const { marksArray, lowerBound, upperBound, reverse } = changes;\n\n    if (marksArray || reverse) {\n      this.buildSteps();\n    }\n    if (marksArray || lowerBound || upperBound || reverse) {\n      this.togglePointActive();\n    }\n  }\n\n  trackById(_index: number, step: VtsDisplayedStep): number {\n    return step.value;\n  }\n\n  private buildSteps(): void {\n    const orient = this.vertical ? 'bottom' : 'left';\n\n    this.steps = this.marksArray.map(mark => {\n      const { value, config } = mark;\n      let offset = mark.offset;\n      const range = this.max - this.min;\n\n      if (this.reverse) {\n        offset = ((this.max - value) / range) * 100;\n      }\n\n      return {\n        value,\n        offset,\n        config,\n        active: false,\n        style: {\n          [orient]: `${offset}%`\n        }\n      };\n    });\n  }\n\n  private togglePointActive(): void {\n    if (this.steps && this.lowerBound !== null && this.upperBound !== null) {\n      this.steps.forEach(step => {\n        const value = step.value;\n        const isActive =\n          (!this.included && value === this.upperBound) ||\n          (this.included && value <= this.upperBound! && value >= this.lowerBound!);\n        step.active = isActive;\n      });\n    }\n  }\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  Input,\n  OnChanges,\n  SimpleChanges,\n  ViewEncapsulation\n} from '@angular/core';\nimport { BooleanInput, NgStyleInterface } from '@ui-vts-kit/ng-vts/core/types';\nimport { InputBoolean } from '@ui-vts-kit/ng-vts/core/util';\n\nimport { VtsDisplayedMark, VtsExtendedMark, VtsMark, VtsMarkObj } from './typings';\n\n@Component({\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  preserveWhitespaces: false,\n  selector: 'vts-slider-marks',\n  exportAs: 'vtsSliderMarks',\n  template: `\n    <div class=\"vts-slider-mark\">\n      <span\n        class=\"vts-slider-mark-text\"\n        *ngFor=\"let attr of marks; trackBy: trackById\"\n        [class.vts-slider-mark-text-active]=\"attr.active\"\n        [ngStyle]=\"attr.style!\"\n        [innerHTML]=\"attr.label\"\n      ></span>\n    </div>\n  `\n})\nexport class VtsSliderMarksComponent implements OnChanges {\n  static ngAcceptInputType_vertical: BooleanInput;\n  static ngAcceptInputType_included: BooleanInput;\n\n  @Input() lowerBound: number | null = null;\n  @Input() upperBound: number | null = null;\n  @Input() marksArray: VtsExtendedMark[] = [];\n  @Input() min!: number;\n  @Input() max!: number;\n  @Input() @InputBoolean() vertical = false;\n  @Input() @InputBoolean() included = false;\n  @Input() reverse!: boolean;\n\n  marks: VtsDisplayedMark[] = [];\n\n  ngOnChanges(changes: SimpleChanges): void {\n    const { marksArray, lowerBound, upperBound, reverse } = changes;\n\n    if (marksArray || reverse) {\n      this.buildMarks();\n    }\n\n    if (marksArray || lowerBound || upperBound || reverse) {\n      this.togglePointActive();\n    }\n  }\n\n  trackById(_index: number, mark: VtsDisplayedMark): number {\n    return mark.value;\n  }\n\n  private buildMarks(): void {\n    const range = this.max - this.min;\n\n    this.marks = this.marksArray.map(mark => {\n      const { value, offset, config } = mark;\n      const style =\n        value === this.min || value === this.max\n          ? { opacity: '0' }\n          : this.getMarkStyles(value, range, config);\n      const label = isConfigObject(config) ? config.label : config;\n\n      return {\n        label,\n        offset,\n        style,\n        value,\n        config,\n        active: false\n      };\n    });\n  }\n\n  private getMarkStyles(value: number, range: number, config: VtsMark): NgStyleInterface {\n    let style;\n    const markValue = this.reverse ? this.max + this.min - value : value;\n\n    if (this.vertical) {\n      style = {\n        marginBottom: '-50%',\n        bottom: `${((markValue - this.min) / range) * 100}%`\n      };\n    } else {\n      style = {\n        transform: `translate3d(-50%, 0, 0)`,\n        left: `${((markValue - this.min) / range) * 100}%`\n      };\n    }\n\n    if (isConfigObject(config) && config.style) {\n      style = { ...style, ...config.style };\n    }\n\n    return style;\n  }\n\n  private togglePointActive(): void {\n    if (this.marks && this.lowerBound !== null && this.upperBound !== null) {\n      this.marks.forEach(mark => {\n        const value = mark.value;\n        const isActive =\n          (!this.included && value === this.upperBound) ||\n          (this.included && value <= this.upperBound! && value >= this.lowerBound!);\n\n        mark.active = isActive;\n      });\n    }\n  }\n}\n\nfunction isConfigObject(config: VtsMark): config is VtsMarkObj {\n  return typeof config !== 'string';\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { Direction, Directionality } from '@angular/cdk/bidi';\nimport { DOWN_ARROW, LEFT_ARROW, RIGHT_ARROW, UP_ARROW } from '@angular/cdk/keycodes';\nimport { Platform } from '@angular/cdk/platform';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Optional,\n  Output,\n  QueryList,\n  SimpleChanges,\n  ViewChild,\n  ViewChildren,\n  ViewEncapsulation\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { BooleanInput, NumberInput } from '@ui-vts-kit/ng-vts/core/types';\nimport {\n  arraysEqual,\n  ensureNumberInRange,\n  getElementOffset,\n  getPercent,\n  getPrecision,\n  InputBoolean,\n  InputNumber,\n  MouseTouchObserverConfig,\n  silentEvent\n} from '@ui-vts-kit/ng-vts/core/util';\nimport { fromEvent, merge, Observable, Subject, Subscription } from 'rxjs';\nimport { distinctUntilChanged, filter, map, pluck, takeUntil, tap } from 'rxjs/operators';\n\nimport { VtsSliderHandleComponent } from './handle.component';\nimport { VtsSliderService } from './slider.service';\n\nimport {\n  VtsExtendedMark,\n  VtsMarks,\n  VtsSliderHandler,\n  VtsSliderShowTooltip,\n  VtsSliderValue\n} from './typings';\n\n@Component({\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  selector: 'vts-slider',\n  exportAs: 'vtsSlider',\n  preserveWhitespaces: false,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => VtsSliderComponent),\n      multi: true\n    },\n    VtsSliderService\n  ],\n  host: {\n    '(keydown)': 'onKeyDown($event)',\n    '[class.vts-slider-container]': 'true'\n  },\n  template: `\n    <div\n      #slider\n      class=\"vts-slider\"\n      [class.vts-slider-rtl]=\"dir === 'rtl'\"\n      [class.vts-slider-disabled]=\"vtsDisabled\"\n      [class.vts-slider-vertical]=\"vtsVertical\"\n      [class.vts-slider-with-marks]=\"marksArray\"\n    >\n      <div class=\"vts-slider-rail\"></div>\n      <span class=\"vts-slider-selected-value\">{{ value }}</span>\n      <span class=\"vts-slider-min-label\">{{ vtsMin }}</span>\n      <span class=\"vts-slider-max-label\">{{ vtsMax }}</span>\n      <vts-slider-track\n        [vertical]=\"vtsVertical\"\n        [included]=\"vtsIncluded\"\n        [offset]=\"track.offset!\"\n        [length]=\"track.length!\"\n        [reverse]=\"vtsReverse\"\n        [dir]=\"dir\"\n      ></vts-slider-track>\n      <vts-slider-step\n        *ngIf=\"marksArray\"\n        [vertical]=\"vtsVertical\"\n        [min]=\"vtsMin\"\n        [max]=\"vtsMax\"\n        [lowerBound]=\"$any(bounds.lower)\"\n        [upperBound]=\"$any(bounds.upper)\"\n        [marksArray]=\"marksArray\"\n        [included]=\"vtsIncluded\"\n        [reverse]=\"vtsReverse\"\n      ></vts-slider-step>\n      <vts-slider-handle\n        *ngFor=\"let handle of handles\"\n        [vertical]=\"vtsVertical\"\n        [reverse]=\"vtsReverse\"\n        [offset]=\"handle.offset!\"\n        [value]=\"handle.value!\"\n        [active]=\"handle.active\"\n        [tooltipFormatter]=\"vtsTipFormatter\"\n        [tooltipVisible]=\"vtsTooltipVisible\"\n        [tooltipPlacement]=\"vtsTooltipPlacement\"\n        [dir]=\"dir\"\n      ></vts-slider-handle>\n      <vts-slider-marks\n        *ngIf=\"marksArray\"\n        [vertical]=\"vtsVertical\"\n        [min]=\"vtsMin\"\n        [max]=\"vtsMax\"\n        [lowerBound]=\"$any(bounds.lower)\"\n        [upperBound]=\"$any(bounds.upper)\"\n        [marksArray]=\"marksArray\"\n        [included]=\"vtsIncluded\"\n        [reverse]=\"vtsReverse\"\n      ></vts-slider-marks>\n    </div>\n  `\n})\nexport class VtsSliderComponent implements ControlValueAccessor, OnInit, OnChanges, OnDestroy {\n  static ngAcceptInputType_vtsDisabled: BooleanInput;\n  static ngAcceptInputType_vtsDots: BooleanInput;\n  static ngAcceptInputType_vtsIncluded: BooleanInput;\n  static ngAcceptInputType_vtsRange: BooleanInput;\n  static ngAcceptInputType_vtsVertical: BooleanInput;\n  static ngAcceptInputType_vtsMax: NumberInput;\n  static ngAcceptInputType_vtsMin: NumberInput;\n  static ngAcceptInputType_vtsStep: NumberInput;\n  static ngAcceptInputType_vtsReverse: BooleanInput;\n\n  @ViewChild('slider', { static: true }) slider!: ElementRef<HTMLDivElement>;\n  @ViewChildren(VtsSliderHandleComponent)\n  handlerComponents!: QueryList<VtsSliderHandleComponent>;\n\n  @Input() @InputBoolean() vtsDisabled = false;\n  @Input() @InputBoolean() vtsDots: boolean = false;\n  @Input() @InputBoolean() vtsIncluded: boolean = true;\n  @Input() @InputBoolean() vtsRange: boolean = false;\n  @Input() @InputBoolean() vtsVertical: boolean = false;\n  @Input() @InputBoolean() vtsReverse: boolean = false;\n  @Input() vtsDefaultValue?: VtsSliderValue;\n  @Input() vtsMarks: VtsMarks | null = null;\n  @Input() @InputNumber() vtsMax = 100;\n  @Input() @InputNumber() vtsMin = 0;\n  @Input() @InputNumber() vtsStep = 1;\n  @Input() vtsTooltipVisible: VtsSliderShowTooltip = 'default';\n  @Input() vtsTooltipPlacement: string = 'top';\n  @Input() vtsTipFormatter?: null | ((value: number) => string);\n\n  @Output() readonly vtsOnAfterChange = new EventEmitter<VtsSliderValue>();\n\n  value: VtsSliderValue | null = null;\n  cacheSliderStart: number | null = null;\n  cacheSliderLength: number | null = null;\n  activeValueIndex: number | undefined = undefined; // Current activated handle's index ONLY for range=true\n  track: { offset: null | number; length: null | number } = {\n    offset: null,\n    length: null\n  }; // Track's offset and length\n  handles: VtsSliderHandler[] = []; // Handles' offset\n  marksArray: VtsExtendedMark[] | null = null; // \"steps\" in array type with more data & FILTER out the invalid mark\n  bounds: { lower: VtsSliderValue | null; upper: VtsSliderValue | null } = {\n    lower: null,\n    upper: null\n  }; // now for vts-slider-step\n  dir: Direction = 'ltr';\n\n  private dragStart$?: Observable<number>;\n  private dragMove$?: Observable<number>;\n  private dragEnd$?: Observable<Event>;\n  private dragStart_?: Subscription | null;\n  private dragMove_?: Subscription | null;\n  private dragEnd_?: Subscription | null;\n  private destroy$ = new Subject();\n\n  constructor(\n    private sliderService: VtsSliderService,\n    private cdr: ChangeDetectorRef,\n    private platform: Platform,\n    @Optional() private directionality: Directionality\n  ) {}\n\n  ngOnInit(): void {\n    this.dir = this.directionality.value;\n    this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe((direction: Direction) => {\n      this.dir = direction;\n      this.cdr.detectChanges();\n      this.updateTrackAndHandles();\n      this.onValueChange(this.getValue(true));\n    });\n\n    this.handles = generateHandlers(this.vtsRange ? 2 : 1);\n    this.marksArray = this.vtsMarks ? this.generateMarkItems(this.vtsMarks) : null;\n    this.bindDraggingHandlers();\n    this.toggleDragDisabled(this.vtsDisabled);\n\n    if (this.getValue() === null) {\n      this.setValue(this.formatValue(null));\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    const { vtsDisabled, vtsMarks, vtsRange } = changes;\n\n    if (vtsDisabled && !vtsDisabled.firstChange) {\n      this.toggleDragDisabled(vtsDisabled.currentValue);\n    } else if (vtsMarks && !vtsMarks.firstChange) {\n      this.marksArray = this.vtsMarks ? this.generateMarkItems(this.vtsMarks) : null;\n    } else if (vtsRange && !vtsRange.firstChange) {\n      this.setValue(this.formatValue(null));\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.unsubscribeDrag();\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  writeValue(val: VtsSliderValue | null): void {\n    this.setValue(val, true);\n  }\n\n  onValueChange(_value: VtsSliderValue): void {}\n\n  onTouched(): void {}\n\n  registerOnChange(fn: (value: VtsSliderValue) => void): void {\n    this.onValueChange = fn;\n  }\n\n  registerOnTouched(fn: () => void): void {\n    this.onTouched = fn;\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this.vtsDisabled = isDisabled;\n    this.toggleDragDisabled(isDisabled);\n  }\n\n  /**\n   * Event handler is only triggered when a slider handler is focused.\n   */\n  onKeyDown(e: KeyboardEvent): void {\n    const code = e.keyCode;\n    const isIncrease = code === RIGHT_ARROW || code === UP_ARROW;\n    const isDecrease = code === LEFT_ARROW || code === DOWN_ARROW;\n\n    if (!(isIncrease || isDecrease)) {\n      return;\n    }\n\n    e.preventDefault();\n\n    let step = (isDecrease ? -this.vtsStep : this.vtsStep) * (this.vtsReverse ? -1 : 1);\n    step = this.dir === 'rtl' ? step * -1 : step;\n    const newVal = this.vtsRange\n      ? (this.value as number[])[this.activeValueIndex!] + step\n      : (this.value as number) + step;\n    this.setActiveValue(ensureNumberInRange(newVal, this.vtsMin, this.vtsMax));\n  }\n\n  private setValue(value: VtsSliderValue | null, isWriteValue: boolean = false): void {\n    if (isWriteValue) {\n      this.value = this.formatValue(value);\n      this.updateTrackAndHandles();\n    } else if (!valuesEqual(this.value!, value!)) {\n      this.value = value;\n      this.updateTrackAndHandles();\n      this.onValueChange(this.getValue(true));\n    }\n  }\n\n  private getValue(cloneAndSort: boolean = false): VtsSliderValue {\n    if (cloneAndSort && this.value && isValueRange(this.value)) {\n      return [...this.value].sort((a, b) => a - b);\n    }\n    return this.value!;\n  }\n\n  /**\n   * Clone & sort current value and convert them to offsets, then return the new one.\n   */\n  private getValueToOffset(value?: VtsSliderValue): VtsSliderValue {\n    let normalizedValue = value;\n\n    if (typeof normalizedValue === 'undefined') {\n      normalizedValue = this.getValue(true);\n    }\n\n    return isValueRange(normalizedValue)\n      ? normalizedValue.map(val => this.valueToOffset(val))\n      : this.valueToOffset(normalizedValue);\n  }\n\n  /**\n   * Find the closest value to be activated.\n   */\n  private setActiveValueIndex(pointerValue: number): void {\n    const value = this.getValue();\n    if (isValueRange(value)) {\n      let minimal: number | null = null;\n      let gap: number;\n      let activeIndex = -1;\n      value.forEach((val, index) => {\n        gap = Math.abs(pointerValue - val);\n        if (minimal === null || gap < minimal!) {\n          minimal = gap;\n          activeIndex = index;\n        }\n      });\n      this.activeValueIndex = activeIndex;\n      this.handlerComponents.toArray()[activeIndex].focus();\n    } else {\n      this.handlerComponents.toArray()[0].focus();\n    }\n  }\n\n  private setActiveValue(pointerValue: number): void {\n    if (isValueRange(this.value!)) {\n      const newValue = [...(this.value as number[])];\n      newValue[this.activeValueIndex!] = pointerValue;\n      this.setValue(newValue);\n    } else {\n      this.setValue(pointerValue);\n    }\n  }\n\n  /**\n   * Update track and handles' position and length.\n   */\n  private updateTrackAndHandles(): void {\n    const value = this.getValue();\n    const offset = this.getValueToOffset(value);\n    const valueSorted = this.getValue(true);\n    const offsetSorted = this.getValueToOffset(valueSorted);\n    const boundParts = isValueRange(valueSorted) ? valueSorted : [0, valueSorted];\n    const trackParts = isValueRange(offsetSorted)\n      ? [offsetSorted[0], offsetSorted[1] - offsetSorted[0]]\n      : [0, offsetSorted];\n\n    this.handles.forEach((handle, index) => {\n      handle.offset = isValueRange(offset) ? offset[index] : offset;\n      handle.value = isValueRange(value) ? value[index] : value || 0;\n    });\n\n    [this.bounds.lower, this.bounds.upper] = boundParts;\n    [this.track.offset, this.track.length] = trackParts;\n\n    this.cdr.markForCheck();\n  }\n\n  private onDragStart(value: number): void {\n    this.toggleDragMoving(true);\n    this.cacheSliderProperty();\n    this.setActiveValueIndex(this.getLogicalValue(value));\n    this.setActiveValue(this.getLogicalValue(value));\n    this.showHandleTooltip(this.vtsRange ? this.activeValueIndex : 0);\n  }\n\n  private onDragMove(value: number): void {\n    this.setActiveValue(this.getLogicalValue(value));\n    this.cdr.markForCheck();\n  }\n\n  private getLogicalValue(value: number): number {\n    if (this.vtsReverse) {\n      if (!this.vtsVertical && this.dir === 'rtl') {\n        return value;\n      }\n      return this.vtsMax - value + this.vtsMin;\n    }\n    if (!this.vtsVertical && this.dir === 'rtl') {\n      return this.vtsMax - value + this.vtsMin;\n    }\n\n    return value;\n  }\n\n  private onDragEnd(): void {\n    this.vtsOnAfterChange.emit(this.getValue(true));\n    this.toggleDragMoving(false);\n    this.cacheSliderProperty(true);\n    this.hideAllHandleTooltip();\n    this.cdr.markForCheck();\n  }\n\n  /**\n   * Create user interactions handles.\n   */\n  private bindDraggingHandlers(): void {\n    if (!this.platform.isBrowser) {\n      return;\n    }\n\n    const sliderDOM = this.slider.nativeElement;\n    const orientField = this.vtsVertical ? 'pageY' : 'pageX';\n    const mouse: MouseTouchObserverConfig = {\n      start: 'mousedown',\n      move: 'mousemove',\n      end: 'mouseup',\n      pluckKey: [orientField]\n    };\n    const touch: MouseTouchObserverConfig = {\n      start: 'touchstart',\n      move: 'touchmove',\n      end: 'touchend',\n      pluckKey: ['touches', '0', orientField],\n      filter: (e: MouseEvent | TouchEvent) => e instanceof TouchEvent\n    };\n\n    [mouse, touch].forEach(source => {\n      const { start, move, end, pluckKey, filter: filterFunc = () => true } = source;\n\n      source.startPlucked$ = fromEvent(sliderDOM, start).pipe(\n        filter(filterFunc),\n        tap(silentEvent),\n        pluck<Event, number>(...pluckKey),\n        map((position: number) => this.findClosestValue(position))\n      );\n      source.end$ = fromEvent(document, end);\n      source.moveResolved$ = fromEvent(document, move).pipe(\n        filter(filterFunc),\n        tap(silentEvent),\n        pluck<Event, number>(...pluckKey),\n        distinctUntilChanged(),\n        map((position: number) => this.findClosestValue(position)),\n        distinctUntilChanged(),\n        takeUntil(source.end$)\n      );\n    });\n\n    this.dragStart$ = merge(mouse.startPlucked$!, touch.startPlucked$!);\n    this.dragMove$ = merge(mouse.moveResolved$!, touch.moveResolved$!);\n    this.dragEnd$ = merge(mouse.end$!, touch.end$!);\n  }\n\n  private subscribeDrag(periods: string[] = ['start', 'move', 'end']): void {\n    if (periods.indexOf('start') !== -1 && this.dragStart$ && !this.dragStart_) {\n      this.dragStart_ = this.dragStart$.subscribe(this.onDragStart.bind(this));\n    }\n\n    if (periods.indexOf('move') !== -1 && this.dragMove$ && !this.dragMove_) {\n      this.dragMove_ = this.dragMove$.subscribe(this.onDragMove.bind(this));\n    }\n\n    if (periods.indexOf('end') !== -1 && this.dragEnd$ && !this.dragEnd_) {\n      this.dragEnd_ = this.dragEnd$.subscribe(this.onDragEnd.bind(this));\n    }\n  }\n\n  private unsubscribeDrag(periods: string[] = ['start', 'move', 'end']): void {\n    if (periods.indexOf('start') !== -1 && this.dragStart_) {\n      this.dragStart_.unsubscribe();\n      this.dragStart_ = null;\n    }\n\n    if (periods.indexOf('move') !== -1 && this.dragMove_) {\n      this.dragMove_.unsubscribe();\n      this.dragMove_ = null;\n    }\n\n    if (periods.indexOf('end') !== -1 && this.dragEnd_) {\n      this.dragEnd_.unsubscribe();\n      this.dragEnd_ = null;\n    }\n  }\n\n  private toggleDragMoving(movable: boolean): void {\n    const periods = ['move', 'end'];\n    if (movable) {\n      this.sliderService.isDragging = true;\n      this.subscribeDrag(periods);\n    } else {\n      this.sliderService.isDragging = false;\n      this.unsubscribeDrag(periods);\n    }\n  }\n\n  private toggleDragDisabled(disabled: boolean): void {\n    if (disabled) {\n      this.unsubscribeDrag();\n    } else {\n      this.subscribeDrag(['start']);\n    }\n  }\n\n  private findClosestValue(position: number): number {\n    const sliderStart = this.getSliderStartPosition();\n    const sliderLength = this.getSliderLength();\n    const ratio = ensureNumberInRange((position - sliderStart) / sliderLength, 0, 1);\n    const val = (this.vtsMax - this.vtsMin) * (this.vtsVertical ? 1 - ratio : ratio) + this.vtsMin;\n    const points =\n      this.vtsMarks === null\n        ? []\n        : Object.keys(this.vtsMarks)\n            .map(parseFloat)\n            .sort((a, b) => a - b);\n\n    if (this.vtsStep !== 0 && !this.vtsDots) {\n      const closestOne = Math.round(val / this.vtsStep) * this.vtsStep;\n      points.push(closestOne);\n    }\n\n    const gaps = points.map(point => Math.abs(val - point));\n    const closest = points[gaps.indexOf(Math.min(...gaps))];\n\n    // return parseFloat(closest.toFixed(getPrecision(this.vtsStep)));\n    return this.vtsStep === 0 ? closest : parseFloat(closest.toFixed(getPrecision(this.vtsStep)));\n  }\n\n  private valueToOffset(value: number): number {\n    return getPercent(this.vtsMin, this.vtsMax, value);\n  }\n\n  private getSliderStartPosition(): number {\n    if (this.cacheSliderStart !== null) {\n      return this.cacheSliderStart;\n    }\n    const offset = getElementOffset(this.slider.nativeElement);\n    return this.vtsVertical ? offset.top : offset.left;\n  }\n\n  private getSliderLength(): number {\n    if (this.cacheSliderLength !== null) {\n      return this.cacheSliderLength;\n    }\n    const sliderDOM = this.slider.nativeElement;\n    return this.vtsVertical ? sliderDOM.clientHeight : sliderDOM.clientWidth;\n  }\n\n  /**\n   * Cache DOM layout/reflow operations for performance (may not necessary?)\n   */\n  private cacheSliderProperty(remove: boolean = false): void {\n    this.cacheSliderStart = remove ? null : this.getSliderStartPosition();\n    this.cacheSliderLength = remove ? null : this.getSliderLength();\n  }\n\n  private formatValue(value: VtsSliderValue | null): VtsSliderValue {\n    if (!value) {\n      return this.vtsRange ? [this.vtsMin, this.vtsMax] : this.vtsMin;\n    } else if (assertValueValid(value, this.vtsRange)) {\n      return isValueRange(value)\n        ? value.map(val => ensureNumberInRange(val, this.vtsMin, this.vtsMax))\n        : ensureNumberInRange(value, this.vtsMin, this.vtsMax);\n    } else {\n      return this.vtsDefaultValue\n        ? this.vtsDefaultValue\n        : this.vtsRange\n        ? [this.vtsMin, this.vtsMax]\n        : this.vtsMin;\n    }\n  }\n\n  /**\n   * Show one handle's tooltip and hide others'.\n   */\n  private showHandleTooltip(handleIndex: number = 0): void {\n    this.handles.forEach((handle, index) => {\n      handle.active = index === handleIndex;\n    });\n  }\n\n  private hideAllHandleTooltip(): void {\n    this.handles.forEach(handle => (handle.active = false));\n  }\n\n  private generateMarkItems(marks: VtsMarks): VtsExtendedMark[] | null {\n    const marksArray: VtsExtendedMark[] = [];\n    for (const key in marks) {\n      const mark = marks[key];\n      const val = typeof key === 'number' ? key : parseFloat(key);\n      if (val >= this.vtsMin && val <= this.vtsMax) {\n        marksArray.push({\n          value: val,\n          offset: this.valueToOffset(val),\n          config: mark\n        });\n      }\n    }\n    return marksArray.length ? marksArray : null;\n  }\n}\n\nfunction getValueTypeNotMatchError(): Error {\n  return new Error(\n    `The \"vtsRange\" can't match the \"ngModel\"'s type, please check these properties: \"vtsRange\", \"ngModel\", \"vtsDefaultValue\".`\n  );\n}\n\nfunction isValueRange(value: VtsSliderValue): value is number[] {\n  if (value instanceof Array) {\n    return value.length === 2;\n  } else {\n    return false;\n  }\n}\n\nfunction generateHandlers(amount: number): VtsSliderHandler[] {\n  return Array(amount)\n    .fill(0)\n    .map(() => ({ offset: null, value: null, active: false }));\n}\n\n/**\n * Check if value is valid and throw error if value-type/range not match.\n */\nfunction assertValueValid(value: VtsSliderValue, isRange?: boolean): boolean {\n  if (\n    (!isValueRange(value) && isNaN(value)) ||\n    (isValueRange(value) && value.some(v => isNaN(v)))\n  ) {\n    return false;\n  }\n  return assertValueTypeMatch(value, isRange);\n}\n\n/**\n * Assert that if `this.vtsRange` is `true`, value is also a range, vice versa.\n */\nfunction assertValueTypeMatch(value: VtsSliderValue, isRange: boolean = false): boolean {\n  if (isValueRange(value) !== isRange) {\n    throw getValueTypeNotMatchError();\n  }\n  return true;\n}\n\nfunction valuesEqual(valA: VtsSliderValue, valB: VtsSliderValue): boolean {\n  if (typeof valA !== typeof valB) {\n    return false;\n  }\n  return isValueRange(valA) && isValueRange(valB) ? arraysEqual<number>(valA, valB) : valA === valB;\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nimport { BidiModule } from '@angular/cdk/bidi';\nimport { PlatformModule } from '@angular/cdk/platform';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { VtsToolTipModule } from '@ui-vts-kit/ng-vts/tooltip';\n\nimport { VtsSliderHandleComponent } from './handle.component';\nimport { VtsSliderMarksComponent } from './marks.component';\nimport { VtsSliderComponent } from './slider.component';\nimport { VtsSliderStepComponent } from './step.component';\nimport { VtsSliderTrackComponent } from './track.component';\n\n@NgModule({\n  exports: [\n    VtsSliderComponent,\n    VtsSliderTrackComponent,\n    VtsSliderHandleComponent,\n    VtsSliderStepComponent,\n    VtsSliderMarksComponent\n  ],\n  declarations: [\n    VtsSliderComponent,\n    VtsSliderTrackComponent,\n    VtsSliderHandleComponent,\n    VtsSliderStepComponent,\n    VtsSliderMarksComponent\n  ],\n  imports: [BidiModule, CommonModule, PlatformModule, VtsToolTipModule]\n})\nexport class VtsSliderModule {}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nexport type VtsMark = string | VtsMarkObj;\n\nexport interface VtsMarkObj {\n  style?: object;\n  label: string;\n}\n\nexport class VtsMarks {\n  [key: string]: VtsMark;\n}\n\n/**\n * Processed steps that would be passed to sub components.\n */\nexport interface VtsExtendedMark {\n  value: number;\n  offset: number;\n  config: VtsMark;\n}\n\n/**\n * Marks that would be rendered.\n */\nexport interface VtsDisplayedMark extends VtsExtendedMark {\n  active: boolean;\n  label: string;\n  style?: object;\n}\n\n/**\n * Steps that would be rendered.\n */\nexport interface VtsDisplayedStep extends VtsExtendedMark {\n  active: boolean;\n  style?: object;\n}\n\nexport type VtsSliderShowTooltip = 'always' | 'never' | 'default';\n\nexport type VtsSliderValue = number[] | number;\n\nexport interface VtsSliderHandler {\n  offset: number | null;\n  value: number | null;\n  active: boolean;\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nexport { VtsSliderComponent } from './slider.component';\nexport { VtsSliderService as ɵVtsSliderService } from './slider.service';\nexport { VtsSliderModule } from './slider.module';\nexport { VtsSliderHandleComponent as ɵVtsSliderHandleComponent } from './handle.component';\nexport { VtsSliderMarksComponent as ɵVtsSliderMarksComponent } from './marks.component';\nexport { VtsSliderStepComponent as ɵVtsSliderStepComponent } from './step.component';\nexport {\n  VtsSliderTrackComponent as ɵVtsSliderTrackComponent,\n  VtsSliderTrackStyle\n} from './track.component';\nexport * from './typings';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.VtsSliderService","i2","i3","i4","i5.VtsSliderTrackComponent","i6.VtsSliderHandleComponent","i7.VtsSliderStepComponent","i8.VtsSliderMarksComponent"],"mappings":"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"}