{"version":3,"file":"primeng-slider.mjs","sources":["../../src/slider/style/sliderstyle.ts","../../src/slider/slider.ts","../../src/slider/primeng-slider.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { style } from '@primeuix/styles/slider';\nimport { BaseStyle } from 'primeng/base';\n\nconst inlineStyles = {\n    root: () => ({\n        display: 'flex',\n        position: 'relative',\n        'touch-action': 'none'\n    }),\n    track: () => ({\n        display: 'block',\n        'flex-grow': 1,\n        position: 'relative'\n    }),\n    range: ({ instance }) => {\n        if (instance.range()) {\n            const vals = instance.values() ?? [0, 0];\n            const startPercent = instance.getValuePercent(Math.min(vals[0], vals[1]));\n            const endPercent = instance.getValuePercent(Math.max(vals[0], vals[1]));\n            const sizePercent = Math.max(endPercent - startPercent, 0);\n\n            if (instance.isHorizontal()) {\n                return { position: 'absolute', 'inset-inline-start': startPercent + '%', width: sizePercent + '%' };\n            } else {\n                return { position: 'absolute', bottom: startPercent + '%', height: sizePercent + '%' };\n            }\n        } else {\n            const percent = instance.getValuePercent(instance.value() ?? 0);\n            if (instance.isHorizontal()) {\n                return { position: 'absolute', width: percent + '%' };\n            } else {\n                return { position: 'absolute', bottom: '0', height: percent + '%' };\n            }\n        }\n    },\n    handle: ({ instance, index }) => {\n        const i = index ?? 0;\n        const handleValue = instance.getHandleValue(i);\n        const percent = instance.getValuePercent(handleValue);\n        const disabled = instance.isHandleDisabled(i);\n        const base = disabled ? { cursor: 'default', 'pointer-events': 'none' } : {};\n\n        if (instance.isHorizontal()) {\n            return { ...base, position: 'absolute', 'inset-inline-start': percent + '%', translate: '-50% 0' };\n        } else {\n            return { ...base, position: 'absolute', bottom: percent + '%', translate: '0 50%' };\n        }\n    },\n    startHandler: ({ instance }) => {\n        const handleValue = instance.getHandleValue(0);\n        const percent = instance.getValuePercent(handleValue);\n        const disabled = instance.isHandleDisabled(0);\n        const base = disabled ? { cursor: 'default', 'pointer-events': 'none' } : {};\n\n        if (instance.isHorizontal()) {\n            return { ...base, position: 'absolute', 'inset-inline-start': percent + '%', translate: '-50% 0' };\n        } else {\n            return { ...base, position: 'absolute', bottom: percent + '%', translate: '0 50%' };\n        }\n    },\n    endHandler: ({ instance }) => {\n        const handleValue = instance.getHandleValue(1);\n        const percent = instance.getValuePercent(handleValue);\n        const disabled = instance.isHandleDisabled(1);\n        const base = disabled ? { cursor: 'default', 'pointer-events': 'none' } : {};\n\n        if (instance.isHorizontal()) {\n            return { ...base, position: 'absolute', 'inset-inline-start': percent + '%', translate: '-50% 0' };\n        } else {\n            return { ...base, position: 'absolute', bottom: percent + '%', translate: '0 50%' };\n        }\n    }\n};\n\nconst classes = {\n    root: ({ instance }) => [\n        'p-slider p-component',\n        {\n            'p-disabled': instance.$disabled(),\n            'p-slider-horizontal': instance.isHorizontal(),\n            'p-slider-vertical': instance.isVertical()\n        }\n    ],\n    track: 'p-slider-track',\n    range: 'p-slider-range',\n    handle: 'p-slider-handle',\n    input: 'p-slider-input'\n};\n\n@Injectable()\nexport class SliderStyle extends BaseStyle {\n    name = 'slider';\n\n    style = style;\n\n    classes = classes;\n\n    inlineStyles = inlineStyles;\n}\n\n/**\n *\n * Slider is a component to provide input with a drag handle.\n *\n * [Live Demo](https://www.primeng.org/slider/)\n *\n * @module sliderstyle\n *\n */\nexport enum SliderClasses {\n    /**\n     * Class name of the root element\n     */\n    root = 'p-slider',\n    /**\n     * Class name of the track element\n     */\n    track = 'p-slider-track',\n    /**\n     * Class name of the range element\n     */\n    range = 'p-slider-range',\n    /**\n     * Class name of the handle element\n     */\n    handle = 'p-slider-handle',\n    /**\n     * Class name of the hidden input element\n     */\n    input = 'p-slider-input'\n}\n\nexport interface SliderStyle extends BaseStyle {}\n","import { booleanAttribute, ChangeDetectionStrategy, Component, computed, forwardRef, inject, input, NgModule, numberAttribute, output, Provider, signal, ViewEncapsulation } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { isRTL } from '@primeuix/utils';\nimport { SharedModule } from 'primeng/api';\nimport { AutoFocus } from 'primeng/autofocus';\nimport { PARENT_INSTANCE } from 'primeng/basecomponent';\nimport { BaseEditableHolder } from 'primeng/baseeditableholder';\nimport { Bind, BindModule } from 'primeng/bind';\nimport type { SliderChangeEvent, SliderOrientation, SliderPassThrough, SliderSlideEndEvent } from 'primeng/types/slider';\nimport { SliderStyle } from './style/sliderstyle';\n\nexport const SLIDER_VALUE_ACCESSOR: Provider = {\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => Slider),\n    multi: true\n};\n/**\n * Slider is a component to provide input by dragging a handle along a track.\n * @group Components\n */\n@Component({\n    selector: 'p-slider',\n    standalone: true,\n    imports: [AutoFocus, SharedModule, BindModule],\n    template: `\n        <div [class]=\"cx('track')\" [pBind]=\"ptm('track')\" [style]=\"sx('track')\">\n            <span [class]=\"cx('range')\" [style]=\"sx('range')\" [pBind]=\"ptm('range')\"></span>\n        </div>\n        @if (!range()) {\n            <span [class]=\"cx('handle')\" [style]=\"sx('handle', true, { index: 0 })\" (pointerdown)=\"onHandlePointerDown($event, 0)\" [attr.data-index]=\"0\" [attr.data-disabled]=\"getDataDisabled(0)\" [pBind]=\"ptm('handle')\">\n                <input\n                    type=\"range\"\n                    [class]=\"cx('input')\"\n                    [min]=\"min()\"\n                    [max]=\"max()\"\n                    [step]=\"$step()\"\n                    [value]=\"getHandleValue(0)\"\n                    [disabled]=\"isHandleDisabled(0)\"\n                    [attr.aria-valuemin]=\"min()\"\n                    [attr.aria-valuemax]=\"max()\"\n                    [attr.aria-valuenow]=\"getHandleValue(0)\"\n                    [attr.aria-orientation]=\"orientation()\"\n                    [attr.aria-label]=\"ariaLabel()\"\n                    [attr.aria-labelledby]=\"ariaLabelledBy()\"\n                    [attr.tabindex]=\"getHandleTabindex(0)\"\n                    [pAutoFocus]=\"autofocus()\"\n                    (input)=\"onInputChange($event, 0)\"\n                    (change)=\"onInputChange($event, 0)\"\n                    (focus)=\"onInputFocus($event, 0)\"\n                    (blur)=\"onInputBlur($event, 0)\"\n                    (keydown)=\"onKeyDown($event, 0)\"\n                    [pBind]=\"ptm('input')\"\n                />\n            </span>\n        }\n        @if (range()) {\n            <span [class]=\"cx('handle', { index: 0 })\" [style]=\"sx('startHandler')\" (pointerdown)=\"onHandlePointerDown($event, 0)\" [attr.data-index]=\"0\" [attr.data-disabled]=\"getDataDisabled(0)\" [pBind]=\"ptm('startHandler')\">\n                <input\n                    type=\"range\"\n                    [class]=\"cx('input')\"\n                    [min]=\"min()\"\n                    [max]=\"max()\"\n                    [step]=\"$step()\"\n                    [value]=\"getHandleValue(0)\"\n                    [disabled]=\"isHandleDisabled(0)\"\n                    [attr.aria-valuemin]=\"min()\"\n                    [attr.aria-valuemax]=\"max()\"\n                    [attr.aria-valuenow]=\"getHandleValue(0)\"\n                    [attr.aria-orientation]=\"orientation()\"\n                    [attr.aria-label]=\"ariaLabel()\"\n                    [attr.aria-labelledby]=\"ariaLabelledBy()\"\n                    [attr.tabindex]=\"getHandleTabindex(0)\"\n                    [pAutoFocus]=\"autofocus()\"\n                    (input)=\"onInputChange($event, 0)\"\n                    (change)=\"onInputChange($event, 0)\"\n                    (focus)=\"onInputFocus($event, 0)\"\n                    (blur)=\"onInputBlur($event, 0)\"\n                    (keydown)=\"onKeyDown($event, 0)\"\n                    [pBind]=\"ptm('input')\"\n                />\n            </span>\n            <span [class]=\"cx('handle', { index: 1 })\" [style]=\"sx('endHandler')\" (pointerdown)=\"onHandlePointerDown($event, 1)\" [attr.data-index]=\"1\" [attr.data-disabled]=\"getDataDisabled(1)\" [pBind]=\"ptm('endHandler')\">\n                <input\n                    type=\"range\"\n                    [class]=\"cx('input')\"\n                    [min]=\"min()\"\n                    [max]=\"max()\"\n                    [step]=\"$step()\"\n                    [value]=\"getHandleValue(1)\"\n                    [disabled]=\"isHandleDisabled(1)\"\n                    [attr.aria-valuemin]=\"min()\"\n                    [attr.aria-valuemax]=\"max()\"\n                    [attr.aria-valuenow]=\"getHandleValue(1)\"\n                    [attr.aria-orientation]=\"orientation()\"\n                    [attr.aria-label]=\"ariaLabel()\"\n                    [attr.aria-labelledby]=\"ariaLabelledBy()\"\n                    [attr.tabindex]=\"getHandleTabindex(1)\"\n                    (input)=\"onInputChange($event, 1)\"\n                    (change)=\"onInputChange($event, 1)\"\n                    (focus)=\"onInputFocus($event, 1)\"\n                    (blur)=\"onInputBlur($event, 1)\"\n                    (keydown)=\"onKeyDown($event, 1)\"\n                    [pBind]=\"ptm('input')\"\n                />\n            </span>\n        }\n    `,\n    providers: [SLIDER_VALUE_ACCESSOR, SliderStyle, { provide: PARENT_INSTANCE, useExisting: Slider }],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        '[class]': \"cx('root')\",\n        '[style]': \"sx('root')\",\n        '[attr.data-orientation]': 'orientation()',\n        '[attr.data-dragging]': 'dataDragging()',\n        '(pointerdown)': 'onTrackPointerDown($event)',\n        '(pointermove)': 'onTrackPointerMove($event)',\n        '(pointerup)': 'onTrackPointerUp($event)'\n    },\n    hostDirectives: [Bind]\n})\nexport class Slider extends BaseEditableHolder<SliderPassThrough> {\n    componentName = 'Slider';\n\n    bindDirectiveInstance = inject(Bind, { self: true });\n\n    _componentStyle = inject(SliderStyle);\n\n    /**\n     * When enabled, displays an animation on click of the slider bar.\n     * @group Props\n     * @deprecated This property is no longer functional.\n     */\n    animate = input(undefined, { transform: booleanAttribute });\n    /**\n     * Mininum boundary value.\n     * @group Props\n     */\n    min = input(0, { transform: numberAttribute });\n    /**\n     * Maximum boundary value.\n     * @group Props\n     */\n    max = input(100, { transform: numberAttribute });\n    /**\n     * Orientation of the slider.\n     * @group Props\n     */\n    orientation = input<SliderOrientation>('horizontal');\n    /**\n     * Step factor to increment/decrement the value.\n     * @group Props\n     */\n    step = input(undefined, { transform: numberAttribute });\n    /**\n     * When specified, allows two boundary values to be picked.\n     * @group Props\n     */\n    range = input(undefined, { transform: booleanAttribute });\n    /**\n     * Minimum number of steps between handles in range mode.\n     * @group Props\n     */\n    minStepsBetweenHandles = input(0, { transform: numberAttribute });\n    /**\n     * Disables the minimum (start) handle in range mode.\n     * @type boolean\n     * @defaultValue false\n     * @group Props\n     */\n    disabledMinHandle = input(false, { transform: booleanAttribute });\n    /**\n     * Disables the maximum (end) handle in range mode.\n     * @type boolean\n     * @defaultValue false\n     * @group Props\n     */\n    disabledMaxHandle = input(false, { transform: booleanAttribute });\n    /**\n     * Defines a string that labels the input for accessibility.\n     * @group Props\n     */\n    ariaLabel = input<string>();\n    /**\n     * Establishes relationships between the component and label(s) where its value should be one or more element IDs.\n     * @group Props\n     */\n    ariaLabelledBy = input<string>();\n    /**\n     * Index of the element in tabbing order.\n     * @group Props\n     */\n    tabindex = input(0, { transform: numberAttribute });\n    /**\n     * When present, it specifies that the component should automatically get focus on load.\n     * @group Props\n     */\n    autofocus = input(false, { transform: booleanAttribute });\n    /**\n     * Callback to invoke on value change.\n     * @param {SliderChangeEvent} event - Custom value change event.\n     * @group Emits\n     */\n    onChange = output<SliderChangeEvent>();\n    /**\n     * Callback to invoke when slide ended.\n     * @param {SliderSlideEndEvent} event - Custom slide end event.\n     * @group Emits\n     */\n    onSlideEnd = output<SliderSlideEndEvent>();\n\n    onAfterViewChecked() {\n        this.bindDirectiveInstance.setAttrs(this.ptms(['host', 'root']));\n    }\n\n    value = signal<number | null>(null);\n\n    values = signal<number[] | null>(null);\n\n    isDragging = signal<boolean>(false);\n\n    dragging = computed(() => this.isDragging());\n\n    dataDragging = computed(() => (this.isDragging() ? '' : null));\n\n    activeIndex: number = 0;\n\n    get handleIndex(): number {\n        return this.activeIndex;\n    }\n\n    private focusedIndex: number | null = null;\n\n    private isHandlePointerDown: boolean = false;\n\n    private dragOffsetPx: number = 0;\n\n    isHorizontal = computed(() => this.orientation() === 'horizontal');\n\n    isVertical = computed(() => this.orientation() === 'vertical');\n\n    $step = computed(() => this.step() || 1);\n\n    $tabindex = computed(() => (this.$disabled() ? -1 : this.tabindex()));\n\n    isHandleDisabled(index: number): boolean {\n        return this.$disabled() || (index === 0 && this.disabledMinHandle()) || (index === 1 && this.disabledMaxHandle());\n    }\n\n    getDataDisabled(index: number): '' | null {\n        return this.isHandleDisabled(index) ? '' : null;\n    }\n\n    getHandleTabindex(index: number): number {\n        return this.isHandleDisabled(index) ? -1 : this.$tabindex();\n    }\n\n    dataP = computed(() =>\n        this.cn({\n            [this.orientation() as string]: this.orientation()\n        })\n    );\n\n    private clamp(value: number, minVal: number, maxVal: number): number {\n        return Math.min(Math.max(value, minVal), maxVal);\n    }\n\n    private getPrecision(stepValue: number): number {\n        const stepString = stepValue.toString();\n        if (stepString.includes('e-')) {\n            return Number(stepString.split('e-')[1] || 0);\n        }\n        const dotIndex = stepString.indexOf('.');\n        return dotIndex >= 0 ? stepString.length - dotIndex - 1 : 0;\n    }\n\n    private roundToStep(value: number, stepValue: number, minValue: number): number {\n        if (!stepValue) return value;\n        const precision = this.getPrecision(stepValue);\n        const rounded = Math.round((value - minValue) / stepValue) * stepValue + minValue;\n        return Number(rounded.toFixed(precision));\n    }\n\n    private normalizeValue(value: number): number {\n        const s = this.step() || 1;\n        return this.clamp(this.roundToStep(value, s, this.min()), this.min(), this.max());\n    }\n\n    getValuePercent(value: number): number {\n        const rangeValue = this.max() - this.min();\n        if (!rangeValue) return 0;\n        return this.clamp(((value - this.min()) / rangeValue) * 100, 0, 100);\n    }\n\n    getHandleValue(index: number): number {\n        const values = this.getValues();\n        return values[index] ?? this.min();\n    }\n\n    private getValues(): number[] {\n        if (this.range()) {\n            const vals = this.values() ?? [this.min(), this.min()];\n            return vals.map((v) => this.normalizeValue(v));\n        } else {\n            return [this.normalizeValue(this.value() ?? this.min())];\n        }\n    }\n\n    private getValueFromPointer(event: PointerEvent, offsetPx: number = 0): number {\n        const rect = this.el.nativeElement.getBoundingClientRect();\n        const size = this.isHorizontal() ? rect.width : rect.height;\n        if (!size) return this.min();\n\n        const pointerPosition = this.isHorizontal() ? event.clientX - rect.left : event.clientY - rect.top;\n        const position = (pointerPosition - offsetPx) / size;\n        const clampedPosition = this.clamp(position, 0, 1);\n        const isRtl = this.isHorizontal() && isRTL(this.el.nativeElement);\n        const orientedPosition = this.isHorizontal() ? (isRtl ? 1 - clampedPosition : clampedPosition) : 1 - clampedPosition;\n        const value = this.min() + orientedPosition * (this.max() - this.min());\n\n        return this.normalizeValue(value);\n    }\n\n    private getClosestValueIndex(values: number[], nextValue: number, event?: PointerEvent): number {\n        const enabledIndices = values.map((_, i) => i).filter((i) => !this.isHandleDisabled(i));\n        if (!enabledIndices.length) return -1;\n\n        let closestIndex = enabledIndices[0];\n        let smallestDistance = Math.abs(values[closestIndex] - nextValue);\n        const pointerAxis = event ? (this.isHorizontal() ? event.clientX : event.clientY) : null;\n\n        for (const i of enabledIndices.slice(1)) {\n            const distance = Math.abs(values[i] - nextValue);\n            if (distance < smallestDistance) {\n                closestIndex = i;\n                smallestDistance = distance;\n            } else if (distance === smallestDistance && pointerAxis !== null) {\n                const closestEl = this.getHandleElement(closestIndex);\n                const candidateEl = this.getHandleElement(i);\n                if (closestEl && candidateEl) {\n                    const closestRect = closestEl.getBoundingClientRect();\n                    const candidateRect = candidateEl.getBoundingClientRect();\n                    const closestCenter = this.isHorizontal() ? closestRect.left + closestRect.width / 2 : closestRect.top + closestRect.height / 2;\n                    const candidateCenter = this.isHorizontal() ? candidateRect.left + candidateRect.width / 2 : candidateRect.top + candidateRect.height / 2;\n\n                    if (closestCenter === candidateCenter) {\n                        closestIndex = pointerAxis < closestCenter ? Math.min(closestIndex, i) : Math.max(closestIndex, i);\n                    } else {\n                        const closestDelta = Math.abs(pointerAxis - closestCenter);\n                        const candidateDelta = Math.abs(pointerAxis - candidateCenter);\n                        if (candidateDelta < closestDelta) {\n                            closestIndex = i;\n                        }\n                    }\n                }\n            }\n        }\n\n        return closestIndex;\n    }\n\n    private getHandleElement(index: number): HTMLElement | null {\n        return this.el.nativeElement.querySelector(`[data-index=\"${index}\"]`) as HTMLElement | null;\n    }\n\n    private updateValueAt(index: number, nextValue: number, event: Event): void {\n        const values = this.getValues();\n        const clampedValue = this.clamp(this.normalizeValue(nextValue), this.min(), this.max());\n\n        if (this.range()) {\n            const minDistance = Math.max(this.minStepsBetweenHandles() * (this.step() || 1), 0);\n            const minBound = index > 0 ? values[index - 1] + minDistance : this.min();\n            const maxBound = index < values.length - 1 ? values[index + 1] - minDistance : this.max();\n            const lowerBound = Math.min(minBound, maxBound);\n            const upperBound = Math.max(minBound, maxBound);\n            const boundedValue = this.clamp(clampedValue, lowerBound, upperBound);\n\n            const newVals = [...values];\n            newVals[index] = boundedValue;\n            this.values.set(newVals);\n            this.onModelChange(newVals);\n            this.onChange.emit({ event, values: newVals });\n        } else {\n            this.value.set(clampedValue);\n            this.onModelChange(clampedValue);\n            this.onChange.emit({ event, value: clampedValue });\n        }\n    }\n\n    private updateValueFromPointer(event: PointerEvent): void {\n        const nextValue = this.getValueFromPointer(event, this.dragOffsetPx);\n        const values = this.getValues();\n\n        if (this.range()) {\n            const closestIndex = this.getClosestValueIndex(values, nextValue, event);\n            if (closestIndex === -1) return;\n            this.activeIndex = closestIndex;\n            this.dragOffsetPx = 0;\n            this.updateValueAt(this.activeIndex, nextValue, event);\n        } else {\n            if (this.isHandleDisabled(0)) return;\n            this.activeIndex = 0;\n            this.dragOffsetPx = 0;\n            this.updateValueAt(0, nextValue, event);\n        }\n    }\n\n    // --- Pointer event handlers ---\n\n    onTrackPointerDown(event: PointerEvent) {\n        if (this.$disabled()) return;\n        if (event.pointerType === 'mouse' && event.button !== 0) return;\n\n        event.preventDefault();\n        (event.currentTarget as HTMLElement).setPointerCapture(event.pointerId);\n        this.isDragging.set(true);\n\n        if (this.isHandlePointerDown) {\n            this.isHandlePointerDown = false;\n            return;\n        }\n\n        this.dragOffsetPx = 0;\n        this.updateValueFromPointer(event);\n    }\n\n    onTrackPointerMove(event: PointerEvent) {\n        if (this.$disabled()) return;\n        if (!this.isDragging()) return;\n        if (this.isHandleDisabled(this.activeIndex)) return;\n\n        event.preventDefault();\n        this.updateValueAt(this.activeIndex, this.getValueFromPointer(event, this.dragOffsetPx), event);\n    }\n\n    onTrackPointerUp(event: PointerEvent) {\n        if (this.$disabled()) return;\n\n        event.preventDefault();\n        (event.currentTarget as HTMLElement).releasePointerCapture(event.pointerId);\n        this.isDragging.set(false);\n        this.isHandlePointerDown = false;\n        this.dragOffsetPx = 0;\n\n        if (this.range()) {\n            this.onSlideEnd.emit({ originalEvent: event, values: this.values() as number[] });\n        } else {\n            this.onSlideEnd.emit({ originalEvent: event, value: this.value() as number });\n        }\n    }\n\n    onHandlePointerDown(event: PointerEvent, index: number) {\n        if (this.$disabled()) return;\n        if (event.pointerType === 'mouse' && event.button !== 0) return;\n\n        event.preventDefault();\n\n        const handle = this.getHandleElement(index);\n        if (handle) {\n            const handleRect = handle.getBoundingClientRect();\n            const handleCenter = this.isHorizontal() ? handleRect.left + handleRect.width / 2 : handleRect.top + handleRect.height / 2;\n            const pointerAxis = this.isHorizontal() ? event.clientX : event.clientY;\n            this.dragOffsetPx = pointerAxis - handleCenter;\n        } else {\n            this.dragOffsetPx = 0;\n        }\n\n        this.activeIndex = index;\n        this.isHandlePointerDown = true;\n    }\n\n    // --- Input event handlers ---\n\n    onInputChange(event: Event, index: number) {\n        if (this.isHandleDisabled(index)) return;\n        this.activeIndex = index;\n        const nextValue = Number((event.target as HTMLInputElement).value);\n        this.updateValueAt(index, nextValue, event);\n\n        if (this.range()) {\n            this.onSlideEnd.emit({ originalEvent: event, values: this.values() as number[] });\n        } else {\n            this.onSlideEnd.emit({ originalEvent: event, value: this.value() as number });\n        }\n    }\n\n    onInputFocus(_event: FocusEvent, index: number) {\n        if (this.isHandleDisabled(index)) return;\n        this.focusedIndex = index;\n        this.activeIndex = index;\n    }\n\n    onInputBlur(event: FocusEvent, index: number) {\n        if (this.isHandleDisabled(index)) return;\n        this.activeIndex = index;\n        if (this.focusedIndex === index) {\n            this.focusedIndex = null;\n        }\n\n        if (this.range()) {\n            this.onSlideEnd.emit({ originalEvent: event, values: this.values() as number[] });\n        } else {\n            this.onSlideEnd.emit({ originalEvent: event, value: this.value() as number });\n        }\n        this.onModelTouched();\n    }\n\n    // --- Keyboard ---\n\n    onKeyDown(event: KeyboardEvent, index: number) {\n        if (this.isHandleDisabled(index)) return;\n        this.activeIndex = index;\n        const s = this.step() || 1;\n\n        switch (event.code) {\n            case 'ArrowDown':\n            case 'ArrowLeft':\n                this.decrementValue(event, index, s);\n                event.preventDefault();\n                break;\n\n            case 'ArrowUp':\n            case 'ArrowRight':\n                this.incrementValue(event, index, s);\n                event.preventDefault();\n                break;\n\n            case 'PageDown':\n                this.decrementValue(event, index, s * 10);\n                event.preventDefault();\n                break;\n\n            case 'PageUp':\n                this.incrementValue(event, index, s * 10);\n                event.preventDefault();\n                break;\n\n            case 'Home':\n                this.updateValueAt(index, this.min(), event);\n                event.preventDefault();\n                break;\n\n            case 'End':\n                this.updateValueAt(index, this.max(), event);\n                event.preventDefault();\n                break;\n\n            default:\n                break;\n        }\n    }\n\n    private decrementValue(event: KeyboardEvent, index: number, amount: number) {\n        const currentVal = this.getHandleValue(index);\n        this.updateValueAt(index, currentVal - amount, event);\n    }\n\n    private incrementValue(event: KeyboardEvent, index: number, amount: number) {\n        const currentVal = this.getHandleValue(index);\n        this.updateValueAt(index, currentVal + amount, event);\n    }\n\n    /**\n     * @override\n     *\n     * @see {@link BaseEditableHolder.writeControlValue}\n     */\n    writeControlValue(value: any) {\n        if (this.range()) this.values.set(value || [0, 0]);\n        else this.value.set(value || 0);\n    }\n}\n\n@NgModule({\n    imports: [Slider, SharedModule],\n    exports: [Slider, SharedModule]\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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"}