{"version":3,"file":"ng-devui-slider.mjs","sources":["../../devui/slider/slider.component.ts","../../devui/slider/slider.component.html","../../devui/slider/slider.module.ts","../../devui/slider/ng-devui-slider.ts"],"sourcesContent":["import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  SimpleChanges,\n  ViewChild\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { fromEvent, Observable, Subscription } from 'rxjs';\nimport { distinctUntilChanged, map, pluck, takeUntil, tap } from 'rxjs/operators';\n\nconst SLIDER_CONTROL_VALUE_ACCESSOR: any = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => SliderComponent),\n  multi: true\n};\n\n@Component({\n  selector: 'd-slider',\n  templateUrl: './slider.component.html',\n  styleUrls: ['./slider.component.scss'],\n  providers: [SLIDER_CONTROL_VALUE_ACCESSOR],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  preserveWhitespaces: false,\n})\n\nexport class SliderComponent implements OnInit, OnChanges, ControlValueAccessor, OnDestroy, AfterViewInit {\n  constructor(private cdr: ChangeDetectorRef) {\n  }\n  private dragStartListener: Observable<number>;\n  private dragMoveListener: Observable<number>;\n  private dragEndListener: Observable<Event>;\n  private dragStartHandler: Subscription | null;\n  private dragMoveHandler: Subscription | null;\n  private dragEndHandler: Subscription | null;\n  private isDragging = false;\n  private isHovering = false;\n  public value;\n  public showValuePopover = false;\n  private mouseOverHandler: Subscription;\n  private mouseLeaveHandler: Subscription;\n\n  @ViewChild('slider', { static: true }) slider: ElementRef;\n  @ViewChild('sliderHandle', { static: true }) sliderHandle: ElementRef;\n  @ViewChild('sliderTrack', { static: true }) sliderTrack: ElementRef;\n  @ViewChild('sliderRail', { static: true }) sliderRail: ElementRef;\n  @Input() max = 100;\n  @Input() min = 0;\n  @Input() step = 1;\n  @Input() disabled = false;\n  @Output() afterChange = new EventEmitter<number>();\n  @Input() tipsRenderer: (value: number) => string = (value) => `${value}`;\n\n  ngOnInit() {\n    this.checkRangeValues(this.min, this.max);\n    this.checkStepValue();\n    this.toggleDisabled(this.disabled);\n    if (this.value === null) {\n      this.setValue(this.ensureValueInRange(null));\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (Object.prototype.hasOwnProperty.call(changes, 'min')\n      || Object.prototype.hasOwnProperty.call(changes, 'max')\n      || Object.prototype.hasOwnProperty.call(changes, 'step')) {\n      this.checkRangeValues(this.min, this.max);\n      this.checkStepValue();\n    }\n  }\n\n  ngAfterViewInit() {\n    this.registerMouseEventsListeners();\n    this.registerHandleHoverPopoverListener();\n    this.toggleDisabled(this.disabled);\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChangeCallback = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouchedCallback = fn;\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n    this.toggleDisabled(isDisabled);\n  }\n\n  writeValue(newValue: number): void {\n    this.setValue(this.ensureValueInRange(newValue), false);\n  }\n\n  private onTouchedCallback = () => {\n  };\n\n  private onChangeCallback = (v: any) => {\n  };\n\n  private checkRangeValues(minValue, maxValue) {\n    if (maxValue <= minValue) {\n      throw new Error(`max value must be greater than min value`);\n    }\n  }\n\n  private checkStepValue() {\n    if (this.step < 0 || !this.step) {\n      throw new Error('step value must be greater than 0.');\n    } else if ((this.max - this.min) % this.step) {\n      throw new Error('(max - min) must be divisible by step.');\n    }\n  }\n\n  private ratioToValue(\n    ratio: number,\n    min: number,\n    max: number,\n    step: number\n  ): number {\n    let value = (max - min) * ratio + min;\n    if (step > 0) {\n      value = Math.round(value / step) * step;\n    }\n    return this.clamp(min, value, max);\n  }\n\n  private convertHandlePositionToRatio(handleX: number, startX: number, totalLength: number): number {\n    return this.clamp(0, (handleX - startX) / totalLength, 1);\n  }\n\n  private clamp(min: number, n: number, max: number) {\n    return Math.max(min, Math.min(n, max));\n  }\n\n  private updateStyle(percentage) {\n    percentage = Math.min(1, Math.max(0, percentage));\n    this.sliderTrack.nativeElement.style.width = `${percentage * 100}%`;\n    this.sliderHandle.nativeElement.style.left = `calc(${percentage * 100}% - 7px)`;\n  }\n\n  private registerMouseEventsListeners(): void {\n    this.dragStartListener = fromEvent(this.slider.nativeElement, 'mousedown').pipe(\n      tap((e: Event) => {\n        e.stopPropagation();\n        e.preventDefault();\n      }),\n      pluck<MouseEvent, 'pageX'>('pageX'),\n      map((position: number) => this.mousePositionToAdaptiveValue(position))\n    );\n    this.dragEndListener = fromEvent(document, 'mouseup');\n    this.dragMoveListener = fromEvent(document, 'mousemove').pipe(\n      tap((e: Event) => {\n        e.stopPropagation();\n        e.preventDefault();\n      }),\n      pluck<MouseEvent, 'pageX'>('pageX'),\n      distinctUntilChanged(),\n      map((position: number) => this.mousePositionToAdaptiveValue(position)),\n      distinctUntilChanged(),\n      takeUntil(this.dragEndListener)\n    );\n  }\n\n  private getSliderPagePosition(): number {\n    const rect = this.slider.nativeElement.getBoundingClientRect();\n    const window = this.slider.nativeElement.ownerDocument.defaultView;\n    return rect.left + window.pageXOffset;\n  }\n\n  private getRailLength(): number {\n    return this.sliderRail.nativeElement.clientWidth;\n  }\n\n  private mousePositionToAdaptiveValue(handleX: number): number {\n    const sliderStartX = this.getSliderPagePosition();\n    const sliderLength = this.getRailLength();\n    const ratio = this.convertHandlePositionToRatio(handleX, sliderStartX, sliderLength);\n    const value = this.ratioToValue(ratio, this.min, this.max, this.step);\n    return parseFloat(value.toFixed(this.getDecimals(this.step)));\n  }\n\n  private getDecimals(value: number): number {\n    const valueString = value.toString();\n    const integerLength = valueString.indexOf('.') + 1;\n    return integerLength >= 0 ? valueString.length - integerLength : 0;\n  }\n\n  private mouseStartMoving(value: number): void {\n    this.handleController(true);\n    this.setValue(value);\n  }\n\n  private mouseMoving(value: number): void {\n    this.setValue(value);\n    this.cdr.markForCheck();\n  }\n\n  private mouseStopMoving(): void {\n    this.afterChange.emit(this.value);\n    this.handleController(false);\n    this.onTouchedCallback();\n    this.cdr.markForCheck();\n  }\n\n  private subscribeMouseActions(mouseActions: string[] = ['start', 'move', 'end']): void {\n    if (mouseActions.indexOf('start') !== -1 && this.dragStartListener && !this.dragStartHandler) {\n      this.dragStartHandler = this.dragStartListener.subscribe(this.mouseStartMoving.bind(this));\n    }\n\n    if (mouseActions.indexOf('move') !== -1 && this.dragMoveListener && !this.dragMoveHandler) {\n      this.dragMoveHandler = this.dragMoveListener.subscribe(this.mouseMoving.bind(this));\n    }\n\n    if (mouseActions.indexOf('end') !== -1 && this.dragEndListener && !this.dragEndHandler) {\n      this.dragEndHandler = this.dragEndListener.subscribe(this.mouseStopMoving.bind(this));\n    }\n  }\n\n  private unsubscribeMouseActions(dragStages: string[] = ['start', 'move', 'end']): void {\n    if (dragStages.indexOf('start') !== -1 && this.dragStartHandler) {\n      this.dragStartHandler.unsubscribe();\n      this.dragStartHandler = null;\n    }\n\n    if (dragStages.indexOf('move') !== -1 && this.dragMoveHandler) {\n      this.dragMoveHandler.unsubscribe();\n      this.dragMoveHandler = null;\n    }\n\n    if (dragStages.indexOf('end') !== -1 && this.dragEndHandler) {\n      this.dragEndHandler.unsubscribe();\n      this.dragEndHandler = null;\n    }\n  }\n\n  private handleController(movable: boolean): void {\n    if (movable) {\n      this.isDragging = true;\n      this.showValuePopover = this.showValuePopoverController();\n      this.subscribeMouseActions(['move', 'end']);\n    } else {\n      this.isDragging = false;\n      this.showValuePopover = this.showValuePopoverController();\n      this.unsubscribeMouseActions(['move', 'end']);\n    }\n  }\n\n  private toggleDisabled(disabled: boolean): void {\n    if (disabled) {\n      this.unsubscribeMouseActions();\n    } else {\n      this.subscribeMouseActions(['start']);\n    }\n  }\n\n  private setValue(value: number | null, triggerOnChanges = true): void {\n    if (this.value !== value) {\n      this.value = value;\n      this.updateTrackAndHandle();\n    }\n    if (triggerOnChanges) {\n      this.onChangeCallback(this.value);\n    }\n  }\n\n  private ensureValueInRange(value: number | null): number {\n    let safeValue;\n    if (!this.valueMustBeValid(value)) {\n      safeValue = this.min;\n    } else {\n      safeValue = this.clamp(this.min, value as number, this.max);\n    }\n    return safeValue;\n  }\n\n  private updateTrackAndHandle(): void {\n    const value = this.value;\n    const offset = this.valueToOffset(value);\n    this.updateStyle(offset / 100);\n    this.cdr.markForCheck();\n  }\n\n  private valueMustBeValid(value: number): boolean {\n    return !isNaN(typeof value !== 'number' ? parseFloat(value) : value);\n  }\n\n  private valueToOffset(value: number): number {\n    return ((value - this.min) / (this.max - this.min)) * 100;\n  }\n\n  private registerHandleHoverPopoverListener() {\n    const mouseOverListener = fromEvent(this.sliderHandle.nativeElement, 'mouseover');\n    const mouseLeaveListener = fromEvent(this.sliderHandle.nativeElement, 'mouseout');\n    this.mouseOverHandler = mouseOverListener.subscribe(this.sliderHandlePopoverOnMouseHover.bind(this));\n    this.mouseLeaveHandler = mouseLeaveListener.subscribe(this.sliderHandlePopoverOnMouseLeave.bind(this));\n  }\n\n  private sliderHandlePopoverOnMouseHover() {\n    this.isHovering = true;\n    this.showValuePopover = this.showValuePopoverController();\n    this.cdr.markForCheck();\n  }\n\n  private sliderHandlePopoverOnMouseLeave() {\n    this.isHovering = false;\n    this.showValuePopover = this.showValuePopoverController();\n    this.cdr.markForCheck();\n  }\n\n  private unregisterHandleHoverTooltip() {\n    this.mouseOverHandler.unsubscribe();\n    this.mouseLeaveHandler.unsubscribe();\n  }\n\n  private showValuePopoverController() {\n    return this.isDragging || this.isHovering;\n  }\n\n  ngOnDestroy(): void {\n    this.unsubscribeMouseActions();\n    this.unregisterHandleHoverTooltip();\n  }\n}\n","<div class=\"devui-slider\" #slider [ngClass]=\"{ disabled: disabled }\">\n  <div class=\"devui-slider-rail\" #sliderRail [ngClass]=\"{ disabled: disabled }\"></div>\n  <div class=\"devui-slider-track\" #sliderTrack [ngClass]=\"{ disabled: disabled }\"></div>\n  <div\n    class=\"devui-slider-handle\"\n    #sliderHandle\n    [ngClass]=\"{ disabled: disabled }\"\n    dPopover\n    position=\"top\"\n    [content]=\"showValuePopover && tipsRenderer ? tipsRenderer(value) : ''\"\n    [showAnimation]=\"false\"\n    [visible]=\"tipsRenderer && showValuePopover\"\n  ></div>\n</div>\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {PopoverModule} from 'ng-devui/popover';\nimport {SliderComponent} from './slider.component';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    FormsModule,\n    PopoverModule\n  ],\n  exports: [SliderComponent],\n  declarations: [SliderComponent],\n  providers: [],\n})\n\nexport class SliderModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}