{"version":3,"file":"taiga-ui-kit-directives-password.mjs","sources":["../../../projects/kit/directives/password/password.options.ts","../../../projects/kit/directives/password/password.directive.ts","../../../projects/kit/directives/password/taiga-ui-kit-directives-password.ts"],"sourcesContent":["import type {TuiStringHandler} from '@taiga-ui/cdk/types';\nimport {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\nimport type {TuiSizeL, TuiSizeS} from '@taiga-ui/core/types';\n\nexport interface TuiPasswordOptions {\n    readonly icons: Readonly<{\n        hide: TuiStringHandler<TuiSizeL | TuiSizeS> | string;\n        show: TuiStringHandler<TuiSizeL | TuiSizeS> | string;\n    }>;\n}\n\nexport const [TUI_PASSWORD_OPTIONS, tuiPasswordOptionsProvider] =\n    tuiCreateOptions<TuiPasswordOptions>({\n        icons: {\n            hide: '@tui.eye-off',\n            show: '@tui.eye',\n        },\n    });\n","import {computed, Directive, inject, signal} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {tuiDirectiveBinding, tuiIsString} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiIcon} from '@taiga-ui/core/components/icon';\nimport {TuiTextfieldComponent} from '@taiga-ui/core/components/textfield';\nimport {\n    TUI_APPEARANCE_OPTIONS,\n    TuiWithAppearance,\n} from '@taiga-ui/core/directives/appearance';\nimport {TuiHintDirective} from '@taiga-ui/core/directives/hint';\nimport {TUI_PASSWORD_TEXTS} from '@taiga-ui/kit/tokens';\n\nimport {TUI_PASSWORD_OPTIONS} from './password.options';\n\n@Directive({\n    standalone: true,\n    selector: 'tui-icon[tuiPassword]',\n    providers: [\n        {\n            provide: TUI_APPEARANCE_OPTIONS,\n            useValue: {appearance: 'icon'},\n        },\n    ],\n    hostDirectives: [\n        TuiWithAppearance,\n        {\n            directive: TuiHintDirective,\n            inputs: ['tuiHintAppearance', 'tuiHintContext'],\n        },\n    ],\n    host: {\n        style: 'cursor: pointer',\n        '(click)': 'toggle()',\n        '[style.border]':\n            'textfield.options.size() === \"s\" ? \"0.25rem solid transparent\" : null',\n    },\n})\nexport class TuiPassword {\n    private readonly options = inject(TUI_PASSWORD_OPTIONS);\n    private readonly texts = toSignal(inject(TUI_PASSWORD_TEXTS), {\n        initialValue: ['', ''] as const,\n    });\n\n    protected readonly textfield = inject(TuiTextfieldComponent);\n    protected readonly hidden = signal(true);\n    protected readonly icon = tuiDirectiveBinding(\n        TuiIcon,\n        'icon',\n        computed((size = this.textfield.options.size()) => {\n            const icon = this.hidden()\n                ? this.options.icons.show\n                : this.options.icons.hide;\n\n            return tuiIsString(icon) ? icon : icon(size);\n        }),\n    );\n\n    protected readonly hint = tuiDirectiveBinding(\n        TuiHintDirective,\n        'tuiHint',\n        computed(() => (this.hidden() ? this.texts()[0] : this.texts()[1])),\n    );\n\n    protected toggle(): void {\n        this.hidden.set(!this.hidden());\n        this.textfield.input?.nativeElement.setAttribute(\n            'type',\n            this.hidden() ? 'password' : 'text',\n        );\n    }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}