{"version":3,"file":"taiga-ui-kit-components-input-month-range.mjs","sources":["../../../projects/kit/components/input-month-range/input-month-range.options.ts","../../../projects/kit/components/input-month-range/input-month-range.directive.ts","../../../projects/kit/components/input-month-range/input-month-range.ts","../../../projects/kit/components/input-month-range/taiga-ui-kit-components-input-month-range.ts"],"sourcesContent":["import {type FactoryProvider, inject, InjectionToken} from '@angular/core';\nimport {\n    TUI_IDENTITY_VALUE_TRANSFORMER,\n    type TuiValueTransformer,\n} from '@taiga-ui/cdk/classes';\nimport {type TuiMonthRange} from '@taiga-ui/cdk/date-time';\nimport {tuiProvideOptions} from '@taiga-ui/cdk/utils/di';\nimport {TUI_INPUT_DATE_DEFAULT_OPTIONS} from '@taiga-ui/kit/components/input-date';\nimport {TUI_INPUT_MONTH_OPTIONS} from '@taiga-ui/kit/components/input-month';\n\nexport interface TuiInputMonthRangeOptions {\n    readonly icon: string;\n    readonly valueTransformer: TuiValueTransformer<TuiMonthRange | null, any>;\n}\n\nexport const TUI_INPUT_MONTH_RANGE_OPTIONS =\n    new InjectionToken<TuiInputMonthRangeOptions>(\n        ngDevMode ? 'TUI_INPUT_MONTH_RANGE_OPTIONS' : '',\n        {\n            factory: () => ({\n                ...inject(TUI_INPUT_MONTH_OPTIONS),\n                valueTransformer: TUI_IDENTITY_VALUE_TRANSFORMER,\n            }),\n        },\n    );\n\nexport const tuiInputMonthRangeOptionsProvider = (\n    options: Partial<TuiInputMonthRangeOptions>,\n): FactoryProvider =>\n    tuiProvideOptions(\n        TUI_INPUT_MONTH_RANGE_OPTIONS,\n        options,\n        TUI_INPUT_DATE_DEFAULT_OPTIONS,\n    );\n","import {Directive, effect, inject, signal} from '@angular/core';\nimport {tuiAsControl, TuiControl, tuiValueTransformerFrom} from '@taiga-ui/cdk/classes';\nimport {\n    RANGE_SEPARATOR_CHAR,\n    type TuiMonth,\n    TuiMonthRange,\n} from '@taiga-ui/cdk/date-time';\nimport {tuiSetSignal} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiInputDirective, TuiWithInput} from '@taiga-ui/core/components/input';\nimport {tuiInjectAuxiliary, TuiSelectLike} from '@taiga-ui/core/components/textfield';\nimport {tuiIconEnd} from '@taiga-ui/core/directives/icons';\nimport {\n    TuiDropdownAuto,\n    tuiDropdownEnabled,\n    TuiDropdownOpen,\n} from '@taiga-ui/core/portals/dropdown';\nimport {TUI_MONTHS} from '@taiga-ui/core/tokens';\nimport {TuiCalendarMonth} from '@taiga-ui/kit/components/calendar-month';\n\nimport {TUI_INPUT_MONTH_RANGE_OPTIONS} from './input-month-range.options';\n\n@Directive({\n    selector: 'input[tuiInputMonthRange]',\n    providers: [\n        tuiAsControl(TuiInputMonthRangeDirective),\n        tuiValueTransformerFrom(TUI_INPUT_MONTH_RANGE_OPTIONS),\n    ],\n    hostDirectives: [TuiWithInput, TuiSelectLike, TuiDropdownAuto],\n    host: {\n        '[disabled]': 'disabled()',\n        '(input)': '$event.inputType?.includes(\"delete\") && clear()',\n    },\n})\nexport class TuiInputMonthRangeDirective extends TuiControl<TuiMonthRange | null> {\n    private readonly input = inject(TuiInputDirective);\n    private readonly months = inject(TUI_MONTHS);\n    private readonly open = inject(TuiDropdownOpen).open;\n    private readonly intermediateValue = signal<TuiMonth | null>(null);\n\n    private readonly calendar = tuiInjectAuxiliary<TuiCalendarMonth>(\n        (x) => x instanceof TuiCalendarMonth,\n    );\n\n    protected readonly icon = tuiIconEnd(inject(TUI_INPUT_MONTH_RANGE_OPTIONS).icon);\n    protected readonly dropdownEnabled = tuiDropdownEnabled(this.interactive);\n\n    protected readonly valueEffect = effect(() => {\n        const value = this.value();\n        const months = this.months();\n\n        const format = ({month, formattedYear}: TuiMonth): string =>\n            `${months[month] ?? ''} ${formattedYear}`;\n\n        this.input.value.set(\n            value\n                ? `${format(value.from)}${RANGE_SEPARATOR_CHAR}${format(value.to)}`\n                : '',\n        );\n    });\n\n    protected readonly calendarInit = effect(() => {\n        const calendar = this.calendar();\n\n        if (calendar) {\n            calendar.options.rangeMode = true;\n        }\n    });\n\n    protected readonly calendarSync = effect(() => {\n        const calendar = this.calendar();\n\n        calendar &&\n            tuiSetSignal(calendar.value, this.intermediateValue() ?? this.value());\n    });\n\n    // TODO: use linked signal (Angular 19+)\n    protected readonly resetIntermediateValue = effect(() => {\n        this.intermediateValue.set(this.value() && null);\n    });\n\n    protected onMonthClickEffect = effect((onCleanup) => {\n        const subscription = this.calendar()?.monthClick.subscribe((month) => {\n            const intermediateValue = this.intermediateValue();\n\n            if (intermediateValue) {\n                this.onChange(TuiMonthRange.sort(intermediateValue, month));\n                this.open.set(false);\n            } else {\n                this.intermediateValue.set(month);\n            }\n        });\n\n        onCleanup(() => subscription?.unsubscribe());\n    });\n\n    protected clear(): void {\n        this.onChange(null);\n        this.open.set(true);\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';\nimport {TuiCalendarMonth} from '@taiga-ui/kit/components/calendar-month';\n\nimport {TuiInputMonthRangeDirective} from './input-month-range.directive';\n\nexport const TuiInputMonthRange = [\n    TuiInputMonthRangeDirective,\n    TuiCalendarMonth,\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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"}