{"version":3,"file":"taiga-ui-kit-components-range.mjs","sources":["../../../projects/kit/components/range/range-change.directive.ts","../../../projects/kit/components/range/range.component.ts","../../../projects/kit/components/range/range.template.html","../../../projects/kit/components/range/taiga-ui-kit-components-range.ts"],"sourcesContent":["import {DOCUMENT} from '@angular/common';\nimport {Directive, inject, output} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {tuiTypedFromEvent} from '@taiga-ui/cdk/observables';\nimport {tuiInjectElement, tuiIsElement, tuiIsInput} from '@taiga-ui/cdk/utils/dom';\nimport {tuiClamp, tuiRound} from '@taiga-ui/cdk/utils/math';\nimport {TUI_FLOATING_PRECISION} from '@taiga-ui/core/components/slider';\nimport {identity, map, repeat, startWith, switchMap, takeUntil, tap} from 'rxjs';\n\nimport {TuiRange} from './range.component';\n\n@Directive()\nexport class TuiRangeChange {\n    private readonly doc = inject(DOCUMENT);\n    private readonly el = tuiInjectElement();\n    private readonly range = inject(TuiRange);\n    public readonly activeThumbChange = output<'end' | 'start'>();\n\n    constructor() {\n        let activeThumb: 'end' | 'start';\n\n        tuiTypedFromEvent(this.el, 'pointerdown', {\n            passive: true,\n            capture: true,\n        })\n            .pipe(\n                tap(({clientX, target, pointerId}) => {\n                    activeThumb = this.detectActiveThumb(clientX, target);\n                    const slideElement =\n                        this.range.thumbs()[activeThumb === 'start' ? 0 : 1];\n\n                    slideElement.setPointerCapture(pointerId);\n                    this.activeThumbChange.emit(activeThumb);\n\n                    if (this.range.focusable()) {\n                        this.el.focus();\n                    }\n                }),\n                switchMap((event) =>\n                    tuiTypedFromEvent(this.doc, 'pointermove').pipe(\n                        tuiIsElement(event.target) && tuiIsInput(event.target)\n                            ? identity\n                            : startWith(event),\n                    ),\n                ),\n                map(({clientX}) => this.getFractionFromEvents(clientX ?? 0)),\n                takeUntil(tuiTypedFromEvent(this.doc, 'pointerup', {passive: true})),\n                repeat(),\n                takeUntilDestroyed(),\n            )\n            .subscribe((fraction) => {\n                const value = this.range.toValue(fraction);\n\n                this.range.processValue(value, activeThumb === 'end');\n            });\n    }\n\n    private getFractionFromEvents(clickClientX: number): number {\n        const {left, right, width} = this.el.getBoundingClientRect();\n        const start = this.el.matches('[dir=\"rtl\"] :scope') ? right : left;\n        const value = Math.abs(tuiClamp(clickClientX, left, right) - start);\n\n        return tuiRound(value / width, TUI_FLOATING_PRECISION);\n    }\n\n    private detectActiveThumb(\n        clientX: number,\n        target: EventTarget | null,\n    ): 'end' | 'start' {\n        const [startThumb, endThumb] = this.range.thumbs();\n\n        switch (target) {\n            case endThumb:\n                return 'end';\n            case startThumb:\n                return 'start';\n            default:\n                return this.findNearestActiveThumb(clientX);\n        }\n    }\n\n    private findNearestActiveThumb(clientX: number): 'end' | 'start' {\n        const fraction = this.getFractionFromEvents(clientX);\n        const deltaStart = fraction * 100 - this.range.start();\n        const deltaEnd = fraction * 100 - 100 + this.range.end();\n\n        return Math.abs(deltaStart) > Math.abs(deltaEnd) ||\n            deltaEnd > 0 ||\n            (this.range.start() === 0 && this.range.end() === 100)\n            ? 'end'\n            : 'start';\n    }\n}\n","import {\n    ChangeDetectionStrategy,\n    Component,\n    computed,\n    input,\n    viewChildren,\n} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {TuiControl} from '@taiga-ui/cdk/classes';\nimport {tuiFallbackValueProvider} from '@taiga-ui/cdk/tokens';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiClamp, tuiQuantize} from '@taiga-ui/cdk/utils/math';\nimport {\n    type TuiKeySteps,\n    tuiKeyStepValueToPercentage,\n    tuiPercentageToKeyStepValue,\n    TuiSlider,\n    TuiSliderComponent,\n} from '@taiga-ui/core/components/slider';\n\nimport {TuiRangeChange} from './range-change.directive';\n\n@Component({\n    selector: 'tui-range',\n    imports: [FormsModule, TuiSlider],\n    templateUrl: './range.template.html',\n    styleUrl: './range.style.less',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [tuiFallbackValueProvider([0, 0])],\n    hostDirectives: [\n        {\n            directive: TuiRangeChange,\n            outputs: ['activeThumbChange'],\n        },\n    ],\n    host: {\n        '[attr.aria-disabled]': 'disabled()',\n        '[attr.tabindex]': '-1',\n        '[class._disabled]': 'disabled()',\n        '[style.--t-end.%]': 'end()',\n        '[style.--t-start.%]': 'start()',\n        '(focusout)': 'onTouched()',\n        '(keydown.arrowDown.prevent)': 'changeByStep(-1, $event.target)',\n        '(keydown.arrowLeft.prevent)': 'changeByStep(rtl ? 1 : -1, $event.target)',\n        '(keydown.arrowRight.prevent)': 'changeByStep(rtl ? -1 : 1, $event.target)',\n        '(keydown.arrowUp.prevent)': 'changeByStep(1, $event.target)',\n    },\n})\nexport class TuiRange extends TuiControl<[number, number]> {\n    private readonly el = tuiInjectElement();\n    private readonly sliders = viewChildren(TuiSliderComponent);\n    protected lastActiveThumb: 'end' | 'start' = 'end';\n    public readonly min = input(0);\n    public readonly max = input(100);\n    public readonly step = input(1);\n    public readonly segments = input(1);\n    public readonly keySteps = input<TuiKeySteps>();\n    public readonly focusable = input(true);\n    public readonly margin = input(0);\n    public readonly limit = input(Infinity);\n    public readonly start = computed(() => this.toPercent(this.value()[0]));\n    public readonly end = computed(() => 100 - this.toPercent(this.value()[1]));\n\n    public readonly thumbs = computed(\n        ([start, end] = this.sliders()) => [start!.el, end!.el] as const,\n    );\n\n    protected readonly segmentWidthRatio = computed<number>(() => 1 / this.segments());\n\n    protected readonly fractionStep = computed<number>((step = this.step()) =>\n        this.keySteps() ? step / 100 : step / (this.max() - this.min()),\n    );\n\n    protected readonly computedKeySteps = computed<TuiKeySteps>(\n        () =>\n            this.keySteps() || [\n                [0, this.min()],\n                [100, this.max()],\n            ],\n    );\n\n    public processValue(value: number, end: boolean): void {\n        if (end) {\n            this.updateEnd(value);\n        } else {\n            this.updateStart(value);\n        }\n\n        this.lastActiveThumb = end ? 'end' : 'start';\n    }\n\n    public takeStep(coefficients: readonly [number, number]): readonly [number, number] {\n        return this.value().map((value, i) => {\n            const fraction = this.toPercent(value) / 100;\n            const newFractionValue = fraction + coefficients[i]! * this.fractionStep();\n\n            return this.toValue(newFractionValue);\n        }) as [number, number];\n    }\n\n    public toValue(fraction: number): number {\n        return tuiPercentageToKeyStepValue(\n            tuiClamp(tuiQuantize(fraction, this.fractionStep()), 0, 1) * 100,\n            this.computedKeySteps(),\n        );\n    }\n\n    protected get rtl(): boolean {\n        return this.el.matches('[dir=\"rtl\"] :scope');\n    }\n\n    protected changeByStep(coefficient: number, target: HTMLElement): void {\n        const [startThumb, endThumb] = this.thumbs();\n\n        const isEndThumb =\n            target === this.el ? this.lastActiveThumb === 'end' : target === endThumb;\n\n        const activeThumbElement = isEndThumb ? endThumb : startThumb;\n        const newValue = this.takeStep(isEndThumb ? [0, coefficient] : [coefficient, 0]);\n\n        this.processValue(newValue[isEndThumb ? 1 : 0], isEndThumb);\n        activeThumbElement?.focus();\n    }\n\n    protected toPercent(value: number): number {\n        return tuiKeyStepValueToPercentage(value, this.computedKeySteps());\n    }\n\n    private updateStart(value: number): void {\n        const newValue = Math.min(value, this.value()[1]);\n        const distance = this.value()[1] - newValue;\n\n        if (!this.checkDistance(distance)) {\n            return;\n        }\n\n        this.onChange([newValue, this.value()[1]]);\n    }\n\n    private updateEnd(value: number): void {\n        const newValue = Math.max(value, this.value()[0]);\n        const distance = newValue - this.value()[0];\n\n        if (!this.checkDistance(distance)) {\n            return;\n        }\n\n        this.onChange([this.value()[0], newValue]);\n    }\n\n    private checkDistance(distance: number): boolean {\n        return tuiClamp(distance, this.margin(), this.limit()) === distance;\n    }\n}\n","<div\n    class=\"t-track\"\n    [style.--t-bg-size-ratio]=\"1 - segmentWidthRatio()\"\n    [style.--t-segment-width.%]=\"segmentWidthRatio() * 100\"\n>\n    <input\n        automation-id=\"tui-range__left\"\n        readonly\n        tuiSlider\n        type=\"range\"\n        class=\"t-thumb\"\n        [disabled]=\"disabled()\"\n        [keySteps]=\"keySteps()\"\n        [max]=\"max()\"\n        [min]=\"min()\"\n        [ngModel]=\"value()[0]\"\n        [ngModelOptions]=\"{standalone: true}\"\n        [step]=\"step()\"\n        [tabIndex]=\"focusable() ? 0 : -1\"\n    />\n    <input\n        automation-id=\"tui-range__right\"\n        readonly\n        tuiSlider\n        type=\"range\"\n        class=\"t-thumb\"\n        [disabled]=\"disabled()\"\n        [keySteps]=\"keySteps()\"\n        [max]=\"max()\"\n        [min]=\"min()\"\n        [ngModel]=\"value()[1]\"\n        [ngModelOptions]=\"{standalone: true}\"\n        [step]=\"step()\"\n        [tabIndex]=\"focusable() ? 0 : -1\"\n    />\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.TuiRangeChange"],"mappings":"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"}