{"version":3,"file":"taiga-ui-core-components-calendar.mjs","sources":["../../../projects/core/components/calendar/calendar.ts","../../../projects/core/components/calendar/calendar.options.ts","../../../projects/core/components/calendar/calendar-sheet.options.ts","../../../projects/core/components/calendar/calendar-sheet.pipe.ts","../../../projects/core/components/calendar/order-week-days.pipe.ts","../../../projects/core/components/calendar/calendar-sheet.component.ts","../../../projects/core/components/calendar/calendar-sheet.template.html","../../../projects/core/components/calendar/calendar-spin.component.ts","../../../projects/core/components/calendar/calendar-spin.template.html","../../../projects/core/components/calendar/calendar-year.component.ts","../../../projects/core/components/calendar/calendar-year.template.html","../../../projects/core/components/calendar/calendar.component.ts","../../../projects/core/components/calendar/calendar.template.html","../../../projects/core/components/calendar/taiga-ui-core-components-calendar.ts"],"sourcesContent":["import {Directive, inject, input, model} from '@angular/core';\nimport {\n    TUI_FIRST_DAY,\n    TUI_LAST_DAY,\n    type TuiDay,\n    type TuiDayRange,\n    TuiMonth,\n} from '@taiga-ui/cdk/date-time';\nimport {type TuiBooleanHandler} from '@taiga-ui/cdk/types';\nimport {TUI_ITEMS_HANDLERS} from '@taiga-ui/core/directives/items-handlers';\n\ntype Value = TuiDay | TuiDayRange | readonly TuiDay[];\n\n@Directive()\nexport abstract class AbstractTuiCalendar<T extends Value = Value> {\n    public readonly month = model(TuiMonth.currentLocal());\n    public readonly value = model<T | null>(null);\n\n    public readonly min = input(TUI_FIRST_DAY, {\n        transform: (x: TuiDay | null) => x ?? TUI_FIRST_DAY,\n    });\n\n    public readonly max = input(TUI_LAST_DAY, {\n        transform: (x: TuiDay | null) => x ?? TUI_LAST_DAY,\n    });\n\n    public readonly disabledItemHandler = input<TuiBooleanHandler<TuiDay>>(\n        inject(TUI_ITEMS_HANDLERS).disabledItemHandler(),\n    );\n}\n","import {type Signal, signal} from '@angular/core';\nimport {type TuiDay, TuiDayOfWeek} from '@taiga-ui/cdk/date-time';\nimport {type TuiHandler} from '@taiga-ui/cdk/types';\nimport {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\n\nexport interface TuiCalendarOptions {\n    readonly dayType: TuiHandler<TuiDay, string>;\n    readonly weekStart: Signal<0 | 1 | 2 | 3 | 4 | 5 | 6>;\n}\n\nexport const TUI_CALENDAR_DEFAULT_OPTIONS: TuiCalendarOptions = {\n    dayType: (day) => (day.isWeekend ? 'weekend' : 'weekday'),\n    weekStart: signal(TuiDayOfWeek.Monday),\n};\n\nexport const [TUI_CALENDAR_OPTIONS, tuiCalendarOptionsProvider] = tuiCreateOptions(\n    TUI_CALENDAR_DEFAULT_OPTIONS,\n);\n","import {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\n\nexport interface TuiCalendarSheetOptions {\n    readonly rangeMode: boolean;\n}\n\nexport const TUI_CALENDAR_SHEET_DEFAULT_OPTIONS: TuiCalendarSheetOptions = {\n    rangeMode: false,\n};\n\nexport const [TUI_CALENDAR_SHEET_OPTIONS, tuiCalendarSheetOptionsProvider] =\n    tuiCreateOptions(TUI_CALENDAR_SHEET_DEFAULT_OPTIONS);\n","import {inject, Pipe, type PipeTransform} from '@angular/core';\nimport {DAYS_IN_WEEK, TuiDay, type TuiMonth} from '@taiga-ui/cdk/date-time';\nimport {tuiInRange} from '@taiga-ui/cdk/utils/math';\n\nimport {TUI_CALENDAR_OPTIONS} from './calendar.options';\n\nconst CALENDAR_ROWS_COUNT = 6;\n\n@Pipe({name: 'tuiCalendarSheet'})\nexport class TuiCalendarSheetPipe implements PipeTransform {\n    private readonly options = inject(TUI_CALENDAR_OPTIONS);\n    private currentMonth: TuiMonth | null = null;\n    private currentSheet: ReadonlyArray<readonly TuiDay[]> = [];\n\n    public transform(\n        month: TuiMonth,\n        showAdjacentDays = false,\n    ): ReadonlyArray<readonly TuiDay[]> {\n        if (this.currentMonth?.monthSame(month)) {\n            return this.currentSheet;\n        }\n\n        const sheet: Array<readonly TuiDay[]> = [];\n\n        for (let rowIndex = 0; rowIndex < CALENDAR_ROWS_COUNT; rowIndex++) {\n            const row: TuiDay[] = [];\n\n            for (let colIndex = 0; colIndex < DAYS_IN_WEEK; colIndex++) {\n                const day = getDayFromMonthRowCol({\n                    month,\n                    rowIndex,\n                    colIndex,\n                    firstDayOfWeek: this.options.weekStart(),\n                });\n\n                const isPrevMonthDay = (day: TuiDay, relativeToMonth = month): boolean =>\n                    day.year < relativeToMonth.year || day.month < relativeToMonth.month;\n\n                const isNextMonthDay = (day: TuiDay, relativeToMonth = month): boolean =>\n                    day.year > relativeToMonth.year || day.month > relativeToMonth.month;\n\n                if (isPrevMonthDay(day) && !showAdjacentDays) {\n                    continue;\n                }\n\n                if (isNextMonthDay(day) && !showAdjacentDays) {\n                    break;\n                }\n\n                row.push(day);\n            }\n\n            sheet.push(row);\n        }\n\n        this.currentSheet = sheet.filter((row) => row.length);\n        this.currentMonth = month;\n\n        return this.currentSheet;\n    }\n}\n\n/**\n * Computes day of week offset of the beginning of the month\n */\nfunction getMonthStartDaysOffset(\n    month: TuiMonth,\n    firstDayOfWeek: 0 | 1 | 2 | 3 | 4 | 5 | 6,\n): number {\n    const startMonthOffsetFromSunday = new Date(month.year, month.month, 1).getDay();\n\n    return startMonthOffsetFromSunday >= firstDayOfWeek\n        ? startMonthOffsetFromSunday - firstDayOfWeek\n        : DAYS_IN_WEEK - (firstDayOfWeek - startMonthOffsetFromSunday);\n}\n\n/**\n * Calculated day on a calendar grid\n * @return resulting day on these coordinates (could exceed passed month)\n */\nfunction getDayFromMonthRowCol({\n    month,\n    rowIndex,\n    colIndex,\n    firstDayOfWeek,\n}: {\n    /**\n     * column in a calendar\n     */\n    colIndex: number;\n    /**\n     * first day of the week index (Sunday - 0, Saturday - 6)\n     */\n    firstDayOfWeek: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n    month: TuiMonth;\n    /**\n     * row in a calendar\n     */\n    rowIndex: number;\n}): TuiDay {\n    ngDevMode && console.assert(Number.isInteger(rowIndex));\n    ngDevMode && console.assert(tuiInRange(rowIndex, 0, 6));\n    ngDevMode && console.assert(Number.isInteger(colIndex));\n    ngDevMode && console.assert(tuiInRange(colIndex, 0, DAYS_IN_WEEK));\n\n    let day =\n        rowIndex * DAYS_IN_WEEK +\n        colIndex -\n        getMonthStartDaysOffset(month, firstDayOfWeek) +\n        1;\n\n    if (day > month.daysCount) {\n        day -= month.daysCount;\n        month = month.append({month: 1});\n    }\n\n    if (day <= 0) {\n        month = month.append({month: -1});\n        day = month.daysCount + day;\n    }\n\n    return new TuiDay(month.year, month.month, day);\n}\n","import {inject, Pipe, type PipeTransform} from '@angular/core';\nimport {map, type Observable} from 'rxjs';\n\nimport {TUI_CALENDAR_OPTIONS} from './calendar.options';\n\nfunction convertToSundayFirstWeekFormat(\n    weekDaysNames: readonly string[],\n): readonly string[] {\n    const sundayIndex = weekDaysNames.length - 1;\n\n    return [weekDaysNames[sundayIndex] || '', ...weekDaysNames.slice(0, sundayIndex)];\n}\n\n@Pipe({name: 'tuiOrderWeekDays'})\nexport class TuiOrderWeekDaysPipe implements PipeTransform {\n    private readonly options = inject(TUI_CALENDAR_OPTIONS);\n\n    public transform(\n        mondayFirstWeekDays$: Observable<readonly string[]>,\n    ): Observable<readonly string[]> {\n        return mondayFirstWeekDays$.pipe(\n            map(convertToSundayFirstWeekFormat),\n            map((weekDays) => [\n                ...weekDays.slice(this.options.weekStart()),\n                ...weekDays.slice(0, this.options.weekStart()),\n            ]),\n        );\n    }\n}\n","import {AsyncPipe} from '@angular/common';\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    inject,\n    input,\n    model,\n    output,\n} from '@angular/core';\nimport {toObservable} from '@angular/core/rxjs-interop';\nimport {TUI_FALSE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {TuiDay, TuiDayRange, TuiMonth} from '@taiga-ui/cdk/date-time';\nimport {TuiHovered} from '@taiga-ui/cdk/directives/hovered';\nimport {TuiMapperPipe} from '@taiga-ui/cdk/pipes/mapper';\nimport {type TuiBooleanHandler, type TuiHandler} from '@taiga-ui/cdk/types';\nimport {tuiNullableSame} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TUI_SHORT_WEEK_DAYS} from '@taiga-ui/core/tokens';\n\nimport {TUI_CALENDAR_OPTIONS} from './calendar.options';\nimport {TUI_CALENDAR_SHEET_OPTIONS} from './calendar-sheet.options';\nimport {TuiCalendarSheetPipe} from './calendar-sheet.pipe';\nimport {TuiOrderWeekDaysPipe} from './order-week-days.pipe';\n\nexport type TuiMarkerHandler = TuiHandler<TuiDay, [] | [string, string] | [string]>;\n\n@Component({\n    selector: 'tui-calendar-sheet',\n    imports: [\n        AsyncPipe,\n        TuiCalendarSheetPipe,\n        TuiHovered,\n        TuiMapperPipe,\n        TuiOrderWeekDaysPipe,\n    ],\n    templateUrl: './calendar-sheet.template.html',\n    styleUrl: './calendar-sheet.style.less',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {'[class._picking]': 'isRangePicking'},\n})\nexport class TuiCalendarSheet {\n    private readonly options = inject(TUI_CALENDAR_SHEET_OPTIONS);\n    private readonly today = TuiDay.currentLocal();\n\n    protected readonly unorderedWeekDays$ = toObservable(inject(TUI_SHORT_WEEK_DAYS));\n    protected readonly dayType = inject(TUI_CALENDAR_OPTIONS).dayType;\n\n    public readonly month = input(TuiMonth.currentLocal());\n\n    public readonly disabledItemHandler =\n        input<TuiBooleanHandler<TuiDay>>(TUI_FALSE_HANDLER);\n\n    public readonly markerHandler = input<TuiMarkerHandler | null>(null);\n    public readonly value = input<TuiDay | TuiDayRange | readonly TuiDay[] | null>(null);\n    public readonly showAdjacent = input(true);\n    public readonly hoveredItem = model<TuiDay | null>(null);\n    public readonly dayClick = output<TuiDay>();\n\n    public onItemHovered(item: TuiDay | false): void {\n        this.updateHoveredItem(item || null);\n    }\n\n    public getItemRange(item: TuiDay): 'active' | 'end' | 'middle' | 'start' | null {\n        const value = this.value();\n\n        if (!value) {\n            return null;\n        }\n\n        if (value instanceof TuiDay && !this.computedRangeMode) {\n            return value.daySame(item) ? 'active' : null;\n        }\n\n        if (value instanceof TuiDayRange && value.isSingleDay) {\n            return value.from.daySame(item) ? 'active' : null;\n        }\n\n        if (!(value instanceof TuiDay) && !(value instanceof TuiDayRange)) {\n            return value.find((day) => day.daySame(item)) ? 'active' : null;\n        }\n\n        const range = this.getRange(value, this.hoveredItem());\n\n        if (range.isSingleDay && range.from.daySame(item)) {\n            return 'active';\n        }\n\n        if (range.from.daySame(item)) {\n            return 'start';\n        }\n\n        if (range.to.daySame(item)) {\n            return 'end';\n        }\n\n        return range.from.dayBefore(item) && range.to.dayAfter(item) ? 'middle' : null;\n    }\n\n    protected get computedRangeMode(): boolean {\n        return this.options.rangeMode;\n    }\n\n    protected get isRangePicking(): boolean {\n        return this.options.rangeMode && this.value() instanceof TuiDay;\n    }\n\n    protected readonly toMarkers = (\n        day: TuiDay,\n        today: boolean,\n        range: string | null,\n        markerHandler: TuiMarkerHandler | null,\n    ): [string, string] | [string] | null => {\n        if (today || ['active', 'end', 'start'].includes(range || '')) {\n            return null;\n        }\n\n        const markers = markerHandler?.(day);\n\n        return markers?.length ? markers : null;\n    };\n\n    protected itemIsToday(item: TuiDay): boolean {\n        return this.today.daySame(item);\n    }\n\n    protected itemIsUnavailable(item: TuiDay): boolean {\n        return !this.month().monthSame(item);\n    }\n\n    private getRange(\n        value: TuiDay | TuiDayRange,\n        hoveredItem: TuiDay | null,\n    ): TuiDayRange {\n        if (value instanceof TuiDay) {\n            return TuiDayRange.sort(value, hoveredItem ?? value);\n        }\n\n        return value.isSingleDay\n            ? TuiDayRange.sort(value.from, hoveredItem ?? value.to)\n            : value;\n    }\n\n    private updateHoveredItem(day: TuiDay | null): void {\n        if (tuiNullableSame(this.hoveredItem(), day, (a, b) => a.daySame(b))) {\n            return;\n        }\n\n        this.hoveredItem.set(day);\n    }\n}\n","<div class=\"t-row t-row_weekday\">\n    @for (day of unorderedWeekDays$ | tuiOrderWeekDays | async; track day) {\n        <div\n            class=\"t-cell\"\n            [textContent]=\"day\"\n        ></div>\n    }\n</div>\n@let sheet = month() | tuiCalendarSheet: true;\n<div>\n    @for (_ of '-'.repeat(sheet.length); track $index) {\n        @let rowIndex = $index;\n        <div\n            automation-id=\"tui-calendar-sheet__row\"\n            class=\"t-row\"\n        >\n            @for (_ of '-'.repeat(sheet[rowIndex]?.length ?? 0); track $index) {\n                @let item = sheet[rowIndex]?.[$index];\n                @if (item && (!itemIsUnavailable(item) || showAdjacent())) {\n                    <div\n                        automation-id=\"tui-calendar-sheet__cell\"\n                        class=\"t-cell\"\n                        [attr.data-range]=\"getItemRange(item)\"\n                        [attr.data-type]=\"item | tuiMapper: dayType\"\n                        [class.t-cell_disabled]=\"disabledItemHandler()(item)\"\n                        [class.t-cell_today]=\"itemIsToday(item)\"\n                        [class.t-cell_unavailable]=\"itemIsUnavailable(item)\"\n                        (click)=\"dayClick.emit(item)\"\n                        (tuiHoveredChange)=\"onItemHovered($event && item)\"\n                    >\n                        {{ item.day }}\n                        @if (\n                            item | tuiMapper: toMarkers : itemIsToday(item) : getItemRange(item) : markerHandler();\n                            as markers\n                        ) {\n                            <div class=\"t-dots\">\n                                <div\n                                    class=\"t-dot\"\n                                    [style.background]=\"markers?.[0]\"\n                                ></div>\n                                @if (markers.length > 1) {\n                                    <div\n                                        class=\"t-dot\"\n                                        [style.background]=\"markers?.[1] || ''\"\n                                    ></div>\n                                }\n                            </div>\n                        }\n                    </div>\n                }\n            }\n        </div>\n    }\n</div>\n","import {\n    ChangeDetectionStrategy,\n    Component,\n    inject,\n    input,\n    model,\n    output,\n} from '@angular/core';\nimport {\n    TUI_FIRST_DAY,\n    TUI_LAST_DAY,\n    TuiMonth,\n    type TuiMonthLike,\n    type TuiYear,\n} from '@taiga-ui/cdk/date-time';\nimport {TuiLink} from '@taiga-ui/core/components/link';\nimport {TuiSpinButton} from '@taiga-ui/core/components/spin-button';\nimport {TUI_MONTHS} from '@taiga-ui/core/tokens';\n\n@Component({\n    selector: 'tui-calendar-spin',\n    imports: [TuiLink, TuiSpinButton],\n    templateUrl: './calendar-spin.template.html',\n    styleUrl: './calendar-spin.style.less',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiCalendarSpin {\n    protected readonly months = inject(TUI_MONTHS);\n\n    public readonly value = model(TuiMonth.currentLocal());\n    public readonly min = input<TuiMonth>(TUI_FIRST_DAY);\n    public readonly max = input<TuiMonth>(TUI_LAST_DAY);\n    public readonly yearClick = output<TuiYear>();\n\n    protected append(date: TuiMonthLike): void {\n        const value = this.value().append(date);\n        const min = this.min();\n        const max = this.max();\n\n        if (min.monthSameOrAfter(value)) {\n            this.updateValue(min);\n        } else {\n            this.updateValue(max.monthSameOrBefore(value) ? max : value);\n        }\n    }\n\n    private updateValue(value: TuiMonth): void {\n        if (this.value().monthSame(value)) {\n            return;\n        }\n\n        this.value.set(value);\n    }\n}\n","<tui-spin-button\n    [focusable]=\"false\"\n    [leftDisabled]=\"value().monthSameOrBefore(min())\"\n    [rightDisabled]=\"value().monthSameOrAfter(max())\"\n    (leftClick)=\"append({month: -1})\"\n    (rightClick)=\"append({month: 1})\"\n>\n    {{ months()[value().month] }}\n    @if (min().year === max().year) {\n        {{ value().formattedYear }}\n    } @else {\n        <button\n            tabIndex=\"-1\"\n            tuiLink\n            type=\"button\"\n            (click)=\"yearClick.emit(value())\"\n        >\n            {{ value().formattedYear }}\n        </button>\n    }\n</tui-spin-button>\n","import {\n    ChangeDetectionStrategy,\n    Component,\n    computed,\n    inject,\n    input,\n    output,\n    signal,\n} from '@angular/core';\nimport {\n    MAX_YEAR,\n    MIN_YEAR,\n    TuiDay,\n    type TuiDayRange,\n    TuiMonth,\n    TuiMonthRange,\n    TuiYear,\n} from '@taiga-ui/cdk/date-time';\nimport {TuiHovered} from '@taiga-ui/cdk/directives/hovered';\nimport {type TuiBooleanHandler} from '@taiga-ui/cdk/types';\nimport {tuiIsNumber} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiScrollIntoView} from '@taiga-ui/core/components/scrollbar';\nimport {TUI_ITEMS_HANDLERS} from '@taiga-ui/core/directives/items-handlers';\nimport {tuiAsAuxiliary} from '@taiga-ui/core/tokens';\n\nconst LIMIT = 100;\nconst ITEMS_IN_ROW = 4;\nconst CURRENT_YEAR = TuiMonth.currentLocal().year;\n\n@Component({\n    selector: 'tui-calendar-year',\n    imports: [TuiHovered, TuiScrollIntoView],\n    templateUrl: './calendar-year.template.html',\n    styleUrl: './calendar-year.style.less',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [tuiAsAuxiliary(TuiCalendarYear)],\n    host: {'[class._picking]': 'isRangePicking()'},\n})\nexport class TuiCalendarYear {\n    private readonly hoveredItem = signal<number | null>(null);\n\n    private readonly calculatedMin = computed(() => {\n        const initial = this.initialItem() - LIMIT;\n        const min = this.min() ?? MIN_YEAR;\n\n        return min > initial ? min : initial;\n    });\n\n    private readonly calculatedMax = computed(() => {\n        const initial = this.initialItem() + LIMIT;\n        const max = this.max() ?? MAX_YEAR;\n\n        return max < initial ? max + 1 : initial;\n    });\n\n    protected readonly isRangePicking = computed(\n        (x = this.value()) =>\n            this.rangeMode() && (x instanceof TuiDay || x instanceof TuiMonth),\n    );\n\n    protected readonly rows = computed(() =>\n        Math.ceil((this.calculatedMax() - this.calculatedMin()) / ITEMS_IN_ROW),\n    );\n\n    public readonly rangeMode = input(false);\n\n    public readonly disabledItemHandler = input<TuiBooleanHandler<number>>(\n        inject(TUI_ITEMS_HANDLERS).disabledItemHandler(),\n    );\n\n    public readonly value = input<\n        TuiDayRange | TuiMonthRange | TuiYear | number | readonly TuiDay[] | null\n    >(null);\n\n    public readonly min = input(MIN_YEAR, {\n        transform: (x: number | null) => x ?? MIN_YEAR,\n    });\n\n    public readonly max = input(MAX_YEAR, {\n        transform: (x: number | null) => x ?? MAX_YEAR,\n    });\n\n    public readonly initialItem = input(CURRENT_YEAR, {\n        transform: (x: number | null) => x ?? CURRENT_YEAR,\n    });\n\n    public readonly yearClick = output<number>();\n\n    public isDisabled(item: number): boolean {\n        return (\n            (this.max() && this.max() < item) ||\n            (this.min() && this.min() > item) ||\n            this.disabledItemHandler()(item)\n        );\n    }\n\n    public getItemRange(item: number): 'active' | 'end' | 'middle' | 'start' | null {\n        const value = this.value();\n        const hoveredItem = this.hoveredItem();\n\n        if (value instanceof TuiYear && value.year === item) {\n            return 'active';\n        }\n\n        if (tuiIsNumber(value)) {\n            return value === item ? 'active' : null;\n        }\n\n        if (!(value instanceof TuiMonthRange) && !(value instanceof TuiYear)) {\n            return value?.find((day) => day.year === item) ? 'active' : null;\n        }\n\n        const hovered = this.isRangePicking() ? hoveredItem : null;\n        const from = 'from' in value ? value.from?.year : value.year;\n        const to = 'from' in value ? value.to.year : value.year;\n        const min = Math.min(from, hovered ?? to);\n        const max = Math.max(from, hovered ?? to);\n\n        if (min === max && from === to && from === item) {\n            return 'active';\n        }\n\n        if (min === item) {\n            return 'start';\n        }\n\n        if (max === item) {\n            return 'end';\n        }\n\n        return min < item && item < max ? 'middle' : null;\n    }\n\n    public onItemHovered(hovered: boolean, item: number): void {\n        this.hoveredItem.set(hovered ? item : null);\n    }\n\n    protected scrollItemIntoView(item: number): boolean {\n        return this.initialItem() === item;\n    }\n\n    protected getItem(rowIndex: number, colIndex: number): number {\n        return rowIndex * ITEMS_IN_ROW + colIndex + this.calculatedMin();\n    }\n\n    protected itemIsToday(item: number): boolean {\n        return CURRENT_YEAR === item;\n    }\n}\n","@for (_ of '-'.repeat(rows()); track $index) {\n    @let rowIndex = $index;\n    <div\n        automation-id=\"tui-calendar-year__row\"\n        class=\"t-row\"\n    >\n        @for (_ of '-'.repeat(4); track $index) {\n            @let item = getItem(rowIndex, $index);\n            <div\n                automation-id=\"tui-calendar-year__cell\"\n                class=\"t-cell\"\n                [attr.data-range]=\"getItemRange(item)\"\n                [class.t-cell_disabled]=\"isDisabled(item)\"\n                [class.t-cell_today]=\"itemIsToday(item)\"\n                [tuiScrollIntoView]=\"scrollItemIntoView(item)\"\n                (click)=\"yearClick.emit(item)\"\n                (tuiHoveredChange)=\"onItemHovered($event, item)\"\n            >\n                {{ item }}\n            </div>\n        }\n    </div>\n}\n","import {\n    ChangeDetectionStrategy,\n    Component,\n    computed,\n    effect,\n    inject,\n    input,\n    linkedSignal,\n    model,\n    output,\n} from '@angular/core';\nimport {\n    TUI_FIRST_DAY,\n    TUI_LAST_DAY,\n    TUI_LAST_DISPLAYED_DAY,\n    TuiDay,\n    TuiMonth,\n} from '@taiga-ui/cdk/date-time';\nimport {TuiMapperPipe} from '@taiga-ui/cdk/pipes/mapper';\nimport {type TuiBooleanHandler, type TuiMapper} from '@taiga-ui/cdk/types';\nimport {tuiProvide} from '@taiga-ui/cdk/utils/di';\nimport {tuiNullableSame} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiScrollbar} from '@taiga-ui/core/components/scrollbar';\nimport {tuiAsAuxiliary} from '@taiga-ui/core/tokens';\n\nimport {AbstractTuiCalendar} from './calendar';\nimport {TuiCalendarSheet, type TuiMarkerHandler} from './calendar-sheet.component';\nimport {TUI_CALENDAR_SHEET_OPTIONS} from './calendar-sheet.options';\nimport {TuiCalendarSpin} from './calendar-spin.component';\nimport {TuiCalendarYear} from './calendar-year.component';\n\n@Component({\n    selector: 'tui-calendar:not([new]):not([months])',\n    imports: [\n        TuiCalendarSheet,\n        TuiCalendarSpin,\n        TuiCalendarYear,\n        TuiMapperPipe,\n        TuiScrollbar,\n    ],\n    templateUrl: './calendar.template.html',\n    styleUrl: './calendar.style.less',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [\n        tuiAsAuxiliary(TuiCalendar),\n        tuiProvide(AbstractTuiCalendar, TuiCalendar),\n    ],\n    host: {'(mousedown.prevent.zoneless)': '0'},\n})\nexport class TuiCalendar extends AbstractTuiCalendar {\n    protected readonly options = inject(TUI_CALENDAR_SHEET_OPTIONS);\n\n    public readonly minViewedMonth = input<TuiMonth | null>(TUI_FIRST_DAY);\n    public readonly maxViewedMonth = input<TuiMonth | null>(TUI_LAST_DAY);\n    public readonly showAdjacent = input(true);\n    public readonly markerHandler = input<TuiMarkerHandler | null>(null);\n    public readonly initialView = input<'month' | 'year'>('month');\n    public readonly hoveredItem = model<TuiDay | null>(null);\n    public readonly dayClick = output<TuiDay>();\n\n    protected readonly computedMinViewedMonth = computed(() => {\n        const min = this.min();\n        const minViewed = this.minViewedMonth() ?? TUI_FIRST_DAY;\n\n        return minViewed.monthSameOrAfter(min) ? minViewed : min;\n    });\n\n    protected readonly computedMaxViewedMonth = computed(() => {\n        const max = this.max();\n        const maxViewed = this.maxViewedMonth() ?? TUI_LAST_DAY;\n\n        return maxViewed.monthSameOrBefore(max) ? maxViewed : max;\n    });\n\n    protected readonly view = linkedSignal(() => this.initialView());\n\n    protected readonly syncMonthFromValue = effect(() => {\n        const value = this.value();\n\n        if (\n            this.showAdjacent() &&\n            value instanceof TuiDay &&\n            value.daySameOrBefore(TUI_LAST_DISPLAYED_DAY)\n        ) {\n            this.month.set(value);\n        }\n    });\n\n    public onPaginationValueChange(month: TuiMonth): void {\n        this.updateViewedMonth(month);\n    }\n\n    public onDayClick(day: TuiDay): void {\n        this.value.set(day);\n        this.dayClick.emit(day);\n    }\n\n    public onHoveredItemChange(day: TuiDay | null): void {\n        this.updateHoveredDay(day);\n    }\n\n    protected readonly disabledItemHandlerMapper: TuiMapper<\n        [TuiBooleanHandler<TuiDay>, TuiDay, TuiDay],\n        TuiBooleanHandler<TuiDay>\n    > = (disabledItemHandler, min, max) => (item) =>\n        item.dayBefore(min) || item.dayAfter(max) || disabledItemHandler(item);\n\n    protected onPickerYearClick(year: number): void {\n        this.view.set('month');\n        this.updateViewedMonth(new TuiMonth(year, this.month().month));\n    }\n\n    private updateViewedMonth(month: TuiMonth): void {\n        if (this.month().monthSame(month)) {\n            return;\n        }\n\n        this.month.set(month);\n    }\n\n    private updateHoveredDay(day: TuiDay | null): void {\n        if (tuiNullableSame(this.hoveredItem(), day, (a, b) => a.daySame(b))) {\n            return;\n        }\n\n        this.hoveredItem.set(day);\n    }\n}\n","@if (view() === 'year') {\n    <tui-scrollbar\n        automation-id=\"tui-calendar__scrollbar\"\n        class=\"t-scrollbar\"\n    >\n        <tui-calendar-year\n            automation-id=\"tui-calendar__year\"\n            [initialItem]=\"month().year\"\n            [max]=\"max().year\"\n            [min]=\"min().year\"\n            [rangeMode]=\"options.rangeMode\"\n            [value]=\"value()\"\n            (yearClick)=\"onPickerYearClick($event)\"\n        />\n    </tui-scrollbar>\n} @else {\n    <tui-calendar-spin\n        automation-id=\"tui-calendar__pagination\"\n        class=\"t-pagination\"\n        [max]=\"computedMaxViewedMonth()\"\n        [min]=\"computedMinViewedMonth()\"\n        [value]=\"month()\"\n        (valueChange)=\"onPaginationValueChange($event)\"\n        (yearClick)=\"view.set('year')\"\n    />\n    <tui-calendar-sheet\n        automation-id=\"tui-calendar__calendar\"\n        [disabledItemHandler]=\"disabledItemHandler() | tuiMapper: disabledItemHandlerMapper : min() : max()\"\n        [hoveredItem]=\"hoveredItem()\"\n        [markerHandler]=\"markerHandler()\"\n        [month]=\"month()\"\n        [showAdjacent]=\"showAdjacent()\"\n        [value]=\"value()\"\n        (dayClick)=\"onDayClick($event)\"\n        (hoveredItemChange)=\"onHoveredItemChange($event)\"\n    />\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}