{"version":3,"file":"taiga-ui-kit-components-calendar-range.mjs","sources":["../../../projects/kit/components/calendar-range/calculate-disabled-item-handler.ts","../../../projects/kit/components/calendar-range/day-caps-mapper.ts","../../../projects/kit/components/calendar-range/calendar-range.component.ts","../../../projects/kit/components/calendar-range/calendar-range.template.html","../../../projects/kit/components/calendar-range/day-range-period.ts","../../../projects/kit/components/calendar-range/taiga-ui-kit-components-calendar-range.ts"],"sourcesContent":["import type {TuiDay, TuiDayLike} from '@taiga-ui/cdk/date-time';\nimport {TuiDayRange} from '@taiga-ui/cdk/date-time';\nimport type {TuiBooleanHandler} from '@taiga-ui/cdk/types';\n\nexport const calculateDisabledItemHandler: (\n    disabledItemHandler: TuiBooleanHandler<TuiDay>,\n    value: TuiDay | TuiDayRange | null,\n    minLength: TuiDayLike | null,\n) => TuiBooleanHandler<TuiDay> = (disabledItemHandler, value, minLength) => (item) => {\n    if (!value || value instanceof TuiDayRange || !minLength) {\n        return disabledItemHandler(item);\n    }\n\n    const negativeMinLength = Object.fromEntries(\n        Object.entries(minLength).map(([key, value]) => [key, -value]),\n    );\n    const disabledBefore = value.append(negativeMinLength).append({day: 1});\n    const disabledAfter = value.append(minLength).append({day: -1});\n    const inDisabledRange =\n        disabledBefore.dayBefore(item) && disabledAfter.dayAfter(item);\n\n    return inDisabledRange || disabledItemHandler(item);\n};\n","import type {TuiDayLike} from '@taiga-ui/cdk/date-time';\nimport {TUI_FIRST_DAY, TUI_LAST_DAY, TuiDay, TuiDayRange} from '@taiga-ui/cdk/date-time';\nimport type {TuiMapper} from '@taiga-ui/cdk/types';\n\nexport const TUI_DAY_CAPS_MAPPER: TuiMapper<\n    [TuiDay | null, TuiDay | TuiDayRange | null, TuiDayLike | null, boolean],\n    TuiDay\n> = (current, value, maxLength, backwards) => {\n    if (\n        // TODO(v5): replace with `if (!(value instanceof TuiDay) || !maxLength)` (backward compatibility)\n        (value instanceof TuiDayRange && !value.isSingleDay) ||\n        !value ||\n        !maxLength\n    ) {\n        return backwards ? current || TUI_FIRST_DAY : current || TUI_LAST_DAY;\n    }\n\n    const negativeMaxLength = Object.fromEntries(\n        Object.entries(maxLength).map(([key, value]) => [key, -value]),\n    );\n\n    // TODO(v5): `value instanceof TuiDay` always `true`\n    const from = value instanceof TuiDay ? value : value.from;\n    const dateShift = from\n        .append(backwards ? negativeMaxLength : maxLength)\n        .append({day: !backwards ? -1 : 1});\n\n    if (backwards) {\n        return dateShift.dayBefore(current || TUI_FIRST_DAY)\n            ? current || TUI_FIRST_DAY\n            : dateShift;\n    }\n\n    if (!current) {\n        return dateShift;\n    }\n\n    return dateShift.dayAfter(current) ? current : dateShift;\n};\n","import {AsyncPipe, NgForOf, NgIf} from '@angular/common';\nimport type {OnChanges, OnInit} from '@angular/core';\nimport {\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    EventEmitter,\n    inject,\n    Input,\n    Output,\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {TUI_FALSE_HANDLER} from '@taiga-ui/cdk/constants';\nimport type {TuiDayLike} from '@taiga-ui/cdk/date-time';\nimport {\n    TUI_FIRST_DAY,\n    TUI_LAST_DAY,\n    TuiDay,\n    TuiDayRange,\n    TuiMonth,\n} from '@taiga-ui/cdk/date-time';\nimport {tuiWatch} from '@taiga-ui/cdk/observables';\nimport {TuiMapperPipe} from '@taiga-ui/cdk/pipes/mapper';\nimport {TUI_IS_MOBILE} from '@taiga-ui/cdk/tokens';\nimport type {TuiBooleanHandler, TuiMapper} from '@taiga-ui/cdk/types';\nimport {tuiIsString, tuiNullableSame, tuiPure} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {TuiMarkerHandler} from '@taiga-ui/core/components/calendar';\nimport {\n    TuiCalendar,\n    tuiCalendarSheetOptionsProvider,\n} from '@taiga-ui/core/components/calendar';\nimport {TuiDataList} from '@taiga-ui/core/components/data-list';\nimport {TuiIcon} from '@taiga-ui/core/components/icon';\nimport {TUI_COMMON_ICONS, tuiAsAuxiliary} from '@taiga-ui/core/tokens';\nimport {TUI_CALENDAR_DATE_STREAM, TUI_OTHER_DATE_TEXT} from '@taiga-ui/kit/tokens';\nimport type {Observable} from 'rxjs';\n\nimport {calculateDisabledItemHandler} from './calculate-disabled-item-handler';\nimport {TUI_DAY_CAPS_MAPPER} from './day-caps-mapper';\nimport type {TuiDayRangePeriod} from './day-range-period';\n\n@Component({\n    standalone: true,\n    selector: 'tui-calendar-range',\n    imports: [AsyncPipe, NgForOf, NgIf, TuiCalendar, TuiDataList, TuiIcon, TuiMapperPipe],\n    templateUrl: './calendar-range.template.html',\n    styleUrls: ['./calendar-range.style.less'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [\n        tuiAsAuxiliary(TuiCalendarRange),\n        tuiCalendarSheetOptionsProvider({rangeMode: true}),\n    ],\n    host: {\n        '[class._mobile]': 'mobile',\n        '(document:keydown.capture)': 'onEsc($event)',\n    },\n})\nexport class TuiCalendarRange implements OnInit, OnChanges {\n    /**\n     * @deprecated use `item`\n     */\n    private selectedPeriod: TuiDayRangePeriod | null = null;\n    private readonly cdr = inject(ChangeDetectorRef);\n\n    protected currentValue: TuiDay | TuiDayRange | null = null;\n    protected previousValue: TuiDay | TuiDayRange | null = null;\n    protected hoveredItem: TuiDay | null = null;\n    protected month: TuiMonth = TuiMonth.currentLocal();\n\n    protected readonly otherDateText$ = inject(TUI_OTHER_DATE_TEXT);\n    protected readonly icons = inject(TUI_COMMON_ICONS);\n    protected readonly capsMapper = TUI_DAY_CAPS_MAPPER;\n    protected readonly mobile = inject(TUI_IS_MOBILE);\n\n    @Input()\n    public disabledItemHandler: TuiBooleanHandler<TuiDay> = TUI_FALSE_HANDLER;\n\n    @Input()\n    public markerHandler: TuiMarkerHandler | null = null;\n\n    @Input()\n    public items: readonly TuiDayRangePeriod[] = [];\n\n    @Input()\n    public min: TuiDay | null = TUI_FIRST_DAY;\n\n    @Input()\n    public max: TuiDay | null = TUI_LAST_DAY;\n\n    @Input()\n    public minLength: TuiDayLike | null = null;\n\n    @Input()\n    public maxLength: TuiDayLike | null = null;\n\n    @Input()\n    public item: TuiDayRangePeriod | null = null;\n\n    @Output()\n    public readonly valueChange = new EventEmitter<TuiDayRange | null>();\n\n    @Output()\n    public readonly itemChange = new EventEmitter<TuiDayRangePeriod | null>();\n\n    constructor() {\n        inject<Observable<TuiDayRange | null>>(TUI_CALENDAR_DATE_STREAM, {optional: true})\n            ?.pipe(tuiWatch(), takeUntilDestroyed())\n            .subscribe((value) => {\n                this.currentValue = value;\n                this.initDefaultViewedMonth();\n            });\n    }\n\n    @Input('value')\n    public set valueSetter(value: TuiDayRange | null) {\n        this.currentValue = value;\n    }\n\n    @Input()\n    public set defaultViewedMonth(month: TuiMonth) {\n        if (!this.currentValue) {\n            this.month = month;\n        }\n    }\n\n    public set value(value: TuiDayRange | null) {\n        this.cdr.markForCheck();\n        this.currentValue = value;\n        this.initDefaultViewedMonth();\n    }\n\n    public get defaultViewedMonth(): TuiMonth {\n        return this.month;\n    }\n\n    /**\n     * @deprecated use `item`\n     */\n    public get selectedActivePeriod(): TuiDayRangePeriod | null {\n        return this.selectedPeriod;\n    }\n\n    /**\n     * @deprecated use `item`\n     */\n    public set selectedActivePeriod(period: TuiDayRangePeriod | null) {\n        this.selectedPeriod = period;\n    }\n\n    public ngOnChanges(): void {\n        if (!this.currentValue) {\n            this.initDefaultViewedMonth();\n        }\n    }\n\n    public ngOnInit(): void {\n        this.initDefaultViewedMonth();\n    }\n\n    protected get calculatedDisabledItemHandler(): TuiBooleanHandler<TuiDay> {\n        return this.calculateDisabledItemHandler(\n            this.disabledItemHandler,\n            this.currentValue,\n            this.minLength,\n        );\n    }\n\n    protected onEsc(event: KeyboardEvent): void {\n        if (event.key !== 'Escape' || !(this.currentValue instanceof TuiDay)) {\n            return;\n        }\n\n        event.stopPropagation();\n        this.currentValue = this.previousValue;\n    }\n\n    protected readonly monthOffset: TuiMapper<[TuiMonth, number], TuiMonth> = (\n        value,\n        month,\n    ) => value.append({month});\n\n    protected readonly mapper: TuiMapper<\n        [\n            readonly TuiDayRangePeriod[],\n            TuiDay | null,\n            TuiDay | null,\n            TuiDayLike | null,\n            string | null | undefined,\n        ],\n        ReadonlyArray<TuiDayRangePeriod | string>\n    > = (items, min, max, minLength, otherDateText) => [\n        ...items.filter(\n            (item) =>\n                (minLength === null ||\n                    item.range.from\n                        .append(minLength)\n                        .append({day: -1})\n                        .daySameOrBefore(item.range.to)) &&\n                (min === null || item.range.to.daySameOrAfter(min)) &&\n                (max === null || item.range.from.daySameOrBefore(max)),\n        ),\n        otherDateText || '',\n    ];\n\n    protected isItemActive(item: TuiDayRangePeriod | string): boolean {\n        const {activePeriod} = this;\n\n        return (\n            (tuiIsString(item) && activePeriod === null) ||\n            activePeriod === item ||\n            activePeriod?.toString() === item.toString()\n        );\n    }\n\n    protected onItemSelect(item: TuiDayRangePeriod | string): void {\n        if (!tuiIsString(item)) {\n            this.selectedActivePeriod = item;\n            this.itemChange.emit(item);\n            this.updateValue(item.range.dayLimit(this.min, this.max));\n        } else if (this.activePeriod !== null) {\n            this.selectedActivePeriod = null;\n            this.itemChange.emit(null);\n            this.updateValue(null);\n        }\n\n        this.initDefaultViewedMonth();\n    }\n\n    protected onMonthChange(month: TuiMonth): void {\n        this.month = month;\n    }\n\n    protected onDayClick(day: TuiDay): void {\n        this.previousValue = this.currentValue;\n        this.selectedActivePeriod = null;\n\n        if (this.currentValue instanceof TuiDay) {\n            const range = TuiDayRange.sort(this.currentValue, day);\n\n            this.currentValue = range;\n            this.itemChange.emit(this.findItemByDayRange(range));\n            this.updateValue(range);\n        } else {\n            this.currentValue = day;\n        }\n    }\n\n    protected updateValue(value: TuiDayRange | null): void {\n        this.currentValue = value;\n        this.valueChange.emit(value);\n    }\n\n    private get activePeriod(): TuiDayRangePeriod | null {\n        return (\n            this.item ??\n            this.selectedActivePeriod ??\n            (this.items.find((item) =>\n                tuiNullableSame<TuiDayRange>(\n                    this.currentValue instanceof TuiDay\n                        ? new TuiDayRange(this.currentValue, this.currentValue)\n                        : this.currentValue,\n                    item.range,\n                    (a, b) =>\n                        a.from.daySame(b.from.dayLimit(this.min, this.max)) &&\n                        a.to.daySame(b.to.dayLimit(this.min, this.max)),\n                ),\n            ) ||\n                null)\n        );\n    }\n\n    @tuiPure\n    private calculateDisabledItemHandler(\n        disabledItemHandler: TuiBooleanHandler<TuiDay>,\n        value: TuiDay | TuiDayRange | null,\n        minLength: TuiDayLike | null,\n    ): TuiBooleanHandler<TuiDay> {\n        return calculateDisabledItemHandler(disabledItemHandler, value, minLength);\n    }\n\n    private initDefaultViewedMonth(): void {\n        if (this.currentValue instanceof TuiDay) {\n            this.month = this.currentValue;\n        } else if (this.currentValue) {\n            this.month = this.items.length\n                ? this.currentValue.to\n                : this.currentValue.from;\n        } else if (this.max && this.month.monthSameOrAfter(this.max)) {\n            this.month = this.items.length ? this.max : this.max.append({month: -1});\n        } else if (this.min && this.month.monthSameOrBefore(this.min)) {\n            this.month = this.min;\n        }\n    }\n\n    private findItemByDayRange(dayRange: TuiDayRange): TuiDayRangePeriod | null {\n        return this.items.find((item) => dayRange.daySame(item.range)) ?? null;\n    }\n}\n","<tui-calendar\n    automation-id=\"tui-calendar-range__calendar\"\n    [class.t-calendar]=\"!mobile\"\n    [disabledItemHandler]=\"calculatedDisabledItemHandler\"\n    [markerHandler]=\"markerHandler\"\n    [max]=\"max | tuiMapper: capsMapper : currentValue : maxLength : false\"\n    [maxViewedMonth]=\"items.length || mobile ? null : (defaultViewedMonth | tuiMapper: monthOffset : -1)\"\n    [min]=\"min | tuiMapper: capsMapper : currentValue : maxLength : true\"\n    [month]=\"defaultViewedMonth\"\n    [showAdjacent]=\"!!items.length || mobile\"\n    [value]=\"currentValue\"\n    [(hoveredItem)]=\"hoveredItem\"\n    (dayClick)=\"onDayClick($event)\"\n    (monthChange)=\"onMonthChange($event)\"\n/>\n<tui-calendar\n    *ngIf=\"!items.length && !mobile; else presets\"\n    [disabledItemHandler]=\"calculatedDisabledItemHandler\"\n    [markerHandler]=\"markerHandler\"\n    [max]=\"max | tuiMapper: capsMapper : currentValue : maxLength : false\"\n    [min]=\"min | tuiMapper: capsMapper : currentValue : maxLength : true\"\n    [minViewedMonth]=\"defaultViewedMonth | tuiMapper: monthOffset : 1\"\n    [month]=\"defaultViewedMonth | tuiMapper: monthOffset : 1\"\n    [showAdjacent]=\"false\"\n    [value]=\"currentValue\"\n    [(hoveredItem)]=\"hoveredItem\"\n    (dayClick)=\"onDayClick($event)\"\n    (monthChange)=\"onMonthChange($event.append({month: -1}))\"\n/>\n<ng-template #presets>\n    <tui-data-list\n        *ngIf=\"!mobile\"\n        automation-id=\"tui-calendar-range__menu\"\n        role=\"menu\"\n        [style.flex]=\"1\"\n    >\n        <button\n            *ngFor=\"let item of items | tuiMapper: mapper : min : max : minLength : (otherDateText$ | async)\"\n            automation-id=\"tui-calendar-range__menu__item\"\n            role=\"menuitemradio\"\n            tuiOption\n            type=\"button\"\n            [attr.aria-checked]=\"isItemActive(item)\"\n            (click)=\"onItemSelect(item)\"\n            (pointerdown.prevent.zoneless)=\"(0)\"\n        >\n            {{ item }}\n            <tui-icon\n                *ngIf=\"isItemActive(item)\"\n                automation-id=\"tui-calendar-range__checkmark\"\n                [icon]=\"icons.check\"\n                [style.font-size.rem]=\"1\"\n            />\n        </button>\n    </tui-data-list>\n</ng-template>\n","import {TUI_FIRST_DAY, TuiDay, TuiDayRange} from '@taiga-ui/cdk/date-time';\nimport type {TuiContext} from '@taiga-ui/cdk/types';\nimport type {PolymorpheusContent} from '@taiga-ui/polymorpheus';\n\nexport class TuiDayRangePeriod {\n    constructor(\n        public readonly range: TuiDayRange,\n        private readonly name: string,\n        public readonly content?: PolymorpheusContent<TuiContext<TuiDayRange>>,\n    ) {}\n\n    public toString(): string {\n        return this.name;\n    }\n}\n\nexport function tuiCreateDefaultDayRangePeriods(\n    periodTitles: [string, string, string, string, string, string] = [\n        'For all the time',\n        'Today',\n        'Yesterday',\n        'Current week',\n        'Current month',\n        'Previous month',\n    ],\n): readonly TuiDayRangePeriod[] {\n    const today = TuiDay.currentLocal();\n    const yesterday = today.append({day: -1});\n    const startOfWeek = today.append({day: -today.dayOfWeek()});\n    const endOfWeek = startOfWeek.append({day: 6});\n    const startOfMonth = today.append({day: 1 - today.day});\n    const endOfMonth = startOfMonth.append({month: 1, day: -1});\n    const startOfLastMonth = startOfMonth.append({month: -1});\n\n    return [\n        new TuiDayRangePeriod(new TuiDayRange(TUI_FIRST_DAY, today), periodTitles[0]),\n        new TuiDayRangePeriod(new TuiDayRange(today, today), periodTitles[1]),\n        new TuiDayRangePeriod(new TuiDayRange(yesterday, yesterday), periodTitles[2]),\n        new TuiDayRangePeriod(new TuiDayRange(startOfWeek, endOfWeek), periodTitles[3]),\n        new TuiDayRangePeriod(new TuiDayRange(startOfMonth, endOfMonth), periodTitles[4]),\n        new TuiDayRangePeriod(\n            new TuiDayRange(startOfLastMonth, startOfMonth.append({day: -1})),\n            periodTitles[5],\n        ),\n    ];\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}