{"version":3,"file":"webilix-ngx-calendar-m3.mjs","sources":["../../../ngx-calendar-m3/src/lib/components/date/ngx-calendar-date.component.ts","../../../ngx-calendar-m3/src/lib/components/date/ngx-calendar-date.component.html","../../../ngx-calendar-m3/src/lib/components/moment/ngx-calendar-moment.component.ts","../../../ngx-calendar-m3/src/lib/components/moment/ngx-calendar-moment.component.html","../../../ngx-calendar-m3/src/lib/components/week/ngx-calendar-week.component.ts","../../../ngx-calendar-m3/src/lib/components/week/ngx-calendar-week.component.html","../../../ngx-calendar-m3/src/lib/components/month/ngx-calendar-month.component.ts","../../../ngx-calendar-m3/src/lib/components/month/ngx-calendar-month.component.html","../../../ngx-calendar-m3/src/lib/components/year/ngx-calendar-year.component.ts","../../../ngx-calendar-m3/src/lib/components/year/ngx-calendar-year.component.html","../../../ngx-calendar-m3/src/lib/container/bottom-sheet/bottom-sheet.component.ts","../../../ngx-calendar-m3/src/lib/container/bottom-sheet/bottom-sheet.component.html","../../../ngx-calendar-m3/src/lib/container/dialog/dialog.component.ts","../../../ngx-calendar-m3/src/lib/container/dialog/dialog.component.html","../../../ngx-calendar-m3/src/lib/ngx-calendar.service.ts","../../../ngx-calendar-m3/src/lib/ngx-calendar.component.ts","../../../ngx-calendar-m3/src/lib/ngx-calendar.component.html","../../../ngx-calendar-m3/src/lib/day/ngx-calendar-day.component.ts","../../../ngx-calendar-m3/src/lib/day/ngx-calendar-day.component.html","../../../ngx-calendar-m3/src/public-api.ts","../../../ngx-calendar-m3/src/webilix-ngx-calendar-m3.ts"],"sourcesContent":["import {\n    Component,\n    EventEmitter,\n    HostBinding,\n    Input,\n    OnChanges,\n    OnInit,\n    Output,\n    SimpleChanges,\n    ChangeDetectionStrategy,\n} from '@angular/core';\n\nimport { MatIconButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\n\nimport { JalaliDateTime, JalaliDateTimeCalendar } from '@webilix/jalali-date-time';\n\nimport { INgxCalendarDate } from '../../ngx-calendar.interface';\n\n@Component({\n    selector: 'ngx-calendar-date',\n    imports: [MatIconButton, MatIcon],\n    templateUrl: './ngx-calendar-date.component.html',\n    changeDetection: ChangeDetectionStrategy.Eager,\n    styleUrl: './ngx-calendar-date.component.scss',\n})\nexport class NgxCalendarDateComponent implements OnInit, OnChanges {\n    @HostBinding('className') protected className: string = 'ngx-calendar-m3-date';\n\n    @Input({ required: false }) value?: Date;\n    @Input({ required: false }) minDate?: 'NOW' | Date;\n    @Input({ required: false }) maxDate?: 'NOW' | Date;\n    @Output() onChange: EventEmitter<INgxCalendarDate> = new EventEmitter<INgxCalendarDate>();\n\n    public view: 'CALENDAR' | 'MONTH' = 'CALENDAR';\n    public values!: { today: string; selected: string; minDate: string; maxDate: string };\n    public calendar!: JalaliDateTimeCalendar;\n\n    public year!: number;\n    public years: number[] = [];\n    public seasons: { title: string; month: string }[][] = [\n        [\n            { title: 'فروردین', month: '' },\n            { title: 'اردیبهشت', month: '' },\n            { title: 'خرداد', month: '' },\n        ],\n        [\n            { title: 'تیر', month: '' },\n            { title: 'مرداد', month: '' },\n            { title: 'شهریور', month: '' },\n        ],\n        [\n            { title: 'مهر', month: '' },\n            { title: 'آبان', month: '' },\n            { title: 'آذر', month: '' },\n        ],\n        [\n            { title: 'دی', month: '' },\n            { title: 'بهمن', month: '' },\n            { title: 'اسفند', month: '' },\n        ],\n    ];\n\n    private jalali = JalaliDateTime();\n\n    ngOnInit(): void {\n        this.initValues();\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        this.initValues();\n    }\n\n    formatDate(date: Date): string {\n        return this.jalali.toString(date, { format: 'Y-M-D' });\n    }\n\n    initValues(): void {\n        let minDate: Date | undefined = this.minDate === 'NOW' ? new Date() : this.minDate;\n        let maxDate: Date | undefined = this.maxDate === 'NOW' ? new Date() : this.maxDate;\n\n        // Check MIN and MAX Dates\n        if (minDate && maxDate && minDate.getTime() > maxDate.getTime()) {\n            const date: Date = new Date(minDate);\n            minDate = maxDate;\n            maxDate = date;\n        }\n\n        // Check Value\n        if (this.value && minDate && this.formatDate(this.value) < this.formatDate(minDate)) this.value = undefined;\n        if (this.value && maxDate && this.formatDate(this.value) > this.formatDate(maxDate)) this.value = undefined;\n\n        this.values = {\n            today: this.formatDate(new Date()),\n            selected: this.value ? this.formatDate(this.value) : '',\n            minDate: minDate ? this.formatDate(minDate) : '0000-00-00',\n            maxDate: maxDate ? this.formatDate(maxDate) : '9999-99-99',\n        };\n\n        const month: string = this.jalali.toString(this.value || new Date(), { format: 'Y-M' });\n        this.calendar = this.jalali.calendar(month);\n        this.view = 'CALENDAR';\n    }\n\n    changeMonth(change: number): void {\n        let [year, month] = this.calendar.month.split('-').map((v: string) => +v);\n        switch (change) {\n            case 12:\n            case -12:\n                year += change === 12 ? 1 : -1;\n                break;\n\n            case 1:\n            case -1:\n                month += change;\n                if (month === 13) {\n                    year++;\n                    month = 1;\n                }\n                if (month === 0) {\n                    year--;\n                    month = 12;\n                }\n                break;\n\n            case 0:\n                [year, month] = this.values.today.split('-').map((v: string) => +v);\n                break;\n        }\n\n        this.calendar = this.jalali.calendar(year.toString() + '-' + month.toString().padStart(2, '0'));\n    }\n\n    setDate(value: string): void {\n        const gregorian: string = this.jalali.gregorian(value).date;\n        const date: Date = this.jalali.periodDay(1, new Date(gregorian + 'T00:00:00.000Z')).from;\n        const title: string = this.jalali.toFullText(date, { format: 'W، d N Y' });\n        const jalali: string = this.formatDate(date);\n\n        this.values.selected = value;\n        this.onChange.next({ date, title, jalali });\n    }\n\n    toggleView(): void {\n        this.view = this.view === 'CALENDAR' ? 'MONTH' : 'CALENDAR';\n        if (this.view === 'MONTH') this.changeYear(+this.calendar.month.substring(0, 4));\n    }\n\n    changeYear(year?: number): void {\n        if (year && year < 1000) return;\n        this.year = year || +this.values.today.substring(0, 4);\n\n        let decade: number = this.year - (this.year % 10);\n        if (decade <= 1020) decade = 1020;\n        this.years = [decade - 20, decade - 10, decade, decade + 10, decade + 20];\n        this.seasons.forEach((season, s: number) => {\n            season.forEach((month, m: number) => {\n                month.month = `${this.year.toString()}-${(s * 3 + m + 1).toString().padStart(2, '0')}`;\n            });\n        });\n    }\n\n    setMonth(month: string): void {\n        this.calendar = this.jalali.calendar(month);\n        this.view = 'CALENDAR';\n    }\n}\n","<div class=\"calendar-header\">\n    <button mat-icon-button type=\"button\" (click)=\"toggleView()\">\n        <mat-icon>{{ view === 'CALENDAR' ? 'calendar_month' : 'close' }}</mat-icon>\n    </button>\n    <div class=\"title\">{{ view === 'CALENDAR' ? calendar.title : year }}</div>\n\n    <button mat-icon-button type=\"button\" (click)=\"view === 'CALENDAR' ? changeMonth(-12) : changeYear(year - 10)\">\n        <mat-icon>keyboard_double_arrow_right</mat-icon>\n    </button>\n    <button mat-icon-button type=\"button\" (click)=\"view === 'CALENDAR' ? changeMonth(-1) : changeYear(year - 1)\">\n        <mat-icon>chevron_right</mat-icon>\n    </button>\n    <button mat-icon-button type=\"button\" (click)=\"view === 'CALENDAR' ? changeMonth(0) : changeYear(year)\">\n        <mat-icon>radio_button_checked</mat-icon>\n    </button>\n    <button mat-icon-button type=\"button\" (click)=\"view === 'CALENDAR' ? changeMonth(1) : changeYear(year + 1)\">\n        <mat-icon>chevron_left</mat-icon>\n    </button>\n    <button mat-icon-button type=\"button\" (click)=\"view === 'CALENDAR' ? changeMonth(12) : changeYear(year + 10)\">\n        <mat-icon>keyboard_double_arrow_left</mat-icon>\n    </button>\n</div>\n\n<div class=\"calendar-nav\">\n    @switch (view) {\n    <!-- CALENDAR -->\n    @case ('CALENDAR') {\n    <!-- NAMES  -->\n    @for (day of ['ش', 'ی', 'د', 'س', 'چ', 'پ', 'ج']; track $index) {\n    <div class=\"item\">{{ day }}</div>\n    } } @case ('MONTH') {\n    <!-- YEARS -->\n    @for (item of years; track $index) {\n    <div class=\"item click\" (click)=\"changeYear(item)\">{{ item }}</div>\n    } } }\n</div>\n\n<div class=\"calendar-content\">\n    <!-- CALENDAR VIEW -->\n    <section class=\"calendar-view\" [style.visibility]=\"view === 'CALENDAR' ? 'visible' : 'hidden'\">\n        <!-- WEEK -->\n        @for ( week of calendar.weeks; track $index) {\n        <div class=\"week\">\n            <!-- DAYS -->\n            @for (day of week; track $index) {\n            <div\n                class=\"day\"\n                [class.day-today]=\"day.date === values.today\"\n                [class.day-selected]=\"day.date === values.selected\"\n                [class.day-disable]=\"day.month !== calendar.month || day.date > values.maxDate || day.date < values.minDate\"\n                (click)=\"\n                    day.month !== calendar.month || day.date > values.maxDate || day.date < values.minDate\n                        ? null\n                        : setDate(day.date)\n                \"\n            >\n                {{ day.day }}\n            </div>\n            }\n        </div>\n        }\n    </section>\n\n    <!-- MONTH VIEW -->\n    @if (view === 'MONTH') {\n    <section class=\"month-view\">\n        <!-- SEASON -->\n        @for (season of seasons; track $index) {\n        <div class=\"season\">\n            <!-- MONTH -->\n            @for (month of season; track $index) {\n            <div\n                class=\"month\"\n                [class.month-disable]=\"\n                    (values.minDate && month.month < values.minDate) || (values.maxDate && month.month > values.maxDate)\n                \"\n                (click)=\"\n                    (values.minDate && month.month < values.minDate) || (values.maxDate && month.month > values.maxDate)\n                        ? null\n                        : setMonth(month.month)\n                \"\n            >\n                {{ month.title }}\n            </div>\n            }\n        </div>\n        }\n    </section>\n    }\n</div>\n","import {\n    Component,\n    EventEmitter,\n    HostBinding,\n    Input,\n    OnChanges,\n    OnInit,\n    Output,\n    SimpleChanges,\n    ChangeDetectionStrategy,\n} from '@angular/core';\n\nimport { MatButton } from '@angular/material/button';\nimport { MatMenuModule } from '@angular/material/menu';\n\nimport { JalaliDateTime } from '@webilix/jalali-date-time';\nimport { NgxHelperDatePipe } from '@webilix/ngx-helper-m3';\n\nimport { INgxCalendarDate, INgxCalendarMoment } from '../../ngx-calendar.interface';\n\nimport { NgxCalendarDateComponent } from '../date/ngx-calendar-date.component';\n\n@Component({\n    selector: 'ngx-calendar-moment',\n    imports: [MatButton, MatMenuModule, NgxHelperDatePipe, NgxCalendarDateComponent],\n    templateUrl: './ngx-calendar-moment.component.html',\n    changeDetection: ChangeDetectionStrategy.Eager,\n    styleUrl: './ngx-calendar-moment.component.scss',\n})\nexport class NgxCalendarMomentComponent implements OnInit, OnChanges {\n    @HostBinding('className') protected className: string = 'ngx-calendar-m3-moment';\n\n    @Input({ required: false }) value?: Date;\n    @Input({ required: false }) minDate?: 'NOW' | Date;\n    @Input({ required: false }) maxDate?: 'NOW' | Date;\n    @Output() onChange: EventEmitter<INgxCalendarMoment> = new EventEmitter<INgxCalendarMoment>();\n\n    public canSubmit: boolean = false;\n    public dateString!: string;\n\n    public hour!: string;\n    public hours: string[] = [...Array(24).keys()].map((hour: number) => hour.toString().padStart(2, '0'));\n\n    public minute!: string;\n    public minutes: string[] = [...Array(60).keys()].map((minute: number) => minute.toString().padStart(2, '0'));\n\n    private jalali = JalaliDateTime();\n\n    ngOnInit(): void {\n        this.initValues();\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        this.initValues();\n    }\n\n    formatDate(date: Date): string {\n        return this.jalali.toString(date, { format: 'Y-M-D H:I' });\n    }\n\n    getMinMax(): { minDate: Date | undefined; maxDate: Date | undefined } {\n        const minDate: Date | undefined = this.minDate === 'NOW' ? new Date() : this.minDate;\n        const maxDate: Date | undefined = this.maxDate === 'NOW' ? new Date() : this.maxDate;\n\n        return { minDate, maxDate };\n    }\n\n    initValues(): void {\n        const updateDate = (date: Date): void => {\n            date.setSeconds(0);\n            date.setMilliseconds(0);\n        };\n        let { minDate, maxDate } = this.getMinMax();\n\n        if (this.value) updateDate(this.value);\n        if (minDate) updateDate(minDate);\n        if (maxDate) updateDate(maxDate);\n\n        // Check MIN and MAX Dates\n        if (minDate && maxDate && minDate.getTime() > maxDate.getTime()) {\n            const date: Date = new Date(minDate);\n            minDate = maxDate;\n            maxDate = date;\n        }\n\n        // Check Value\n        if (this.value && minDate && this.formatDate(this.value) < this.formatDate(minDate)) this.value = undefined;\n        if (this.value && maxDate && this.formatDate(this.value) > this.formatDate(maxDate)) this.value = undefined;\n\n        this.hour = (this.value || new Date()).getHours().toString().padStart(2, '0');\n        this.minute = (this.value || new Date()).getMinutes().toString().padStart(2, '0');\n        this.updateValue();\n    }\n\n    updateValue(): void {\n        this.canSubmit = false;\n        if (!this.value) return;\n\n        const { minDate, maxDate } = this.getMinMax();\n\n        this.value.setHours(+this.hour);\n        this.value.setMinutes(+this.minute);\n        this.value.setSeconds(0);\n        this.value.setMilliseconds(0);\n\n        if (minDate && this.formatDate(this.value) < this.formatDate(minDate)) {\n            this.value.setHours(minDate.getHours());\n            this.value.setMinutes(minDate.getMinutes());\n        }\n\n        if (maxDate && this.formatDate(this.value) > this.formatDate(maxDate)) {\n            this.value.setHours(maxDate.getHours());\n            this.value.setMinutes(maxDate.getMinutes());\n        }\n\n        this.hour = this.value.getHours().toString().padStart(2, '0');\n        this.minute = this.value.getMinutes().toString().padStart(2, '0');\n        this.canSubmit = true;\n    }\n\n    setDate(date: INgxCalendarDate): void {\n        this.value = date.date;\n        this.updateValue();\n    }\n\n    isActiveHour(hour: string): boolean {\n        const { minDate, maxDate } = this.getMinMax();\n\n        if (!this.value) return false;\n        if (!minDate && !maxDate) return true;\n\n        const check: string = this.jalali.toString(this.value, { format: `Y-M-D ${hour}` });\n        if (minDate && check < this.formatDate(minDate).substring(0, 13)) return false;\n        if (maxDate && check > this.formatDate(maxDate).substring(0, 13)) return false;\n        return true;\n    }\n\n    setHour(hour: string) {\n        this.hour = hour;\n        this.updateValue();\n    }\n\n    isActiveMinute(minute: string): boolean {\n        const { minDate, maxDate } = this.getMinMax();\n\n        if (!this.value) return false;\n        if (!minDate && !maxDate) return true;\n\n        const check: string = this.jalali.toString(this.value, { format: `Y-M-D H:${minute}` });\n        if (minDate && check < this.formatDate(minDate)) return false;\n        if (maxDate && check > this.formatDate(maxDate)) return false;\n        return true;\n    }\n\n    setMinute(minute: string) {\n        this.minute = minute;\n        this.updateValue();\n    }\n\n    onSubmit(): void {\n        if (!this.value || !this.canSubmit) return;\n\n        const moment: Date = new Date(this.value.getTime());\n        const title: string = this.jalali.toFullText(moment, { format: 'W، d N Y H:I' });\n        const jalali: string = this.formatDate(moment);\n        this.onChange.next({ moment, title, jalali });\n    }\n}\n","<ngx-calendar-date [value]=\"value\" [minDate]=\"minDate\" [maxDate]=\"maxDate\" (onChange)=\"setDate($event)\"></ngx-calendar-date>\n<div class=\"time\">\n    <div class=\"date\">{{ value | ngxHelperDate }}</div>\n\n    @if (value) {\n    <button mat-button type=\"button\" class=\"value\" [matMenuTriggerFor]=\"minuteMenu\" [disabled]=\"!value\">{{ minute }}</button>\n    <mat-menu #minuteMenu=\"matMenu\" [yPosition]=\"'above'\" class=\"ngx-calendar-m3-moment-minute\">\n        @for (m of minutes; track $index) {\n        <button\n            mat-menu-item\n            (click)=\"setMinute(m)\"\n            [disabled]=\"!isActiveMinute(m) || m === minute\"\n            [class.selected]=\"m === minute\"\n        >\n            <span class=\"minute\" [style.color]=\"+m % 5 === 0 ? 'var(--secondary)' : ''\">{{ m }}</span>\n        </button>\n        }\n    </mat-menu>\n\n    <div class=\"colon\" [style.opacity]=\"value ? 1 : 0.5\">:</div>\n\n    <button mat-button type=\"button\" class=\"value\" [matMenuTriggerFor]=\"hourMenu\" [disabled]=\"!value\">{{ hour }}</button>\n    <mat-menu #hourMenu=\"matMenu\" [yPosition]=\"'above'\" class=\"ngx-calendar-m3-moment-hour\">\n        @for (h of hours; track $index) {\n        <button mat-menu-item (click)=\"setHour(h)\" [disabled]=\"!isActiveHour(h) || h === hour\" [class.selected]=\"h === hour\">\n            <span class=\"hour\">{{ h }}</span>\n        </button>\n        }\n    </mat-menu>\n    }\n\n    <button mat-button type=\"button\" class=\"submit\" (click)=\"onSubmit()\" [disabled]=\"!canSubmit\">تایید</button>\n</div>\n","import {\n    Component,\n    EventEmitter,\n    HostBinding,\n    Input,\n    OnChanges,\n    OnInit,\n    Output,\n    SimpleChanges,\n    ChangeDetectionStrategy,\n} from '@angular/core';\n\nimport { MatIconButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\n\nimport { Helper } from '@webilix/helper-library';\nimport { JalaliDateTime, JalaliDateTimeCalendar, JalaliDateTimePeriod } from '@webilix/jalali-date-time';\n\nimport { INgxCalendarWeek } from '../../ngx-calendar.interface';\n\n@Component({\n    selector: 'ngx-calendar-week',\n    imports: [MatIconButton, MatIcon],\n    templateUrl: './ngx-calendar-week.component.html',\n    changeDetection: ChangeDetectionStrategy.Eager,\n    styleUrl: './ngx-calendar-week.component.scss',\n})\nexport class NgxCalendarWeekComponent implements OnInit, OnChanges {\n    @HostBinding('className') protected className: string = 'ngx-calendar-m3-week';\n\n    @Input({ required: false }) value?: Date | { from: Date; to: Date };\n    @Input({ required: false }) minDate?: 'NOW' | Date;\n    @Input({ required: false }) maxDate?: 'NOW' | Date;\n    @Output() onChange: EventEmitter<INgxCalendarWeek> = new EventEmitter<INgxCalendarWeek>();\n\n    public view: 'CALENDAR' | 'MONTH' = 'CALENDAR';\n    public values!: { today: string; selected: string; minDate: string; maxDate: string };\n    public calendar!: JalaliDateTimeCalendar;\n\n    public year!: number;\n    public years: number[] = [];\n    public seasons: { title: string; month: string }[][] = [\n        [\n            { title: 'فروردین', month: '' },\n            { title: 'اردیبهشت', month: '' },\n            { title: 'خرداد', month: '' },\n        ],\n        [\n            { title: 'تیر', month: '' },\n            { title: 'مرداد', month: '' },\n            { title: 'شهریور', month: '' },\n        ],\n        [\n            { title: 'مهر', month: '' },\n            { title: 'آبان', month: '' },\n            { title: 'آذر', month: '' },\n        ],\n        [\n            { title: 'دی', month: '' },\n            { title: 'بهمن', month: '' },\n            { title: 'اسفند', month: '' },\n        ],\n    ];\n\n    private jalali = JalaliDateTime();\n\n    ngOnInit(): void {\n        this.initValues();\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        this.initValues();\n    }\n\n    formatDate(date: Date): string {\n        return this.jalali.toString(date, { format: 'Y-M-D' });\n    }\n\n    initValues(): void {\n        let minDate: Date | undefined = this.minDate === 'NOW' ? new Date() : this.minDate;\n        let maxDate: Date | undefined = this.maxDate === 'NOW' ? new Date() : this.maxDate;\n\n        const getWeek = (date: Date, period: 'from' | 'to'): string => {\n            const week: JalaliDateTimePeriod = this.jalali.periodWeek(1, date);\n            return this.formatDate(period === 'from' ? week.from : week.to);\n        };\n\n        // Check MIN and MAX Dates\n        if (minDate && maxDate && minDate.getTime() > maxDate.getTime()) {\n            const date: Date = new Date(minDate);\n            minDate = maxDate;\n            maxDate = date;\n        }\n\n        // Check Value\n        let value: Date | undefined = this.value ? ('from' in this.value ? this.value.from : this.value) : undefined;\n        if (value && minDate && this.formatDate(value) < getWeek(minDate, 'from')) value = undefined;\n        if (value && maxDate && this.formatDate(value) > getWeek(maxDate, 'to')) value = undefined;\n\n        this.values = {\n            today: this.formatDate(new Date()),\n            selected: value ? getWeek(value, 'from') : '',\n            minDate: minDate ? getWeek(minDate, 'from') : '0000-00-00',\n            maxDate: maxDate ? getWeek(maxDate, 'to') : '9999-99-99',\n        };\n\n        const month: string = this.jalali.toString(value || new Date(), { format: 'Y-M' });\n        this.calendar = this.jalali.calendar(month);\n        this.view = 'CALENDAR';\n    }\n\n    changeMonth(change: number): void {\n        let [year, month] = this.calendar.month.split('-').map((v: string) => +v);\n        switch (change) {\n            case 12:\n            case -12:\n                year += change === 12 ? 1 : -1;\n                break;\n\n            case 1:\n            case -1:\n                month += change;\n                if (month === 13) {\n                    year++;\n                    month = 1;\n                }\n                if (month === 0) {\n                    year--;\n                    month = 12;\n                }\n                break;\n\n            case 0:\n                [year, month] = this.values.today.split('-').map((v: string) => +v);\n                break;\n        }\n\n        this.calendar = this.jalali.calendar(year.toString() + '-' + month.toString().padStart(2, '0'));\n    }\n\n    setDate(value: string): void {\n        const gregorian: string = this.jalali.gregorian(value).date;\n        const date: Date = this.jalali.periodDay(1, new Date(gregorian + 'T00:00:00.000Z')).from;\n        const period: JalaliDateTimePeriod = this.jalali.periodWeek(1, date);\n        const title: string = Helper.DATE.jalaliPeriod(period.from, period.to);\n\n        this.values.selected = this.formatDate(period.from);\n        this.onChange.next({ period, title });\n    }\n\n    toggleView(): void {\n        this.view = this.view === 'CALENDAR' ? 'MONTH' : 'CALENDAR';\n        if (this.view === 'MONTH') this.changeYear(+this.calendar.month.substring(0, 4));\n    }\n\n    changeYear(year?: number): void {\n        if (year && year < 1000) return;\n        this.year = year || +this.values.today.substring(0, 4);\n\n        let decade: number = this.year - (this.year % 10);\n        if (decade <= 1020) decade = 1020;\n        this.years = [decade - 20, decade - 10, decade, decade + 10, decade + 20];\n        this.seasons.forEach((season, s: number) => {\n            season.forEach((month, m: number) => {\n                month.month = `${this.year.toString()}-${(s * 3 + m + 1).toString().padStart(2, '0')}`;\n            });\n        });\n    }\n\n    setMonth(month: string): void {\n        this.calendar = this.jalali.calendar(month);\n        this.view = 'CALENDAR';\n    }\n}\n","<div class=\"calendar-header\">\n    <button mat-icon-button type=\"button\" (click)=\"toggleView()\">\n        <mat-icon>{{ view === 'CALENDAR' ? 'calendar_month' : 'close' }}</mat-icon>\n    </button>\n    <div class=\"title\">{{ view === 'CALENDAR' ? calendar.title : year }}</div>\n\n    <button mat-icon-button type=\"button\" (click)=\"view === 'CALENDAR' ? changeMonth(-12) : changeYear(year - 10)\">\n        <mat-icon>keyboard_double_arrow_right</mat-icon>\n    </button>\n    <button mat-icon-button type=\"button\" (click)=\"view === 'CALENDAR' ? changeMonth(-1) : changeYear(year - 1)\">\n        <mat-icon>chevron_right</mat-icon>\n    </button>\n    <button mat-icon-button type=\"button\" (click)=\"view === 'CALENDAR' ? changeMonth(0) : changeYear(year)\">\n        <mat-icon>radio_button_checked</mat-icon>\n    </button>\n    <button mat-icon-button type=\"button\" (click)=\"view === 'CALENDAR' ? changeMonth(1) : changeYear(year + 1)\">\n        <mat-icon>chevron_left</mat-icon>\n    </button>\n    <button mat-icon-button type=\"button\" (click)=\"view === 'CALENDAR' ? changeMonth(12) : changeYear(year + 10)\">\n        <mat-icon>keyboard_double_arrow_left</mat-icon>\n    </button>\n</div>\n\n<div class=\"calendar-nav\">\n    @switch (view) {\n    <!-- CALENDAR -->\n    @case ('CALENDAR') {\n    <!-- NAMES  -->\n    @for (day of ['ش', 'ی', 'د', 'س', 'چ', 'پ', 'ج']; track $index) {\n    <div class=\"item\">{{ day }}</div>\n    } } @case ('MONTH') {\n    <!-- YEARS -->\n    @for (item of years; track $index) {\n    <div class=\"item click\" (click)=\"changeYear(item)\">{{ item }}</div>\n    } } }\n</div>\n\n<div class=\"calendar-content\">\n    <!-- CALENDAR VIEW -->\n    <section class=\"calendar-view\" [style.visibility]=\"view === 'CALENDAR' ? 'visible' : 'hidden'\">\n        <!-- WEEK -->\n        @for ( week of calendar.weeks; track $index) {\n        <div class=\"week\" [class.week-selected]=\"week[0].date === values.selected\">\n            <!-- DAYS -->\n            @for (day of week; track $index) {\n            <div\n                class=\"day\"\n                [class.day-today]=\"day.date === values.today\"\n                [class.day-selected]=\"week[0].date === values.selected\"\n                [class.day-disable]=\"day.month !== calendar.month || day.date > values.maxDate || day.date < values.minDate\"\n                (click)=\"\n                    day.month !== calendar.month || day.date > values.maxDate || day.date < values.minDate\n                        ? null\n                        : setDate(day.date)\n                \"\n            >\n                {{ day.day }}\n            </div>\n            }\n        </div>\n        }\n    </section>\n\n    <!-- MONTH VIEW -->\n    @if (view === 'MONTH') {\n    <section class=\"month-view\">\n        <!-- SEASON -->\n        @for (season of seasons; track $index) {\n        <div class=\"season\">\n            <!-- MONTH -->\n            @for (month of season; track $index) {\n            <div\n                class=\"month\"\n                [class.month-disable]=\"\n                    (values.minDate && month.month < values.minDate) || (values.maxDate && month.month > values.maxDate)\n                \"\n                (click)=\"\n                    (values.minDate && month.month < values.minDate) || (values.maxDate && month.month > values.maxDate)\n                        ? null\n                        : setMonth(month.month)\n                \"\n            >\n                {{ month.title }}\n            </div>\n            }\n        </div>\n        }\n    </section>\n    }\n</div>\n","import {\n    Component,\n    EventEmitter,\n    HostBinding,\n    Input,\n    OnChanges,\n    OnInit,\n    Output,\n    SimpleChanges,\n    ChangeDetectionStrategy,\n} from '@angular/core';\n\nimport { MatIconButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\n\nimport { JalaliDateTime, JalaliDateTimePeriod } from '@webilix/jalali-date-time';\n\nimport { INgxCalendarMonth } from '../../ngx-calendar.interface';\n\n@Component({\n    selector: 'ngx-calendar-month',\n    imports: [MatIconButton, MatIcon],\n    templateUrl: './ngx-calendar-month.component.html',\n    changeDetection: ChangeDetectionStrategy.Eager,\n    styleUrl: './ngx-calendar-month.component.scss',\n})\nexport class NgxCalendarMonthComponent implements OnInit, OnChanges {\n    @HostBinding('className') protected className: string = 'ngx-calendar-m3-month';\n\n    @Input({ required: false }) value?: Date | { from: Date; to: Date };\n    @Input({ required: false }) minDate?: 'NOW' | Date;\n    @Input({ required: false }) maxDate?: 'NOW' | Date;\n    @Output() onChange: EventEmitter<INgxCalendarMonth> = new EventEmitter<INgxCalendarMonth>();\n\n    public values!: { today: string; selected: string; minDate: string; maxDate: string };\n    public year!: number;\n\n    public years: number[] = [];\n    public seasons: { title: string; month: string }[][] = [\n        [\n            { title: 'فروردین', month: '' },\n            { title: 'اردیبهشت', month: '' },\n            { title: 'خرداد', month: '' },\n        ],\n        [\n            { title: 'تیر', month: '' },\n            { title: 'مرداد', month: '' },\n            { title: 'شهریور', month: '' },\n        ],\n        [\n            { title: 'مهر', month: '' },\n            { title: 'آبان', month: '' },\n            { title: 'آذر', month: '' },\n        ],\n        [\n            { title: 'دی', month: '' },\n            { title: 'بهمن', month: '' },\n            { title: 'اسفند', month: '' },\n        ],\n    ];\n\n    private jalali = JalaliDateTime();\n\n    ngOnInit(): void {\n        this.initValues();\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        this.initValues();\n    }\n\n    initValues(): void {\n        const getMonth = (date: Date): string => this.jalali.toString(date, { format: 'Y-M' });\n        let minDate: Date | undefined = this.minDate === 'NOW' ? new Date() : this.minDate;\n        let maxDate: Date | undefined = this.maxDate === 'NOW' ? new Date() : this.maxDate;\n\n        // Check MIN and MAX Dates\n        if (minDate && maxDate && minDate.getTime() > maxDate.getTime()) {\n            const date: Date = new Date(minDate);\n            minDate = maxDate;\n            maxDate = date;\n        }\n\n        // Check Value\n        let value: Date | undefined = this.value ? ('from' in this.value ? this.value.from : this.value) : undefined;\n        if (value && minDate && getMonth(value) < getMonth(minDate)) value = undefined;\n        if (value && maxDate && getMonth(value) > getMonth(maxDate)) value = undefined;\n\n        this.values = {\n            today: getMonth(new Date()),\n            selected: value ? getMonth(value) : '',\n            minDate: minDate ? getMonth(minDate) : '0000-00',\n            maxDate: maxDate ? getMonth(maxDate) : '9999-99',\n        };\n\n        const year: string = this.values.selected ? this.values.selected : this.values.today;\n        this.changeYear(+year.substring(0, 4));\n    }\n\n    changeYear(year?: number): void {\n        if (year && year < 1000) return;\n        this.year = year || +this.values.today.substring(0, 4);\n\n        let decade: number = this.year - (this.year % 10);\n        if (decade <= 1020) decade = 1020;\n        this.years = [decade - 20, decade - 10, decade, decade + 10, decade + 20];\n        this.seasons.forEach((season, s: number) => {\n            season.forEach((month, m: number) => {\n                month.month = `${this.year.toString()}-${(s * 3 + m + 1).toString().padStart(2, '0')}`;\n            });\n        });\n    }\n\n    setMonth(value: string): void {\n        const gregorian: string = this.jalali.gregorian(`${value}-01`).date;\n        const date: Date = this.jalali.periodDay(1, new Date(gregorian + 'T00:00:00.000Z')).from;\n        const period: JalaliDateTimePeriod = this.jalali.periodMonth(1, date);\n        const title: string = this.jalali.toFullText(period.from, { format: 'N Y' });\n\n        this.values.selected = value;\n        this.onChange.next({ period, title, jalali: value });\n    }\n}\n","<div class=\"calendar-header\">\n    <div class=\"title\">{{ year }}</div>\n\n    <button mat-icon-button type=\"button\" (click)=\"changeYear(year - 10)\">\n        <mat-icon>keyboard_double_arrow_right</mat-icon>\n    </button>\n    <button mat-icon-button type=\"button\" (click)=\"changeYear(year - 1)\">\n        <mat-icon>chevron_right</mat-icon>\n    </button>\n    <button mat-icon-button type=\"button\" (click)=\"changeYear()\">\n        <mat-icon>radio_button_checked</mat-icon>\n    </button>\n    <button mat-icon-button type=\"button\" (click)=\"changeYear(year + 1)\">\n        <mat-icon>chevron_left</mat-icon>\n    </button>\n    <button mat-icon-button type=\"button\" (click)=\"changeYear(year + 12)\">\n        <mat-icon>keyboard_double_arrow_left</mat-icon>\n    </button>\n</div>\n\n<div class=\"calendar-nav\">\n    @for (item of years; track $index) {\n    <div class=\"item click\" (click)=\"changeYear(item)\">{{ item }}</div>\n    }\n</div>\n\n<!-- SEASON -->\n@for (season of seasons; track $index) {\n<div class=\"calendar-content\">\n    <!-- MONTH -->\n    @for (month of season; track $index) {\n    <div\n        class=\"month\"\n        [class.month-today]=\"month.month === values.today\"\n        [class.month-selected]=\"month.month === values.selected\"\n        [class.month-disable]=\"\n            (values.minDate && month.month < values.minDate) || (values.maxDate && month.month > values.maxDate)\n        \"\n        (click)=\"\n            (values.minDate && month.month < values.minDate) || (values.maxDate && month.month > values.maxDate)\n                ? null\n                : setMonth(month.month)\n        \"\n    >\n        {{ month.title }}\n    </div>\n    }\n</div>\n}\n","import {\n    Component,\n    EventEmitter,\n    HostBinding,\n    Input,\n    OnChanges,\n    OnInit,\n    Output,\n    SimpleChanges,\n    ChangeDetectionStrategy,\n} from '@angular/core';\n\nimport { MatIconButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\n\nimport { JalaliDateTime } from '@webilix/jalali-date-time';\n\nimport { INgxCalendarYear } from '../../ngx-calendar.interface';\n\n@Component({\n    selector: 'ngx-calendar-year',\n    imports: [MatIconButton, MatIcon],\n    templateUrl: './ngx-calendar-year.component.html',\n    changeDetection: ChangeDetectionStrategy.Eager,\n    styleUrl: './ngx-calendar-year.component.scss',\n})\nexport class NgxCalendarYearComponent implements OnInit, OnChanges {\n    @HostBinding('className') protected className: string = 'ngx-calendar-m3-year';\n\n    @Input({ required: false }) value?: Date | { from: Date; to: Date };\n    @Input({ required: false }) minDate?: 'NOW' | Date;\n    @Input({ required: false }) maxDate?: 'NOW' | Date;\n    @Output() onChange: EventEmitter<INgxCalendarYear> = new EventEmitter<INgxCalendarYear>();\n\n    public values!: { today: string; selected: string; minDate: string; maxDate: string };\n    public years!: number[];\n\n    private jalali = JalaliDateTime();\n\n    ngOnInit(): void {\n        this.initValues();\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        this.initValues();\n    }\n\n    initValues(): void {\n        const getYear = (date: Date): string => this.jalali.toString(date, { format: 'Y' });\n        let minDate: Date | undefined = this.minDate === 'NOW' ? new Date() : this.minDate;\n        let maxDate: Date | undefined = this.maxDate === 'NOW' ? new Date() : this.maxDate;\n\n        // Check MIN and MAX Dates\n        if (minDate && maxDate && minDate.getTime() > maxDate.getTime()) {\n            const date: Date = new Date(minDate);\n            minDate = maxDate;\n            maxDate = date;\n        }\n\n        // Check Value\n        let value: Date | undefined = this.value ? ('from' in this.value ? this.value.from : this.value) : undefined;\n        if (value && minDate && getYear(value) < getYear(minDate)) value = undefined;\n        if (value && maxDate && getYear(value) > getYear(maxDate)) value = undefined;\n\n        this.values = {\n            today: getYear(new Date()),\n            selected: value ? getYear(value) : '',\n            minDate: minDate ? getYear(minDate) : '0000',\n            maxDate: maxDate ? getYear(maxDate) : '9999',\n        };\n\n        const year: string = this.values.selected ? this.values.selected : this.values.today;\n        this.changeYear(+year.substring(0, 4));\n    }\n\n    changeYear(year: number): void {\n        if (year < 1000) year = 1000;\n\n        const count: number = 25;\n        const start: number = year - (year % count);\n        this.years = [...Array(count).keys()].map((n: number) => start + n);\n    }\n\n    setYear(value: string): void {\n        if (\n            value < '1000' ||\n            (this.values.minDate && value < this.values.minDate) ||\n            (this.values.maxDate && value > this.values.maxDate)\n        )\n            return;\n\n        const lastDayInYear: string = this.jalali.daysInMonth(`${value}-12`).toString();\n        const from: Date = new Date(this.jalali.gregorian(`${value}-01-01`).date + 'T00:00:00.000Z');\n        const to: Date = new Date(this.jalali.gregorian(`${value}-12-${lastDayInYear}`).date + 'T00:00:00.000Z');\n        const period = {\n            from: this.jalali.periodDay(1, from).from,\n            to: this.jalali.periodDay(1, to).to,\n        };\n\n        this.values.selected = value;\n        this.onChange.next({ period, year: +value });\n    }\n}\n","<div class=\"calendar-header\">\n    <div class=\"title\">{{ years[0] }} - {{ years[years.length - 1] }}</div>\n\n    <button mat-icon-button type=\"button\" (click)=\"changeYear(years[0] - 1)\">\n        <mat-icon>chevron_right</mat-icon>\n    </button>\n    <button mat-icon-button type=\"button\" (click)=\"changeYear(+values.today)\">\n        <mat-icon>radio_button_checked</mat-icon>\n    </button>\n    <button mat-icon-button type=\"button\" (click)=\"changeYear(years[years.length - 1] + 1)\">\n        <mat-icon>chevron_left</mat-icon>\n    </button>\n</div>\n\n<!-- YEARS -->\n<div class=\"calendar-content\">\n    @for (year of years; track $index) {\n    <div\n        class=\"year\"\n        [class.year-today]=\"+values.today === year\"\n        [class.year-selected]=\"+values.selected === year\"\n        [class.year-disable]=\"(values.minDate && year < +values.minDate) || (values.maxDate && year > +values.maxDate)\"\n        (click)=\"\n            (values.minDate && year < +values.minDate) || (values.maxDate && year > +values.maxDate)\n                ? null\n                : setYear(year.toString())\n        \"\n    >\n        {{ year }}\n    </div>\n    }\n</div>\n","import { Component, inject, ChangeDetectionStrategy } from '@angular/core';\n\nimport { NGX_HELPER_CONTAINER_CLOSE, NGX_HELPER_CONTAINER_DATA } from '@webilix/ngx-helper-m3';\n\nimport {\n    NgxCalendarDateComponent,\n    NgxCalendarMomentComponent,\n    NgxCalendarMonthComponent,\n    NgxCalendarWeekComponent,\n    NgxCalendarYearComponent,\n} from '../../components';\nimport { NgxCalendar } from '../../ngx-calendar.interface';\n\nimport { IContainer } from '../container.interface';\n\n@Component({\n    host: { selector: 'bottom-sheet' },\n    imports: [\n        NgxCalendarMomentComponent,\n        NgxCalendarDateComponent,\n        NgxCalendarWeekComponent,\n        NgxCalendarMonthComponent,\n        NgxCalendarYearComponent,\n    ],\n    templateUrl: './bottom-sheet.component.html',\n    changeDetection: ChangeDetectionStrategy.Eager,\n    styleUrl: './bottom-sheet.component.scss',\n})\nexport class BottomSheetComponent<R> {\n    public data: { calendar: NgxCalendar | 'MOMENT'; container: IContainer } = inject(NGX_HELPER_CONTAINER_DATA);\n    public closeContainer = inject(NGX_HELPER_CONTAINER_CLOSE);\n}\n","@switch (data.calendar) {\n    <!-- MOMENT -->\n    @case ('MOMENT') {\n        <ngx-calendar-moment\n            [value]=\"$safeNavigationMigration(data.container.value?.from)\"\n            [minDate]=\"data.container.minDate\"\n            [maxDate]=\"data.container.maxDate\"\n            (onChange)=\"closeContainer($event)\"\n        ></ngx-calendar-moment>\n    }\n    <!-- DATE -->\n    @case ('DATE') {\n        <ngx-calendar-date\n            [value]=\"$safeNavigationMigration(data.container.value?.from)\"\n            [minDate]=\"data.container.minDate\"\n            [maxDate]=\"data.container.maxDate\"\n            (onChange)=\"closeContainer($event)\"\n        ></ngx-calendar-date>\n    }\n    <!-- WEEK -->\n    @case ('WEEK') {\n        <ngx-calendar-week\n            [value]=\"data.container.value\"\n            [minDate]=\"data.container.minDate\"\n            [maxDate]=\"data.container.maxDate\"\n            (onChange)=\"closeContainer($event)\"\n        ></ngx-calendar-week>\n    }\n    <!-- MONTH -->\n    @case ('MONTH') {\n        <ngx-calendar-month\n            [value]=\"data.container.value\"\n            [minDate]=\"data.container.minDate\"\n            [maxDate]=\"data.container.maxDate\"\n            (onChange)=\"closeContainer($event)\"\n        ></ngx-calendar-month>\n    }\n    <!-- YEAR -->\n    @case ('YEAR') {\n        <ngx-calendar-year\n            [value]=\"data.container.value\"\n            [minDate]=\"data.container.minDate\"\n            [maxDate]=\"data.container.maxDate\"\n            (onChange)=\"closeContainer($event)\"\n        ></ngx-calendar-year>\n    }\n}\n","import { Component, inject, ChangeDetectionStrategy } from '@angular/core';\n\nimport { NGX_HELPER_CONTAINER_CLOSE, NGX_HELPER_CONTAINER_DATA } from '@webilix/ngx-helper-m3';\n\nimport {\n    NgxCalendarDateComponent,\n    NgxCalendarMomentComponent,\n    NgxCalendarMonthComponent,\n    NgxCalendarWeekComponent,\n    NgxCalendarYearComponent,\n} from '../../components';\nimport { NgxCalendar } from '../../ngx-calendar.interface';\n\nimport { IContainer } from '../container.interface';\n\n@Component({\n    host: { selector: 'dialog' },\n    imports: [\n        NgxCalendarMomentComponent,\n        NgxCalendarDateComponent,\n        NgxCalendarWeekComponent,\n        NgxCalendarMonthComponent,\n        NgxCalendarYearComponent,\n    ],\n    templateUrl: './dialog.component.html',\n    changeDetection: ChangeDetectionStrategy.Eager,\n    styleUrl: './dialog.component.scss',\n})\nexport class DialogComponent<R> {\n    public data: { calendar: NgxCalendar | 'MOMENT'; container: IContainer } = inject(NGX_HELPER_CONTAINER_DATA);\n    public closeContainer = inject(NGX_HELPER_CONTAINER_CLOSE);\n}\n","<content>\n    @switch (data.calendar) {\n        <!-- MOMENT -->\n        @case ('MOMENT') {\n            <ngx-calendar-moment\n                [value]=\"$safeNavigationMigration(data.container.value?.from)\"\n                [minDate]=\"data.container.minDate\"\n                [maxDate]=\"data.container.maxDate\"\n                (onChange)=\"closeContainer($event)\"\n            ></ngx-calendar-moment>\n        }\n        <!-- DATE -->\n        @case ('DATE') {\n            <ngx-calendar-date\n                [value]=\"$safeNavigationMigration(data.container.value?.from)\"\n                [minDate]=\"data.container.minDate\"\n                [maxDate]=\"data.container.maxDate\"\n                (onChange)=\"closeContainer($event)\"\n            ></ngx-calendar-date>\n        }\n        <!-- WEEK -->\n        @case ('WEEK') {\n            <ngx-calendar-week\n                [value]=\"data.container.value\"\n                [minDate]=\"data.container.minDate\"\n                [maxDate]=\"data.container.maxDate\"\n                (onChange)=\"closeContainer($event)\"\n            ></ngx-calendar-week>\n        }\n        <!-- MONTH -->\n        @case ('MONTH') {\n            <ngx-calendar-month\n                [value]=\"data.container.value\"\n                [minDate]=\"data.container.minDate\"\n                [maxDate]=\"data.container.maxDate\"\n                (onChange)=\"closeContainer($event)\"\n            ></ngx-calendar-month>\n        }\n        <!-- YEAR -->\n        @case ('YEAR') {\n            <ngx-calendar-year\n                [value]=\"data.container.value\"\n                [minDate]=\"data.container.minDate\"\n                [maxDate]=\"data.container.maxDate\"\n                (onChange)=\"closeContainer($event)\"\n            ></ngx-calendar-year>\n        }\n    }\n</content>\n","import { Injectable } from '@angular/core';\n\nimport { NgxHelperContainerService } from '@webilix/ngx-helper-m3';\n\nimport { BottomSheetComponent, DialogComponent, IContainer } from './container';\nimport {\n    INgxCalendarDate,\n    INgxCalendarMoment,\n    INgxCalendarMonth,\n    INgxCalendarWeek,\n    INgxCalendarYear,\n    NgxCalendar,\n} from './ngx-calendar.interface';\n\ninterface ICalendar {\n    readonly title: string;\n    readonly value: Date;\n    readonly minDate: 'NOW' | Date;\n    readonly maxDate: 'NOW' | Date;\n}\n\ninterface ICalendarMoment extends ICalendar {}\n\ninterface ICalendarDate extends ICalendar {}\n\ninterface ICalendarWeek extends Omit<ICalendar, 'value'> {\n    readonly value: Date | { readonly from: Date; readonly to: Date };\n}\ninterface ICalendarMonth extends Omit<ICalendar, 'value'> {\n    readonly value: Date | { readonly from: Date; readonly to: Date };\n}\ninterface ICalendarYear extends Omit<ICalendar, 'value'> {\n    readonly value: Date | { readonly from: Date; readonly to: Date };\n}\n\nclass NgxCalendarClass<R /* RESPONSE */> {\n    constructor(\n        private readonly calendar: NgxCalendar | 'MOMENT',\n        private readonly container: IContainer,\n        private readonly ngxHelperContainerService: NgxHelperContainerService,\n        private readonly title?: string,\n    ) {}\n\n    private getTitle(calendar: NgxCalendar | 'MOMENT', title?: string): string {\n        if (title) return title;\n\n        switch (calendar) {\n            case 'DATE':\n                return 'انتخاب تاریخ';\n            case 'MOMENT':\n                return 'انتخاب زمان';\n            case 'WEEK':\n                return 'انتخاب هفته';\n            case 'MONTH':\n                return 'انتخاب ماه';\n            case 'YEAR':\n                return 'انتخاب سال';\n            case 'PERIOD':\n                return 'انتخاب دوره زمانی';\n        }\n    }\n\n    dialog(onResponse: (response: R) => void): void;\n    dialog(onResponse: (response: R) => void, onDismiss: () => void): void;\n    dialog(onResponse: (response: R) => void, onDismiss?: () => void): void {\n        this.ngxHelperContainerService\n            .init(DialogComponent, this.getTitle(this.calendar, this.title), {\n                data: { calendar: this.calendar, container: this.container },\n                padding: '0',\n            })\n            .dialog<R>(onResponse, onDismiss || (() => {}));\n    }\n\n    bottomSheet(onResponse: (response: R) => void): void;\n    bottomSheet(onResponse: (response: R) => void, onDismiss: () => void): void;\n    bottomSheet(onResponse: (response: R) => void, onDismiss?: () => void): void {\n        this.ngxHelperContainerService\n            .init(BottomSheetComponent, this.getTitle(this.calendar, this.title), {\n                data: { calendar: this.calendar, container: this.container },\n                padding: '0',\n            })\n            .bottomSheet<R>(onResponse, onDismiss || (() => {}));\n    }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class NgxCalendarService {\n    constructor(private readonly ngxHelperContainerService: NgxHelperContainerService) {}\n\n    getDate(): NgxCalendarClass<INgxCalendarDate>;\n    getDate(options: Partial<ICalendarDate>): NgxCalendarClass<INgxCalendarDate>;\n    getDate(arg1?: any): NgxCalendarClass<INgxCalendarDate> {\n        const options: Partial<ICalendarDate> = arg1 || {};\n        const container: IContainer = {\n            value: options.value ? { from: options.value, to: options.value } : undefined,\n            minDate: options.minDate,\n            maxDate: options.maxDate,\n        };\n\n        return new NgxCalendarClass<INgxCalendarDate>('DATE', container, this.ngxHelperContainerService, options.title);\n    }\n\n    getMoment(): NgxCalendarClass<INgxCalendarMoment>;\n    getMoment(options: Partial<ICalendarMoment>): NgxCalendarClass<INgxCalendarMoment>;\n    getMoment(arg1?: any): NgxCalendarClass<INgxCalendarMoment> {\n        const options: Partial<ICalendarMoment> = arg1 || {};\n        const container: IContainer = {\n            value: options.value ? { from: options.value, to: options.value } : undefined,\n            minDate: options.minDate,\n            maxDate: options.maxDate,\n        };\n\n        return new NgxCalendarClass<INgxCalendarMoment>('MOMENT', container, this.ngxHelperContainerService, options.title);\n    }\n\n    getWeek(): NgxCalendarClass<INgxCalendarWeek>;\n    getWeek(options: Partial<ICalendarWeek>): NgxCalendarClass<INgxCalendarWeek>;\n    getWeek(arg1?: any): NgxCalendarClass<INgxCalendarWeek> {\n        const options: Partial<ICalendarWeek> = arg1 || {};\n        const container: IContainer = {\n            value: options.value\n                ? 'from' in options.value\n                    ? options.value\n                    : { from: options.value, to: options.value }\n                : undefined,\n            minDate: options.minDate,\n            maxDate: options.maxDate,\n        };\n\n        return new NgxCalendarClass<INgxCalendarWeek>('WEEK', container, this.ngxHelperContainerService, options.title);\n    }\n\n    getMonth(): NgxCalendarClass<INgxCalendarMonth>;\n    getMonth(options: Partial<ICalendarMonth>): NgxCalendarClass<INgxCalendarMonth>;\n    getMonth(arg1?: any): NgxCalendarClass<INgxCalendarMonth> {\n        const options: Partial<ICalendarMonth> = arg1 || {};\n        const container: IContainer = {\n            value: options.value\n                ? 'from' in options.value\n                    ? options.value\n                    : { from: options.value, to: options.value }\n                : undefined,\n            minDate: options.minDate,\n            maxDate: options.maxDate,\n        };\n\n        return new NgxCalendarClass<INgxCalendarMonth>('MONTH', container, this.ngxHelperContainerService, options.title);\n    }\n\n    getYear(): NgxCalendarClass<INgxCalendarYear>;\n    getYear(options: Partial<ICalendarYear>): NgxCalendarClass<INgxCalendarYear>;\n    getYear(arg1?: any): NgxCalendarClass<INgxCalendarYear> {\n        const options: Partial<ICalendarYear> = arg1 || {};\n        const container: IContainer = {\n            value: options.value\n                ? 'from' in options.value\n                    ? options.value\n                    : { from: options.value, to: options.value }\n                : undefined,\n            minDate: options.minDate,\n            maxDate: options.maxDate,\n        };\n\n        return new NgxCalendarClass<INgxCalendarYear>('YEAR', container, this.ngxHelperContainerService, options.title);\n    }\n}\n","import { Component, EventEmitter, HostBinding, Input, OnInit, Output, ChangeDetectionStrategy } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport { MatIconButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\n\nimport { Helper } from '@webilix/helper-library';\nimport { JalaliDateTime, JalaliDateTimePeriod } from '@webilix/jalali-date-time';\n\nimport {\n    INgxCalendar,\n    INgxCalendarDate,\n    INgxCalendarMonth,\n    INgxCalendarWeek,\n    INgxCalendarYear,\n    NgxCalendar,\n} from './ngx-calendar.interface';\nimport { NgxCalendarService } from './ngx-calendar.service';\n\n@Component({\n    selector: 'ngx-calendar',\n    imports: [MatIconButton, MatIcon, MatMenuModule],\n    templateUrl: './ngx-calendar.component.html',\n    changeDetection: ChangeDetectionStrategy.Eager,\n    styleUrl: './ngx-calendar.component.scss',\n})\nexport class NgxCalendarComponent implements OnInit {\n    @HostBinding('className') protected className: string = 'ngx-calendar-m3';\n    @HostBinding('style.--ngx-calendar-m3-width') cssWidth = '';\n    @HostBinding('style.--ngx-calendar-m3-height') cssHeight = '';\n\n    @Input({ required: true }) calendars!: NgxCalendar[];\n    @Input({ required: false }) minDate?: 'NOW' | Date;\n    @Input({ required: false }) maxDate?: 'NOW' | Date;\n    @Input({ required: false }) width?: string;\n    @Input({ required: false }) height: string = '40px';\n    @Input({ required: false }) route: string[] = [];\n    @Input({ required: false }) container: 'DIALOG' | 'BOTTONSHEET' = 'DIALOG';\n    @Output() onChanged: EventEmitter<INgxCalendar> = new EventEmitter<INgxCalendar>();\n\n    public calendar!: NgxCalendar;\n    public calendarTitle!: string;\n    public periodTitle!: string | [string, string];\n    public from!: Date;\n    public to!: Date;\n\n    public previous: { active: boolean; date: Date } = { active: false, date: new Date() };\n    public next: { active: boolean; date: Date } = { active: false, date: new Date() };\n\n    private jalali = JalaliDateTime();\n    public list: NgxCalendar[] = ['DATE', 'WEEK', 'MONTH', 'YEAR', 'PERIOD'];\n    public calendarsList: {\n        [key in NgxCalendar]: {\n            title: string;\n            icon: string;\n            method: (v: number, d?: Date, t?: string) => JalaliDateTimePeriod;\n        };\n    } = {\n        DATE: { title: 'روزانه', icon: 'today', method: this.jalali.periodDay },\n        WEEK: { title: 'هفتگی', icon: 'date_range', method: this.jalali.periodWeek },\n        MONTH: { title: 'ماهانه', icon: 'calendar_month', method: this.jalali.periodMonth },\n        YEAR: { title: 'سالانه', icon: 'calendar_today', method: this.jalali.periodYear },\n        PERIOD: { title: 'دوره زمانی', icon: 'event_note', method: this.jalali.periodDay },\n    };\n\n    constructor(\n        private readonly activatedRoute: ActivatedRoute,\n        private readonly router: Router,\n        private readonly ngxCalendarService: NgxCalendarService,\n    ) {}\n\n    ngOnInit(): void {\n        this.cssWidth = this.width || '100%';\n        this.cssHeight = this.height;\n\n        this.calendars = this.calendars\n            .filter((calendar) => !!this.calendarsList[calendar])\n            .filter((calendar, index, arr) => arr.indexOf(calendar) === index);\n        if (this.calendars.length === 0) this.calendars = ['DATE', 'WEEK', 'MONTH', 'YEAR', 'PERIOD'];\n\n        let { minDate, maxDate } = this.getMinMax();\n\n        // Check MIN and MAX Dates\n        if (minDate && maxDate && minDate.getTime() > maxDate.getTime()) {\n            const date: Date = new Date(minDate);\n            minDate = maxDate;\n            maxDate = date;\n        }\n\n        const queryParams: { [key: string]: any } = { ...this.activatedRoute.snapshot.queryParams };\n        const calendar: NgxCalendar =\n            this.route.length > 0 && this.calendars.includes(queryParams['ngx-calendar'])\n                ? queryParams['ngx-calendar']\n                : this.calendars[0];\n        const from: Date =\n            this.route.length > 0 && Helper.IS.STRING.date(queryParams['ngx-calendar-from'])\n                ? new Date(this.jalali.gregorian(queryParams['ngx-calendar-from']).date + 'T00:00:00.000Z')\n                : new Date();\n        const to: Date =\n            this.route.length > 0 && Helper.IS.STRING.date(queryParams['ngx-calendar-to'])\n                ? new Date(this.jalali.gregorian(queryParams['ngx-calendar-to']).date + 'T00:00:00.000Z')\n                : new Date();\n\n        this.setCalendar(calendar, from, to);\n    }\n\n    getMinMax(): { minDate: Date | undefined; maxDate: Date | undefined } {\n        const minDate: Date | undefined = this.minDate === 'NOW' ? new Date() : this.minDate;\n        const maxDate: Date | undefined = this.maxDate === 'NOW' ? new Date() : this.maxDate;\n\n        return { minDate, maxDate };\n    }\n\n    updateView(): void {\n        switch (this.calendar) {\n            case 'DATE':\n                this.periodTitle = this.jalali.toTitle(this.from, { format: 'W، d N Y' });\n                break;\n            case 'WEEK':\n                this.periodTitle = Helper.DATE.jalaliPeriod(this.from, this.to).replace('-', ' تا ');\n                break;\n            case 'MONTH':\n                this.periodTitle = this.jalali.toTitle(this.from, { format: 'N Y' });\n                break;\n            case 'YEAR':\n                this.periodTitle = this.jalali.toTitle(this.from, { format: 'Y' });\n                break;\n            case 'PERIOD':\n                this.periodTitle = [\n                    this.jalali.toTitle(this.from, { format: 'd N Y' }),\n                    this.jalali.toTitle(this.to, { format: 'd N Y' }),\n                ];\n                break;\n        }\n\n        const { minDate, maxDate } = this.getMinMax();\n\n        // Update Previous and Next\n        if (this.calendar !== 'PERIOD') {\n            const previousCheck = minDate ? this.calendarsList[this.calendar].method(1, minDate).from : undefined;\n            this.previous.date = this.calendarsList[this.calendar].method(1, new Date(this.from.getTime() - 1)).from;\n            this.previous.active = !previousCheck || this.previous.date.getTime() >= previousCheck.getTime();\n\n            const nextCheck = maxDate ? this.calendarsList[this.calendar].method(1, maxDate).to : undefined;\n            this.next.date = this.calendarsList[this.calendar].method(1, new Date(this.to.getTime() + 1)).to;\n            this.next.active = !nextCheck || this.next.date.getTime() <= nextCheck.getTime();\n        }\n\n        // Update Routes\n        if (this.route.length !== 0) {\n            const queryParams: { [key: string]: any } = { ...this.activatedRoute.snapshot.queryParams };\n\n            queryParams['ngx-calendar'] = this.calendar;\n            queryParams['ngx-calendar-from'] = this.jalali.toString(this.from, { format: 'Y-M-D' });\n            queryParams['ngx-calendar-to'] = this.jalali.toString(this.to, { format: 'Y-M-D' });\n            this.router.navigate(this.route, { queryParams });\n        }\n\n        const title: string =\n            typeof this.periodTitle === 'string'\n                ? this.periodTitle\n                : Helper.DATE.jalaliPeriod(this.from, this.to).replace('-', ' تا ');\n        this.onChanged.next({\n            calendar: this.calendar,\n            period: { from: this.from, to: this.to },\n            title,\n        });\n    }\n\n    setCalendar(calendar: NgxCalendar, from?: Date, to?: Date): void {\n        const { minDate, maxDate } = this.getMinMax();\n        const checkDate = (date: Date): Date => {\n            if (minDate && date.getTime() < minDate.getTime()) date = minDate;\n            if (maxDate && date.getTime() > maxDate.getTime()) date = maxDate;\n            return date;\n        };\n\n        this.calendar = calendar;\n        this.calendarTitle = this.calendarsList[this.calendar].title;\n        const date: Date = checkDate(from || new Date());\n\n        switch (this.calendar) {\n            case 'DATE':\n            case 'WEEK':\n            case 'MONTH':\n            case 'YEAR':\n                const period: JalaliDateTimePeriod = this.calendarsList[this.calendar].method(1, date);\n                this.from = period.from;\n                this.to = period.to;\n                break;\n            case 'PERIOD':\n                this.from = checkDate(this.jalali.periodMonth(1, date).from);\n                this.to = checkDate(this.jalali.periodDay(1, checkDate(to || date)).to);\n                break;\n        }\n\n        this.updateView();\n    }\n\n    setPrevious(): void {\n        if (this.calendar === 'PERIOD' || !this.previous.active) return;\n        this.from = this.previous.date;\n        this.to = this.calendarsList[this.calendar].method(1, this.previous.date).to;\n\n        this.updateView();\n    }\n\n    setNext(): void {\n        if (this.calendar === 'PERIOD' || !this.next.active) return;\n        this.from = this.calendarsList[this.calendar].method(1, this.next.date).from;\n        this.to = this.next.date;\n\n        this.updateView();\n    }\n\n    getDate(): void {\n        const setDate = (date: INgxCalendarDate): void => {\n            this.from = this.to = date.date;\n            this.updateView();\n        };\n\n        const calendar = this.ngxCalendarService.getDate({ value: this.from, minDate: this.minDate, maxDate: this.maxDate });\n        this.container === 'DIALOG' ? calendar.dialog(setDate) : calendar.bottomSheet(setDate);\n    }\n\n    getWeek(): void {\n        const setWeek = (week: INgxCalendarWeek): void => {\n            this.from = week.period.from;\n            this.to = week.period.to;\n            this.updateView();\n        };\n\n        const calendar = this.ngxCalendarService.getWeek({ value: this.from, minDate: this.minDate, maxDate: this.maxDate });\n        this.container === 'DIALOG' ? calendar.dialog(setWeek) : calendar.bottomSheet(setWeek);\n    }\n\n    getMonth(): void {\n        const setMonth = (week: INgxCalendarMonth): void => {\n            this.from = week.period.from;\n            this.to = week.period.to;\n            this.updateView();\n        };\n\n        const calendar = this.ngxCalendarService.getMonth({\n            value: this.from,\n            minDate: this.minDate,\n            maxDate: this.maxDate,\n        });\n        this.container === 'DIALOG' ? calendar.dialog(setMonth) : calendar.bottomSheet(setMonth);\n    }\n\n    getYear(): void {\n        const setYear = (year: INgxCalendarYear): void => {\n            this.from = year.period.from;\n            this.to = year.period.to;\n            this.updateView();\n        };\n\n        const calendar = this.ngxCalendarService.getYear({\n            value: this.from,\n            minDate: this.minDate,\n            maxDate: this.maxDate,\n        });\n        this.container === 'DIALOG' ? calendar.dialog(setYear) : calendar.bottomSheet(setYear);\n    }\n\n    getPeriodFrom(): void {\n        const setDate = (date: INgxCalendarDate): void => {\n            this.from = date.date;\n            this.updateView();\n        };\n\n        const calendar = this.ngxCalendarService.getDate({\n            value: this.from,\n            minDate: this.minDate,\n            maxDate: this.to || this.maxDate,\n        });\n        this.container === 'DIALOG' ? calendar.dialog(setDate) : calendar.bottomSheet(setDate);\n    }\n\n    getPeriodTo(): void {\n        const setDate = (date: INgxCalendarDate): void => {\n            this.to = date.date;\n            this.updateView();\n        };\n\n        const calendar = this.ngxCalendarService.getDate({\n            value: this.to,\n            minDate: this.from || this.minDate,\n            maxDate: this.maxDate,\n        });\n        this.container === 'DIALOG' ? calendar.dialog(setDate) : calendar.bottomSheet(setDate);\n    }\n}\n","<!-- CALENDAR -->\n@if (calendars.length > 1) {\n<div class=\"calendar-types\" [matMenuTriggerFor]=\"calendarMenu\">\n    <span>{{ calendarTitle }}</span>\n    <mat-icon>keyboard_arrow_down</mat-icon>\n\n    <mat-menu #calendarMenu=\"matMenu\" class=\"ngx-calendar-menu\">\n        @for (item of list; track $index) {\n        <!-- CHECK CALENDAR -->\n        @if (calendars.includes(item)) {\n        <button mat-menu-item (click)=\"setCalendar(item)\" [disabled]=\"item === calendar\">\n            <mat-icon [style.margin-right]=\"'0'\" [style.margin-left]=\"'0.5rem'\" [style.font-size]=\"'18px'\">\n                {{ calendarsList[item].icon }}\n            </mat-icon>\n            <span>{{ calendarsList[item].title }}</span>\n        </button>\n        } }\n    </mat-menu>\n</div>\n}\n\n<!-- DAY, WEEK, MONTH, YEAR -->\n@if (calendar === 'DATE' || calendar === 'WEEK' || calendar === 'MONTH' || calendar === 'YEAR') {\n<div\n    class=\"calendar-title\"\n    (click)=\"\n        calendar === 'DATE' ? getDate() : calendar === 'WEEK' ? getWeek() : calendar === 'MONTH' ? getMonth() : getYear()\n    \"\n>\n    {{ periodTitle }}\n</div>\n\n<div class=\"calendar-buttons\">\n    <button mat-icon-button type=\"button\" [disabled]=\"!previous.active\" (click)=\"setPrevious()\">\n        <mat-icon>chevron_right</mat-icon>\n    </button>\n    <button mat-icon-button type=\"button\" [disabled]=\"!next.active\" (click)=\"setNext()\">\n        <mat-icon>chevron_left</mat-icon>\n    </button>\n    @switch (calendar) {\n    <!-- DATE -->\n    @case ('DATE') {\n    <button mat-icon-button type=\"button\" (click)=\"getDate()\">\n        <mat-icon>today</mat-icon>\n    </button>\n    }\n\n    <!-- WEEK -->\n    @case ('WEEK') {\n    <button mat-icon-button type=\"button\" (click)=\"getWeek()\">\n        <mat-icon>date_range</mat-icon>\n    </button>\n    }\n\n    <!-- MONTH -->\n    @case ('MONTH') {\n    <button mat-icon-button type=\"button\" (click)=\"getMonth()\">\n        <mat-icon>calendar_month</mat-icon>\n    </button>\n    }\n\n    <!-- YEAR -->\n    @case ('YEAR') {\n    <button mat-icon-button type=\"button\" (click)=\"getYear()\">\n        <mat-icon>calendar_today</mat-icon>\n    </button>\n    } }\n</div>\n}\n\n<!-- PERIOD -->\n@if (calendar === 'PERIOD') {\n<div class=\"calendar-title\" (click)=\"getPeriodFrom()\">{{ periodTitle[0] }}</div>\n<div class=\"calendar-buttons square\">\n    <button mat-icon-button type=\"button\" (click)=\"getPeriodFrom()\">\n        <mat-icon>today</mat-icon>\n    </button>\n</div>\n<div class=\"calendar-title\" (click)=\"getPeriodTo()\">{{ periodTitle[1] }}</div>\n<div class=\"calendar-buttons\">\n    <button mat-icon-button type=\"button\" (click)=\"getPeriodTo()\">\n        <mat-icon>today</mat-icon>\n    </button>\n</div>\n}\n","import { Component, EventEmitter, HostBinding, Input, OnInit, Output, ChangeDetectionStrategy } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport { MatIconButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\n\nimport { Helper } from '@webilix/helper-library';\nimport { JalaliDateTime } from '@webilix/jalali-date-time';\n\nimport { INgxCalendarDay } from './ngx-calendar-day.interface';\n\n@Component({\n    selector: 'ngx-calendar-day',\n    imports: [MatIcon, MatIconButton],\n    templateUrl: './ngx-calendar-day.component.html',\n    changeDetection: ChangeDetectionStrategy.Eager,\n    styleUrl: './ngx-calendar-day.component.scss',\n})\nexport class NgxCalendarDayComponent implements OnInit {\n    @HostBinding('className') protected className: string = 'ngx-calendar-m3';\n    @HostBinding('style.--ngx-calendar-m3-width') protected cssWidth = '';\n    @HostBinding('style.--ngx-calendar-m3-height') protected cssHeight = '';\n\n    @Input({ required: false }) width?: string;\n    @Input({ required: false }) height: string = '40px';\n    @Input({ required: false }) route: string[] = [];\n    @Output() onChanged: EventEmitter<INgxCalendarDay> = new EventEmitter<INgxCalendarDay>();\n\n    public day: string = '';\n    public title: string = '';\n\n    public view?: 'MONTH' | 'DAY';\n    public selected?: { month: number; title: string };\n\n    public months: string[][] = [\n        ['فروردین', 'اردیبهشت', 'خرداد'],\n        ['تیر', 'مرداد', 'شهریور'],\n        ['مهر', 'آبان', 'آذر'],\n        ['دی', 'بهمن', 'اسفند'],\n    ];\n\n    public days: (number | null)[][] = [];\n\n    private jalali = JalaliDateTime();\n\n    constructor(\n        private readonly activatedRoute: ActivatedRoute,\n        private readonly router: Router,\n    ) {}\n\n    ngOnInit(): void {\n        this.cssWidth = this.width || '100%';\n        this.cssHeight = this.height;\n\n        const isDay = (day: string): boolean => {\n            if (!Helper.IS.string(day) || day.length !== 5) return false;\n            if (!new RegExp('^[0-9]{2}-[0-9]{2}$').test(day)) return false;\n\n            const [m, d] = day.split('-').map((v) => +v);\n            if (m < 1 || m > 12) return false;\n            if (d < 1 || d > 31) return false;\n            if (m > 6 && d === 31) return false;\n\n            return true;\n        };\n\n        const queryParams: { [key: string]: any } = { ...this.activatedRoute.snapshot.queryParams };\n        this.day =\n            this.route.length > 0 && isDay(queryParams['ngx-calendar-day'])\n                ? queryParams['ngx-calendar-day']\n                : this.jalali.toString(new Date(), { format: 'M-D' });\n\n        this.updateView();\n    }\n\n    updateView(): void {\n        // Update Routes\n        if (this.route.length !== 0) {\n            const queryParams: { [key: string]: any } = { ...this.activatedRoute.snapshot.queryParams };\n\n            queryParams['ngx-calendar-day'] = this.day;\n            this.router.navigate(this.route, { queryParams });\n        }\n\n        const [month, day] = this.day.split('-').map((v) => +v);\n        this.title = Helper.STRING.changeNumbers(`${day} ${this.months.flat()[month - 1]}`);\n\n        this.onChanged.next({ day: this.day, title: this.title });\n    }\n\n    setPrevious(): void {\n        let [month, day] = this.day.split('-').map((v) => +v);\n        day--;\n\n        if (day < 1) {\n            month--;\n            if (month < 1) month = 12;\n            day = month < 7 ? 31 : 30;\n        }\n\n        this.day = `${month.toString().padStart(2, '0')}-${day.toString().padStart(2, '0')}`;\n        this.updateView();\n    }\n\n    setNext(): void {\n        let [month, day] = this.day.split('-').map((v) => +v);\n        day++;\n\n        if ((month < 7 && day > 31) || (month > 6 && day > 30)) {\n            month++;\n            if (month > 12) month = 1;\n            day = 1;\n        }\n\n        this.day = `${month.toString().padStart(2, '0')}-${day.toString().padStart(2, '0')}`;\n        this.updateView();\n    }\n\n    setMonth(month: number): void {\n        if (this.view !== 'MONTH') return;\n        if (month < 1 || month > 12) return;\n\n        this.selected = { month, title: this.months.flat()[month - 1] };\n        this.days = [\n            [1, 2, 3, 4, 5, 6, 7],\n            [8, 9, 10, 11, 12, 13, 14],\n            [15, 16, 17, 18, 19, 20, 21],\n            [22, 23, 24, 25, 26, 27, 28],\n            [29, 30, this.selected.month < 7 ? 31 : null, null, null, null, null],\n        ];\n\n        this.view = 'DAY';\n    }\n\n    setDay(day: number | null): void {\n        if (this.view !== 'DAY' || !day || !this.selected) return;\n        if (day < 1 || day > 31) return;\n        if (this.selected.month > 6 && day > 30) return;\n\n        this.day = `${this.selected.month.toString().padStart(2, '0')}-${day.toString().padStart(2, '0')}`;\n        this.updateView();\n\n        this.view = undefined;\n    }\n}\n","<div class=\"calendar-title\" (click)=\"view = 'MONTH'\">\n    {{ title }}\n</div>\n\n<div class=\"calendar-buttons\">\n    <button mat-icon-button type=\"button\" (click)=\"setPrevious()\">\n        <mat-icon>chevron_right</mat-icon>\n    </button>\n    <button mat-icon-button type=\"button\" (click)=\"setNext()\">\n        <mat-icon>chevron_left</mat-icon>\n    </button>\n\n    <button mat-icon-button type=\"button\" (click)=\"view = 'MONTH'\">\n        <mat-icon>calendar_month</mat-icon>\n    </button>\n</div>\n\n@if (view) {\n<div class=\"calendar-background\" (click)=\"view = undefined\"></div>\n<div class=\"calendar-view\">\n    @switch (view) {\n    <!-- MONTH -->\n    @case ('MONTH') {\n    <!-- SEASON -->\n    @for (season of months; track $index; let $sIndex = $index) {\n    <div class=\"months\">\n        @for (month of season; track $index; let $mIndex = $index) {\n        <div class=\"month\" (click)=\"setMonth($sIndex * 3 + $mIndex + 1)\">{{ month }}</div>\n        }\n    </div>\n    } }\n    <!-- DAY -->\n    @case ('DAY') {\n    <div class=\"header\">{{ selected?.title }}</div>\n    <!-- WEEK -->\n    @for (week of days; track $index) {\n    <div class=\"week\">\n        @for (day of week; track $index) {\n        <div class=\"day\" [class.empty]=\"!day\" (click)=\"setDay(day)\">{{ day }}</div>\n        }\n    </div>\n    } } }\n</div>\n}\n","/*\n * Public API Surface of ngx-calendar-m3\n */\n\nexport * from './lib/components/date/ngx-calendar-date.component';\nexport * from './lib/components/moment/ngx-calendar-moment.component';\nexport * from './lib/components/week/ngx-calendar-week.component';\nexport * from './lib/components/month/ngx-calendar-month.component';\nexport * from './lib/components/year/ngx-calendar-year.component';\n\nexport * from './lib/ngx-calendar.component';\nexport * from './lib/ngx-calendar.interface';\nexport * from './lib/ngx-calendar.service';\n\n// DAY (MM-DD)\nexport * from './lib/day/ngx-calendar-day.component';\nexport * from './lib/day/ngx-calendar-day.interface';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2.NgxCalendarService","i3"],"mappings":"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"}