{"version":3,"file":"taiga-ui-core-components-slider.mjs","sources":["../../../projects/core/components/slider/helpers/key-steps.ts","../../../projects/core/components/slider/slider.component.ts","../../../projects/core/components/slider/helpers/slider-key-steps.directive.ts","../../../projects/core/components/slider/helpers/slider-readonly.directive.ts","../../../projects/core/components/slider/helpers/slider-thumb-label.component.ts","../../../projects/core/components/slider/helpers/slider-thumb-label.template.html","../../../projects/core/components/slider/slider.ts","../../../projects/core/components/slider/taiga-ui-core-components-slider.ts"],"sourcesContent":["import {type TuiValueTransformer} from '@taiga-ui/cdk/classes';\nimport {tuiRound} from '@taiga-ui/cdk/utils/math';\n\n/**\n * Used as a limit for eliminating JS issues with floating point math\n */\nexport const TUI_FLOATING_PRECISION = 7;\n\n/**\n * Steps for splitting sliders into different linear dependencies.\n * Each element of the array has the form [percent, value]\n *\n * Thus, to set a field from 50,000 to 30,000,000 in steps:\n * 1) From 50 000 to 200 000 by 5000 per step (30 steps)\n * 2) From 200 000 to 1 000 000 by 50 000 per step (16 steps)\n * 3) From 1 000 000 to 30 000 000 by 500 000 per step (58 steps)\n *\n * You need to pass the following keyStep (where 104 = 30 + 16 + 58 is the total number of steps):\n *  [\n *      [0, 50_000],\n *      [100 / 104 * 30, 200_000],\n *      [100 / 104 * (30 + 16), 1_000_000],\n *      [100, 30_000_000],\n *  ];\n *\n */\nexport type TuiKeySteps = [[0, number], ...Array<[number, number]>, [100, number]];\n\nfunction tuiFindKeyStepsBoundariesByFn(\n    keySteps: TuiKeySteps,\n    fn: ([keyStepPercent, keyStepValue]: [number, number]) => boolean,\n): [[number, number], [number, number]] {\n    const keyStepUpperIndex = keySteps.findIndex((keyStep, i) => i && fn(keyStep));\n    const lowerStep = keySteps[keyStepUpperIndex - 1] || keySteps[0];\n\n    const upperStep = keySteps[keyStepUpperIndex] ||\n        keySteps[keySteps.length - 1] || [0, 0];\n\n    return [lowerStep, upperStep];\n}\n\nexport function tuiPercentageToKeyStepValue(\n    valuePercentage: number,\n    keySteps: TuiKeySteps,\n): number {\n    const [[lowerStepPercent, lowerStepValue], [upperStepPercent, upperStepValue]] =\n        tuiFindKeyStepsBoundariesByFn(\n            keySteps,\n            ([keyStepPercentage, _]) => valuePercentage <= keyStepPercentage,\n        );\n\n    const ratio =\n        (valuePercentage - lowerStepPercent) / (upperStepPercent - lowerStepPercent);\n\n    const controlValue = (upperStepValue - lowerStepValue) * ratio + lowerStepValue;\n\n    return tuiRound(controlValue, TUI_FLOATING_PRECISION);\n}\n\nexport function tuiKeyStepValueToPercentage(\n    value: number,\n    keySteps: TuiKeySteps,\n): number {\n    const [[lowerStepPercent, lowerStepValue], [upperStepPercent, upperStepValue]] =\n        tuiFindKeyStepsBoundariesByFn(\n            keySteps,\n            ([_, keyStepValue]) => value <= keyStepValue,\n        );\n\n    const ratio = (value - lowerStepValue) / (upperStepValue - lowerStepValue) || 0;\n\n    return (upperStepPercent - lowerStepPercent) * ratio + lowerStepPercent;\n}\n\nexport function tuiCreateKeyStepsTransformer(\n    keySteps: TuiKeySteps,\n): TuiValueTransformer<number, number> {\n    return new (class implements TuiValueTransformer<number, number> {\n        public fromControlValue(controlValue: number): number {\n            return tuiKeyStepValueToPercentage(controlValue, keySteps) / 100;\n        }\n\n        public toControlValue(ratio: number): number {\n            return tuiPercentageToKeyStepValue(ratio * 100, keySteps);\n        }\n    })();\n}\n","import {ChangeDetectionStrategy, Component, computed, inject, input} from '@angular/core';\nimport {NgControl, NgModel} from '@angular/forms';\nimport {tuiWatch} from '@taiga-ui/cdk/observables';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiRound} from '@taiga-ui/cdk/utils/math';\nimport {tuiIsNumber} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {tuiAsAuxiliary} from '@taiga-ui/core/tokens';\nimport {take} from 'rxjs';\n\nimport {TUI_FLOATING_PRECISION} from './helpers/key-steps';\nimport {TuiSliderKeyStepsBase} from './helpers/slider-key-steps.directive';\n\n@Component({\n    selector: 'input[type=range][tuiSlider]',\n    template: '',\n    styleUrl: './slider.style.less',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [tuiAsAuxiliary(TuiSliderComponent)],\n    host: {\n        '[style.--tui-slider-fill-ratio]': 'valueRatio',\n        '[style.--tui-ticks-gradient]': 'ticksGradient()',\n        /**\n         * For change detection.\n         * Webkit does not have built-in method for customization of filling progress (as Firefox).\n         * We draw filling of progress by `background: linear-gradient(...)` of the track.\n         * This function triggers change detection (for {@link valueRatio} getter) when we drag thumb of the input.\n         */\n        '(input)': '0',\n    },\n})\nexport class TuiSliderComponent {\n    private readonly control = inject(NgControl, {self: true, optional: true});\n\n    protected readonly ticksGradient = computed((segments = this.segments()) =>\n        this.getTicksGradient(segments),\n    );\n\n    public readonly segments = input([1], {\n        alias: 'segments',\n        transform: (x: number | readonly number[]): readonly number[] =>\n            tuiIsNumber(x) ? Array.from({length: x}, (_, i) => i / x) : x,\n    });\n\n    public readonly el = tuiInjectElement<HTMLInputElement>();\n\n    public readonly keySteps = inject(TuiSliderKeyStepsBase, {\n        self: true,\n        optional: true,\n    });\n\n    constructor() {\n        if (this.control instanceof NgModel) {\n            /**\n             * The ValueAccessor.writeValue method is called twice on any value accessor during component initialization,\n             * when a control is bound using [(ngModel)], first time with a phantom null value.\n             * With `changeDetection: ChangeDetectionStrategy.OnPush` the second call of writeValue with real value don't re-render the view.\n             * ___\n             * See this {@link https://github.com/angular/angular/issues/14988 issue}\n             */\n            this.control.valueChanges?.pipe(tuiWatch(), take(1)).subscribe();\n        }\n    }\n\n    public get valueRatio(): number {\n        return (this.value - this.min) / (this.max - this.min) || 0;\n    }\n\n    public get min(): number {\n        return Number(this.el.min);\n    }\n\n    public set min(x: number) {\n        this.el.min = String(x);\n    }\n\n    public get max(): number {\n        return Number(this.el.max || 100);\n    }\n\n    public set max(x: number) {\n        this.el.max = String(x);\n    }\n\n    public get step(): number {\n        if (!this.el.step) {\n            return 1;\n        }\n\n        return this.el.step === 'any' ? 0 : Number(this.el.step);\n    }\n\n    public set step(x: number) {\n        this.el.step = String(x);\n    }\n\n    public get value(): number {\n        /**\n         * If developer uses `[(ngModel)]` and programmatically change value,\n         * the `el.nativeElement.value` is equal to the previous value at this moment\n         * (it will be updated only in next microtask).\n         * @see https://github.com/angular/angular/issues/13568\n         */\n        if (this.control instanceof NgModel) {\n            const transformer = this.keySteps?.transformer();\n\n            const value =\n                this.keySteps && transformer\n                    ? this.keySteps.toSliderValue(\n                          transformer.fromControlValue(this.control.value),\n                      )\n                    : this.control.viewModel;\n\n            return this.step\n                ? tuiRound(\n                      Math.round(value / this.step) * this.step,\n                      TUI_FLOATING_PRECISION,\n                  )\n                : value;\n        }\n\n        return Number(this.el.value) || 0;\n    }\n\n    public set value(newValue: number) {\n        this.el.value = `${newValue}`;\n    }\n\n    protected getTicksGradient(segments: readonly number[]): string {\n        if (segments.length <= 1) {\n            return 'linear-gradient(to right, transparent 0 100%)';\n        }\n\n        const percentages = segments\n            .filter((segment) => segment > 0 && segment < 1)\n            .map((segment) => segment * 100);\n\n        return percentages.reduce(\n            (acc, segment, index) =>\n                `${acc}\n                var(--tui-text-tertiary) ${segment}% calc(${segment}% + var(--t-tick-thickness)),\n                transparent ${segment}% ${percentages[index + 1] ?? 100}%${percentages[index + 1] ? ',' : ')'}\n                `,\n            `linear-gradient(to right, transparent 0 ${percentages[0]}%,`,\n        );\n    }\n}\n","import {\n    computed,\n    Directive,\n    effect,\n    inject,\n    INJECTOR,\n    input,\n    type OnInit,\n    signal,\n} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {NgControl} from '@angular/forms';\nimport {\n    TUI_IDENTITY_VALUE_TRANSFORMER,\n    TuiControl,\n    type TuiValueTransformer,\n} from '@taiga-ui/cdk/classes';\nimport {tuiControlValue} from '@taiga-ui/cdk/observables';\nimport {tuiFallbackValueProvider} from '@taiga-ui/cdk/tokens';\nimport {switchMap, timer} from 'rxjs';\n\nimport {TuiSliderComponent} from '../slider.component';\nimport {tuiCreateKeyStepsTransformer, type TuiKeySteps} from './key-steps';\n\n@Directive({\n    selector: 'input[tuiSlider][keySteps]',\n    host: {\n        '[attr.aria-valuemax]': 'max()',\n        '[attr.aria-valuemin]': 'min()',\n        '[attr.aria-valuenow]': 'controlValue()',\n        '[attr.max]': 'transformer() ? totalSteps() : slider?.max',\n        '[attr.min]': 'transformer() ? 0 : slider?.min',\n        '[attr.step]': 'transformer() ? 1 : step()',\n    },\n})\nexport class TuiSliderKeyStepsBase implements OnInit {\n    private readonly injector = inject(INJECTOR);\n    private readonly control = inject(NgControl, {self: true, optional: true});\n\n    protected readonly min = signal<number | undefined>(undefined);\n    protected readonly max = signal<number | undefined>(undefined);\n\n    protected readonly sync = effect(() => {\n        const steps = this.keySteps();\n\n        this.transformer.set(steps && tuiCreateKeyStepsTransformer(steps));\n        this.min.set(steps?.[0][1]);\n        this.max.set(steps?.[steps.length - 1]?.[1]);\n    });\n\n    public slider!: TuiSliderComponent;\n    public readonly step = input(1);\n    public readonly keySteps = input<TuiKeySteps>();\n\n    public readonly transformer = signal<TuiValueTransformer<number, number> | undefined>(\n        undefined,\n    );\n\n    public controlValue = toSignal(\n        timer(0) // https://github.com/angular/angular/issues/54418\n            .pipe(switchMap(() => tuiControlValue<number>(this.control, this.injector))),\n    );\n\n    public readonly totalSteps = computed(() =>\n        /**\n         * Not-integer amount of steps is invalid usage of native sliders\n         * ```html\n         * <input type=\"range\" [max]=\"100\" [step]=\"3.33\" />\n         * ```\n         * (impossible to select 100; 99.9 is max allowed value)\n         */\n        Math.round(100 / this.step()),\n    );\n\n    public ngOnInit(): void {\n        this.slider = this.injector.get(TuiSliderComponent);\n    }\n\n    public takeStep(coefficient: number): number {\n        const newValue = this.slider.value + coefficient;\n\n        return (\n            this.transformer()?.toControlValue(\n                (this.slider.value + coefficient) / this.totalSteps(),\n            ) ?? newValue\n        );\n    }\n\n    public toSliderValue(fraction: number): number {\n        return this.transformer() ? fraction * this.totalSteps() : fraction;\n    }\n\n    public setControlValue(controlValue: number): void {\n        const fraction =\n            this.transformer()?.fromControlValue(controlValue) ?? controlValue;\n\n        this.slider.value = this.toSliderValue(fraction);\n    }\n\n    public getControlValue(): number {\n        const {value} = this.slider;\n\n        return this.transformer()?.toControlValue(value / this.totalSteps()) ?? value;\n    }\n}\n\n@Directive({\n    selector:\n        'input[tuiSlider][keySteps][ngModel],input[tuiSlider][keySteps][formControl],input[tuiSlider][keySteps][formControlName]',\n    inputs: ['keySteps'],\n    providers: [tuiFallbackValueProvider(0)],\n    host: {\n        '[disabled]': 'disabled()',\n        '[value]': 'base.toSliderValue(value())',\n        '(blur)': 'onTouched()',\n        '(change)': 'setValue($event.target.value)',\n        '(input)': 'setValue($event.target.value)',\n    },\n})\nexport class TuiSliderKeySteps extends TuiControl<number> {\n    protected readonly base = inject(TuiSliderKeyStepsBase);\n\n    public set keySteps(steps: TuiKeySteps | null | undefined) {\n        this.transformer = steps\n            ? tuiCreateKeyStepsTransformer(steps)\n            : TUI_IDENTITY_VALUE_TRANSFORMER;\n    }\n\n    protected setValue(sliderValue: number): void {\n        this.onChange(\n            this.base.transformer() ? sliderValue / this.base.totalSteps() : sliderValue,\n        );\n    }\n}\n","import {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {DOCUMENT} from '@angular/common';\nimport {Directive, inject, input} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {TUI_FALSE_HANDLER, TUI_TRUE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {tuiTypedFromEvent} from '@taiga-ui/cdk/observables';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {combineLatest, filter, map, merge, tap} from 'rxjs';\n\nconst SLIDER_INTERACTION_KEYS = new Set([\n    'ArrowDown',\n    'ArrowLeft',\n    'ArrowRight',\n    'ArrowUp',\n    'End',\n    'Home',\n    'PageDown',\n    'PageUp',\n]);\n\n/**\n * Native <input type='range' readonly> doesn't work.\n * This directive imitates this native behaviour.\n */\n@Directive({\n    selector: 'input[tuiSlider][readonly]',\n    host: {\n        '(keydown)': 'preventKeyboardInteraction($event)',\n        '(mousedown)': 'preventEvent($event)',\n    },\n})\nexport class TuiSliderReadonly {\n    private readonly el = tuiInjectElement<HTMLInputElement>();\n    private readonly doc = inject(DOCUMENT);\n\n    public readonly readonly = input(true, {transform: coerceBooleanProperty});\n\n    constructor() {\n        const touchStart$ = tuiTypedFromEvent(this.el, 'touchstart', {passive: false});\n        const touchMove$ = tuiTypedFromEvent(this.doc, 'touchmove', {passive: false});\n        const touchEnd$ = tuiTypedFromEvent(this.doc, 'touchend', {passive: true});\n\n        const shouldPreventMove$ = merge(\n            touchStart$.pipe(\n                tap((e) => this.preventEvent(e)),\n                map(TUI_TRUE_HANDLER),\n            ),\n            touchEnd$.pipe(map(TUI_FALSE_HANDLER)),\n        );\n\n        /**\n         * @bad TODO think about another solution.\n         * Keep in mind that preventing touch event (on slider) inside `@HostListener('touchstart')` doesn't work for mobile chrome.\n         */\n        combineLatest([touchMove$, shouldPreventMove$])\n            .pipe(\n                filter(([_, shouldPreventMove]) => shouldPreventMove),\n                takeUntilDestroyed(),\n            )\n            .subscribe(([moveEvent]) => this.preventEvent(moveEvent));\n    }\n\n    protected preventEvent(event: Event): void {\n        if (event.cancelable && this.readonly()) {\n            event.preventDefault();\n        }\n    }\n\n    protected preventKeyboardInteraction(event: KeyboardEvent): void {\n        if (SLIDER_INTERACTION_KEYS.has(event.key)) {\n            this.preventEvent(event);\n        }\n    }\n}\n","import {AsyncPipe} from '@angular/common';\nimport {\n    type AfterContentInit,\n    ChangeDetectionStrategy,\n    Component,\n    contentChild,\n    inject,\n    INJECTOR,\n} from '@angular/core';\nimport {toObservable} from '@angular/core/rxjs-interop';\nimport {NgControl} from '@angular/forms';\nimport {tuiControlValue} from '@taiga-ui/cdk/observables';\nimport {tuiHintOptionsProvider} from '@taiga-ui/core/portals/hint';\nimport {switchMap} from 'rxjs';\n\nimport {TuiSliderComponent} from '../slider.component';\n\n@Component({\n    selector: '[tuiSliderThumbLabel]',\n    imports: [AsyncPipe],\n    templateUrl: './slider-thumb-label.template.html',\n    styleUrl: './slider-thumb-label.style.less',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [tuiHintOptionsProvider({direction: 'top', appearance: 'floating'})],\n})\nexport class TuiSliderThumbLabel implements AfterContentInit {\n    private readonly injector = inject(INJECTOR);\n\n    protected readonly slider = contentChild(TuiSliderComponent);\n    protected readonly control = contentChild(NgControl);\n\n    protected readonly valueChanges$ = toObservable(this.control).pipe(\n        switchMap((control) => tuiControlValue(control, this.injector)),\n    );\n\n    public ngAfterContentInit(): void {\n        ngDevMode &&\n            console.assert(\n                Boolean(this.control()),\n                '\\n[tuiSliderThumbLabel] expected <input tuiSlider type=\"range\" /> to use Angular Forms.\\nUse [(ngModel)] or [formControl] or formControlName or [formField] for correct work.',\n            );\n    }\n\n    protected get ratio(): number {\n        return this.slider()?.valueRatio || 0;\n    }\n\n    protected get ghostStart(): number {\n        return this.ratio * (this.slider()?.el.offsetWidth || 0);\n    }\n}\n","@if (valueChanges$ | async) {}\n\n<div\n    class=\"t-ghost\"\n    [style.--tui-slider-thumb-ratio]=\"ratio\"\n    [style.inset-inline-start.px]=\"ghostStart\"\n>\n    <ng-content />\n</div>\n\n<ng-content select=\"input[type=range]\" />\n","import {\n    TuiSliderKeySteps,\n    TuiSliderKeyStepsBase,\n} from './helpers/slider-key-steps.directive';\nimport {TuiSliderReadonly} from './helpers/slider-readonly.directive';\nimport {TuiSliderThumbLabel} from './helpers/slider-thumb-label.component';\nimport {TuiSliderComponent} from './slider.component';\n\nexport const TuiSlider = [\n    TuiSliderComponent,\n    TuiSliderThumbLabel,\n    TuiSliderKeyStepsBase,\n    TuiSliderKeySteps,\n    TuiSliderReadonly,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}