{"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.from !== value.to) ||\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 OnDestroy,\n    type OnInit,\n    type SimpleChanges,\n    untracked,\n} from '@angular/core';\nimport {WA_IS_MOBILE} from '@ng-web-apis/platform';\nimport {\n    RANGE_SEPARATOR_CHAR,\n    tuiDateClamp,\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 {tuiProvide} from '@taiga-ui/cdk/utils/di';\nimport {tuiIsString, tuiNullableSame} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {\n    AbstractTuiCalendar,\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 {\n    TUI_COMMON_ICONS,\n    TUI_DATE_FORMAT,\n    TUI_TEXTFIELD_VALUE,\n    tuiAsAuxiliary,\n} 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        tuiProvide(AbstractTuiCalendar<TuiDayRange>, TuiCalendarRange),\n        tuiCalendarSheetOptionsProvider({rangeMode: true}),\n    ],\n    host: {'[class._mobile]': 'mobile'},\n})\nexport class TuiCalendarRange\n    extends AbstractTuiCalendar<TuiDayRange>\n    implements OnInit, OnChanges, OnDestroy\n{\n    /**\n     * @deprecated use `item`\n     */\n    private selectedPeriod: TuiDayRangePeriod | null = null;\n    private readonly format = inject(TUI_DATE_FORMAT);\n    private readonly textfieldValue = inject(TUI_TEXTFIELD_VALUE, {optional: true});\n\n    protected hoveredItem: TuiDay | null = null;\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\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    public readonly item = model<TuiDayRangePeriod | null>(null);\n\n    protected readonly currentValue = linkedSignal<\n        TuiDayRange | null,\n        TuiDay | TuiDayRange | null\n    >({\n        source: () => {\n            this.min();\n            this.max();\n\n            return this.value();\n        },\n        computation: (value, current) => {\n            if (value !== current?.value || !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    public ngOnDestroy(): void {\n        const value = this.currentValue();\n\n        if (value instanceof TuiDay) {\n            this.value.set(new TuiDayRange(value, value.append({})));\n        }\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.selectedActivePeriod = null;\n\n        if (value instanceof TuiDay) {\n            const range = TuiDayRange.sort(value, day.append({}));\n\n            this.currentValue.set(range);\n            this.item.set(this.findItemByDayRange(range));\n            this.value.set(range);\n        } else {\n            const {mode, separator} = this.format();\n\n            this.currentValue.set(day);\n            this.textfieldValue?.set(\n                `${day.toString(mode, separator)}${RANGE_SEPARATOR_CHAR}`,\n            );\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 single = this.items().length || this.mobile;\n        const min = this.min();\n        const max = single ? this.max() : this.max().append({month: -1});\n        const month = value instanceof TuiDay ? value : value?.from;\n        const current = this.month();\n        const visible = !single && month?.append({month: -1}).monthSame(current);\n\n        this.month.set(tuiDateClamp(visible ? current : month || current, min, max));\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        /**\n         * @deprecated\n         * TODO(v6): remove this unused property\n         */\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 = new TuiDayRange(today.append({day: -1}), 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.append({})), periodTitles[1]),\n        new TuiDayRangePeriod(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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"}