{"version":3,"file":"primeng-slider.mjs","sources":["../../src/app/components/slider/slider.ts","../../src/app/components/slider/primeng-slider.ts"],"sourcesContent":["import { NgModule, Component, ElementRef, OnDestroy, Input, Output, EventEmitter, forwardRef, Renderer2, NgZone, ChangeDetectorRef, ViewChild, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DomHandler } from 'primeng/dom';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\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]=\"{ 'p-slider p-component': true, 'p-disabled': disabled, 'p-slider-horizontal': orientation == 'horizontal', 'p-slider-vertical': orientation == 'vertical', 'p-slider-animate': animate }\"\n            (click)=\"onBarClick($event)\"\n        >\n            <span\n                *ngIf=\"range && orientation == 'horizontal'\"\n                class=\"p-slider-range\"\n                [ngStyle]=\"{ left: offset !== null && offset !== undefined ? offset + '%' : handleValues[0] + '%', width: diff ? diff + '%' : handleValues[1] - handleValues[0] + '%' }\"\n            ></span>\n            <span\n                *ngIf=\"range && orientation == 'vertical'\"\n                class=\"p-slider-range\"\n                [ngStyle]=\"{ bottom: offset !== null && offset !== undefined ? offset + '%' : handleValues[0] + '%', height: diff ? diff + '%' : handleValues[1] - handleValues[0] + '%' }\"\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]=\"{ left: orientation == 'horizontal' ? handleValue + '%' : null, bottom: orientation == 'vertical' ? handleValue + '%' : null }\"\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        return this.isVertical() ? null : this.handleValues[0] + '%';\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                    this.handleValues[0] = value;\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] = value;\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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"}