{"version":3,"file":"taiga-ui-core-pipes-calendar-sheet.mjs","sources":["../../../projects/core/pipes/calendar-sheet/utils.ts","../../../projects/core/pipes/calendar-sheet/calendar-sheet.pipe.ts","../../../projects/core/pipes/calendar-sheet/taiga-ui-core-pipes-calendar-sheet.ts"],"sourcesContent":["/// <reference types=\"@taiga-ui/tsconfig/ng-dev-mode\" />\nimport {DAYS_IN_WEEK, TuiDay, type TuiMonth} from '@taiga-ui/cdk/date-time';\nimport {tuiInRange} from '@taiga-ui/cdk/utils/math';\n\n/**\n * Computes day of week offset of the beginning of the month\n */\nconst 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 */\nexport const 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 {DAYS_IN_WEEK, type TuiDay, type TuiMonth} from '@taiga-ui/cdk/date-time';\nimport {TUI_FIRST_DAY_OF_WEEK} from '@taiga-ui/core/tokens';\n\nimport {getDayFromMonthRowCol} from './utils';\n\nconst CALENDAR_ROWS_COUNT = 6;\n\n@Pipe({\n    standalone: true,\n    name: 'tuiCalendarSheet',\n})\nexport class TuiCalendarSheetPipe implements PipeTransform {\n    private readonly firstDayOfWeek = inject(TUI_FIRST_DAY_OF_WEEK);\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.firstDayOfWeek,\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 * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}