{"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, type TuiDayLike, 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\n    const disabledBefore = value.append(negativeMinLength).append({day: 1});\n    const disabledAfter = value.append(minLength).append({day: -1});\n\n    const inDisabledRange =\n        disabledBefore.dayBefore(item) && disabledAfter.dayAfter(item);\n\n    return inDisabledRange || disabledItemHandler(item);\n};\n","import {\n    TUI_FIRST_DAY,\n    TUI_LAST_DAY,\n    TuiDay,\n    type TuiDayLike,\n    TuiDayRange,\n} 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\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 {\n    ChangeDetectionStrategy,\n    Component,\n    inject,\n    input,\n    linkedSignal,\n    model,\n    type OnChanges,\n    type OnInit,\n    signal,\n    type SimpleChanges,\n    untracked,\n} from '@angular/core';\nimport {WA_IS_MOBILE} from '@ng-web-apis/platform';\nimport {TUI_FALSE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {\n    TUI_FIRST_DAY,\n    TUI_LAST_DAY,\n    TuiDay,\n    type TuiDayLike,\n    TuiDayRange,\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 {tuiIsString, tuiNullableSame} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {\n    TuiCalendar,\n    tuiCalendarSheetOptionsProvider,\n    type TuiMarkerHandler,\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_TEXTFIELD_OPTIONS} from '@taiga-ui/core/components/textfield';\nimport {TUI_COMMON_ICONS, tuiAsAuxiliary} from '@taiga-ui/core/tokens';\nimport {type TuiSizeL, type TuiSizeS} from '@taiga-ui/core/types';\nimport {TUI_OTHER_DATE_TEXT} from '@taiga-ui/kit/tokens';\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    selector: 'tui-calendar-range',\n    imports: [TuiCalendar, TuiDataList, TuiIcon, TuiMapperPipe],\n    templateUrl: './calendar-range.template.html',\n    styleUrl: './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    protected previousValue: TuiDay | TuiDayRange | null = null;\n    protected hoveredItem: TuiDay | null = null;\n    protected readonly month = signal(TuiMonth.currentLocal());\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(WA_IS_MOBILE);\n    protected readonly options = inject(TUI_TEXTFIELD_OPTIONS);\n    public readonly min = input<TuiDay | null>(TUI_FIRST_DAY);\n    public readonly max = input<TuiDay | null>(TUI_LAST_DAY);\n    public readonly minLength = input<TuiDayLike | null>(null);\n    public readonly maxLength = input<TuiDayLike | null>(null);\n    public readonly items = input<readonly TuiDayRangePeriod[]>([]);\n    public readonly listSize = input<TuiSizeL | TuiSizeS>(this.options.size());\n    public readonly defaultViewedMonth = input(TuiMonth.currentLocal());\n    public readonly markerHandler = input<TuiMarkerHandler | null>(null);\n\n    public readonly disabledItemHandler =\n        input<TuiBooleanHandler<TuiDay>>(TUI_FALSE_HANDLER);\n\n    public readonly value = model<TuiDayRange | null>(null);\n    public readonly item = model<TuiDayRangePeriod | null>(null);\n\n    protected readonly currentValue = linkedSignal<\n        TuiDayRange | null,\n        TuiDay | TuiDayRange | null\n    >({\n        source: this.value,\n        computation: (value, current) => {\n            if (value !== current?.value) {\n                untracked(() => this.initDefaultViewedMonth(value));\n            }\n\n            return value;\n        },\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({defaultViewedMonth}: SimpleChanges): void {\n        if (this.currentValue()) {\n            return;\n        }\n\n        if (defaultViewedMonth) {\n            this.month.set(this.defaultViewedMonth());\n        } else {\n            this.initDefaultViewedMonth();\n        }\n    }\n\n    public ngOnInit(): void {\n        this.initDefaultViewedMonth();\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.set(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 readonly disabledMapper = (\n        disabledItemHandler: TuiBooleanHandler<TuiDay>,\n        value: TuiDay | TuiDayRange | null,\n        minLength: TuiDayLike | null,\n    ): TuiBooleanHandler<TuiDay> =>\n        calculateDisabledItemHandler(disabledItemHandler, value, minLength);\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.item.set(item);\n            this.value.set(item.range.dayLimit(this.min(), this.max()));\n        } else if (this.activePeriod !== null) {\n            this.selectedActivePeriod = null;\n            this.item.set(null);\n            this.value.set(null);\n        }\n\n        this.initDefaultViewedMonth();\n    }\n\n    protected onDayClick(day: TuiDay): void {\n        const value = this.currentValue();\n\n        this.previousValue = value;\n        this.selectedActivePeriod = null;\n\n        if (value instanceof TuiDay) {\n            const range = TuiDayRange.sort(value, day);\n\n            this.currentValue.set(range);\n            this.item.set(this.findItemByDayRange(range));\n            this.value.set(range);\n        } else {\n            this.currentValue.set(day);\n        }\n    }\n\n    private get activePeriod(): TuiDayRangePeriod | null {\n        const value = this.currentValue();\n\n        return (\n            this.item() ??\n            this.selectedActivePeriod ??\n            (this.items().find((item) =>\n                tuiNullableSame(\n                    value instanceof TuiDay ? new TuiDayRange(value, value) : value,\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    private initDefaultViewedMonth(value = this.currentValue()): void {\n        const min = this.min();\n        const max = this.max();\n\n        if (value instanceof TuiDay) {\n            this.month.set(value);\n        } else if (value) {\n            this.month.set(this.items().length ? value.to : value.from);\n        } else if (max && this.month().monthSameOrAfter(max)) {\n            this.month.set(this.items().length ? max : max.append({month: -1}));\n        } else if (min && this.month().monthSameOrBefore(min)) {\n            this.month.set(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]=\"disabledItemHandler() | tuiMapper: disabledMapper : currentValue() : minLength()\"\n    [markerHandler]=\"markerHandler()\"\n    [max]=\"max() | tuiMapper: capsMapper : currentValue() : maxLength() : false\"\n    [maxViewedMonth]=\"items().length || mobile ? null : (month() | tuiMapper: monthOffset : -1)\"\n    [min]=\"min() | tuiMapper: capsMapper : currentValue() : maxLength() : true\"\n    [month]=\"month()\"\n    [showAdjacent]=\"!!items().length || mobile\"\n    [value]=\"currentValue()\"\n    [(hoveredItem)]=\"hoveredItem\"\n    (dayClick)=\"onDayClick($event)\"\n    (monthChange)=\"month.set($event)\"\n/>\n@if (!items().length && !mobile) {\n    <tui-calendar\n        [disabledItemHandler]=\"disabledItemHandler() | tuiMapper: disabledMapper : currentValue() : minLength()\"\n        [markerHandler]=\"markerHandler()\"\n        [max]=\"max() | tuiMapper: capsMapper : currentValue() : maxLength() : false\"\n        [min]=\"min() | tuiMapper: capsMapper : currentValue() : maxLength() : true\"\n        [minViewedMonth]=\"month() | tuiMapper: monthOffset : 1\"\n        [month]=\"month() | tuiMapper: monthOffset : 1\"\n        [showAdjacent]=\"false\"\n        [value]=\"currentValue()\"\n        [(hoveredItem)]=\"hoveredItem\"\n        (dayClick)=\"onDayClick($event)\"\n        (monthChange)=\"month.set($event.append({month: -1}))\"\n    />\n} @else {\n    @if (!mobile) {\n        <tui-data-list\n            automation-id=\"tui-calendar-range__menu\"\n            role=\"menu\"\n            [size]=\"listSize()\"\n            [style.flex]=\"1\"\n        >\n            @for (item of items() | tuiMapper: mapper : min() : max() : minLength() : otherDateText(); track item) {\n                <button\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                    @if (isItemActive(item)) {\n                        <tui-icon\n                            automation-id=\"tui-calendar-range__checkmark\"\n                            class=\"t-check\"\n                            [icon]=\"icons.check\"\n                        />\n                    }\n                </button>\n            }\n        </tui-data-list>\n    }\n}\n","import {inject} from '@angular/core';\nimport {TUI_FIRST_DAY, TuiDay, TuiDayRange} from '@taiga-ui/cdk/date-time';\nimport {type TuiContext} from '@taiga-ui/cdk/types';\nimport {type TuiLanguageKit} from '@taiga-ui/i18n/types';\nimport {TUI_DAY_RANGE_PERIODS} from '@taiga-ui/kit/tokens';\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\nfunction getDefaultPeriodTitles(): TuiLanguageKit['dayRangePeriods'] {\n    try {\n        return inject(TUI_DAY_RANGE_PERIODS)();\n    } catch {\n        return [\n            'For all the time',\n            'Today',\n            'Yesterday',\n            'Current week',\n            'Current month',\n            'Previous month',\n        ];\n    }\n}\n\nexport function tuiCreateDefaultDayRangePeriods(\n    periodTitles: TuiLanguageKit['dayRangePeriods'] = getDefaultPeriodTitles(),\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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"}