{"version":3,"file":"axulus-uikit-slider.mjs","sources":["../../src/app/components/slider/slider.ts","../../src/app/components/slider/axulus-uikit-slider.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  Input,\n  NgModule,\n  NgZone,\n  OnDestroy,\n  Output,\n  Renderer2,\n  ViewChild,\n  ViewEncapsulation\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { DomHandler } from '@axulus/uikit/dom';\n\nexport const SLIDER_VALUE_ACCESSOR: any = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => Slider),\n  multi: true\n};\n\n@Component({\n  selector: 'p-slider',\n  template: `\n    <div\n      [ngStyle]=\"style\"\n      [class]=\"styleClass\"\n      [ngClass]=\"{\n        'p-slider p-component': true,\n        'p-disabled': disabled,\n        'p-slider-horizontal': orientation == 'horizontal',\n        'p-slider-vertical': orientation == 'vertical',\n        'p-slider-animate': animate\n      }\"\n      (click)=\"onBarClick($event)\"\n    >\n      <span\n        *ngIf=\"range && orientation == 'horizontal'\"\n        class=\"p-slider-range\"\n        [ngStyle]=\"{\n          left: offset !== null && offset !== undefined ? offset + '%' : handleValues[0] + '%',\n          width: diff ? diff + '%' : handleValues[1] - handleValues[0] + '%'\n        }\"\n      ></span>\n      <span\n        *ngIf=\"range && orientation == 'vertical'\"\n        class=\"p-slider-range\"\n        [ngStyle]=\"{\n          bottom: offset !== null && offset !== undefined ? offset + '%' : handleValues[0] + '%',\n          height: diff ? diff + '%' : handleValues[1] - handleValues[0] + '%'\n        }\"\n      ></span>\n      <span *ngIf=\"!range && orientation == 'vertical'\" class=\"p-slider-range\" [ngStyle]=\"{ height: handleValue + '%' }\"></span>\n      <span *ngIf=\"!range && orientation == 'horizontal'\" class=\"p-slider-range\" [ngStyle]=\"{ width: handleValue + '%' }\"></span>\n      <span\n        #sliderHandle\n        *ngIf=\"!range\"\n        [attr.tabindex]=\"disabled ? null : tabindex\"\n        (keydown)=\"onHandleKeydown($event)\"\n        class=\"p-slider-handle\"\n        (mousedown)=\"onMouseDown($event)\"\n        (touchstart)=\"onTouchStart($event)\"\n        (touchmove)=\"onTouchMove($event)\"\n        (touchend)=\"onTouchEnd($event)\"\n        [style.transition]=\"dragging ? 'none' : null\"\n        [ngStyle]=\"{\n          left: orientation == 'horizontal' ? handleValue + '%' : null,\n          bottom: orientation == 'vertical' ? handleValue + '%' : null\n        }\"\n        [attr.aria-valuemin]=\"min\"\n        [attr.aria-valuenow]=\"value\"\n        [attr.aria-valuemax]=\"max\"\n        [attr.aria-labelledby]=\"ariaLabelledBy\"\n      ></span>\n      <span\n        #sliderHandleStart\n        *ngIf=\"range\"\n        [attr.tabindex]=\"disabled ? null : tabindex\"\n        (keydown)=\"onHandleKeydown($event, 0)\"\n        (mousedown)=\"onMouseDown($event, 0)\"\n        (touchstart)=\"onTouchStart($event, 0)\"\n        (touchmove)=\"onTouchMove($event, 0)\"\n        (touchend)=\"onTouchEnd($event)\"\n        [style.transition]=\"dragging ? 'none' : null\"\n        class=\"p-slider-handle\"\n        [ngStyle]=\"{ left: rangeStartLeft, bottom: rangeStartBottom }\"\n        [ngClass]=\"{ 'p-slider-handle-active': handleIndex == 0 }\"\n        [attr.aria-valuemin]=\"min\"\n        [attr.aria-valuenow]=\"value ? value[0] : null\"\n        [attr.aria-valuemax]=\"max\"\n        [attr.aria-labelledby]=\"ariaLabelledBy\"\n      ></span>\n      <span\n        #sliderHandleEnd\n        *ngIf=\"range\"\n        [attr.tabindex]=\"disabled ? null : tabindex\"\n        (keydown)=\"onHandleKeydown($event, 1)\"\n        (mousedown)=\"onMouseDown($event, 1)\"\n        (touchstart)=\"onTouchStart($event, 1)\"\n        (touchmove)=\"onTouchMove($event, 1)\"\n        (touchend)=\"onTouchEnd($event)\"\n        [style.transition]=\"dragging ? 'none' : null\"\n        class=\"p-slider-handle\"\n        [ngStyle]=\"{ left: rangeEndLeft, bottom: rangeEndBottom }\"\n        [ngClass]=\"{ 'p-slider-handle-active': handleIndex == 1 }\"\n        [attr.aria-valuemin]=\"min\"\n        [attr.aria-valuenow]=\"value ? value[1] : null\"\n        [attr.aria-valuemax]=\"max\"\n        [attr.aria-labelledby]=\"ariaLabelledBy\"\n      ></span>\n    </div>\n  `,\n  providers: [SLIDER_VALUE_ACCESSOR],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  styleUrls: ['./slider.css'],\n  host: {\n    class: 'p-element'\n  }\n})\nexport class Slider implements OnDestroy, ControlValueAccessor {\n  @Input() animate: boolean;\n\n  @Input() disabled: boolean;\n\n  @Input() min: number = 0;\n\n  @Input() max: number = 100;\n\n  @Input() orientation: string = 'horizontal';\n\n  @Input() step: number;\n\n  @Input() range: boolean;\n\n  @Input() style: any;\n\n  @Input() styleClass: string;\n\n  @Input() ariaLabelledBy: string;\n\n  @Input() tabindex: number = 0;\n\n  @Output() onChange: EventEmitter<any> = new EventEmitter();\n\n  @Output() onSlideEnd: EventEmitter<any> = new EventEmitter();\n\n  @ViewChild('sliderHandle') sliderHandle: ElementRef;\n\n  @ViewChild('sliderHandleStart') sliderHandleStart: ElementRef;\n\n  @ViewChild('sliderHandleEnd') sliderHandleEnd: ElementRef;\n\n  public value: number;\n\n  public values: number[];\n\n  public handleValue: number;\n\n  public handleValues: number[] = [];\n\n  diff: number;\n\n  offset: number;\n\n  bottom: number;\n\n  public onModelChange: Function = () => {};\n\n  public onModelTouched: Function = () => {};\n\n  public dragging: boolean;\n\n  public dragListener: any;\n\n  public mouseupListener: any;\n\n  public initX: number;\n\n  public initY: number;\n\n  public barWidth: number;\n\n  public barHeight: number;\n\n  public sliderHandleClick: boolean;\n\n  public handleIndex: number = 0;\n\n  public startHandleValue: any;\n\n  public startx: number;\n\n  public starty: number;\n\n  constructor(public el: ElementRef, public renderer: Renderer2, private ngZone: NgZone, public cd: ChangeDetectorRef) {}\n\n  onMouseDown(event, index?: number) {\n    if (this.disabled) {\n      return;\n    }\n\n    this.dragging = true;\n    this.updateDomData();\n    this.sliderHandleClick = true;\n    if (this.range && this.handleValues && this.handleValues[0] === this.max) {\n      this.handleIndex = 0;\n    } else {\n      this.handleIndex = index;\n    }\n\n    this.bindDragListeners();\n    event.target.focus();\n    event.preventDefault();\n\n    if (this.animate) {\n      DomHandler.removeClass(this.el.nativeElement.children[0], 'p-slider-animate');\n    }\n  }\n\n  onTouchStart(event, index?: number) {\n    if (this.disabled) {\n      return;\n    }\n\n    var touchobj = event.changedTouches[0];\n    this.startHandleValue = this.range ? this.handleValues[index] : this.handleValue;\n    this.dragging = true;\n    if (this.range && this.handleValues && this.handleValues[0] === this.max) {\n      this.handleIndex = 0;\n    } else {\n      this.handleIndex = index;\n    }\n\n    if (this.orientation === 'horizontal') {\n      this.startx = parseInt(touchobj.clientX, 10);\n      this.barWidth = this.el.nativeElement.children[0].offsetWidth;\n    } else {\n      this.starty = parseInt(touchobj.clientY, 10);\n      this.barHeight = this.el.nativeElement.children[0].offsetHeight;\n    }\n\n    if (this.animate) {\n      DomHandler.removeClass(this.el.nativeElement.children[0], 'p-slider-animate');\n    }\n\n    event.preventDefault();\n  }\n\n  onTouchMove(event, index?: number) {\n    if (this.disabled) {\n      return;\n    }\n\n    var touchobj = event.changedTouches[0],\n      handleValue = 0;\n\n    if (this.orientation === 'horizontal') {\n      handleValue = Math.floor(((parseInt(touchobj.clientX, 10) - this.startx) * 100) / this.barWidth) + this.startHandleValue;\n    } else {\n      handleValue = Math.floor(((this.starty - parseInt(touchobj.clientY, 10)) * 100) / this.barHeight) + this.startHandleValue;\n    }\n\n    this.setValueFromHandle(event, handleValue);\n\n    event.preventDefault();\n  }\n\n  onTouchEnd(event, index?: number) {\n    if (this.disabled) {\n      return;\n    }\n\n    this.dragging = false;\n\n    if (this.range) this.onSlideEnd.emit({ originalEvent: event, values: this.values });\n    else this.onSlideEnd.emit({ originalEvent: event, value: this.value });\n\n    if (this.animate) {\n      DomHandler.addClass(this.el.nativeElement.children[0], 'p-slider-animate');\n    }\n\n    event.preventDefault();\n  }\n\n  onBarClick(event) {\n    if (this.disabled) {\n      return;\n    }\n\n    if (!this.sliderHandleClick) {\n      this.updateDomData();\n      this.handleChange(event);\n    }\n\n    this.sliderHandleClick = false;\n  }\n\n  onHandleKeydown(event, handleIndex?: number) {\n    if (this.disabled) {\n      return;\n    }\n    if (event.which == 38 || event.which == 39) {\n      this.spin(event, 1, handleIndex);\n    } else if (event.which == 37 || event.which == 40) {\n      this.spin(event, -1, handleIndex);\n    }\n  }\n\n  spin(event, dir: number, handleIndex?: number) {\n    let step = (this.step || 1) * dir;\n\n    if (this.range) {\n      this.handleIndex = handleIndex;\n      this.updateValue(this.values[this.handleIndex] + step);\n      this.updateHandleValue();\n    } else {\n      this.updateValue(this.value + step);\n      this.updateHandleValue();\n    }\n\n    event.preventDefault();\n  }\n\n  handleChange(event: Event) {\n    let handleValue = this.calculateHandleValue(event);\n    this.setValueFromHandle(event, handleValue);\n  }\n\n  bindDragListeners() {\n    this.ngZone.runOutsideAngular(() => {\n      const documentTarget: any = this.el ? this.el.nativeElement.ownerDocument : 'document';\n\n      if (!this.dragListener) {\n        this.dragListener = this.renderer.listen(documentTarget, 'mousemove', (event) => {\n          if (this.dragging) {\n            this.ngZone.run(() => {\n              this.handleChange(event);\n            });\n          }\n        });\n      }\n\n      if (!this.mouseupListener) {\n        this.mouseupListener = this.renderer.listen(documentTarget, 'mouseup', (event) => {\n          if (this.dragging) {\n            this.dragging = false;\n            this.ngZone.run(() => {\n              if (this.range) this.onSlideEnd.emit({ originalEvent: event, values: this.values });\n              else this.onSlideEnd.emit({ originalEvent: event, value: this.value });\n\n              if (this.animate) {\n                DomHandler.addClass(this.el.nativeElement.children[0], 'p-slider-animate');\n              }\n            });\n          }\n        });\n      }\n    });\n  }\n\n  unbindDragListeners() {\n    if (this.dragListener) {\n      this.dragListener();\n    }\n\n    if (this.mouseupListener) {\n      this.mouseupListener();\n    }\n  }\n\n  setValueFromHandle(event: Event, handleValue: any) {\n    this.sliderHandleClick = false;\n    let newValue = this.getValueFromHandle(handleValue);\n\n    if (this.range) {\n      if (this.step) {\n        this.handleStepChange(newValue, this.values[this.handleIndex]);\n      } else {\n        this.handleValues[this.handleIndex] = handleValue;\n        this.updateValue(newValue, event);\n      }\n    } else {\n      if (this.step) {\n        this.handleStepChange(newValue, this.value);\n      } else {\n        this.handleValue = handleValue;\n        this.updateValue(newValue, event);\n      }\n    }\n\n    this.cd.markForCheck();\n  }\n\n  handleStepChange(newValue: number, oldValue: number) {\n    let diff = newValue - oldValue;\n    let val = oldValue;\n\n    if (diff < 0) {\n      val = oldValue + Math.ceil(newValue / this.step - oldValue / this.step) * this.step;\n    } else if (diff > 0) {\n      val = oldValue + Math.floor(newValue / this.step - oldValue / this.step) * this.step;\n    }\n\n    this.updateValue(val);\n    this.updateHandleValue();\n  }\n\n  writeValue(value: any): void {\n    if (this.range) this.values = value || [0, 0];\n    else this.value = value || 0;\n\n    this.updateHandleValue();\n    this.updateDiffAndOffset();\n    this.cd.markForCheck();\n  }\n\n  registerOnChange(fn: Function): void {\n    this.onModelChange = fn;\n  }\n\n  registerOnTouched(fn: Function): void {\n    this.onModelTouched = fn;\n  }\n\n  setDisabledState(val: boolean): void {\n    this.disabled = val;\n    this.cd.markForCheck();\n  }\n\n  get rangeStartLeft() {\n    if (!this.isVertical()) return this.handleValues[0] > 100 ? 100 + '%' : this.handleValues[0] + '%';\n    return null;\n  }\n\n  get rangeStartBottom() {\n    return this.isVertical() ? this.handleValues[0] + '%' : 'auto';\n  }\n\n  get rangeEndLeft() {\n    return this.isVertical() ? null : this.handleValues[1] + '%';\n  }\n\n  get rangeEndBottom() {\n    return this.isVertical() ? this.handleValues[1] + '%' : 'auto';\n  }\n\n  isVertical(): boolean {\n    return this.orientation === 'vertical';\n  }\n\n  updateDomData(): void {\n    let rect = this.el.nativeElement.children[0].getBoundingClientRect();\n    this.initX = rect.left + DomHandler.getWindowScrollLeft();\n    this.initY = rect.top + DomHandler.getWindowScrollTop();\n    this.barWidth = this.el.nativeElement.children[0].offsetWidth;\n    this.barHeight = this.el.nativeElement.children[0].offsetHeight;\n  }\n\n  calculateHandleValue(event): number {\n    if (this.orientation === 'horizontal') return ((event.pageX - this.initX) * 100) / this.barWidth;\n    else return ((this.initY + this.barHeight - event.pageY) * 100) / this.barHeight;\n  }\n\n  updateHandleValue(): void {\n    if (this.range) {\n      this.handleValues[0] = ((this.values[0] < this.min ? 0 : this.values[0] - this.min) * 100) / (this.max - this.min);\n      this.handleValues[1] = ((this.values[1] > this.max ? 100 : this.values[1] - this.min) * 100) / (this.max - this.min);\n    } else {\n      if (this.value < this.min) this.handleValue = 0;\n      else if (this.value > this.max) this.handleValue = 100;\n      else this.handleValue = ((this.value - this.min) * 100) / (this.max - this.min);\n    }\n\n    if (this.step) {\n      this.updateDiffAndOffset();\n    }\n  }\n\n  updateDiffAndOffset(): void {\n    this.diff = this.getDiff();\n    this.offset = this.getOffset();\n  }\n\n  getDiff(): number {\n    return Math.abs(this.handleValues[0] - this.handleValues[1]);\n  }\n\n  getOffset(): number {\n    return Math.min(this.handleValues[0], this.handleValues[1]);\n  }\n\n  updateValue(val: number, event?: Event): void {\n    if (this.range) {\n      let value = val;\n\n      if (this.handleIndex == 0) {\n        if (value < this.min) {\n          value = this.min;\n          this.handleValues[0] = 0;\n        } else if (value > this.values[1]) {\n          if (value > this.max) {\n            value = this.max;\n            this.handleValues[0] = 100;\n          }\n        }\n        this.sliderHandleStart.nativeElement.focus();\n      } else {\n        if (value > this.max) {\n          value = this.max;\n          this.handleValues[1] = 100;\n          this.offset = this.handleValues[1];\n        } else if (value < this.min) {\n          value = this.min;\n          this.handleValues[1] = 0;\n        } else if (value < this.values[0]) {\n          this.offset = this.handleValues[1];\n        }\n        this.sliderHandleEnd.nativeElement.focus();\n      }\n\n      if (this.step) {\n        this.updateHandleValue();\n      } else {\n        this.updateDiffAndOffset();\n      }\n\n      this.values[this.handleIndex] = this.getNormalizedValue(value);\n      let newValues = [this.minVal, this.maxVal];\n      this.onModelChange(newValues);\n      this.onChange.emit({ event: event, values: this.values });\n    } else {\n      if (val < this.min) {\n        val = this.min;\n        this.handleValue = 0;\n      } else if (val > this.max) {\n        val = this.max;\n        this.handleValue = 100;\n      }\n\n      this.value = this.getNormalizedValue(val);\n\n      this.onModelChange(this.value);\n      this.onChange.emit({ event: event, value: this.value });\n      this.sliderHandle.nativeElement.focus();\n    }\n  }\n\n  getValueFromHandle(handleValue: number): number {\n    return (this.max - this.min) * (handleValue / 100) + this.min;\n  }\n\n  getDecimalsCount(value: number): number {\n    if (value && Math.floor(value) !== value) return value.toString().split('.')[1].length || 0;\n    return 0;\n  }\n\n  getNormalizedValue(val: number): number {\n    let decimalsCount = this.getDecimalsCount(this.step);\n    if (decimalsCount > 0) {\n      return +parseFloat(val.toString()).toFixed(decimalsCount);\n    } else {\n      return Math.floor(val);\n    }\n  }\n\n  ngOnDestroy() {\n    this.unbindDragListeners();\n  }\n\n  get minVal() {\n    return Math.min(this.values[1], this.values[0]);\n  }\n  get maxVal() {\n    return Math.max(this.values[1], this.values[0]);\n  }\n}\n\n@NgModule({\n  imports: [CommonModule],\n  exports: [Slider],\n  declarations: [Slider]\n})\nexport class SliderModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}