{"version":3,"file":"taiga-ui-kit-components-counter.mjs","sources":["../../../projects/kit/components/counter/counter.options.ts","../../../projects/kit/components/counter/counter.component.ts","../../../projects/kit/components/counter/counter.template.html","../../../projects/kit/components/counter/taiga-ui-kit-components-counter.ts"],"sourcesContent":["import {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\nimport {type TuiAppearanceOptions} from '@taiga-ui/core/directives/appearance';\nimport {type TuiSizeL, type TuiSizeS} from '@taiga-ui/core/types';\n\nexport interface TuiCounterOptions extends TuiAppearanceOptions {\n    size: TuiSizeL | TuiSizeS;\n    readonly icons: Readonly<{\n        decrease: string;\n        increase: string;\n    }>;\n    step: number;\n    min: number;\n    max: number;\n}\n\nexport const TUI_COUNTER_DEFAULT_OPTIONS: TuiCounterOptions = {\n    appearance: 'primary',\n    size: 'l',\n    min: 0,\n    max: Number.MAX_SAFE_INTEGER,\n    step: 1,\n    icons: {\n        increase: '@tui.plus',\n        decrease: '@tui.minus',\n    },\n};\n\nexport const [TUI_COUNTER_OPTIONS, tuiCounterOptionsProvider] = tuiCreateOptions(\n    TUI_COUNTER_DEFAULT_OPTIONS,\n);\n","import {ChangeDetectionStrategy, Component, computed, inject, input} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {TuiControl} from '@taiga-ui/cdk/classes';\nimport {tuiFallbackValueProvider} from '@taiga-ui/cdk/tokens';\nimport {tuiClamp, tuiSum} from '@taiga-ui/cdk/utils/math';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {type TuiSizeL, type TuiSizeS} from '@taiga-ui/core/types';\nimport {TuiInputNumberStepService} from '@taiga-ui/kit/components/input-number';\nimport {TuiFade} from '@taiga-ui/kit/directives/fade';\nimport {TuiFluidTypography} from '@taiga-ui/kit/directives/fluid-typography';\n\nimport {TUI_COUNTER_OPTIONS} from './counter.options';\n\nconst LIMIT: Record<TuiSizeL | TuiSizeS, number> = {\n    l: 1.25,\n    m: 1,\n    s: 13 / 16,\n};\n\n@Component({\n    selector: 'tui-counter',\n    imports: [TuiButton, TuiFade, TuiFluidTypography],\n    templateUrl: './counter.template.html',\n    styleUrl: './counter.style.less',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [TuiInputNumberStepService, tuiFallbackValueProvider(0)],\n    host: {'[attr.data-appearance]': 'appearance()', '[attr.data-size]': 'size()'},\n})\nexport class TuiCounter extends TuiControl<number> {\n    protected readonly hold = inject(TuiInputNumberStepService<number>);\n    protected readonly options = inject(TUI_COUNTER_OPTIONS);\n    protected readonly limit = computed(() => LIMIT[this.size()]);\n\n    protected readonly $ = this.hold.steps$\n        .pipe(takeUntilDestroyed())\n        .subscribe((value) => this.onStep(value));\n\n    public readonly step = input(this.options.step);\n    public readonly size = input(this.options.size);\n    public readonly min = input(this.options.min);\n    public readonly max = input(this.options.max);\n    public readonly appearance = input(this.options.appearance);\n\n    protected onStep(step: number): void {\n        this.onChange(tuiClamp(tuiSum(this.value(), step), this.min(), this.max()));\n    }\n}\n","<button\n    tuiIconButton\n    type=\"button\"\n    class=\"t-button\"\n    [appearance]=\"appearance()\"\n    [disabled]=\"value() - step() < min()\"\n    [iconStart]=\"options.icons.decrease\"\n    [size]=\"size()\"\n    (click)=\"onStep(-step())\"\n    (pointerdown.prevent)=\"hold.next(-step())\"\n>\n    -\n</button>\n<div\n    tuiFade\n    class=\"t-content\"\n    [tuiFluidTypography]=\"[0.625, limit()]\"\n>\n    {{ value() }}\n    <ng-content />\n</div>\n<button\n    tuiIconButton\n    type=\"button\"\n    class=\"t-button\"\n    [appearance]=\"appearance()\"\n    [disabled]=\"value() + step() > max()\"\n    [iconStart]=\"options.icons.increase\"\n    [size]=\"size()\"\n    (click)=\"onStep(step())\"\n    (pointerdown.prevent)=\"hold.next(step())\"\n>\n    +\n</button>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}