{"version":3,"file":"taiga-ui-kit-components-input-pin.mjs","sources":["../../../projects/kit/components/input-pin/input-pin-content.component.ts","../../../projects/kit/components/input-pin/input-pin-content.template.html","../../../projects/kit/components/input-pin/input-pin.component.ts","../../../projects/kit/components/input-pin/input-pin.ts","../../../projects/kit/components/input-pin/taiga-ui-kit-components-input-pin.ts"],"sourcesContent":["import {\n    ChangeDetectionStrategy,\n    Component,\n    inject,\n    ViewEncapsulation,\n} from '@angular/core';\nimport {NgControl} from '@angular/forms';\nimport {TUI_VERSION} from '@taiga-ui/cdk/constants';\nimport {TUI_TEXTFIELD_OPTIONS} from '@taiga-ui/core/components/textfield';\nimport {TuiAppearance} from '@taiga-ui/core/directives/appearance';\n\nimport {TuiInputPinComponent} from './input-pin.component';\n\n@Component({\n    selector: 'tui-input-pin-content',\n    imports: [TuiAppearance],\n    templateUrl: './input-pin-content.template.html',\n    styles: `\n        [data-tui-version='${TUI_VERSION}'] {\n            @import './input-pin.style.less';\n        }\n    `,\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {'aria-hidden': 'true', 'data-tui-version': TUI_VERSION},\n})\nexport class TuiInputPinContent {\n    protected readonly pin = inject(TuiInputPinComponent);\n    protected readonly appearance = inject(TUI_TEXTFIELD_OPTIONS).appearance;\n    protected readonly control = inject(NgControl);\n}\n","@for (_ of '-'.repeat(pin.el.maxLength); track $index) {\n    <label\n        class=\"t-item\"\n        [tuiAppearance]=\"appearance()\"\n        [tuiAppearanceFocus]=\"pin.isFocused($index)\"\n        [tuiAppearanceMode]=\"control.invalid && control.touched ? 'invalid' : null\"\n        (pointerdown.prevent)=\"pin.onClick($index)\"\n    >\n        <span\n            class=\"t-value\"\n            [class.t-value_filled]=\"pin.value()[$index]\"\n            [textContent]=\"pin.value()[$index] || pin.el.placeholder[$index]\"\n        ></span>\n    </label>\n}\n","import {computed, Directive, input, signal} from '@angular/core';\nimport {MaskitoDirective} from '@maskito/angular';\nimport {type MaskitoMask} from '@maskito/core';\nimport {TUI_VERSION} from '@taiga-ui/cdk/constants';\nimport {tuiInjectElement, tuiValue} from '@taiga-ui/cdk/utils/dom';\nimport {tuiFocusedIn} from '@taiga-ui/cdk/utils/focus';\nimport {tuiIsString} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {\n    tuiAsTextfieldContent,\n    TuiTextfieldContent,\n} from '@taiga-ui/core/components/textfield';\nimport {tuiMaskito} from '@taiga-ui/kit/utils';\n\nimport {TuiInputPinContent} from './input-pin-content.component';\n\n@Directive({\n    selector: 'input[tuiInputPin]',\n    providers: [tuiAsTextfieldContent(() => TuiInputPinContent)],\n    hostDirectives: [MaskitoDirective, TuiTextfieldContent],\n    host: {\n        'data-tui-version': TUI_VERSION,\n        inputmode: 'numeric',\n        maxlength: '4',\n        spellcheck: 'false',\n        '(pointerdown.prevent)': 'onClick(0)',\n        '(selectionchange)': 'onSelection()',\n    },\n})\n// TODO(v6): rename to TuiInputPinDirective\nexport class TuiInputPinComponent {\n    private readonly selectionStart = signal<number | null>(null);\n\n    public readonly el = tuiInjectElement<HTMLInputElement>();\n    public readonly value = tuiValue(this.el);\n\n    protected readonly focused = tuiFocusedIn(this.el);\n\n    protected readonly maskito = tuiMaskito(\n        computed(() => ({mask: this.mask(), overwriteMode: 'replace'})),\n    );\n\n    public readonly mask = input(/^\\d+$/, {\n        transform: (mask: MaskitoMask | string): MaskitoMask =>\n            tuiIsString(mask) ? new RegExp(mask) : mask,\n    });\n\n    public onClick(index: number): void {\n        this.el.focus();\n        this.el.setSelectionRange(index, index + 1);\n    }\n\n    public onSelection(): void {\n        const {selectionStart, selectionEnd, maxLength, value} = this.el;\n\n        if (selectionStart === maxLength) {\n            this.el.setSelectionRange(maxLength - 1, maxLength - 1);\n        } else if (!selectionStart && !selectionEnd && value) {\n            this.el.setSelectionRange(0, 1);\n        }\n\n        this.selectionStart.set(this.el.selectionStart);\n    }\n\n    public isFocused(index: number): boolean {\n        return (\n            this.focused() && (this.selectionStart() ?? this.el.selectionStart) === index\n        );\n    }\n}\n","import {TuiLabel} from '@taiga-ui/core/components/label';\nimport {\n    TuiTextfieldComponent,\n    TuiTextfieldOptionsDirective,\n} from '@taiga-ui/core/components/textfield';\nimport {TuiDropdownContent} from '@taiga-ui/core/portals/dropdown';\n\nimport {TuiInputPinComponent} from './input-pin.component';\n\nexport const TuiInputPin = [\n    TuiInputPinComponent,\n    TuiLabel,\n    TuiTextfieldComponent,\n    TuiTextfieldOptionsDirective,\n    TuiDropdownContent,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}