{"version":3,"file":"taiga-ui-kit-directives-button-select.mjs","sources":["../../../projects/kit/directives/button-select/button-select.directive.ts","../../../projects/kit/directives/button-select/taiga-ui-kit-directives-button-select.ts"],"sourcesContent":["import {contentChild, Directive, effect, inject, untracked} from '@angular/core';\nimport {TuiControl} from '@taiga-ui/cdk/classes';\nimport {TuiDayRange} from '@taiga-ui/cdk/date-time';\nimport {TuiId} from '@taiga-ui/cdk/directives/id';\nimport {TuiNativeValidator} from '@taiga-ui/cdk/directives/native-validator';\nimport {tuiArrayToggle, tuiSetSignal} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {AbstractTuiCalendar} from '@taiga-ui/core/components/calendar';\nimport {\n    tuiAsDataListHost,\n    tuiAsOptionContent,\n    type TuiDataListHost,\n} from '@taiga-ui/core/components/data-list';\nimport {TUI_ITEMS_HANDLERS} from '@taiga-ui/core/directives/items-handlers';\nimport {\n    TuiDropdownDirective,\n    TuiDropdownOpen,\n    tuiDropdownOptionsProvider,\n    TuiWithDropdownOpen,\n} from '@taiga-ui/core/portals/dropdown';\nimport {TuiSelectOption} from '@taiga-ui/kit/components/select';\n\n@Directive({\n    selector: 'button[tuiButtonSelect]',\n    providers: [\n        tuiAsOptionContent(TuiSelectOption),\n        tuiAsDataListHost(TuiButtonSelect),\n        tuiDropdownOptionsProvider({align: 'end'}),\n    ],\n    hostDirectives: [\n        TuiDropdownDirective,\n        TuiNativeValidator,\n        TuiWithDropdownOpen,\n        TuiId,\n    ],\n    host: {type: 'button'},\n})\nexport class TuiButtonSelect<T>\n    extends TuiControl<T | T[]>\n    implements TuiDataListHost<T>\n{\n    private readonly open = inject(TuiDropdownOpen).open;\n    private readonly handlers = inject(TUI_ITEMS_HANDLERS);\n    private readonly calendar = contentChild(AbstractTuiCalendar, {descendants: true});\n\n    protected readonly calendarIn = effect(() => {\n        const calendar = this.calendar();\n\n        if (calendar) {\n            tuiSetSignal<unknown>(calendar.value, this.value());\n        }\n    });\n\n    protected readonly calendarOut = effect(() => {\n        const value = this.calendar()?.value();\n        const changed = untracked(() => value !== this.value());\n        const same = value instanceof TuiDayRange && value.from === value.to;\n\n        if (value && changed && !same) {\n            this.handleOption(value as unknown as T);\n        }\n    });\n\n    public readonly size = 's';\n\n    public handleOption(option: T): void {\n        if (Array.isArray(this.control.value)) {\n            const result = tuiArrayToggle(\n                this.control.value as T[],\n                option,\n                this.handlers.identityMatcher(),\n            );\n\n            this.onChange(result);\n        } else {\n            this.onChange(option);\n            this.open.set(false);\n        }\n    }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}