{"version":3,"file":"eui-components-eui-slider.mjs","sources":["../../eui-slider/eui-slider.component.ts","../../eui-slider/eui-slider.component.html","../../eui-slider/validators/eui-slider.validator.ts","../../eui-slider/index.ts","../../eui-slider/eui-components-eui-slider.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/member-ordering */\nimport { booleanAttribute, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, HostBinding, inject, numberAttribute, ViewChild,\n    AfterViewInit, OnDestroy, ViewChildren, QueryList, OnInit, model, effect, input } from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { CdkDragEnd, CdkDragMove, DragDropModule, Point } from '@angular/cdk/drag-drop';\nimport { fromEvent, Subject, Subscription, takeUntil } from 'rxjs';\n\nimport { BaseStatesDirective } from '@eui/components/shared';\nimport { uniqueId } from '@eui/core';\n\n/**\n * Represents the value structure for the slider component.\n * Contains start value and optional end value for range selection.\n */\nexport interface IEuiSliderValues {\n    /** The starting value of the slider or the single value in non-range mode */\n    start: number;\n    /** The ending value of the slider when in range mode, null otherwise */\n    end?: number | null;\n}\n\ntype SliderHandler = 'start' | 'end';\n\n/**\n * A draggable slider component for selecting numeric values within a defined range.\n * Supports both single-value and range selection modes with keyboard navigation,\n * visual feedback through tooltips and ticks, and full accessibility support.\n * Implements ControlValueAccessor for seamless integration with Angular forms.\n *\n * Use cases:\n * - Single value selection within a numeric range\n * - Range selection with start and end values\n * - Form-integrated numeric input with visual feedback\n * - Accessible numeric input for keyboard and screen reader users\n *\n * @usageNotes\n * ### Basic Usage\n * ```html\n * <!-- Single value slider -->\n * <eui-slider\n *   [min]=\"0\"\n *   [max]=\"100\"\n *   [step]=\"5\"\n *   [(value)]=\"sliderValue\" />\n *\n * <!-- Range slider -->\n * <eui-slider\n *   [min]=\"0\"\n *   [max]=\"1000\"\n *   [hasRange]=\"true\"\n *   [hasTicks]=\"true\"\n *   [(value)]=\"rangeValue\" />\n *\n * <!-- With custom formatting -->\n * <eui-slider\n *   [formatValue]=\"formatPrice\"\n *   [(value)]=\"price\" />\n * ```\n *\n * ```typescript\n * sliderValue = { start: 50, end: null };\n * rangeValue = { start: 200, end: 800 };\n * formatPrice = (value: number) => `$${value}`;\n * ```\n *\n * ### Accessibility\n * - Keyboard navigation: Arrow keys to adjust, Home/End for min/max\n * - Provide descriptive ariaLabel for the slider purpose\n * - Use endAriaLabel for range sliders to distinguish handles\n * - Focus indicators show which handle is active\n *\n * ### Notes\n * - Value structure: { start: number, end?: number | null }\n * - Range mode requires hasRange=\"true\" and both start/end values\n * - Ticks display at each step interval when hasTicks=\"true\"\n * - Tooltip shows current value on hover when hasTooltip=\"true\"\n */\n@Component({\n    selector: 'eui-slider',\n    templateUrl: './eui-slider.component.html',\n    styleUrls: ['./eui-slider.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    hostDirectives: [\n        {\n            directive: BaseStatesDirective,\n            inputs: ['euiPrimary', 'euiDanger', 'euiVariant'],\n        },\n    ],\n    imports: [DragDropModule],\n})\nexport class EuiSliderComponent implements ControlValueAccessor, AfterViewInit, OnDestroy, OnInit {\n    /**\n     * @description\n     * Computes and returns the CSS classes for the component based on its current state.\n     *\n     * @returns {string} Space-separated string of CSS class names\n     */\n    @HostBinding('class')\n    get cssClasses(): string {\n        return [\n            this.baseStatesDirective.getCssClasses('eui-slider'),\n            this.isDisabled ? 'eui-slider--disabled' : '',\n            this.control?.invalid ? 'eui-slider--invalid eui-slider--danger' : '',\n        ]\n            .join(' ')\n            .trim();\n    }\n\n    /**\n     * Initial value used by the slider.\n     * @defaultValue { start: 0, end: 0 }\n     */\n    value = model<IEuiSliderValues>({ start: 0, end: 100 });\n    /**\n     * The lowest value in the range of permitted values.\n     * \n     * @default 0\n     */\n    // eslint-disable-next-line @angular-eslint/no-input-rename\n    minValue = input(0, { alias: 'min', transform: numberAttribute });\n    /**\n     * The greatest value in the range of permitted values.\n     * \n     * @default 100\n     */\n    // eslint-disable-next-line @angular-eslint/no-input-rename\n    maxValue = input(100, { alias: 'max', transform: numberAttribute });\n    /**\n     * Number that specifies the granularity that the value must adhere to.\n     * \n     * @default 1\n     */\n    step = input(1, { transform: numberAttribute });\n    /**\n     * Wheter a tooltip should be displayed when the handlers are hovered.\n     *\n     * @default true\n     */\n    hasTooltip = input(true, { transform: booleanAttribute });\n    /**\n     * Wheter a ticks should be displayed at each step interval.\n     *\n     * @default false\n     */\n    hasTicks = input(false, { transform: booleanAttribute });\n    /**\n     * Wheter the value should be displayed on the top right of the track.\n     *\n     * @default true\n     */\n    hasValueIndicator = input(true, { transform: booleanAttribute });\n    /**\n     * Wheter a second should be display to allow to select a range.\n     *\n     * @default false\n     */\n    hasRange = input(false, { transform: booleanAttribute });\n    /**\n     * Method that allows to format the value display.\n     *\n     * @return The formatted string\n     * @defaultValue (value: number) => `${value}`\n     */\n    formatValue = input<(value: number) => string>(\n        (value: number) => `${value}`,\n    );\n    /**\n     * @description\n     * The label for the slider, used for accessibility.\n     * @default 'eUI slider'.\n     */\n    ariaLabel = input('eUI slider');\n    /**\n     * @description\n     * The label for the end slider in case there is a range, used for accessibility.\n     * @default 'end eUI slider'.\n     */\n    endAriaLabel = input('end eUI slider');\n    /**\n     * @description\n     * The unique identifier for the slider.\n     * This is used for accessibility and to link the slider with its label.\n     * @default 'eui-slider-' + uniqueId()\n     */\n    sliderId = input(`eui-slider-${uniqueId()}`);\n    \n    @ViewChild('sliderContainer', { static: true }) sliderContainer: ElementRef;\n    @ViewChild('trackActive', { static: false }) trackActive: ElementRef;\n\n    @ViewChild('startHandler', { static: false }) startHandler: ElementRef;\n    @ViewChild('startHandlerContainer', { static: false }) startHandlerContainer: ElementRef;\n    @ViewChild('endHandler', { static: false }) endHandler: ElementRef;\n    @ViewChild('endHandlerContainer', { static: false }) endHandlerContainer: ElementRef;\n    @ViewChildren('handler') handlers: QueryList<ElementRef>;\n\n    @ViewChild('startInputRange', { static: false }) startInputRange: ElementRef;\n    @ViewChild('endInputRange', { static: false }) endInputRange: ElementRef;\n    @ViewChildren('inputRange') inputRanges: QueryList<ElementRef>;\n\n    public isDisabled = false;\n    public initValue: { start: Point; end: Point} = {\n        start: { x: 0, y: 0 },\n        end: { x: 0, y: 0 },\n    }\n    public ticks: { value: number; position: string }[] = [];\n\n    private baseStatesDirective: BaseStatesDirective = inject(BaseStatesDirective);\n    private control = inject(NgControl, { self: true, optional: true });\n    private cd = inject(ChangeDetectorRef);\n    private destroy$: Subject<boolean> = new Subject<boolean>();\n    private keyboardSubscription: Subscription = new Subscription();\n    private resizeObserver: ResizeObserver;\n    /**\n     * Position where the user clicked to start the drag of an handler\n     */\n    private dragOffsetX = 0;\n\n    constructor() {\n        if (this.control) {\n            this.control.valueAccessor = this;\n        }\n\n        effect(() => {\n            const v = this.value();\n            queueMicrotask(() => this.onChange(v));\n        });\n    }\n\n    ngOnInit(): void {\n        if (this.value() === null) {\n            this.value.set({ start: 0, end: 0 });\n        }\n        if (!this.hasRange()) {\n            this.value.update(v => ({ ...v, end: null }));\n        }\n    }\n\n    ngAfterViewInit(): void {\n        this.inputRanges.toArray().forEach((inputRange) => {\n            const handlerId: SliderHandler = inputRange.nativeElement.classList.contains('range-input-start') ? 'start' : 'end';\n\n            fromEvent(inputRange.nativeElement, 'focus').pipe(takeUntil(this.destroy$)).subscribe(() => {\n                if (handlerId === 'start') {\n                    this.startHandler.nativeElement.classList.add('eui-slider__handler--focused');\n                } else {\n                    this.endHandler.nativeElement.classList.add('eui-slider__handler--focused');\n                }\n\n                this.keyboardSubscription = fromEvent<KeyboardEvent>(inputRange.nativeElement, 'keydown').pipe(takeUntil(this.destroy$)).subscribe((event) => { \n                    if (!this.isDisabled) {\n                        if ((event.key) === 'Home') {\n                            this.value.update(v => ({\n                                ...v, \n                                [handlerId]: this.hasRange() ? (handlerId === 'start' ? this.minValue() : v.start) : this.minValue(),\n                            }));\n                            this.setPositionValue(handlerId, this.value()[handlerId]);\n                            event.preventDefault();\n                        }\n                        if ((event.key) === 'End') {\n                            this.value.update(v => ({\n                                ...v, \n                                [handlerId]: this.hasRange() ? (handlerId === 'start' ? v.end : this.maxValue()) : this.maxValue(),\n                            }));\n                            this.setPositionValue(handlerId, this.value()[handlerId]);\n                            event.preventDefault();\n                        }\n                        if ((event.key) === 'ArrowRight' || (event.key) === 'ArrowUp') {\n                            this.value.update(v => {\n                                const newValue = v[handlerId] + this.step();\n                                const limit = this.hasRange() ? (handlerId === 'start' ? v.end : this.maxValue()) : this.maxValue();\n                                return v[handlerId] < limit ? { ...v, [handlerId]: Math.min(newValue, limit) } : v;\n                            });\n                            this.setPositionValue(handlerId, this.value()[handlerId]);\n                            event.preventDefault();\n                        }\n                        if ((event.key) === 'ArrowLeft' || (event.key) === 'ArrowDown') {\n                            this.value.update(v => {\n                                const newValue = v[handlerId] - this.step();\n                                const limit = this.hasRange() ? (handlerId === 'start' ? this.minValue() : v.start) : this.minValue();\n                                return v[handlerId] > limit ? { ...v, [handlerId]: Math.max(newValue, limit) } : v;\n                            });\n                            this.setPositionValue(handlerId, this.value()[handlerId]);\n                            event.preventDefault();\n                        }\n\n                        this.cd.detectChanges();\n                    }\n                });\n            });\n\n            fromEvent(inputRange.nativeElement, 'blur').pipe(takeUntil(this.destroy$)).subscribe(() => {\n                if (handlerId === 'start') {\n                    this.startHandler.nativeElement.classList.remove('eui-slider__handler--focused');\n                } else {\n                    this.endHandler.nativeElement.classList.remove('eui-slider__handler--focused');\n                }\n\n                this.onTouched();\n                this.keyboardSubscription.unsubscribe();\n            });\n        });\n\n        this.handlers.toArray().forEach((handler) => {\n            const handlerId: SliderHandler = handler.nativeElement.classList.contains('eui-slider__handler-start') ? 'start' : 'end';\n\n            fromEvent<MouseEvent>(handler.nativeElement, 'click').pipe(takeUntil(this.destroy$)).subscribe((event) => {\n                if (handlerId === 'start') {\n                    this.startInputRange.nativeElement.focus();\n                } else {\n                    this.endInputRange.nativeElement.focus();\n                }\n\n                event.stopPropagation();\n            });\n\n            fromEvent<MouseEvent>(handler.nativeElement, 'mousedown').pipe(takeUntil(this.destroy$)).subscribe((event) => {\n                const rect = handler.nativeElement.getBoundingClientRect();\n                this.dragOffsetX = event.clientX - rect.left;\n\n                event.stopPropagation();\n            });\n        });\n\n        this.resizeObserver = new ResizeObserver(() => {\n            this.setPositionValue('start', this.value().start);\n    \n            if (this.hasRange()) {\n                this.setPositionValue('end', this.value().end);\n            }\n\n            if (this.hasTicks()) {\n                this.generateTicks();\n            }\n        });\n\n        this.resizeObserver.observe(this.sliderContainer.nativeElement);\n\n        if (this.hasTicks()) {\n            this.generateTicks();\n        }\n    }\n\n    ngOnDestroy(): void {\n        this.destroy$.next(true);\n        this.destroy$.unsubscribe();\n        this.resizeObserver?.disconnect();\n        this.keyboardSubscription?.unsubscribe();\n    }\n\n    get formattedStartValue(): string {\n        return this.formatValue()(this.value().start);\n    }\n\n    get formattedEndValue(): string {\n        return this.formatValue()(this.value().end);\n    }\n\n    /**\n     * Drag handler\n     * \n     * @param handlerId Dragged handler\n     * @param e Event\n     */\n    public onDragMoved(handlerId: SliderHandler, e: CdkDragMove): void {\n        e.source.element.nativeElement.classList.add('eui-slider__handler--dragging');\n\n        const containerRect = this.sliderContainer.nativeElement.getBoundingClientRect();\n        const containerWidth = containerRect.width;\n        const handlerWidth = handlerId === 'start' ? this.startHandler.nativeElement.offsetWidth : this.endHandler.nativeElement.offsetWidth;\n\n        const maxTravel = containerWidth - handlerWidth;\n        const range = this.maxValue() - this.minValue();\n        const pointerX = e.pointerPosition.x - containerRect.left;\n        const ratio = Math.max(0, Math.min(1, pointerX / maxTravel));\n\n        const rawValue = this.minValue() + (ratio * range);\n        const steppedValue = (Math.round(((rawValue - this.minValue()) / this.step())) * this.step()) + this.minValue();\n        const clampedValue = Math.max(this.minValue(), Math.min(this.maxValue(), steppedValue));\n\n        this.value.update(v => ({ ...v, [handlerId]: clampedValue }));\n\n        const finalRatio = (clampedValue - this.minValue()) / range;\n        const snappedX = Math.round(finalRatio * maxTravel);\n\n        this.initValue[handlerId] = { x: snappedX, y: 0 };\n\n        this.calculateActiveTrack();\n        this.onChange(this.value());\n        this.onTouched();\n    }\n\n    /**\n     * Drag end handler\n     * \n     * @param e \n     */\n    public onDragEnded(e: CdkDragEnd): void {\n        e.source.element.nativeElement.classList.remove('eui-slider__handler--dragging');\n    }\n\n    writeValue(value: IEuiSliderValues): void {\n        if (!value) {\n            this.value.set({ start: 0, end: 0 });\n        } else {\n            this.value.set(value);\n        }\n\n        if (!this.hasRange()) {\n            this.value.update(v => ({ ...v, end: null }));\n        }\n\n        Promise.resolve().then(() => {\n            this.setPositionValue('start', this.value().start);\n\n            if (this.hasRange()) {\n                this.setPositionValue('end', this.value().end);\n            }\n        });\n    }\n\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    registerOnChange(fn: any): void {\n        this.onChange = fn;\n    }\n\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    registerOnTouched(fn: any): void {\n        this.onTouched = fn;\n    }\n\n    setDisabledState(isDisabled: boolean): void {\n        this.isDisabled = isDisabled;\n        this.cd.detectChanges();\n    }\n\n    /**\n     * Constrains the position of a handler to the position of the other one.\n     * Start handler cannot go after end handler. End handler cannot go before start handler.\n     * \n     * @param handlerId Dragged handler\n     * @returns A function constraining the position.\n     */\n    public constrainPosition = (handlerId: SliderHandler): ((point: Point) => Point) => {\n        return (point: Point) => {\n            const containerRect = this.sliderContainer.nativeElement.getBoundingClientRect();\n\n            let minX = 0;\n            let maxX = containerRect.width + containerRect.left;\n\n            if (handlerId === 'start' && this.endHandler?.nativeElement) {\n                const endRect = this.endHandler.nativeElement.getBoundingClientRect();\n                maxX = endRect.left;\n            } else if (handlerId === 'end' && this.startHandler?.nativeElement) {\n                const startRect = this.startHandler.nativeElement.getBoundingClientRect();\n                minX = startRect.left;\n            }\n\n            const adjustedX = point.x - this.dragOffsetX;\n            const x = Math.max(minX, Math.min(adjustedX, maxX));\n            \n            return {\n                x,\n                y: 0,\n            };\n        };\n    };\n\n    /**\n     * Click on track handler\n     * \n     * @param e Click event\n     */\n    public onTrackClick(e: MouseEvent): void {\n        if (!this.isDisabled) {\n            const containerRect = this.sliderContainer.nativeElement.getBoundingClientRect();\n            const x = e.clientX - containerRect.left;\n\n            const containerWidth = this.sliderContainer.nativeElement.offsetWidth;\n            const range = this.maxValue() - this.minValue();\n            const ratio = Math.max(0, Math.min(1, x / containerWidth));\n\n            const rawValue = this.minValue() + (ratio * range);\n            const steppedValue = (Math.round(((rawValue - this.minValue()) / this.step())) * this.step()) + this.minValue();\n            const clampedValue = Math.max(this.minValue(), Math.min(this.maxValue(), steppedValue));\n\n            if (this.hasRange()) {\n                const distToStart = Math.abs(this.value().start - clampedValue);\n                const distToEnd = Math.abs(this.value().end - clampedValue);\n                let closest: SliderHandler;\n\n                if (distToStart === distToEnd) {\n                    closest = clampedValue >= this.value().start ? 'end' : 'start';\n                } else {\n                    closest = distToStart < distToEnd ? 'start' : 'end';\n                }\n\n                // this.value()[closest] = clampedValue;\n                this.value.update(v => ({ ...v, [closest]: clampedValue }));\n                this.setPositionValue(closest, clampedValue);\n            } else {\n                // this.value().start = clampedValue;\n                this.value.update(v => ({ ...v, start: clampedValue }));\n                this.setPositionValue('start', clampedValue);\n            }\n\n            this.onChange(this.value());\n            this.onTouched();\n        }\n    }\n\n    /**\n     * Calculates the positon of an handler for a given value.\n     * \n     * @param handlerId Handler to position\n     * @param value Value on which calculate the position\n     */\n    private setPositionValue(handlerId: SliderHandler, value: number): void {\n        const container = this.sliderContainer.nativeElement;\n        const handler = handlerId === 'start' ? this.startHandler.nativeElement : this.endHandler.nativeElement;\n\n        const containerWidth = container.offsetWidth;\n        const handlerWidth = handler.offsetWidth;\n        const maxTravel = containerWidth - handlerWidth;\n        const range = this.maxValue() - this.minValue();\n\n        const clamped = Math.max(this.minValue(), Math.min(this.maxValue(), value));\n        const ratio = (clamped - this.minValue()) / range;\n        const x = Math.round(ratio * maxTravel);\n\n        this.initValue[handlerId] = { x, y: 0 };\n\n        this.cd.detectChanges();\n        this.calculateActiveTrack();\n    }\n\n    /**\n     * Calculate the size of the active track between two handlers\n     */\n    private calculateActiveTrack(): void {\n        const startX = this.initValue.start ? this.initValue.start.x : 0;\n        const endX = this.hasRange() ? this.initValue.end.x : startX;\n        const track = this.trackActive.nativeElement;\n\n        if (this.hasRange()) {\n            const left = Math.min(startX, endX);\n            const width = Math.abs(endX - startX);\n\n            track.style.left = `${left}px`;\n            track.style.width = `${width}px`;\n        } else {\n            track.style.left = '0px';\n            track.style.width = `${startX}px`;\n        }\n    }\n\n    /**\n     * Generates the ticks based on the step option.\n     */\n    private generateTicks(): void {\n        const stepCount = Math.floor((this.maxValue() - this.minValue()) / this.step());\n\n        const containerWidth = this.sliderContainer.nativeElement.offsetWidth;\n        const handlerWidth = this.startHandler.nativeElement.offsetWidth;\n        const maxTravel = containerWidth - handlerWidth;\n\n        this.ticks = [];\n\n        for (let i = 0; i <= stepCount; i++) {\n            const val = this.minValue() + (i * this.step());\n            const ratio = (val - this.minValue()) / (this.maxValue() - this.minValue());\n            const px = ((ratio * maxTravel) + handlerWidth / 2).toFixed(1);\n\n            this.ticks.push({ value: val, position: `${px}px` });\n        }\n\n        this.cd.detectChanges();\n    }\n\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-empty-function\n    private onChange: (_: any) => void = () => {};\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-empty-function\n    private onTouched: () => void = () => {};\n\n}\n","@if (hasValueIndicator()) {\n    <div class=\"value-display\">\n        <span class=\"value-start\">{{ formattedStartValue }}</span>\n        @if (value().end !== null && value().end !== undefined) {\n            - <span class=\"value-end\">{{ formattedEndValue }}</span>\n        }\n    </div>\n}\n\n<div #sliderContainer class=\"eui-slider__container eui-u-flex\" (mousedown)=\"onTrackClick($event)\">\n    <input\n        [id]=\"sliderId()\"\n        #startInputRange \n        #inputRange \n        type=\"range\" \n        class=\"range-input range-input-start\"\n        [min]=\"minValue()\" \n        [max]=\"hasRange() ? value().end : maxValue()\" \n        [step]=\"step()\" \n        [value]=\"value().start\"\n        [attr.aria-valuenow]=\"value().start\"\n        [attr.aria-valuemin]=\"minValue()\"\n        [attr.aria-valuemax]=\"hasRange() ? value().end : maxValue()\" \n        role=\"slider\"\n        [attr.aria-label]=\"ariaLabel()\"\n        [attr.aria-valuetext]=\"formattedStartValue\"\n        list=\"markers\" />\n\n    <div\n        #startHandler\n        #handler\n        class=\"eui-slider__handler eui-slider__handler-start\"\n        [class.eui-slider__handler-start--max-reached]=\"hasRange() ? value().start === value().end && value().end === maxValue() : value().start === maxValue()\"\n        cdkDragBoundary=\".eui-slider__container\"\n        cdkDrag\n        [cdkDragConstrainPosition]=\"constrainPosition('start')\"\n        [cdkDragFreeDragPosition]=\"initValue.start\"\n        [cdkDragDisabled]=\"isDisabled\"\n        (cdkDragMoved)=\"onDragMoved('start', $event)\"\n        (cdkDragEnded)=\"onDragEnded($event)\">\n        @if (hasTooltip() && !isDisabled) {\n            <div class=\"value-indicator\">\n                {{ formattedStartValue }}\n            </div>\n        }\n    </div>\n\n    @if (hasRange() && value().end !== null && value().end !== undefined) {\n        <input\n            [id]=\"'end-' + sliderId()\"\n            #endInputRange\n            #inputRange\n            type=\"range\"\n            class=\"range-input range-input-end\"\n            [min]=\"value().start\"\n            [max]=\"maxValue()\"\n            [step]=\"step()\"\n            [value]=\"value().end\"\n            [attr.aria-valuenow]=\"value().end\"\n            [attr.aria-valuemin]=\"value().start\"\n            [attr.aria-valuemax]=\"maxValue()\"\n            role=\"slider\"\n            [attr.aria-label]=\"endAriaLabel()\"\n            [attr.aria-valuetext]=\"formattedEndValue\"\n            list=\"markers\" />\n        \n        <div\n            #endHandler\n            #handler\n            class=\"eui-slider__handler eui-slider__handler-end\"\n            [class.eui-slider__handler-end--min-reached]=\"value().end === value().start && value().start === minValue()\"\n            cdkDragBoundary=\".eui-slider__container\"\n            cdkDrag\n            [cdkDragConstrainPosition]=\"constrainPosition('end')\"\n            [cdkDragFreeDragPosition]=\"initValue.end\"\n            [cdkDragDisabled]=\"isDisabled\"\n            (cdkDragMoved)=\"onDragMoved('end', $event)\"\n            (cdkDragEnded)=\"onDragEnded($event)\">\n            @if (hasTooltip() && !isDisabled) {\n                <div class=\"value-indicator\">\n                    {{ formattedEndValue }}\n                </div>\n            }\n        </div>\n    }\n\n    <div class=\"eui-slider__track\">\n        <div #trackActive class=\"eui-slider__track--active\"></div>\n    </div>\n\n    @if (hasTicks()) {\n        <datalist id=\"markers\">\n            @for (tick of ticks; track tick.value) {\n                <option [value]=\"tick.value\"></option>\n            }\n        </datalist>\n    \n        <div class=\"eui-slider__ticks\">\n            @for (tick of ticks; track tick.value) {\n                <span class=\"tick\" [style.left]=\"tick.position\"></span>\n            }\n        </div>\n    }\n</div>\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nimport { IEuiSliderValues } from '../eui-slider.component';\n\n/**\n * @description\n * Validator that requires the min / max of start and / or end values.\n *\n * @usageNotes\n * ```typescript\n * const slider = new FormControl<IEuiSliderValues>({ start: 10, end: 50 }, [sliderValidator({ startMin: 5, startMax: 50, endMin: 30, endMax: 90 })]),\n * console.log(slider.errors); // null\n * \n * const slider = new FormControl<IEuiSliderValues>({ start: 0, end: 50 }, [sliderValidator({ startMin: 5, startMax: 50, endMin: 30, endMax: 90 })]),\n * console.log(slider.errors); // { startMin: { required: 5, actual: 0 } }\n * \n * const slider = new FormControl<IEuiSliderValues>({ start: 60, end: 80 }, [sliderValidator({ startMin: 5, startMax: 50, endMin: 30, endMax: 90 })]),\n * console.log(slider.errors); // { startMax: { required: 50, actual: 60 } }\n * \n * const slider = new FormControl<IEuiSliderValues>({ start: 10, end: 20 }, [sliderValidator({ startMin: 5, startMax: 50, endMin: 30, endMax: 90 })]),\n * console.log(slider.errors); // { endMin: { required: 30, actual: 20 } }\n * \n * const slider = new FormControl<IEuiSliderValues>({ start: 10, end: 100 }, [sliderValidator({ startMin: 5, startMax: 50, endMin: 30, endMax: 90 })]),\n * console.log(slider.errors); // { endMax: { required: 90, actual: 100 } }\n * ```\n *\n * @returns A validator function that returns an error map with `startMin` /  `startMax` /  `endMin` /  `endMax` if the validation check fails, otherwise `null`.\n */\nexport function sliderValidator(config: { startMin?: number; startMax?: number; endMin?: number; endMax?: number; }): ValidatorFn {\n    return (control: AbstractControl): ValidationErrors | null => {\n        const value = control.value as IEuiSliderValues;\n\n        if (!value) return null;\n\n        const errors: ValidationErrors = {};\n\n        if (config.startMin !== undefined && value.start < config.startMin) {\n            errors.startMin = {\n                required: config.startMin,\n                actual: value.start,\n            };\n        }\n\n        if (config.startMax !== undefined && value.start > config.startMax) {\n            errors.startMax = {\n                required: config.startMax,\n                actual: value.start,\n            };\n        }\n\n        if (value.end != null) {\n            if (config.endMin !== undefined && value.end < config.endMin) {\n                errors.endMin = {\n                    required: config.endMin,\n                    actual: value.end,\n                };\n            }\n\n            if (config.endMax !== undefined && value.end > config.endMax) {\n                errors.endMax = {\n                    required: config.endMax,\n                    actual: value.end,\n                };\n            }\n        }\n\n        return Object.keys(errors).length > 0 ? errors : null;\n    };\n}\n","import { EuiSliderComponent } from './eui-slider.component';\n\nexport * from './eui-slider.component';\nexport * from './validators/eui-slider.validator';\n\nexport const EUI_SLIDER = [\n    EuiSliderComponent,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}