{"version":3,"file":"ng-bootstrap-ng-bootstrap-datepicker.mjs","sources":["../../../src/datepicker/ngb-date.ts","../../../src/datepicker/ngb-calendar.ts","../../../src/datepicker/datepicker-tools.ts","../../../src/datepicker/datepicker-i18n.ts","../../../src/datepicker/datepicker-service.ts","../../../src/datepicker/datepicker-view-model.ts","../../../src/datepicker/datepicker-config.ts","../../../src/datepicker/adapters/ngb-date-adapter.ts","../../../src/datepicker/datepicker-keyboard-service.ts","../../../src/datepicker/datepicker-day-view.ts","../../../src/datepicker/datepicker-navigation-select.ts","../../../src/datepicker/datepicker-navigation.ts","../../../src/datepicker/datepicker.ts","../../../src/datepicker/ngb-date-parser-formatter.ts","../../../src/datepicker/datepicker-input-config.ts","../../../src/datepicker/datepicker-input.ts","../../../src/datepicker/hijri/ngb-calendar-hijri.ts","../../../src/datepicker/hijri/ngb-calendar-islamic-civil.ts","../../../src/datepicker/hijri/ngb-calendar-islamic-umalqura.ts","../../../src/datepicker/jalali/jalali.ts","../../../src/datepicker/jalali/ngb-calendar-persian.ts","../../../src/datepicker/hebrew/hebrew.ts","../../../src/datepicker/hebrew/ngb-calendar-hebrew.ts","../../../src/datepicker/hebrew/datepicker-i18n-hebrew.ts","../../../src/datepicker/buddhist/buddhist.ts","../../../src/datepicker/buddhist/ngb-calendar-buddhist.ts","../../../src/datepicker/ethiopian/ethiopian.ts","../../../src/datepicker/ethiopian/ngb-calendar-ethiopian.ts","../../../src/datepicker/ethiopian/datepicker-i18n-amharic.ts","../../../src/datepicker/adapters/ngb-date-native-adapter.ts","../../../src/datepicker/adapters/ngb-date-native-utc-adapter.ts","../../../src/datepicker/datepicker.module.ts","../../../src/datepicker/ng-bootstrap-ng-bootstrap-datepicker.ts"],"sourcesContent":["import { NgbDateStruct } from './ngb-date-struct';\nimport { isInteger } from './_ngb-ngbootstrap-utilities.mjs';\n\n/**\n * A simple class that represents a date that datepicker also uses internally.\n *\n * It is the implementation of the `NgbDateStruct` interface that adds some convenience methods,\n * like `.equals()`, `.before()`, etc.\n *\n * All datepicker APIs consume `NgbDateStruct`, but return `NgbDate`.\n *\n * In many cases it is simpler to manipulate these objects together with\n * [`NgbCalendar`](#/components/datepicker/api#NgbCalendar) than native JS Dates.\n *\n * See the [date format overview](#/components/datepicker/overview#date-model) for more details.\n *\n * @since 3.0.0\n */\nexport class NgbDate implements NgbDateStruct {\n\t/**\n\t * The year, for example 2016\n\t */\n\tyear: number;\n\n\t/**\n\t * The month, for example 1=Jan ... 12=Dec as in ISO 8601\n\t */\n\tmonth: number;\n\n\t/**\n\t * The day of month, starting with 1\n\t */\n\tday: number;\n\n\t/**\n\t * A **static method** that creates a new date object from the `NgbDateStruct`,\n\t *\n\t * ex. `NgbDate.from({year: 2000, month: 5, day: 1})`.\n\t *\n\t * If the `date` is already of `NgbDate` type, the method will return the same object.\n\t */\n\tstatic from(date?: NgbDateStruct | null): NgbDate | null {\n\t\tif (date instanceof NgbDate) {\n\t\t\treturn date;\n\t\t}\n\t\treturn date ? new NgbDate(date.year, date.month, date.day) : null;\n\t}\n\n\tconstructor(year: number, month: number, day: number) {\n\t\tthis.year = isInteger(year) ? year : <any>null;\n\t\tthis.month = isInteger(month) ? month : <any>null;\n\t\tthis.day = isInteger(day) ? day : <any>null;\n\t}\n\n\t/**\n\t * Checks if the current date is equal to another date.\n\t */\n\tequals(other?: NgbDateStruct | null): boolean {\n\t\treturn other != null && this.year === other.year && this.month === other.month && this.day === other.day;\n\t}\n\n\t/**\n\t * Checks if the current date is before another date.\n\t */\n\tbefore(other?: NgbDateStruct | null): boolean {\n\t\tif (!other) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (this.year === other.year) {\n\t\t\tif (this.month === other.month) {\n\t\t\t\treturn this.day === other.day ? false : this.day < other.day;\n\t\t\t} else {\n\t\t\t\treturn this.month < other.month;\n\t\t\t}\n\t\t} else {\n\t\t\treturn this.year < other.year;\n\t\t}\n\t}\n\n\t/**\n\t * Checks if the current date is after another date.\n\t */\n\tafter(other?: NgbDateStruct | null): boolean {\n\t\tif (!other) {\n\t\t\treturn false;\n\t\t}\n\t\tif (this.year === other.year) {\n\t\t\tif (this.month === other.month) {\n\t\t\t\treturn this.day === other.day ? false : this.day > other.day;\n\t\t\t} else {\n\t\t\t\treturn this.month > other.month;\n\t\t\t}\n\t\t} else {\n\t\t\treturn this.year > other.year;\n\t\t}\n\t}\n}\n","import { NgbDate } from './ngb-date';\nimport { Service } from '@angular/core';\nimport { isInteger } from './_ngb-ngbootstrap-utilities.mjs';\n\nexport function fromJSDate(jsDate: Date) {\n\treturn new NgbDate(jsDate.getFullYear(), jsDate.getMonth() + 1, jsDate.getDate());\n}\nexport function toJSDate(date: NgbDate) {\n\tconst jsDate = new Date(date.year, date.month - 1, date.day, 12);\n\t// this is done avoid 30 -> 1930 conversion\n\tif (!isNaN(jsDate.getTime())) {\n\t\tjsDate.setFullYear(date.year);\n\t}\n\treturn jsDate;\n}\n\nexport type NgbPeriod = 'y' | 'm' | 'd';\n\nexport function NGB_DATEPICKER_CALENDAR_FACTORY() {\n\treturn new NgbCalendarGregorian();\n}\n\n/**\n * A service that represents the calendar used by the datepicker.\n *\n * The default implementation uses the Gregorian calendar. You can inject it in your own\n * implementations if necessary to simplify `NgbDate` calculations.\n */\n@Service({ factory: NGB_DATEPICKER_CALENDAR_FACTORY })\nexport abstract class NgbCalendar {\n\t/**\n\t * Returns the number of days per week.\n\t */\n\tabstract getDaysPerWeek(): number;\n\n\t/**\n\t * Returns an array of months per year.\n\t *\n\t * With default calendar we use ISO 8601 and return [1, 2, ..., 12];\n\t */\n\tabstract getMonths(year?: number): number[];\n\n\t/**\n\t * Returns the number of weeks per month.\n\t */\n\tabstract getWeeksPerMonth(): number;\n\n\t/**\n\t * Returns the weekday number for a given day.\n\t *\n\t * With the default calendar we use ISO 8601: 'weekday' is 1=Mon ... 7=Sun\n\t */\n\tabstract getWeekday(date: NgbDate): number;\n\n\t/**\n\t * Adds a number of years, months or days to a given date.\n\t *\n\t * * `period` can be `y`, `m` or `d` and defaults to day.\n\t * * `number` defaults to 1.\n\t *\n\t * Always returns a new date.\n\t */\n\tabstract getNext(date: NgbDate, period?: NgbPeriod, number?: number): NgbDate;\n\n\t/**\n\t * Subtracts a number of years, months or days from a given date.\n\t *\n\t * * `period` can be `y`, `m` or `d` and defaults to day.\n\t * * `number` defaults to 1.\n\t *\n\t * Always returns a new date.\n\t */\n\tabstract getPrev(date: NgbDate, period?: NgbPeriod, number?: number): NgbDate;\n\n\t/**\n\t * Returns the week number for a given week.\n\t */\n\tabstract getWeekNumber(week: readonly NgbDate[], firstDayOfWeek: number): number;\n\n\t/**\n\t * Returns the today's date.\n\t */\n\tabstract getToday(): NgbDate;\n\n\t/**\n\t * Checks if a date is valid in the current calendar.\n\t */\n\tabstract isValid(date?: NgbDate | null): boolean;\n}\n\n@Service({ autoProvided: false })\nexport class NgbCalendarGregorian extends NgbCalendar {\n\tgetDaysPerWeek() {\n\t\treturn 7;\n\t}\n\n\tgetMonths() {\n\t\treturn [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];\n\t}\n\n\tgetWeeksPerMonth() {\n\t\treturn 6;\n\t}\n\n\tgetNext(date: NgbDate, period: NgbPeriod = 'd', number = 1) {\n\t\tlet jsDate = toJSDate(date);\n\t\tlet checkMonth = true;\n\t\tlet expectedMonth = jsDate.getMonth();\n\n\t\tswitch (period) {\n\t\t\tcase 'y':\n\t\t\t\tjsDate.setFullYear(jsDate.getFullYear() + number);\n\t\t\t\tbreak;\n\t\t\tcase 'm':\n\t\t\t\texpectedMonth += number;\n\t\t\t\tjsDate.setMonth(expectedMonth);\n\t\t\t\texpectedMonth = expectedMonth % 12;\n\t\t\t\tif (expectedMonth < 0) {\n\t\t\t\t\texpectedMonth = expectedMonth + 12;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'd':\n\t\t\t\tjsDate.setDate(jsDate.getDate() + number);\n\t\t\t\tcheckMonth = false;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\treturn date;\n\t\t}\n\n\t\tif (checkMonth && jsDate.getMonth() !== expectedMonth) {\n\t\t\t// this means the destination month has less days than the initial month\n\t\t\t// let's go back to the end of the previous month:\n\t\t\tjsDate.setDate(0);\n\t\t}\n\n\t\treturn fromJSDate(jsDate);\n\t}\n\n\tgetPrev(date: NgbDate, period: NgbPeriod = 'd', number = 1) {\n\t\treturn this.getNext(date, period, -number);\n\t}\n\n\tgetWeekday(date: NgbDate) {\n\t\tlet jsDate = toJSDate(date);\n\t\tlet day = jsDate.getDay();\n\t\t// in JS Date Sun=0, in ISO 8601 Sun=7\n\t\treturn day === 0 ? 7 : day;\n\t}\n\n\tgetWeekNumber(week: readonly NgbDate[], firstDayOfWeek: number) {\n\t\t// in JS Date Sun=0, in ISO 8601 Sun=7\n\t\tif (firstDayOfWeek === 7) {\n\t\t\tfirstDayOfWeek = 0;\n\t\t}\n\n\t\tconst thursdayIndex = (4 + 7 - firstDayOfWeek) % 7;\n\t\tlet date = week[thursdayIndex];\n\n\t\tconst jsDate = toJSDate(date);\n\t\tjsDate.setDate(jsDate.getDate() + 4 - (jsDate.getDay() || 7)); // Thursday\n\t\tconst time = jsDate.getTime();\n\t\tjsDate.setMonth(0); // Compare with Jan 1\n\t\tjsDate.setDate(1);\n\t\treturn Math.floor(Math.round((time - jsDate.getTime()) / 86400000) / 7) + 1;\n\t}\n\n\tgetToday(): NgbDate {\n\t\treturn fromJSDate(new Date());\n\t}\n\n\tisValid(date?: NgbDate | null): boolean {\n\t\tif (!date || !isInteger(date.year) || !isInteger(date.month) || !isInteger(date.day)) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// year 0 doesn't exist in Gregorian calendar\n\t\tif (date.year === 0) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst jsDate = toJSDate(date);\n\n\t\treturn (\n\t\t\t!isNaN(jsDate.getTime()) &&\n\t\t\tjsDate.getFullYear() === date.year &&\n\t\t\tjsDate.getMonth() + 1 === date.month &&\n\t\t\tjsDate.getDate() === date.day\n\t\t);\n\t}\n}\n","import { NgbDate } from './ngb-date';\nimport { DatepickerViewModel, DayViewModel, MonthViewModel } from './datepicker-view-model';\nimport { NgbCalendar } from './ngb-calendar';\nimport { NgbDatepickerI18n } from './datepicker-i18n';\n\nexport function isChangedDate(prev?: NgbDate | null, next?: NgbDate | null): boolean {\n\treturn !dateComparator(prev, next);\n}\n\nexport function isChangedMonth(prev?: NgbDate | null, next?: NgbDate | null): boolean {\n\treturn !prev && !next ? false : !prev || !next ? true : prev.year !== next.year || prev.month !== next.month;\n}\n\nexport function dateComparator(prev?: NgbDate | null, next?: NgbDate | null): boolean {\n\treturn (!prev && !next) || (!!prev && !!next && prev.equals(next));\n}\n\nexport function checkMinBeforeMax(minDate?: NgbDate | null, maxDate?: NgbDate | null): void {\n\tif (maxDate && minDate && maxDate.before(minDate)) {\n\t\tthrow new Error(`'maxDate' ${maxDate} should be greater than 'minDate' ${minDate}`);\n\t}\n}\n\nexport function checkDateInRange(\n\tdate?: NgbDate | null,\n\tminDate?: NgbDate | null,\n\tmaxDate?: NgbDate | null,\n): NgbDate | null {\n\tif (date && minDate && date.before(minDate)) {\n\t\treturn minDate;\n\t}\n\tif (date && maxDate && date.after(maxDate)) {\n\t\treturn maxDate;\n\t}\n\n\treturn date || null;\n}\n\nexport function isDateSelectable(date: NgbDate | null | undefined, state: DatepickerViewModel) {\n\tconst { minDate, maxDate, disabled, markDisabled } = state;\n\treturn !(\n\t\tdate === null ||\n\t\tdate === undefined ||\n\t\tdisabled ||\n\t\t(markDisabled && markDisabled(date, { year: date.year, month: date.month })) ||\n\t\t(minDate && date.before(minDate)) ||\n\t\t(maxDate && date.after(maxDate))\n\t);\n}\n\nexport function generateSelectBoxMonths(\n\tcalendar: NgbCalendar,\n\tdate: NgbDate,\n\tminDate: NgbDate | null,\n\tmaxDate: NgbDate | null,\n) {\n\tif (!date) {\n\t\treturn [];\n\t}\n\n\tlet months = calendar.getMonths(date.year);\n\n\tif (minDate && date.year === minDate.year) {\n\t\tconst index = months.findIndex((month) => month === minDate.month);\n\t\tmonths = months.slice(index);\n\t}\n\n\tif (maxDate && date.year === maxDate.year) {\n\t\tconst index = months.findIndex((month) => month === maxDate.month);\n\t\tmonths = months.slice(0, index + 1);\n\t}\n\n\treturn months;\n}\n\nexport function generateSelectBoxYears(date: NgbDate, minDate: NgbDate | null, maxDate: NgbDate | null) {\n\tif (!date) {\n\t\treturn [];\n\t}\n\n\tconst start = minDate ? Math.max(minDate.year, date.year - 500) : date.year - 10;\n\tconst end = maxDate ? Math.min(maxDate.year, date.year + 500) : date.year + 10;\n\n\tconst length = end - start + 1;\n\tconst numbers = Array(length);\n\tfor (let i = 0; i < length; i++) {\n\t\tnumbers[i] = start + i;\n\t}\n\n\treturn numbers;\n}\n\nexport function nextMonthDisabled(calendar: NgbCalendar, date: NgbDate, maxDate: NgbDate | null) {\n\tconst nextDate = Object.assign(calendar.getNext(date, 'm'), { day: 1 });\n\treturn maxDate != null && nextDate.after(maxDate);\n}\n\nexport function prevMonthDisabled(calendar: NgbCalendar, date: NgbDate, minDate: NgbDate | null) {\n\tconst prevDate = Object.assign(calendar.getPrev(date, 'm'), { day: 1 });\n\treturn (\n\t\tminDate != null &&\n\t\t((prevDate.year === minDate.year && prevDate.month < minDate.month) ||\n\t\t\t(prevDate.year < minDate.year && minDate.month === 1))\n\t);\n}\n\nexport function buildMonths(\n\tcalendar: NgbCalendar,\n\tdate: NgbDate,\n\tstate: DatepickerViewModel,\n\ti18n: NgbDatepickerI18n,\n\tforce: boolean,\n): MonthViewModel[] {\n\tconst { displayMonths, months } = state;\n\t// move old months to a temporary array\n\tconst monthsToReuse = months.splice(0, months.length);\n\n\t// generate new first dates, nullify or reuse months\n\tconst firstDates = Array.from({ length: displayMonths }, (_, i) => {\n\t\tconst firstDate = Object.assign(calendar.getNext(date, 'm', i), { day: 1 });\n\t\tmonths[i] = <any>null;\n\n\t\tif (!force) {\n\t\t\tconst reusedIndex = monthsToReuse.findIndex((month) => month.firstDate.equals(firstDate));\n\t\t\t// move reused month back to months\n\t\t\tif (reusedIndex !== -1) {\n\t\t\t\tmonths[i] = monthsToReuse.splice(reusedIndex, 1)[0];\n\t\t\t}\n\t\t}\n\n\t\treturn firstDate;\n\t});\n\n\t// rebuild nullified months\n\tfirstDates.forEach((firstDate, i) => {\n\t\tif (months[i] === null) {\n\t\t\tmonths[i] = buildMonth(calendar, firstDate, state, i18n, monthsToReuse.shift() || ({} as MonthViewModel));\n\t\t}\n\t});\n\n\treturn months;\n}\n\nexport function buildMonth(\n\tcalendar: NgbCalendar,\n\tdate: NgbDate,\n\tstate: DatepickerViewModel,\n\ti18n: NgbDatepickerI18n,\n\tmonth: MonthViewModel = {} as MonthViewModel,\n): MonthViewModel {\n\tconst {\n\t\tdayTemplateData,\n\t\tminDate,\n\t\tmaxDate,\n\t\tfirstDayOfWeek,\n\t\tmarkDisabled,\n\t\toutsideDays,\n\t\tweekdayWidth,\n\t\tweekdaysVisible,\n\t} = state;\n\tconst calendarToday = calendar.getToday();\n\n\tmonth.firstDate = <any>null;\n\tmonth.lastDate = <any>null;\n\tmonth.number = date.month;\n\tmonth.year = date.year;\n\tmonth.weeks = month.weeks || [];\n\tmonth.weekdays = month.weekdays || [];\n\n\tdate = getFirstViewDate(calendar, date, firstDayOfWeek);\n\n\t// clearing weekdays, if not visible\n\tif (!weekdaysVisible) {\n\t\tmonth.weekdays.length = 0;\n\t}\n\n\t// month has weeks\n\tfor (let week = 0; week < calendar.getWeeksPerMonth(); week++) {\n\t\tlet weekObject = month.weeks[week];\n\t\tif (!weekObject) {\n\t\t\tweekObject = month.weeks[week] = { number: 0, days: [], collapsed: true };\n\t\t}\n\t\tconst days = weekObject.days;\n\n\t\t// week has days\n\t\tfor (let day = 0; day < calendar.getDaysPerWeek(); day++) {\n\t\t\tif (week === 0 && weekdaysVisible) {\n\t\t\t\tmonth.weekdays[day] = i18n.getWeekdayLabel(calendar.getWeekday(date), weekdayWidth);\n\t\t\t}\n\n\t\t\tconst newDate = new NgbDate(date.year, date.month, date.day);\n\t\t\tconst nextDate = calendar.getNext(newDate);\n\n\t\t\tconst ariaLabel = i18n.getDayAriaLabel(newDate);\n\n\t\t\t// marking date as disabled\n\t\t\tlet disabled = !!((minDate && newDate.before(minDate)) || (maxDate && newDate.after(maxDate)));\n\t\t\tif (!disabled && markDisabled) {\n\t\t\t\tdisabled = markDisabled(newDate, { month: month.number, year: month.year });\n\t\t\t}\n\n\t\t\t// today\n\t\t\tlet today = newDate.equals(calendarToday);\n\n\t\t\t// adding user-provided data to the context\n\t\t\tlet contextUserData = dayTemplateData\n\t\t\t\t? dayTemplateData(newDate, { month: month.number, year: month.year })\n\t\t\t\t: undefined;\n\n\t\t\t// saving first date of the month\n\t\t\tif (month.firstDate === null && newDate.month === month.number) {\n\t\t\t\tmonth.firstDate = newDate;\n\t\t\t}\n\n\t\t\t// saving last date of the month\n\t\t\tif (newDate.month === month.number && nextDate.month !== month.number) {\n\t\t\t\tmonth.lastDate = newDate;\n\t\t\t}\n\n\t\t\tlet dayObject = days[day];\n\t\t\tif (!dayObject) {\n\t\t\t\tdayObject = days[day] = {} as DayViewModel;\n\t\t\t}\n\t\t\tdayObject.date = newDate;\n\t\t\tdayObject.context = Object.assign(dayObject.context || {}, {\n\t\t\t\t$implicit: newDate,\n\t\t\t\tdate: newDate,\n\t\t\t\tdata: contextUserData,\n\t\t\t\tcurrentMonth: month.number,\n\t\t\t\tcurrentYear: month.year,\n\t\t\t\tdisabled,\n\t\t\t\tfocused: false,\n\t\t\t\tselected: false,\n\t\t\t\ttoday,\n\t\t\t});\n\t\t\tdayObject.tabindex = -1;\n\t\t\tdayObject.ariaLabel = ariaLabel;\n\t\t\tdayObject.hidden = false;\n\n\t\t\tdate = nextDate;\n\t\t}\n\n\t\tweekObject.number = calendar.getWeekNumber(\n\t\t\tdays.map((day) => day.date),\n\t\t\tfirstDayOfWeek,\n\t\t);\n\n\t\t// marking week as collapsed\n\t\tweekObject.collapsed =\n\t\t\toutsideDays === 'collapsed' &&\n\t\t\tdays[0].date.month !== month.number &&\n\t\t\tdays[days.length - 1].date.month !== month.number;\n\t}\n\n\treturn month;\n}\n\nexport function getFirstViewDate(calendar: NgbCalendar, date: NgbDate, firstDayOfWeek: number): NgbDate {\n\tconst daysPerWeek = calendar.getDaysPerWeek();\n\tconst firstMonthDate = new NgbDate(date.year, date.month, 1);\n\tconst dayOfWeek = calendar.getWeekday(firstMonthDate) % daysPerWeek;\n\treturn calendar.getPrev(firstMonthDate, 'd', (daysPerWeek + dayOfWeek - firstDayOfWeek) % daysPerWeek);\n}\n","import { inject, Service, LOCALE_ID } from '@angular/core';\nimport { formatDate } from '@angular/common';\nimport { NgbDateStruct } from './ngb-date-struct';\n\n/**\n * A service supplying i18n data to the datepicker component.\n *\n * The default implementation of this service uses the Angular locale and registered locale data for\n * weekdays and month names (as explained in the Angular i18n guide).\n *\n * It also provides a way to i18n data that depends on calendar calculations, like aria labels, day, week and year\n * numerals. For other static labels the datepicker uses the default Angular i18n.\n *\n * See the [i18n demo](#/components/datepicker/examples#i18n) and\n * [Hebrew calendar demo](#/components/datepicker/calendars#hebrew) on how to extend this class and define\n * a custom provider for i18n.\n */\n@Service({\n\tfactory: () => new NgbDatepickerI18nDefault(),\n})\nexport abstract class NgbDatepickerI18n {\n\t/**\n\t * Returns the weekday label using specified width\n\t *\n\t * @since 9.1.0\n\t */\n\tabstract getWeekdayLabel(weekday: number, width?: Exclude<Intl.DateTimeFormatOptions['weekday'], undefined>): string;\n\n\t/**\n\t * Returns the short month name to display in the date picker navigation.\n\t *\n\t * With default calendar we use ISO 8601: 'month' is 1=Jan ... 12=Dec.\n\t */\n\tabstract getMonthShortName(month: number, year?: number): string;\n\n\t/**\n\t * Returns the full month name to display in the date picker navigation.\n\t *\n\t * With default calendar we use ISO 8601: 'month' is 1=Jan ... 12=Dec.\n\t */\n\tabstract getMonthFullName(month: number, year?: number): string;\n\n\t/**\n\t * Returns the text label to display above the day view.\n\t *\n\t * @since 9.1.0\n\t */\n\tgetMonthLabel(date: NgbDateStruct): string {\n\t\treturn `${this.getMonthFullName(date.month, date.year)} ${this.getYearNumerals(date.year)}`;\n\t}\n\n\t/**\n\t * Returns the value of the `aria-label` attribute for a specific date.\n\t *\n\t * @since 2.0.0\n\t */\n\tabstract getDayAriaLabel(date: NgbDateStruct): string;\n\n\t/**\n\t * Returns the textual representation of a day that is rendered in a day cell.\n\t *\n\t * @since 3.0.0\n\t */\n\tgetDayNumerals(date: NgbDateStruct): string {\n\t\treturn `${date.day}`;\n\t}\n\n\t/**\n\t * Returns the textual representation of a week number rendered by datepicker.\n\t *\n\t * @since 3.0.0\n\t */\n\tgetWeekNumerals(weekNumber: number): string {\n\t\treturn `${weekNumber}`;\n\t}\n\n\t/**\n\t * Returns the textual representation of a year that is rendered in the datepicker year select box.\n\t *\n\t * @since 3.0.0\n\t */\n\tgetYearNumerals(year: number): string {\n\t\treturn `${year}`;\n\t}\n\n\t/**\n\t * Returns the week label to display in the heading of the month view.\n\t *\n\t * @since 9.1.0\n\t */\n\tgetWeekLabel(): string {\n\t\treturn '';\n\t}\n}\n\n/**\n * A service providing default implementation for the datepicker i18n.\n * It can be used as a base implementation if necessary.\n *\n * @since 9.1.0\n */\n@Service({ autoProvided: false })\nexport class NgbDatepickerI18nDefault extends NgbDatepickerI18n {\n\tprivate _locale = inject(LOCALE_ID);\n\n\tprivate _monthsShort = [...Array(12).keys()].map((month) =>\n\t\tIntl.DateTimeFormat(this._locale, { month: 'short', timeZone: 'UTC' }).format(Date.UTC(2000, month)),\n\t);\n\tprivate _monthsFull = [...Array(12).keys()].map((month) =>\n\t\tIntl.DateTimeFormat(this._locale, { month: 'long', timeZone: 'UTC' }).format(Date.UTC(2000, month)),\n\t);\n\n\tgetWeekdayLabel(\n\t\tweekday: number,\n\t\twidth: Exclude<Intl.DateTimeFormatOptions['weekday'], undefined> = 'narrow',\n\t): string {\n\t\t// 1 MAY 2000 is a Monday\n\t\tconst weekdays = [1, 2, 3, 4, 5, 6, 7].map((day) =>\n\t\t\tIntl.DateTimeFormat(this._locale, { weekday: width, timeZone: 'UTC' }).format(Date.UTC(2000, 4, day)),\n\t\t);\n\n\t\t// `weekday` is 1 (Mon) to 7 (Sun)\n\t\treturn weekdays[weekday - 1] || '';\n\t}\n\n\tgetMonthShortName(month: number): string {\n\t\treturn this._monthsShort[month - 1] || '';\n\t}\n\n\tgetMonthFullName(month: number): string {\n\t\treturn this._monthsFull[month - 1] || '';\n\t}\n\n\tgetDayAriaLabel(date: NgbDateStruct): string {\n\t\tconst jsDate = new Date(date.year, date.month - 1, date.day);\n\t\treturn formatDate(jsDate, 'fullDate', this._locale);\n\t}\n}\n","import { NgbCalendar } from './ngb-calendar';\nimport { NgbDate } from './ngb-date';\nimport { NgbDateStruct } from './ngb-date-struct';\nimport { DatepickerViewModel, NgbDayTemplateData, NgbMarkDisabled } from './datepicker-view-model';\nimport { inject, Service } from '@angular/core';\nimport { isInteger, toInteger } from './_ngb-ngbootstrap-utilities.mjs';\nimport { Observable, Subject } from 'rxjs';\nimport {\n\tbuildMonths,\n\tcheckDateInRange,\n\tcheckMinBeforeMax,\n\tgenerateSelectBoxMonths,\n\tgenerateSelectBoxYears,\n\tisChangedDate,\n\tisChangedMonth,\n\tisDateSelectable,\n\tnextMonthDisabled,\n\tprevMonthDisabled,\n} from './datepicker-tools';\n\nimport { filter } from 'rxjs/operators';\nimport { NgbDatepickerI18n } from './datepicker-i18n';\n\nexport type DatepickerServiceInputs = Partial<{\n\tdayTemplateData: NgbDayTemplateData;\n\tdisplayMonths: number;\n\tdisabled: boolean;\n\tfirstDayOfWeek: number;\n\tfocusVisible: boolean;\n\tmarkDisabled: NgbMarkDisabled;\n\tmaxDate: NgbDate | null;\n\tminDate: NgbDate | null;\n\tnavigation: 'select' | 'arrows' | 'none';\n\toutsideDays: 'visible' | 'collapsed' | 'hidden';\n\tweekdays: Exclude<Intl.DateTimeFormatOptions['weekday'], undefined> | boolean;\n}>;\n\n@Service({ autoProvided: false })\nexport class NgbDatepickerService {\n\tprivate _VALIDATORS: {\n\t\t[K in keyof DatepickerServiceInputs]: (v: DatepickerServiceInputs[K]) => Partial<DatepickerViewModel> | void;\n\t} = {\n\t\tdayTemplateData: (dayTemplateData: NgbDayTemplateData) => {\n\t\t\tif (this._state.dayTemplateData !== dayTemplateData) {\n\t\t\t\treturn { dayTemplateData };\n\t\t\t}\n\t\t},\n\t\tdisplayMonths: (displayMonths: number) => {\n\t\t\tdisplayMonths = toInteger(displayMonths);\n\t\t\tif (isInteger(displayMonths) && displayMonths > 0 && this._state.displayMonths !== displayMonths) {\n\t\t\t\treturn { displayMonths };\n\t\t\t}\n\t\t},\n\t\tdisabled: (disabled: boolean) => {\n\t\t\tif (this._state.disabled !== disabled) {\n\t\t\t\treturn { disabled };\n\t\t\t}\n\t\t},\n\t\tfirstDayOfWeek: (firstDayOfWeek: number) => {\n\t\t\tfirstDayOfWeek = toInteger(firstDayOfWeek);\n\t\t\tif (isInteger(firstDayOfWeek) && firstDayOfWeek >= 0 && this._state.firstDayOfWeek !== firstDayOfWeek) {\n\t\t\t\treturn { firstDayOfWeek };\n\t\t\t}\n\t\t},\n\t\tfocusVisible: (focusVisible: boolean) => {\n\t\t\tif (this._state.focusVisible !== focusVisible && !this._state.disabled) {\n\t\t\t\treturn { focusVisible };\n\t\t\t}\n\t\t},\n\t\tmarkDisabled: (markDisabled: NgbMarkDisabled) => {\n\t\t\tif (this._state.markDisabled !== markDisabled) {\n\t\t\t\treturn { markDisabled };\n\t\t\t}\n\t\t},\n\t\tmaxDate: (date: NgbDate | null) => {\n\t\t\tconst maxDate = this.toValidDate(date, null);\n\t\t\tif (isChangedDate(this._state.maxDate, maxDate)) {\n\t\t\t\treturn { maxDate };\n\t\t\t}\n\t\t},\n\t\tminDate: (date: NgbDate | null) => {\n\t\t\tconst minDate = this.toValidDate(date, null);\n\t\t\tif (isChangedDate(this._state.minDate, minDate)) {\n\t\t\t\treturn { minDate };\n\t\t\t}\n\t\t},\n\t\tnavigation: (navigation: 'select' | 'arrows' | 'none') => {\n\t\t\tif (this._state.navigation !== navigation) {\n\t\t\t\treturn { navigation };\n\t\t\t}\n\t\t},\n\t\toutsideDays: (outsideDays: 'visible' | 'collapsed' | 'hidden') => {\n\t\t\tif (this._state.outsideDays !== outsideDays) {\n\t\t\t\treturn { outsideDays };\n\t\t\t}\n\t\t},\n\t\tweekdays: (weekdays: boolean | Exclude<Intl.DateTimeFormatOptions['weekday'], undefined>) => {\n\t\t\tconst weekdayWidth = weekdays === true || weekdays === false ? 'narrow' : weekdays;\n\t\t\tconst weekdaysVisible = weekdays === true || weekdays === false ? weekdays : true;\n\t\t\tif (this._state.weekdayWidth !== weekdayWidth || this._state.weekdaysVisible !== weekdaysVisible) {\n\t\t\t\treturn { weekdayWidth, weekdaysVisible };\n\t\t\t}\n\t\t},\n\t};\n\n\tprivate _calendar = inject(NgbCalendar);\n\tprivate _i18n = inject(NgbDatepickerI18n);\n\n\tprivate _model$ = new Subject<DatepickerViewModel>();\n\n\tprivate _dateSelect$ = new Subject<NgbDate>();\n\n\tprivate _state: DatepickerViewModel = {\n\t\tdayTemplateData: null,\n\t\tmarkDisabled: null,\n\t\tmaxDate: null,\n\t\tminDate: null,\n\t\tdisabled: false,\n\t\tdisplayMonths: 1,\n\t\tfirstDate: null,\n\t\tfirstDayOfWeek: 1,\n\t\tlastDate: null,\n\t\tfocusDate: null,\n\t\tfocusVisible: false,\n\t\tmonths: [],\n\t\tnavigation: 'select',\n\t\toutsideDays: 'visible',\n\t\tprevDisabled: false,\n\t\tnextDisabled: false,\n\t\tselectedDate: null,\n\t\tselectBoxes: { years: [], months: [] },\n\t\tweekdayWidth: 'narrow',\n\t\tweekdaysVisible: true,\n\t};\n\n\tget model$(): Observable<DatepickerViewModel> {\n\t\treturn this._model$.pipe(filter((model) => model.months.length > 0));\n\t}\n\n\tget dateSelect$(): Observable<NgbDate> {\n\t\treturn this._dateSelect$.pipe(filter((date) => date !== null));\n\t}\n\n\tset(options: DatepickerServiceInputs) {\n\t\tlet patch = Object.keys(options)\n\t\t\t.map((key) => this._VALIDATORS[key](options[key]))\n\t\t\t.reduce((obj, part) => ({ ...obj, ...part }), {});\n\n\t\tif (Object.keys(patch).length > 0) {\n\t\t\tthis._nextState(patch);\n\t\t}\n\t}\n\n\tfocus(date?: NgbDate | null) {\n\t\tconst focusedDate = this.toValidDate(date, null);\n\t\tif (focusedDate != null && !this._state.disabled && isChangedDate(this._state.focusDate, focusedDate)) {\n\t\t\tthis._nextState({ focusDate: date });\n\t\t}\n\t}\n\n\tfocusSelect() {\n\t\tif (isDateSelectable(this._state.focusDate, this._state)) {\n\t\t\tthis.select(this._state.focusDate, { emitEvent: true });\n\t\t}\n\t}\n\n\topen(date?: NgbDate | null) {\n\t\tconst firstDate = this.toValidDate(date, this._calendar.getToday());\n\t\tif (\n\t\t\tfirstDate != null &&\n\t\t\t!this._state.disabled &&\n\t\t\t(!this._state.firstDate || isChangedMonth(this._state.firstDate, firstDate))\n\t\t) {\n\t\t\tthis._nextState({ firstDate });\n\t\t}\n\t}\n\n\tselect(date?: NgbDate | null, options: { emitEvent?: boolean } = {}) {\n\t\tconst selectedDate = this.toValidDate(date, null);\n\t\tif (selectedDate != null && !this._state.disabled) {\n\t\t\tif (isChangedDate(this._state.selectedDate, selectedDate)) {\n\t\t\t\tthis._nextState({ selectedDate });\n\t\t\t}\n\n\t\t\tif (options.emitEvent && isDateSelectable(selectedDate, this._state)) {\n\t\t\t\tthis._dateSelect$.next(selectedDate);\n\t\t\t}\n\t\t}\n\t}\n\n\ttoValidDate(date?: NgbDateStruct | null, defaultValue?: NgbDate | null): NgbDate | null {\n\t\tconst ngbDate = NgbDate.from(date);\n\t\tif (defaultValue === undefined) {\n\t\t\tdefaultValue = this._calendar.getToday();\n\t\t}\n\t\treturn this._calendar.isValid(ngbDate) ? ngbDate : defaultValue;\n\t}\n\n\tgetMonth(struct: NgbDateStruct) {\n\t\tfor (let month of this._state.months) {\n\t\t\tif (struct.month === month.number && struct.year === month.year) {\n\t\t\t\treturn month;\n\t\t\t}\n\t\t}\n\t\tthrow new Error(`month ${struct.month} of year ${struct.year} not found`);\n\t}\n\n\tprivate _nextState(patch: Partial<DatepickerViewModel>) {\n\t\tconst newState = this._updateState(patch);\n\t\tthis._patchContexts(newState);\n\t\tthis._state = newState;\n\t\tthis._model$.next(this._state);\n\t}\n\n\tprivate _patchContexts(state: DatepickerViewModel) {\n\t\tconst { months, displayMonths, selectedDate, focusDate, focusVisible, disabled, outsideDays } = state;\n\t\tstate.months.forEach((month) => {\n\t\t\tmonth.weeks.forEach((week) => {\n\t\t\t\tweek.days.forEach((day) => {\n\t\t\t\t\t// patch focus flag\n\t\t\t\t\tif (focusDate) {\n\t\t\t\t\t\tday.context.focused = focusDate.equals(day.date) && focusVisible;\n\t\t\t\t\t}\n\n\t\t\t\t\t// calculating tabindex\n\t\t\t\t\tday.tabindex =\n\t\t\t\t\t\t!disabled && focusDate && day.date.equals(focusDate) && focusDate.month === month.number ? 0 : -1;\n\n\t\t\t\t\t// override context disabled\n\t\t\t\t\tif (disabled === true) {\n\t\t\t\t\t\tday.context.disabled = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t// patch selection flag\n\t\t\t\t\tif (selectedDate !== undefined) {\n\t\t\t\t\t\tday.context.selected = selectedDate !== null && selectedDate.equals(day.date);\n\t\t\t\t\t}\n\n\t\t\t\t\t// visibility\n\t\t\t\t\tif (month.number !== day.date.month) {\n\t\t\t\t\t\tday.hidden =\n\t\t\t\t\t\t\toutsideDays === 'hidden' ||\n\t\t\t\t\t\t\toutsideDays === 'collapsed' ||\n\t\t\t\t\t\t\t(displayMonths > 1 &&\n\t\t\t\t\t\t\t\tday.date.after(months[0].firstDate) &&\n\t\t\t\t\t\t\t\tday.date.before(months[displayMonths - 1].lastDate));\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t}\n\n\tprivate _updateState(patch: Partial<DatepickerViewModel>): DatepickerViewModel {\n\t\t// patching fields\n\t\tconst state = Object.assign({}, this._state, patch);\n\n\t\tlet startDate = state.firstDate;\n\n\t\t// min/max dates changed\n\t\tif ('minDate' in patch || 'maxDate' in patch) {\n\t\t\tcheckMinBeforeMax(state.minDate, state.maxDate);\n\t\t\tstate.focusDate = checkDateInRange(state.focusDate, state.minDate, state.maxDate);\n\t\t\tstate.firstDate = checkDateInRange(state.firstDate, state.minDate, state.maxDate);\n\t\t\tstartDate = state.focusDate;\n\t\t}\n\n\t\t// disabled\n\t\tif ('disabled' in patch) {\n\t\t\tstate.focusVisible = false;\n\t\t}\n\n\t\t// initial rebuild via 'select()'\n\t\tif ('selectedDate' in patch && this._state.months.length === 0) {\n\t\t\tstartDate = state.selectedDate;\n\t\t}\n\n\t\t// terminate early if only focus visibility was changed\n\t\tif ('focusVisible' in patch) {\n\t\t\treturn state;\n\t\t}\n\n\t\t// focus date changed\n\t\tif ('focusDate' in patch) {\n\t\t\tstate.focusDate = checkDateInRange(state.focusDate, state.minDate, state.maxDate);\n\t\t\tstartDate = state.focusDate;\n\n\t\t\t// nothing to rebuild if only focus changed and it is still visible\n\t\t\tif (\n\t\t\t\tstate.months.length !== 0 &&\n\t\t\t\tstate.focusDate &&\n\t\t\t\t!state.focusDate.before(state.firstDate) &&\n\t\t\t\t!state.focusDate.after(state.lastDate)\n\t\t\t) {\n\t\t\t\treturn state;\n\t\t\t}\n\t\t}\n\n\t\t// first date changed\n\t\tif ('firstDate' in patch) {\n\t\t\tstate.firstDate = checkDateInRange(state.firstDate, state.minDate, state.maxDate);\n\t\t\tstartDate = state.firstDate;\n\t\t}\n\n\t\t// rebuilding months\n\t\tif (startDate) {\n\t\t\tconst forceRebuild =\n\t\t\t\t'dayTemplateData' in patch ||\n\t\t\t\t'firstDayOfWeek' in patch ||\n\t\t\t\t'markDisabled' in patch ||\n\t\t\t\t'minDate' in patch ||\n\t\t\t\t'maxDate' in patch ||\n\t\t\t\t'disabled' in patch ||\n\t\t\t\t'outsideDays' in patch ||\n\t\t\t\t'weekdaysVisible' in patch;\n\n\t\t\tconst months = buildMonths(this._calendar, startDate, state, this._i18n, forceRebuild);\n\n\t\t\t// updating months and boundary dates\n\t\t\tstate.months = months;\n\t\t\tstate.firstDate = months[0].firstDate;\n\t\t\tstate.lastDate = months[months.length - 1].lastDate;\n\n\t\t\t// reset selected date if 'markDisabled' returns true\n\t\t\tif ('selectedDate' in patch && !isDateSelectable(state.selectedDate, state)) {\n\t\t\t\tstate.selectedDate = null;\n\t\t\t}\n\n\t\t\t// adjusting focus after months were built\n\t\t\tif ('firstDate' in patch) {\n\t\t\t\tif (!state.focusDate || state.focusDate.before(state.firstDate) || state.focusDate.after(state.lastDate)) {\n\t\t\t\t\tstate.focusDate = startDate;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// adjusting months/years for the select box navigation\n\t\t\tconst yearChanged = !this._state.firstDate || this._state.firstDate.year !== state.firstDate.year;\n\t\t\tconst monthChanged = !this._state.firstDate || this._state.firstDate.month !== state.firstDate.month;\n\t\t\tif (state.navigation === 'select') {\n\t\t\t\t// years ->  boundaries (min/max were changed)\n\t\t\t\tif ('minDate' in patch || 'maxDate' in patch || state.selectBoxes.years.length === 0 || yearChanged) {\n\t\t\t\t\tstate.selectBoxes.years = generateSelectBoxYears(state.firstDate, state.minDate, state.maxDate);\n\t\t\t\t}\n\n\t\t\t\t// months -> when current year or boundaries change\n\t\t\t\tif ('minDate' in patch || 'maxDate' in patch || state.selectBoxes.months.length === 0 || yearChanged) {\n\t\t\t\t\tstate.selectBoxes.months = generateSelectBoxMonths(\n\t\t\t\t\t\tthis._calendar,\n\t\t\t\t\t\tstate.firstDate,\n\t\t\t\t\t\tstate.minDate,\n\t\t\t\t\t\tstate.maxDate,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tstate.selectBoxes = { years: [], months: [] };\n\t\t\t}\n\n\t\t\t// updating navigation arrows -> boundaries change (min/max) or month/year changes\n\t\t\tif (\n\t\t\t\t(state.navigation === 'arrows' || state.navigation === 'select') &&\n\t\t\t\t(monthChanged || yearChanged || 'minDate' in patch || 'maxDate' in patch || 'disabled' in patch)\n\t\t\t) {\n\t\t\t\tstate.prevDisabled = state.disabled || prevMonthDisabled(this._calendar, state.firstDate, state.minDate);\n\t\t\t\tstate.nextDisabled = state.disabled || nextMonthDisabled(this._calendar, state.lastDate, state.maxDate);\n\t\t\t}\n\t\t}\n\n\t\treturn state;\n\t}\n}\n","import { NgbDate } from './ngb-date';\nimport { NgbDateStruct } from './ngb-date-struct';\nimport { DayTemplateContext } from './datepicker-day-template-context';\n\nexport type NgbMarkDisabled = (date: NgbDateStruct, current?: { year: number; month: number }) => boolean;\nexport type NgbDayTemplateData = (date: NgbDateStruct, current?: { year: number; month: number }) => any;\n\nexport type DayViewModel = {\n\tdate: NgbDate;\n\tcontext: DayTemplateContext;\n\ttabindex: number;\n\tariaLabel: string;\n\thidden: boolean;\n};\n\nexport type WeekViewModel = {\n\tnumber: number;\n\tdays: DayViewModel[];\n\tcollapsed: boolean;\n};\n\nexport type MonthViewModel = {\n\tfirstDate: NgbDate;\n\tlastDate: NgbDate;\n\tnumber: number;\n\tyear: number;\n\tweeks: WeekViewModel[];\n\tweekdays: string[];\n};\n\nexport type DatepickerViewModel = {\n\tdayTemplateData: NgbDayTemplateData | null;\n\tdisabled: boolean;\n\tdisplayMonths: number;\n\tfirstDate: NgbDate | null;\n\tfirstDayOfWeek: number;\n\tfocusDate: NgbDate | null;\n\tfocusVisible: boolean;\n\tlastDate: NgbDate | null;\n\tmarkDisabled: NgbMarkDisabled | null;\n\tmaxDate: NgbDate | null;\n\tminDate: NgbDate | null;\n\tmonths: MonthViewModel[];\n\tnavigation: 'select' | 'arrows' | 'none';\n\toutsideDays: 'visible' | 'collapsed' | 'hidden';\n\tprevDisabled: boolean;\n\tnextDisabled: boolean;\n\tselectBoxes: {\n\t\tyears: number[];\n\t\tmonths: number[];\n\t};\n\tselectedDate: NgbDate | null;\n\tweekdayWidth: Exclude<Intl.DateTimeFormatOptions['weekday'], undefined>;\n\tweekdaysVisible: boolean;\n};\n\nexport enum NavigationEvent {\n\tPREV,\n\tNEXT,\n}\n","import { Service, TemplateRef } from '@angular/core';\nimport { DayTemplateContext } from './datepicker-day-template-context';\nimport { NgbDateStruct } from './ngb-date-struct';\n\n/**\n * A configuration service for the [`NgbDatepicker`](#/components/datepicker/api#NgbDatepicker) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the datepickers used in the application.\n */\n@Service()\nexport class NgbDatepickerConfig {\n\tdayTemplate: TemplateRef<DayTemplateContext>;\n\tdayTemplateData: (date: NgbDateStruct, current?: { year: number; month: number }) => any;\n\tfooterTemplate: TemplateRef<any>;\n\tdisplayMonths = 1;\n\tfirstDayOfWeek = 1;\n\tmarkDisabled: (date: NgbDateStruct, current?: { year: number; month: number }) => boolean;\n\tminDate: NgbDateStruct;\n\tmaxDate: NgbDateStruct;\n\tnavigation: 'select' | 'arrows' | 'none' = 'select';\n\toutsideDays: 'visible' | 'collapsed' | 'hidden' = 'visible';\n\tshowWeekNumbers = false;\n\tstartDate: { year: number; month: number; day?: number };\n\tweekdays: Exclude<Intl.DateTimeFormatOptions['weekday'], undefined> | boolean = 'narrow';\n}\n","import { Service } from '@angular/core';\nimport { NgbDateStruct } from '../ngb-date-struct';\nimport { isInteger } from './_ngb-ngbootstrap-utilities.mjs';\n\nexport function NGB_DATEPICKER_DATE_ADAPTER_FACTORY(): NgbDateAdapter<any> {\n\treturn new NgbDateStructAdapter();\n}\n\n/**\n * An abstract service that does the conversion between the internal datepicker `NgbDateStruct` model and\n * any provided user date model `D`, ex. a string, a native date, etc.\n *\n * The adapter is used **only** for conversion when binding datepicker to a form control,\n * ex. `[(ngModel)]=\"userDateModel\"`. Here `userDateModel` can be of any type.\n *\n * The default datepicker implementation assumes we use `NgbDateStruct` as a user model.\n *\n * See the [date format overview](#/components/datepicker/overview#date-model) for more details\n * and the [custom adapter demo](#/components/datepicker/examples#adapter) for an example.\n */\n@Service({ factory: NGB_DATEPICKER_DATE_ADAPTER_FACTORY })\nexport abstract class NgbDateAdapter<D> {\n\t/**\n\t * Converts a user-model date of type `D` to an `NgbDateStruct` for internal use.\n\t */\n\tabstract fromModel(value: D | null): NgbDateStruct | null;\n\n\t/**\n\t * Converts an internal `NgbDateStruct` date to a user-model date of type `D`.\n\t */\n\tabstract toModel(date: NgbDateStruct | null): D | null;\n}\n\n@Service({ autoProvided: false })\nexport class NgbDateStructAdapter extends NgbDateAdapter<NgbDateStruct> {\n\t/**\n\t * Converts a NgbDateStruct value into NgbDateStruct value\n\t */\n\tfromModel(date: NgbDateStruct | null): NgbDateStruct | null {\n\t\treturn date && isInteger(date.year) && isInteger(date.month) && isInteger(date.day)\n\t\t\t? { year: date.year, month: date.month, day: date.day }\n\t\t\t: null;\n\t}\n\n\t/**\n\t * Converts a NgbDateStruct value into NgbDateStruct value\n\t */\n\ttoModel(date: NgbDateStruct | null): NgbDateStruct | null {\n\t\treturn date && isInteger(date.year) && isInteger(date.month) && isInteger(date.day)\n\t\t\t? { year: date.year, month: date.month, day: date.day }\n\t\t\t: null;\n\t}\n}\n","import { Service } from '@angular/core';\nimport { NgbDatepicker } from './datepicker';\n\n/**\n * A service that represents the keyboard navigation.\n *\n * Default keyboard shortcuts [are documented in the overview](#/components/datepicker/overview#keyboard-shortcuts)\n *\n * @since 5.2.0\n */\n@Service()\nexport class NgbDatepickerKeyboardService {\n\t/**\n\t * Processes a keyboard event.\n\t */\n\tprocessKey(event: KeyboardEvent, datepicker: NgbDatepicker) {\n\t\tconst { state, calendar } = datepicker;\n\t\tswitch (event.key) {\n\t\t\tcase 'PageUp':\n\t\t\t\tdatepicker.focusDate(calendar.getPrev(state.focusedDate, event.shiftKey ? 'y' : 'm', 1));\n\t\t\t\tbreak;\n\t\t\tcase 'PageDown':\n\t\t\t\tdatepicker.focusDate(calendar.getNext(state.focusedDate, event.shiftKey ? 'y' : 'm', 1));\n\t\t\t\tbreak;\n\t\t\tcase 'End':\n\t\t\t\tdatepicker.focusDate(event.shiftKey ? state.maxDate : state.lastDate);\n\t\t\t\tbreak;\n\t\t\tcase 'Home':\n\t\t\t\tdatepicker.focusDate(event.shiftKey ? state.minDate : state.firstDate);\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowLeft':\n\t\t\t\tdatepicker.focusDate(calendar.getPrev(state.focusedDate, 'd', 1));\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowUp':\n\t\t\t\tdatepicker.focusDate(calendar.getPrev(state.focusedDate, 'd', calendar.getDaysPerWeek()));\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowRight':\n\t\t\t\tdatepicker.focusDate(calendar.getNext(state.focusedDate, 'd', 1));\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowDown':\n\t\t\t\tdatepicker.focusDate(calendar.getNext(state.focusedDate, 'd', calendar.getDaysPerWeek()));\n\t\t\t\tbreak;\n\t\t\tcase 'Enter':\n\t\t\tcase ' ':\n\t\t\t\tdatepicker.focusSelect();\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\treturn;\n\t\t}\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t}\n}\n","import { Component, inject, Input, ViewEncapsulation } from '@angular/core';\nimport { NgbDate } from './ngb-date';\nimport { NgbDatepickerI18n } from './datepicker-i18n';\n\n@Component({\n\tselector: '[ngbDatepickerDayView]',\n\tencapsulation: ViewEncapsulation.None,\n\tstyleUrl: './datepicker-day-view.scss',\n\thost: {\n\t\tclass: 'btn-light',\n\t\t'[class.bg-primary]': 'selected',\n\t\t'[class.text-white]': 'selected',\n\t\t'[class.text-muted]': 'isMuted()',\n\t\t'[class.outside]': 'isMuted()',\n\t\t'[class.active]': 'focused',\n\t},\n\ttemplate: `{{ i18n.getDayNumerals(date) }}`,\n})\nexport class NgbDatepickerDayView {\n\ti18n = inject(NgbDatepickerI18n);\n\n\t@Input() currentMonth: number;\n\t@Input() date: NgbDate;\n\t@Input() disabled: boolean;\n\t@Input() focused: boolean;\n\t@Input() selected: boolean;\n\n\tisMuted() {\n\t\treturn !this.selected && (this.date.month !== this.currentMonth || this.disabled);\n\t}\n}\n","import {\n\tAfterViewChecked,\n\tComponent,\n\tElementRef,\n\tEventEmitter,\n\tinject,\n\tInput,\n\tOutput,\n\tViewChild,\n\tViewEncapsulation,\n} from '@angular/core';\nimport { NgbDate } from './ngb-date';\nimport { toInteger } from './_ngb-ngbootstrap-utilities.mjs';\nimport { NgbDatepickerI18n } from './datepicker-i18n';\n\n@Component({\n\tselector: 'ngb-datepicker-navigation-select',\n\tencapsulation: ViewEncapsulation.None,\n\tstyleUrl: './datepicker-navigation-select.scss',\n\ttemplate: `\n\t\t<select\n\t\t\t#month\n\t\t\t[disabled]=\"disabled\"\n\t\t\tclass=\"form-select\"\n\t\t\ti18n-aria-label=\"@@ngb.datepicker.select-month\"\n\t\t\taria-label=\"Select month\"\n\t\t\ti18n-title=\"@@ngb.datepicker.select-month\"\n\t\t\ttitle=\"Select month\"\n\t\t\t(change)=\"changeMonth($any($event).target.value)\"\n\t\t>\n\t\t\t@for (m of months; track m) {\n\t\t\t\t<option [attr.aria-label]=\"i18n.getMonthFullName(m, date.year)\" [value]=\"m\">{{\n\t\t\t\t\ti18n.getMonthShortName(m, date.year)\n\t\t\t\t}}</option>\n\t\t\t}</select\n\t\t><select\n\t\t\t#year\n\t\t\t[disabled]=\"disabled\"\n\t\t\tclass=\"form-select\"\n\t\t\ti18n-aria-label=\"@@ngb.datepicker.select-year\"\n\t\t\taria-label=\"Select year\"\n\t\t\ti18n-title=\"@@ngb.datepicker.select-year\"\n\t\t\ttitle=\"Select year\"\n\t\t\t(change)=\"changeYear($any($event).target.value)\"\n\t\t>\n\t\t\t@for (y of years; track y) {\n\t\t\t\t<option [value]=\"y\">{{ i18n.getYearNumerals(y) }}</option>\n\t\t\t}\n\t\t</select>\n\t`,\n})\nexport class NgbDatepickerNavigationSelect implements AfterViewChecked {\n\tprivate _month = -1;\n\tprivate _year = -1;\n\n\ti18n = inject(NgbDatepickerI18n);\n\n\t@Input() date: NgbDate;\n\t@Input() disabled: boolean;\n\t@Input() months: number[];\n\t@Input() years: number[];\n\n\t@Output() select = new EventEmitter<NgbDate>();\n\n\t@ViewChild('month', { static: true, read: ElementRef }) monthSelect: ElementRef<HTMLSelectElement>;\n\t@ViewChild('year', { static: true, read: ElementRef }) yearSelect: ElementRef<HTMLSelectElement>;\n\n\tchangeMonth(month: string) {\n\t\tthis.select.emit(new NgbDate(this.date.year, toInteger(month), 1));\n\t}\n\n\tchangeYear(year: string) {\n\t\tthis.select.emit(new NgbDate(toInteger(year), this.date.month, 1));\n\t}\n\n\tngAfterViewChecked() {\n\t\tif (this.date) {\n\t\t\tif (this.date.month !== this._month) {\n\t\t\t\tthis._month = this.date.month;\n\t\t\t\tthis.monthSelect.nativeElement.value = `${this._month}`;\n\t\t\t}\n\t\t\tif (this.date.year !== this._year) {\n\t\t\t\tthis._year = this.date.year;\n\t\t\t\tthis.yearSelect.nativeElement.value = `${this._year}`;\n\t\t\t}\n\t\t}\n\t}\n}\n","import { Component, EventEmitter, inject, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { MonthViewModel, NavigationEvent } from './datepicker-view-model';\nimport { NgbDate } from './ngb-date';\nimport { NgbDatepickerI18n } from './datepicker-i18n';\nimport { NgbDatepickerNavigationSelect } from './datepicker-navigation-select';\n\n@Component({\n\tselector: 'ngb-datepicker-navigation',\n\timports: [NgbDatepickerNavigationSelect],\n\tencapsulation: ViewEncapsulation.None,\n\tstyleUrl: './datepicker-navigation.scss',\n\ttemplate: `\n\t\t<div class=\"ngb-dp-arrow ngb-dp-arrow-prev\">\n\t\t\t<button\n\t\t\t\ttype=\"button\"\n\t\t\t\tclass=\"btn btn-link ngb-dp-arrow-btn\"\n\t\t\t\t(click)=\"onClickPrev($event)\"\n\t\t\t\t[disabled]=\"prevDisabled\"\n\t\t\t\ti18n-aria-label=\"@@ngb.datepicker.previous-month\"\n\t\t\t\taria-label=\"Previous month\"\n\t\t\t\ti18n-title=\"@@ngb.datepicker.previous-month\"\n\t\t\t\ttitle=\"Previous month\"\n\t\t\t>\n\t\t\t\t<span class=\"ngb-dp-navigation-chevron\"></span>\n\t\t\t</button>\n\t\t</div>\n\t\t@if (showSelect) {\n\t\t\t<ngb-datepicker-navigation-select\n\t\t\t\tclass=\"ngb-dp-navigation-select\"\n\t\t\t\t[date]=\"date\"\n\t\t\t\t[disabled]=\"disabled\"\n\t\t\t\t[months]=\"selectBoxes.months\"\n\t\t\t\t[years]=\"selectBoxes.years\"\n\t\t\t\t(select)=\"select.emit($event)\"\n\t\t\t/>\n\t\t}\n\n\t\t@if (!showSelect) {\n\t\t\t@for (month of months; track idMonth(month); let i = $index) {\n\t\t\t\t@if (i > 0) {\n\t\t\t\t\t<div class=\"ngb-dp-arrow\"></div>\n\t\t\t\t}\n\t\t\t\t<div class=\"ngb-dp-month-name\">\n\t\t\t\t\t{{ i18n.getMonthLabel(month.firstDate) }}\n\t\t\t\t</div>\n\t\t\t\t@if (i !== months.length - 1) {\n\t\t\t\t\t<div class=\"ngb-dp-arrow\"></div>\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t<div class=\"visually-hidden\" aria-live=\"polite\">\n\t\t\t@for (month of months; track idMonth(month)) {\n\t\t\t\t<span>{{ i18n.getMonthLabel(month.firstDate) }}</span>\n\t\t\t}\n\t\t</div>\n\n\t\t<div class=\"ngb-dp-arrow ngb-dp-arrow-next\">\n\t\t\t<button\n\t\t\t\ttype=\"button\"\n\t\t\t\tclass=\"btn btn-link ngb-dp-arrow-btn\"\n\t\t\t\t(click)=\"onClickNext($event)\"\n\t\t\t\t[disabled]=\"nextDisabled\"\n\t\t\t\ti18n-aria-label=\"@@ngb.datepicker.next-month\"\n\t\t\t\taria-label=\"Next month\"\n\t\t\t\ti18n-title=\"@@ngb.datepicker.next-month\"\n\t\t\t\ttitle=\"Next month\"\n\t\t\t>\n\t\t\t\t<span class=\"ngb-dp-navigation-chevron\"></span>\n\t\t\t</button>\n\t\t</div>\n\t`,\n})\nexport class NgbDatepickerNavigation {\n\tnavigation = NavigationEvent;\n\n\ti18n = inject(NgbDatepickerI18n);\n\n\t@Input() date: NgbDate;\n\t@Input() disabled: boolean;\n\t@Input() months: MonthViewModel[] = [];\n\t@Input() showSelect: boolean;\n\t@Input() prevDisabled: boolean;\n\t@Input() nextDisabled: boolean;\n\t@Input() selectBoxes: { years: number[]; months: number[] };\n\n\t@Output() navigate = new EventEmitter<NavigationEvent>();\n\t@Output() select = new EventEmitter<NgbDate>();\n\n\tonClickPrev(event: MouseEvent) {\n\t\t(event.currentTarget as HTMLElement).focus();\n\t\tthis.navigate.emit(this.navigation.PREV);\n\t}\n\n\tonClickNext(event: MouseEvent) {\n\t\t(event.currentTarget as HTMLElement).focus();\n\t\tthis.navigate.emit(this.navigation.NEXT);\n\t}\n\n\tidMonth(month: MonthViewModel) {\n\t\treturn month;\n\t}\n}\n","import { fromEvent, merge } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport {\n\tafterNextRender,\n\tAfterViewInit,\n\tChangeDetectionStrategy,\n\tChangeDetectorRef,\n\tComponent,\n\tContentChild,\n\tDestroyRef,\n\tDirective,\n\tElementRef,\n\tEventEmitter,\n\tforwardRef,\n\tinject,\n\tInjector,\n\tInput,\n\tNgZone,\n\tOnChanges,\n\tOnInit,\n\tOutput,\n\tSimpleChanges,\n\tTemplateRef,\n\tViewChild,\n\tViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { NgbCalendar } from './ngb-calendar';\nimport { NgbDate } from './ngb-date';\nimport { DatepickerServiceInputs, NgbDatepickerService } from './datepicker-service';\nimport { DatepickerViewModel, DayViewModel, MonthViewModel, NavigationEvent } from './datepicker-view-model';\nimport { DayTemplateContext } from './datepicker-day-template-context';\nimport { NgbDatepickerConfig } from './datepicker-config';\nimport { NgbDateAdapter } from './adapters/ngb-date-adapter';\nimport { NgbDateStruct } from './ngb-date-struct';\nimport { NgbDatepickerI18n } from './datepicker-i18n';\nimport { NgbDatepickerKeyboardService } from './datepicker-keyboard-service';\nimport { isChangedDate, isChangedMonth } from './datepicker-tools';\nimport { NgbDatepickerDayView } from './datepicker-day-view';\nimport { NgbDatepickerNavigation } from './datepicker-navigation';\nimport { ContentTemplateContext } from './datepicker-content-template-context';\n\n/**\n * An event emitted right before the navigation happens and the month displayed by the datepicker changes.\n */\nexport interface NgbDatepickerNavigateEvent {\n\t/**\n\t * The currently displayed month.\n\t */\n\tcurrent: { year: number; month: number } | null;\n\n\t/**\n\t * The month we're navigating to.\n\t */\n\tnext: { year: number; month: number };\n\n\t/**\n\t * Calling this function will prevent navigation from happening.\n\t *\n\t * @since 4.1.0\n\t */\n\tpreventDefault: () => void;\n}\n\n/**\n * An interface that represents the readonly public state of the datepicker.\n *\n * Accessible via the `datepicker.state` getter\n *\n * @since 5.2.0\n */\nexport interface NgbDatepickerState {\n\t/**\n\t * The earliest date that can be displayed or selected\n\t */\n\treadonly minDate: NgbDate | null;\n\n\t/**\n\t * The latest date that can be displayed or selected\n\t */\n\treadonly maxDate: NgbDate | null;\n\n\t/**\n\t * The first visible date of currently displayed months\n\t */\n\treadonly firstDate: NgbDate;\n\n\t/**\n\t * The last visible date of currently displayed months\n\t */\n\treadonly lastDate: NgbDate;\n\n\t/**\n\t * The date currently focused by the datepicker\n\t */\n\treadonly focusedDate: NgbDate;\n\n\t/**\n\t * First dates of months currently displayed by the datepicker\n\t *\n\t * @since 5.3.0\n\t */\n\treadonly months: NgbDate[];\n}\n\n/**\n * A directive that marks the content template that customizes the way datepicker months are displayed\n *\n * @since 5.3.0\n */\n@Directive({ selector: 'ng-template[ngbDatepickerContent]' })\nexport class NgbDatepickerContent {\n\ttemplateRef = inject(TemplateRef);\n}\n\n/**\n * A component that renders one month including all the days, weekdays and week numbers. Can be used inside\n * the `<ng-template ngbDatepickerMonths></ng-template>` when you want to customize months layout.\n *\n * For a usage example, see [custom month layout demo](#/components/datepicker/examples#custommonth)\n *\n * @since 5.3.0\n */\n@Component({\n\tselector: 'ngb-datepicker-month',\n\timports: [NgTemplateOutlet],\n\thost: {\n\t\trole: 'grid',\n\t\t'(keydown)': 'onKeyDown($event)',\n\t},\n\tencapsulation: ViewEncapsulation.None,\n\tstyleUrl: './datepicker-month.scss',\n\tchangeDetection: ChangeDetectionStrategy.Eager,\n\ttemplate: `\n\t\t@if (viewModel.weekdays.length > 0) {\n\t\t\t<div class=\"ngb-dp-week ngb-dp-weekdays\" role=\"row\">\n\t\t\t\t@if (datepicker.showWeekNumbers) {\n\t\t\t\t\t<div class=\"ngb-dp-weekday ngb-dp-showweek small\">{{ i18n.getWeekLabel() }}</div>\n\t\t\t\t}\n\t\t\t\t@for (weekday of viewModel.weekdays; track $index) {\n\t\t\t\t\t<div class=\"ngb-dp-weekday small\" role=\"columnheader\">{{ weekday }}</div>\n\t\t\t\t}\n\t\t\t</div>\n\t\t}\n\t\t@for (week of viewModel.weeks; track week) {\n\t\t\t@if (!week.collapsed) {\n\t\t\t\t<div class=\"ngb-dp-week\" role=\"row\">\n\t\t\t\t\t@if (datepicker.showWeekNumbers) {\n\t\t\t\t\t\t<div class=\"ngb-dp-week-number small text-muted\">{{ i18n.getWeekNumerals(week.number) }}</div>\n\t\t\t\t\t}\n\t\t\t\t\t@for (day of week.days; track day) {\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t(click)=\"doSelect(day); $event.preventDefault()\"\n\t\t\t\t\t\t\tclass=\"ngb-dp-day\"\n\t\t\t\t\t\t\trole=\"gridcell\"\n\t\t\t\t\t\t\t[class.disabled]=\"day.context.disabled\"\n\t\t\t\t\t\t\t[tabindex]=\"day.tabindex\"\n\t\t\t\t\t\t\t[class.hidden]=\"day.hidden\"\n\t\t\t\t\t\t\t[class.ngb-dp-today]=\"day.context.today\"\n\t\t\t\t\t\t\t[attr.aria-label]=\"day.ariaLabel\"\n\t\t\t\t\t\t\t[attr.aria-disabled]=\"day.context.disabled\"\n\t\t\t\t\t\t\t[attr.aria-selected]=\"day.context.selected\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t@if (!day.hidden) {\n\t\t\t\t\t\t\t\t<ng-template [ngTemplateOutlet]=\"datepicker.dayTemplate\" [ngTemplateOutletContext]=\"day.context\" />\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t}\n\t\t\t\t</div>\n\t\t\t}\n\t\t}\n\t`,\n})\nexport class NgbDatepickerMonth {\n\tprivate _keyboardService = inject(NgbDatepickerKeyboardService);\n\tprivate _service = inject(NgbDatepickerService);\n\n\ti18n = inject(NgbDatepickerI18n);\n\tdatepicker = inject(NgbDatepicker);\n\n\tviewModel: MonthViewModel;\n\n\t/**\n\t * The first date of month to be rendered.\n\t *\n\t * This month must one of the months present in the\n\t * [datepicker state](#/components/datepicker/api#NgbDatepickerState).\n\t */\n\t@Input()\n\tset month(month: NgbDateStruct) {\n\t\tthis.viewModel = this._service.getMonth(month);\n\t}\n\n\tonKeyDown(event: KeyboardEvent) {\n\t\tthis._keyboardService.processKey(event, this.datepicker);\n\t}\n\n\tdoSelect(day: DayViewModel) {\n\t\tif (!day.context.disabled && !day.hidden) {\n\t\t\tthis.datepicker.onDateSelect(day.date);\n\t\t}\n\t}\n}\n\n/**\n * A highly configurable component that helps you with selecting calendar dates.\n *\n * `NgbDatepicker` is meant to be displayed inline on a page or put inside a popup.\n */\n@Component({\n\texportAs: 'ngbDatepicker',\n\tselector: 'ngb-datepicker',\n\timports: [NgTemplateOutlet, NgbDatepickerDayView, NgbDatepickerMonth, NgbDatepickerNavigation],\n\tencapsulation: ViewEncapsulation.None,\n\tstyleUrl: './datepicker.scss',\n\thost: {\n\t\t'[class.disabled]': 'model.disabled',\n\t},\n\ttemplate: `\n\t\t<ng-template\n\t\t\t#defaultDayTemplate\n\t\t\tlet-date=\"date\"\n\t\t\tlet-currentMonth=\"currentMonth\"\n\t\t\tlet-selected=\"selected\"\n\t\t\tlet-disabled=\"disabled\"\n\t\t\tlet-focused=\"focused\"\n\t\t>\n\t\t\t<div\n\t\t\t\tngbDatepickerDayView\n\t\t\t\t[date]=\"date\"\n\t\t\t\t[currentMonth]=\"currentMonth\"\n\t\t\t\t[selected]=\"selected\"\n\t\t\t\t[disabled]=\"disabled\"\n\t\t\t\t[focused]=\"focused\"\n\t\t\t>\n\t\t\t</div>\n\t\t</ng-template>\n\n\t\t<ng-template #defaultContentTemplate>\n\t\t\t@for (month of model.months; track month) {\n\t\t\t\t<div class=\"ngb-dp-month\">\n\t\t\t\t\t@if (navigation === 'none' || (displayMonths > 1 && navigation === 'select')) {\n\t\t\t\t\t\t<div class=\"ngb-dp-month-name\">\n\t\t\t\t\t\t\t{{ i18n.getMonthLabel(month.firstDate) }}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t}\n\t\t\t\t\t<ngb-datepicker-month [month]=\"month.firstDate\" />\n\t\t\t\t</div>\n\t\t\t}\n\t\t</ng-template>\n\n\t\t<div class=\"ngb-dp-header\">\n\t\t\t@if (navigation !== 'none') {\n\t\t\t\t<ngb-datepicker-navigation\n\t\t\t\t\t[date]=\"model.firstDate!\"\n\t\t\t\t\t[months]=\"model.months\"\n\t\t\t\t\t[disabled]=\"model.disabled\"\n\t\t\t\t\t[showSelect]=\"model.navigation === 'select'\"\n\t\t\t\t\t[prevDisabled]=\"model.prevDisabled\"\n\t\t\t\t\t[nextDisabled]=\"model.nextDisabled\"\n\t\t\t\t\t[selectBoxes]=\"model.selectBoxes\"\n\t\t\t\t\t(navigate)=\"onNavigateEvent($event)\"\n\t\t\t\t\t(select)=\"onNavigateDateSelect($event)\"\n\t\t\t\t/>\n\t\t\t}\n\t\t</div>\n\n\t\t<div class=\"ngb-dp-content\" [class.ngb-dp-months]=\"!contentTemplate\" #content>\n\t\t\t<ng-template\n\t\t\t\t[ngTemplateOutlet]=\"contentTemplate || contentTemplateFromContent?.templateRef || defaultContentTemplate\"\n\t\t\t\t[ngTemplateOutletContext]=\"{ $implicit: this }\"\n\t\t\t\t[ngTemplateOutletInjector]=\"injector\"\n\t\t\t/>\n\t\t</div>\n\n\t\t<ng-template [ngTemplateOutlet]=\"footerTemplate\" />\n\t`,\n\tproviders: [\n\t\t{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbDatepicker), multi: true },\n\t\tNgbDatepickerService,\n\t],\n})\nexport class NgbDatepicker implements AfterViewInit, OnChanges, OnInit, ControlValueAccessor {\n\tstatic ngAcceptInputType_autoClose: boolean | string;\n\tstatic ngAcceptInputType_navigation: string;\n\tstatic ngAcceptInputType_outsideDays: string;\n\tstatic ngAcceptInputType_weekdays: boolean | string;\n\n\tmodel: DatepickerViewModel;\n\n\t@ViewChild('defaultDayTemplate', { static: true }) private _defaultDayTemplate: TemplateRef<DayTemplateContext>;\n\t@ViewChild('content', { static: true }) private _contentEl: ElementRef<HTMLElement>;\n\n\tprotected injector = inject(Injector);\n\n\tprivate _service = inject(NgbDatepickerService);\n\tprivate _calendar = inject(NgbCalendar);\n\tprivate _i18n = inject(NgbDatepickerI18n);\n\tprivate _config = inject(NgbDatepickerConfig);\n\tprivate _nativeElement = inject(ElementRef).nativeElement as HTMLElement;\n\tprivate _ngbDateAdapter = inject(NgbDateAdapter<any>);\n\tprivate _ngZone = inject(NgZone);\n\tprivate _destroyRef = inject(DestroyRef);\n\tprivate _injector = inject(Injector);\n\n\tprivate _controlValue: NgbDate | null = null;\n\tprivate _publicState: NgbDatepickerState = <any>{};\n\tprivate _initialized = false;\n\n\t/**\n\t * The reference to a custom content template.\n\t *\n\t * Allows to completely override the way datepicker displays months.\n\t *\n\t * See [`NgbDatepickerContent`](#/components/datepicker/api#NgbDatepickerContent) and\n\t * [`ContentTemplateContext`](#/components/datepicker/api#ContentTemplateContext) for more details.\n\t *\n\t * @since 14.2.0\n\t */\n\t@Input() contentTemplate: TemplateRef<ContentTemplateContext>;\n\t@ContentChild(NgbDatepickerContent, { static: true }) contentTemplateFromContent?: NgbDatepickerContent;\n\n\t/**\n\t * The reference to a custom template for the day.\n\t *\n\t * Allows to completely override the way a day 'cell' in the calendar is displayed.\n\t *\n\t * See [`DayTemplateContext`](#/components/datepicker/api#DayTemplateContext) for the data you get inside.\n\t */\n\t@Input() dayTemplate = this._config.dayTemplate;\n\n\t/**\n\t * The callback to pass any arbitrary data to the template cell via the\n\t * [`DayTemplateContext`](#/components/datepicker/api#DayTemplateContext)'s `data` parameter.\n\t *\n\t * `current` is the month that is currently displayed by the datepicker.\n\t *\n\t * @since 3.3.0\n\t */\n\t@Input() dayTemplateData = this._config.dayTemplateData;\n\n\t/**\n\t * The number of months to display.\n\t */\n\t@Input() displayMonths = this._config.displayMonths;\n\n\t/**\n\t * The first day of the week.\n\t *\n\t * With default calendar we use ISO 8601: 'weekday' is 1=Mon ... 7=Sun.\n\t */\n\t@Input() firstDayOfWeek = this._config.firstDayOfWeek;\n\n\t/**\n\t * The reference to the custom template for the datepicker footer.\n\t *\n\t * @since 3.3.0\n\t */\n\t@Input() footerTemplate = this._config.footerTemplate;\n\n\t/**\n\t * The callback to mark some dates as disabled.\n\t *\n\t * It is called for each new date when navigating to a different month.\n\t *\n\t * `current` is the month that is currently displayed by the datepicker.\n\t */\n\t@Input() markDisabled = this._config.markDisabled;\n\n\t/**\n\t * The latest date that can be displayed or selected.\n\t *\n\t * If not provided, 'year' select box will display 10 years after the current month.\n\t */\n\t@Input() maxDate = this._config.maxDate;\n\n\t/**\n\t * The earliest date that can be displayed or selected.\n\t *\n\t * If not provided, 'year' select box will display 10 years before the current month.\n\t */\n\t@Input() minDate = this._config.minDate;\n\n\t/**\n\t * Navigation type.\n\t *\n\t * * `\"select\"` - select boxes for month and navigation arrows\n\t * * `\"arrows\"` - only navigation arrows\n\t * * `\"none\"` - no navigation visible at all\n\t */\n\t@Input() navigation = this._config.navigation;\n\n\t/**\n\t * The way of displaying days that don't belong to the current month.\n\t *\n\t * * `\"visible\"` - days are visible\n\t * * `\"hidden\"` - days are hidden, white space preserved\n\t * * `\"collapsed\"` - days are collapsed, so the datepicker height might change between months\n\t *\n\t * For the 2+ months view, days in between months are never shown.\n\t */\n\t@Input() outsideDays = this._config.outsideDays;\n\n\t/**\n\t * If `true`, week numbers will be displayed.\n\t */\n\t@Input() showWeekNumbers = this._config.showWeekNumbers;\n\n\t/**\n\t * The date to open calendar with.\n\t *\n\t * With the default calendar we use ISO 8601: 'month' is 1=Jan ... 12=Dec.\n\t * If nothing or invalid date is provided, calendar will open with current month.\n\t *\n\t * You could use `navigateTo(date)` method as an alternative.\n\t */\n\t@Input() startDate = this._config.startDate;\n\n\t/**\n\t * The way weekdays should be displayed.\n\t *\n\t * * `true` - weekdays are displayed using default width\n\t * * `false` - weekdays are not displayed\n\t * * `\"short\" | \"long\" | \"narrow\"` - weekdays are displayed using specified width\n\t *\n\t * @since 9.1.0\n\t */\n\t@Input() weekdays = this._config.weekdays;\n\n\t/**\n\t * An event emitted right before the navigation happens and displayed month changes.\n\t *\n\t * See [`NgbDatepickerNavigateEvent`](#/components/datepicker/api#NgbDatepickerNavigateEvent) for the payload info.\n\t */\n\t@Output() navigate = new EventEmitter<NgbDatepickerNavigateEvent>();\n\n\t/**\n\t * An event emitted when user selects a date using keyboard or mouse.\n\t *\n\t * The payload of the event is currently selected `NgbDate`.\n\t *\n\t * @since 5.2.0\n\t */\n\t@Output() dateSelect = new EventEmitter<NgbDate>();\n\n\tonChange = (_: any) => {};\n\tonTouched = () => {};\n\n\tconstructor() {\n\t\tconst cd = inject(ChangeDetectorRef);\n\n\t\tthis._service.dateSelect$.pipe(takeUntilDestroyed()).subscribe((date) => {\n\t\t\tthis.dateSelect.emit(date);\n\t\t});\n\n\t\tthis._service.model$.pipe(takeUntilDestroyed()).subscribe((model) => {\n\t\t\tconst newDate = model.firstDate!;\n\t\t\tconst oldDate = this.model ? this.model.firstDate : null;\n\n\t\t\t// update public state\n\t\t\tthis._publicState = {\n\t\t\t\tmaxDate: model.maxDate,\n\t\t\t\tminDate: model.minDate,\n\t\t\t\tfirstDate: model.firstDate!,\n\t\t\t\tlastDate: model.lastDate!,\n\t\t\t\tfocusedDate: model.focusDate!,\n\t\t\t\tmonths: model.months.map((viewModel) => viewModel.firstDate),\n\t\t\t};\n\n\t\t\tlet navigationPrevented = false;\n\t\t\t// emitting navigation event if the first month changes\n\t\t\tif (!newDate.equals(oldDate)) {\n\t\t\t\tthis.navigate.emit({\n\t\t\t\t\tcurrent: oldDate ? { year: oldDate.year, month: oldDate.month } : null,\n\t\t\t\t\tnext: { year: newDate.year, month: newDate.month },\n\t\t\t\t\tpreventDefault: () => (navigationPrevented = true),\n\t\t\t\t});\n\n\t\t\t\t// can't prevent the very first navigation\n\t\t\t\tif (navigationPrevented && oldDate !== null) {\n\t\t\t\t\tthis._service.open(oldDate);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst newSelectedDate = model.selectedDate;\n\t\t\tconst newFocusedDate = model.focusDate;\n\t\t\tconst oldFocusedDate = this.model ? this.model.focusDate : null;\n\n\t\t\tthis.model = model;\n\n\t\t\t// handling selection change\n\t\t\tif (isChangedDate(newSelectedDate, this._controlValue)) {\n\t\t\t\tthis._controlValue = newSelectedDate;\n\t\t\t\tthis.onTouched();\n\t\t\t\tthis.onChange(this._ngbDateAdapter.toModel(newSelectedDate));\n\t\t\t}\n\n\t\t\t// handling focus change\n\t\t\tif (isChangedDate(newFocusedDate, oldFocusedDate) && oldFocusedDate && model.focusVisible) {\n\t\t\t\tthis.focus();\n\t\t\t}\n\n\t\t\tcd.markForCheck();\n\t\t});\n\t}\n\n\t/**\n\t *  Returns the readonly public state of the datepicker\n\t *\n\t * @since 5.2.0\n\t */\n\tget state(): NgbDatepickerState {\n\t\treturn this._publicState;\n\t}\n\n\t/**\n\t *  Returns the calendar service used in the specific datepicker instance.\n\t *\n\t *  @since 5.3.0\n\t */\n\tget calendar(): NgbCalendar {\n\t\treturn this._calendar;\n\t}\n\n\t/**\n\t * Returns the i18n service used in the specific datepicker instance.\n\t *\n\t * @since 14.2.0\n\t */\n\tget i18n(): NgbDatepickerI18n {\n\t\treturn this._i18n;\n\t}\n\n\t/**\n\t *  Focuses on given date.\n\t */\n\tfocusDate(date?: NgbDateStruct | null): void {\n\t\tthis._service.focus(NgbDate.from(date));\n\t}\n\n\t/**\n\t *  Selects focused date.\n\t */\n\tfocusSelect(): void {\n\t\tthis._service.focusSelect();\n\t}\n\n\tfocus() {\n\t\tafterNextRender(\n\t\t\t{\n\t\t\t\tread: () => {\n\t\t\t\t\tthis._nativeElement.querySelector<HTMLElement>('div.ngb-dp-day[tabindex=\"0\"]')?.focus();\n\t\t\t\t},\n\t\t\t},\n\t\t\t{ injector: this._injector },\n\t\t);\n\t}\n\n\t/**\n\t * Navigates to the provided date.\n\t *\n\t * With the default calendar we use ISO 8601: 'month' is 1=Jan ... 12=Dec.\n\t * If nothing or invalid date provided calendar will open current month.\n\t *\n\t * Use the `[startDate]` input as an alternative.\n\t */\n\tnavigateTo(date?: { year: number; month: number; day?: number }) {\n\t\tthis._service.open(NgbDate.from(date ? (date.day ? (date as NgbDateStruct) : { ...date, day: 1 }) : null));\n\t}\n\n\tngAfterViewInit() {\n\t\tthis._ngZone.runOutsideAngular(() => {\n\t\t\tconst focusIns$ = fromEvent<FocusEvent>(this._contentEl.nativeElement, 'focusin');\n\t\t\tconst focusOuts$ = fromEvent<FocusEvent>(this._contentEl.nativeElement, 'focusout');\n\n\t\t\t// we're changing 'focusVisible' only when entering or leaving months view\n\t\t\t// and ignoring all focus events where both 'target' and 'related' target are day cells\n\t\t\tmerge(focusIns$, focusOuts$)\n\t\t\t\t.pipe(\n\t\t\t\t\tfilter((focusEvent) => {\n\t\t\t\t\t\tconst target = focusEvent.target as HTMLElement | null;\n\t\t\t\t\t\tconst relatedTarget = focusEvent.relatedTarget as HTMLElement | null;\n\n\t\t\t\t\t\treturn !(\n\t\t\t\t\t\t\ttarget?.classList.contains('ngb-dp-day') &&\n\t\t\t\t\t\t\trelatedTarget?.classList.contains('ngb-dp-day') &&\n\t\t\t\t\t\t\tthis._nativeElement.contains(target) &&\n\t\t\t\t\t\t\tthis._nativeElement.contains(relatedTarget)\n\t\t\t\t\t\t);\n\t\t\t\t\t}),\n\t\t\t\t\ttakeUntilDestroyed(this._destroyRef),\n\t\t\t\t)\n\t\t\t\t.subscribe(({ type }) => this._ngZone.run(() => this._service.set({ focusVisible: type === 'focusin' })));\n\t\t});\n\t}\n\n\tngOnInit() {\n\t\tif (this.model === undefined) {\n\t\t\tconst inputs: DatepickerServiceInputs = {};\n\t\t\t[\n\t\t\t\t'dayTemplateData',\n\t\t\t\t'displayMonths',\n\t\t\t\t'markDisabled',\n\t\t\t\t'firstDayOfWeek',\n\t\t\t\t'navigation',\n\t\t\t\t'minDate',\n\t\t\t\t'maxDate',\n\t\t\t\t'outsideDays',\n\t\t\t\t'weekdays',\n\t\t\t].forEach((name) => (inputs[name] = this[name]));\n\t\t\tthis._service.set(inputs);\n\n\t\t\tthis.navigateTo(this.startDate);\n\t\t}\n\t\tif (!this.dayTemplate) {\n\t\t\tthis.dayTemplate = this._defaultDayTemplate;\n\t\t}\n\t\tthis._initialized = true;\n\t}\n\n\tngOnChanges(changes: SimpleChanges) {\n\t\tconst inputs: DatepickerServiceInputs = {};\n\t\t[\n\t\t\t'dayTemplateData',\n\t\t\t'displayMonths',\n\t\t\t'markDisabled',\n\t\t\t'firstDayOfWeek',\n\t\t\t'navigation',\n\t\t\t'minDate',\n\t\t\t'maxDate',\n\t\t\t'outsideDays',\n\t\t\t'weekdays',\n\t\t]\n\t\t\t.filter((name) => name in changes)\n\t\t\t.forEach((name) => (inputs[name] = this[name]));\n\t\tthis._service.set(inputs);\n\n\t\tif ('startDate' in changes && this._initialized) {\n\t\t\tconst { currentValue, previousValue } = changes.startDate;\n\t\t\tif (isChangedMonth(previousValue, currentValue)) {\n\t\t\t\tthis.navigateTo(this.startDate);\n\t\t\t}\n\t\t}\n\t}\n\n\tonDateSelect(date: NgbDate) {\n\t\tthis._service.focus(date);\n\t\tthis._service.select(date, { emitEvent: true });\n\t}\n\n\tonNavigateDateSelect(date: NgbDate) {\n\t\tthis._service.open(date);\n\t}\n\n\tonNavigateEvent(event: NavigationEvent) {\n\t\tswitch (event) {\n\t\t\tcase NavigationEvent.PREV:\n\t\t\t\tthis._service.open(this._calendar.getPrev(this.model.firstDate!, 'm', 1));\n\t\t\t\tbreak;\n\t\t\tcase NavigationEvent.NEXT:\n\t\t\t\tthis._service.open(this._calendar.getNext(this.model.firstDate!, 'm', 1));\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tregisterOnChange(fn: (value: any) => any): void {\n\t\tthis.onChange = fn;\n\t}\n\n\tregisterOnTouched(fn: () => any): void {\n\t\tthis.onTouched = fn;\n\t}\n\n\tsetDisabledState(disabled: boolean) {\n\t\tthis._service.set({ disabled });\n\t}\n\n\twriteValue(value) {\n\t\tthis._controlValue = NgbDate.from(this._ngbDateAdapter.fromModel(value));\n\t\tthis._service.select(this._controlValue);\n\t}\n}\n","import { padNumber, toInteger, isNumber } from './_ngb-ngbootstrap-utilities.mjs';\nimport { NgbDateStruct } from './ngb-date-struct';\nimport { Service } from '@angular/core';\n\nexport function NGB_DATEPICKER_PARSER_FORMATTER_FACTORY() {\n\treturn new NgbDateISOParserFormatter();\n}\n\n/**\n * An abstract service for parsing and formatting dates for the\n * [`NgbInputDatepicker`](#/components/datepicker/api#NgbInputDatepicker) directive.\n * Converts between the internal `NgbDateStruct` model presentation and a `string` that is displayed in the\n * input element.\n *\n * When user types something in the input this service attempts to parse it into a `NgbDateStruct` object.\n * And vice versa, when users selects a date in the calendar with the mouse, it must be displayed as a `string`\n * in the input.\n *\n * Default implementation uses the ISO 8601 format, but you can provide another implementation via DI\n * to use an alternative string format or a custom parsing logic.\n *\n * See the [date format overview](#/components/datepicker/overview#date-model) for more details.\n */\n@Service({ factory: NGB_DATEPICKER_PARSER_FORMATTER_FACTORY })\nexport abstract class NgbDateParserFormatter {\n\t/**\n\t * Parses the given `string` to an `NgbDateStruct`.\n\t *\n\t * Implementations should try their best to provide a result, even\n\t * partial. They must return `null` if the value can't be parsed.\n\t */\n\tabstract parse(value: string): NgbDateStruct | null;\n\n\t/**\n\t * Formats the given `NgbDateStruct` to a `string`.\n\t *\n\t * Implementations should return an empty string if the given date is `null`,\n\t * and try their best to provide a partial result if the given date is incomplete or invalid.\n\t */\n\tabstract format(date: NgbDateStruct | null): string;\n}\n\n@Service({ autoProvided: false })\nexport class NgbDateISOParserFormatter extends NgbDateParserFormatter {\n\tparse(value: string): NgbDateStruct | null {\n\t\tif (value != null) {\n\t\t\tconst dateParts = value.trim().split('-');\n\t\t\tif (dateParts.length === 1 && isNumber(dateParts[0])) {\n\t\t\t\treturn { year: toInteger(dateParts[0]), month: <any>null, day: <any>null };\n\t\t\t} else if (dateParts.length === 2 && isNumber(dateParts[0]) && isNumber(dateParts[1])) {\n\t\t\t\treturn { year: toInteger(dateParts[0]), month: toInteger(dateParts[1]), day: <any>null };\n\t\t\t} else if (dateParts.length === 3 && isNumber(dateParts[0]) && isNumber(dateParts[1]) && isNumber(dateParts[2])) {\n\t\t\t\treturn { year: toInteger(dateParts[0]), month: toInteger(dateParts[1]), day: toInteger(dateParts[2]) };\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\tformat(date: NgbDateStruct | null): string {\n\t\treturn date\n\t\t\t? `${date.year}-${isNumber(date.month) ? padNumber(date.month) : ''}-${\n\t\t\t\t\tisNumber(date.day) ? padNumber(date.day) : ''\n\t\t\t\t}`\n\t\t\t: '';\n\t}\n}\n","import { Service } from '@angular/core';\n\nimport { NgbDatepickerConfig } from './datepicker-config';\nimport { PlacementArray } from './_ngb-ngbootstrap-utilities.mjs';\nimport { Options } from '@popperjs/core';\n\n/**\n * A configuration service for the [`NgbDatepickerInput`](#/components/datepicker/api#NgbDatepicker) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the datepicker inputs used in the application.\n *\n * @since 5.2.0\n */\n@Service()\nexport class NgbInputDatepickerConfig extends NgbDatepickerConfig {\n\tautoClose: boolean | 'inside' | 'outside' = true;\n\tcontainer: null | 'body';\n\tpositionTarget: string | HTMLElement;\n\tplacement: PlacementArray = ['bottom-start', 'bottom-end', 'top-start', 'top-end'];\n\tpopperOptions = (options: Partial<Options>) => options;\n\trestoreFocus: true | HTMLElement | string = true;\n}\n","import {\n\tafterEveryRender,\n\tAfterRenderRef,\n\tChangeDetectorRef,\n\tComponentRef,\n\tDirective,\n\tElementRef,\n\tEventEmitter,\n\tforwardRef,\n\tinject,\n\tInjector,\n\tInput,\n\tNgZone,\n\tOnChanges,\n\tOnDestroy,\n\tOutput,\n\tSimpleChanges,\n\tTemplateRef,\n\tViewContainerRef,\n\tDOCUMENT,\n} from '@angular/core';\n\nimport {\n\tAbstractControl,\n\tControlValueAccessor,\n\tNG_VALIDATORS,\n\tNG_VALUE_ACCESSOR,\n\tValidationErrors,\n\tValidator,\n} from '@angular/forms';\n\nimport { ngbAutoClose, ngbFocusTrap, ngbPositioning, addPopperOffset } from './_ngb-ngbootstrap-utilities.mjs';\n\nimport { NgbDateAdapter } from './adapters/ngb-date-adapter';\nimport { NgbDatepicker, NgbDatepickerNavigateEvent } from './datepicker';\nimport { DayTemplateContext } from './datepicker-day-template-context';\nimport { NgbCalendar } from './ngb-calendar';\nimport { NgbDate } from './ngb-date';\nimport { NgbDateParserFormatter } from './ngb-date-parser-formatter';\nimport { NgbDateStruct } from './ngb-date-struct';\nimport { NgbInputDatepickerConfig } from './datepicker-input-config';\nimport { NgbDatepickerConfig } from './datepicker-config';\nimport { isString } from './_ngb-ngbootstrap-utilities.mjs';\nimport { Subject } from 'rxjs';\nimport { ContentTemplateContext } from './datepicker-content-template-context';\n\n/**\n * A directive that allows to stick a datepicker popup to an input field.\n *\n * Manages interaction with the input field itself, does value formatting and provides forms integration.\n */\n@Directive({\n\tselector: 'input[ngbDatepicker]',\n\texportAs: 'ngbDatepicker',\n\thost: {\n\t\t'(input)': 'manualDateChange($any($event).target.value)',\n\t\t'(change)': 'manualDateChange($any($event).target.value, true)',\n\t\t'(focus)': 'onFocus()',\n\t\t'(blur)': 'onBlur()',\n\t\t'[disabled]': 'disabled',\n\t},\n\tproviders: [\n\t\t{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbInputDatepicker), multi: true },\n\t\t{ provide: NG_VALIDATORS, useExisting: forwardRef(() => NgbInputDatepicker), multi: true },\n\t\t{ provide: NgbDatepickerConfig, useExisting: NgbInputDatepickerConfig },\n\t],\n})\nexport class NgbInputDatepicker implements OnChanges, OnDestroy, ControlValueAccessor, Validator {\n\tstatic ngAcceptInputType_autoClose: boolean | string;\n\tstatic ngAcceptInputType_disabled: boolean | '';\n\tstatic ngAcceptInputType_navigation: string;\n\tstatic ngAcceptInputType_outsideDays: string;\n\tstatic ngAcceptInputType_weekdays: boolean | string;\n\n\tprivate _parserFormatter = inject(NgbDateParserFormatter);\n\tprivate _elRef = inject(ElementRef<HTMLInputElement>);\n\tprivate _vcRef = inject(ViewContainerRef);\n\tprivate _ngZone = inject(NgZone);\n\tprivate _calendar = inject(NgbCalendar);\n\tprivate _dateAdapter = inject(NgbDateAdapter<any>);\n\tprivate _document = inject(DOCUMENT);\n\tprivate _changeDetector = inject(ChangeDetectorRef);\n\tprivate _injector = inject(Injector);\n\tprivate _config = inject(NgbInputDatepickerConfig);\n\n\tprivate _cRef: ComponentRef<NgbDatepicker> | null = null;\n\tprivate _disabled = false;\n\tprivate _elWithFocus: HTMLElement | null = null;\n\tprivate _model: NgbDate | null = null;\n\tprivate _inputValue: string;\n\tprivate _afterRenderRef: AfterRenderRef | undefined;\n\tprivate _positioning = ngbPositioning();\n\tprivate _destroyCloseHandlers$ = new Subject<void>();\n\n\t/**\n\t * Indicates whether the datepicker popup should be closed automatically after date selection / outside click or not.\n\t *\n\t * * `true` - the popup will close on both date selection and outside click.\n\t * * `false` - the popup can only be closed manually via `close()` or `toggle()` methods.\n\t * * `\"inside\"` - the popup will close on date selection, but not outside clicks.\n\t * * `\"outside\"` - the popup will close only on the outside click and not on date selection/inside clicks.\n\t *\n\t * @since 3.0.0\n\t */\n\t@Input() autoClose = this._config.autoClose;\n\n\t/**\n\t * The reference to a custom content template.\n\t *\n\t * Allows to completely override the way datepicker.\n\t *\n\t * See [`NgbDatepickerContent`](#/components/datepicker/api#NgbDatepickerContent) for more details.\n\t *\n\t * @since 14.2.0\n\t */\n\t@Input() contentTemplate: TemplateRef<ContentTemplateContext>;\n\n\t/**\n\t * An optional class applied to the datepicker popup element.\n\t *\n\t * @since 9.1.0\n\t */\n\t@Input() datepickerClass: string;\n\n\t/**\n\t * The reference to a custom template for the day.\n\t *\n\t * Allows to completely override the way a day 'cell' in the calendar is displayed.\n\t *\n\t * See [`DayTemplateContext`](#/components/datepicker/api#DayTemplateContext) for the data you get inside.\n\t */\n\t@Input() dayTemplate: TemplateRef<DayTemplateContext>;\n\n\t/**\n\t * The callback to pass any arbitrary data to the template cell via the\n\t * [`DayTemplateContext`](#/components/datepicker/api#DayTemplateContext)'s `data` parameter.\n\t *\n\t * `current` is the month that is currently displayed by the datepicker.\n\t *\n\t * @since 3.3.0\n\t */\n\t@Input() dayTemplateData: (date: NgbDate, current?: { year: number; month: number }) => any;\n\n\t/**\n\t * The number of months to display.\n\t */\n\t@Input() displayMonths: number;\n\n\t/**\n\t * The first day of the week.\n\t *\n\t * With default calendar we use ISO 8601: 'weekday' is 1=Mon ... 7=Sun.\n\t */\n\t@Input() firstDayOfWeek: number;\n\n\t/**\n\t * The reference to the custom template for the datepicker footer.\n\t *\n\t * @since 3.3.0\n\t */\n\t@Input() footerTemplate: TemplateRef<any>;\n\n\t/**\n\t * The callback to mark some dates as disabled.\n\t *\n\t * It is called for each new date when navigating to a different month.\n\t *\n\t * `current` is the month that is currently displayed by the datepicker.\n\t */\n\t@Input() markDisabled: (date: NgbDate, current?: { year: number; month: number }) => boolean;\n\n\t/**\n\t * The earliest date that can be displayed or selected. Also used for form validation.\n\t *\n\t * If not provided, 'year' select box will display 10 years before the current month.\n\t */\n\t@Input() minDate: NgbDateStruct;\n\n\t/**\n\t * The latest date that can be displayed or selected. Also used for form validation.\n\t *\n\t * If not provided, 'year' select box will display 10 years after the current month.\n\t */\n\t@Input() maxDate: NgbDateStruct;\n\n\t/**\n\t * Navigation type.\n\t *\n\t * * `\"select\"` - select boxes for month and navigation arrows\n\t * * `\"arrows\"` - only navigation arrows\n\t * * `\"none\"` - no navigation visible at all\n\t */\n\t@Input() navigation: 'select' | 'arrows' | 'none';\n\n\t/**\n\t * The way of displaying days that don't belong to the current month.\n\t *\n\t * * `\"visible\"` - days are visible\n\t * * `\"hidden\"` - days are hidden, white space preserved\n\t * * `\"collapsed\"` - days are collapsed, so the datepicker height might change between months\n\t *\n\t * For the 2+ months view, days in between months are never shown.\n\t */\n\t@Input() outsideDays: 'visible' | 'collapsed' | 'hidden';\n\n\t/**\n\t * The preferred placement of the datepicker popup, among the [possible values](#/guides/positioning#api).\n\t *\n\t * The default order of preference is `\"bottom-start bottom-end top-start top-end\"`\n\t *\n\t * Please see the [positioning overview](#/positioning) for more details.\n\t */\n\t@Input() placement = this._config.placement;\n\n\t/**\n\t * Allows to change default Popper options when positioning the popup.\n\t * Receives current popper options and returns modified ones.\n\t *\n\t * @since 13.1.0\n\t */\n\t@Input() popperOptions = this._config.popperOptions;\n\n\t/**\n\t * If `true`, when closing datepicker will focus element that was focused before datepicker was opened.\n\t *\n\t * Alternatively you could provide a selector or an `HTMLElement` to focus. If the element doesn't exist or invalid,\n\t * we'll fallback to focus document body.\n\t *\n\t * @since 5.2.0\n\t */\n\t@Input() restoreFocus: true | string | HTMLElement;\n\n\t/**\n\t * If `true`, week numbers will be displayed.\n\t */\n\t@Input() showWeekNumbers: boolean;\n\n\t/**\n\t * The date to open calendar with.\n\t *\n\t * With the default calendar we use ISO 8601: 'month' is 1=Jan ... 12=Dec.\n\t * If nothing or invalid date is provided, calendar will open with current month.\n\t *\n\t * You could use `navigateTo(date)` method as an alternative.\n\t */\n\t@Input() startDate: { year: number; month: number; day?: number };\n\n\t/**\n\t * A selector specifying the element the datepicker popup should be appended to.\n\t *\n\t * Currently only supports `\"body\"`.\n\t */\n\t@Input() container = this._config.container;\n\n\t/**\n\t * A css selector or html element specifying the element the datepicker popup should be positioned against.\n\t *\n\t * By default the input is used as a target.\n\t *\n\t * @since 4.2.0\n\t */\n\t@Input() positionTarget = this._config.positionTarget;\n\n\t/**\n\t * The way weekdays should be displayed.\n\t *\n\t * * `true` - weekdays are displayed using default width\n\t * * `false` - weekdays are not displayed\n\t * * `\"short\" | \"long\" | \"narrow\"` - weekdays are displayed using specified width\n\t *\n\t * @since 9.1.0\n\t */\n\t@Input() weekdays: Exclude<Intl.DateTimeFormatOptions['weekday'], undefined> | boolean;\n\n\t/**\n\t * An event emitted when user selects a date using keyboard or mouse.\n\t *\n\t * The payload of the event is currently selected `NgbDate`.\n\t *\n\t * @since 1.1.1\n\t */\n\t@Output() dateSelect = new EventEmitter<NgbDate>();\n\n\t/**\n\t * Event emitted right after the navigation happens and displayed month changes.\n\t *\n\t * See [`NgbDatepickerNavigateEvent`](#/components/datepicker/api#NgbDatepickerNavigateEvent) for the payload info.\n\t */\n\t@Output() navigate = new EventEmitter<NgbDatepickerNavigateEvent>();\n\n\t/**\n\t * An event fired after closing datepicker window.\n\t *\n\t * @since 4.2.0\n\t */\n\t@Output() closed = new EventEmitter<void>();\n\n\t@Input()\n\tget disabled() {\n\t\treturn this._disabled;\n\t}\n\tset disabled(value: any) {\n\t\tthis._disabled = value === '' || (value && value !== 'false');\n\n\t\tif (this.isOpen()) {\n\t\t\tthis._cRef!.instance.setDisabledState(this._disabled);\n\t\t}\n\t}\n\n\tprivate _onChange = (_: any) => {};\n\tprivate _onTouched = () => {};\n\tprivate _validatorChange = () => {};\n\n\tregisterOnChange(fn: (value: any) => any): void {\n\t\tthis._onChange = fn;\n\t}\n\n\tregisterOnTouched(fn: () => any): void {\n\t\tthis._onTouched = fn;\n\t}\n\n\tregisterOnValidatorChange(fn: () => void): void {\n\t\tthis._validatorChange = fn;\n\t}\n\n\tsetDisabledState(isDisabled: boolean): void {\n\t\tthis.disabled = isDisabled;\n\t}\n\n\tvalidate(c: AbstractControl): ValidationErrors | null {\n\t\tconst { value } = c;\n\n\t\tif (value != null) {\n\t\t\tconst ngbDate = this._fromDateStruct(this._dateAdapter.fromModel(value));\n\n\t\t\tif (!ngbDate) {\n\t\t\t\treturn { ngbDate: { invalid: value } };\n\t\t\t}\n\n\t\t\tif (this.minDate && ngbDate.before(NgbDate.from(this.minDate))) {\n\t\t\t\treturn { ngbDate: { minDate: { minDate: this.minDate, actual: value } } };\n\t\t\t}\n\n\t\t\tif (this.maxDate && ngbDate.after(NgbDate.from(this.maxDate))) {\n\t\t\t\treturn { ngbDate: { maxDate: { maxDate: this.maxDate, actual: value } } };\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\twriteValue(value) {\n\t\tthis._model = this._fromDateStruct(this._dateAdapter.fromModel(value));\n\t\tthis._writeModelValue(this._model);\n\t}\n\n\tmanualDateChange(value: string, updateView = false) {\n\t\tconst inputValueChanged = value !== this._inputValue;\n\t\tif (inputValueChanged) {\n\t\t\tthis._inputValue = value;\n\t\t\tthis._model = this._fromDateStruct(this._parserFormatter.parse(value));\n\t\t}\n\t\tif (inputValueChanged || !updateView) {\n\t\t\tthis._onChange(this._model ? this._dateAdapter.toModel(this._model) : value === '' ? null : value);\n\t\t}\n\t\tif (updateView && this._model) {\n\t\t\tthis._writeModelValue(this._model);\n\t\t}\n\t}\n\n\tisOpen() {\n\t\treturn !!this._cRef;\n\t}\n\n\t/**\n\t * Opens the datepicker popup.\n\t *\n\t * If the related form control contains a valid date, the corresponding month will be opened.\n\t */\n\topen() {\n\t\tif (!this.isOpen()) {\n\t\t\tthis._cRef = this._vcRef.createComponent(NgbDatepicker, { injector: this._injector });\n\n\t\t\tthis._applyPopupStyling(this._cRef.location.nativeElement);\n\t\t\tthis._applyDatepickerInputs(this._cRef);\n\t\t\tthis._subscribeForDatepickerOutputs(this._cRef.instance);\n\t\t\tthis._cRef.instance.ngOnInit();\n\t\t\tthis._cRef.instance.writeValue(this._dateAdapter.toModel(this._model));\n\n\t\t\t// date selection event handling\n\t\t\tthis._cRef.instance.registerOnChange((selectedDate) => {\n\t\t\t\tthis.writeValue(selectedDate);\n\t\t\t\tthis._onChange(selectedDate);\n\t\t\t\tthis._onTouched();\n\t\t\t});\n\n\t\t\tthis._cRef.changeDetectorRef.detectChanges();\n\n\t\t\tthis._cRef.instance.setDisabledState(this.disabled);\n\n\t\t\tif (this.container === 'body') {\n\t\t\t\tthis._document.querySelector(this.container)?.appendChild(this._cRef.location.nativeElement);\n\t\t\t}\n\n\t\t\t// focus handling\n\t\t\tthis._elWithFocus = this._document.activeElement as HTMLElement | null;\n\t\t\tngbFocusTrap(this._ngZone, this._cRef.location.nativeElement, this.closed, true);\n\t\t\tsetTimeout(() => this._cRef?.instance.focus());\n\n\t\t\tlet hostElement: HTMLElement | null;\n\t\t\tif (isString(this.positionTarget)) {\n\t\t\t\thostElement = this._document.querySelector(this.positionTarget);\n\t\t\t} else if (this.positionTarget instanceof HTMLElement) {\n\t\t\t\thostElement = this.positionTarget;\n\t\t\t} else {\n\t\t\t\thostElement = this._elRef.nativeElement;\n\t\t\t}\n\n\t\t\tif (this.positionTarget && !hostElement) {\n\t\t\t\tthrow new Error('ngbDatepicker could not find element declared in [positionTarget] to position against.');\n\t\t\t}\n\n\t\t\t// Setting up popper and scheduling updates when zone is stable\n\t\t\tthis._ngZone.runOutsideAngular(() => {\n\t\t\t\tif (this._cRef && hostElement) {\n\t\t\t\t\tthis._positioning.createPopper({\n\t\t\t\t\t\thostElement,\n\t\t\t\t\t\ttargetElement: this._cRef.location.nativeElement,\n\t\t\t\t\t\tplacement: this.placement,\n\t\t\t\t\t\tupdatePopperOptions: (options) => this.popperOptions(addPopperOffset([0, 2])(options)),\n\t\t\t\t\t});\n\n\t\t\t\t\tthis._afterRenderRef = afterEveryRender(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tmixedReadWrite: () => {\n\t\t\t\t\t\t\t\tthis._positioning.update();\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{ injector: this._injector },\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis._setCloseHandlers();\n\t\t}\n\t}\n\n\t/**\n\t * Closes the datepicker popup.\n\t */\n\tclose() {\n\t\tif (this.isOpen()) {\n\t\t\tthis._cRef?.destroy();\n\t\t\tthis._cRef = null;\n\t\t\tthis._positioning.destroy();\n\t\t\tthis._afterRenderRef?.destroy();\n\t\t\tthis._destroyCloseHandlers$.next();\n\t\t\tthis.closed.emit();\n\t\t\tthis._changeDetector.markForCheck();\n\n\t\t\t// restore focus\n\t\t\tlet elementToFocus: HTMLElement | null = this._elWithFocus;\n\t\t\tif (isString(this.restoreFocus)) {\n\t\t\t\telementToFocus = this._document.querySelector(this.restoreFocus);\n\t\t\t} else if (this.restoreFocus !== undefined) {\n\t\t\t\telementToFocus = this.restoreFocus as HTMLElement;\n\t\t\t}\n\n\t\t\t// in IE document.activeElement can contain an object without 'focus()' sometimes\n\t\t\tif (elementToFocus && elementToFocus['focus']) {\n\t\t\t\telementToFocus.focus();\n\t\t\t} else {\n\t\t\t\tthis._document.body.focus();\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Toggles the datepicker popup.\n\t */\n\ttoggle() {\n\t\tif (this.isOpen()) {\n\t\t\tthis.close();\n\t\t} else {\n\t\t\tthis.open();\n\t\t}\n\t}\n\n\t/**\n\t * Navigates to the provided date.\n\t *\n\t * With the default calendar we use ISO 8601: 'month' is 1=Jan ... 12=Dec.\n\t * If nothing or invalid date provided calendar will open current month.\n\t *\n\t * Use the `[startDate]` input as an alternative.\n\t */\n\tnavigateTo(date?: { year: number; month: number; day?: number }) {\n\t\tif (this.isOpen()) {\n\t\t\tthis._cRef!.instance.navigateTo(date);\n\t\t}\n\t}\n\n\tonBlur() {\n\t\tthis._onTouched();\n\t}\n\n\tonFocus() {\n\t\tthis._elWithFocus = this._elRef.nativeElement;\n\t}\n\n\tngOnChanges(changes: SimpleChanges) {\n\t\tif (changes['minDate'] || changes['maxDate']) {\n\t\t\tthis._validatorChange();\n\n\t\t\tif (this.isOpen()) {\n\t\t\t\tif (changes['minDate']) {\n\t\t\t\t\tthis._cRef!.setInput('minDate', this.minDate);\n\t\t\t\t}\n\t\t\t\tif (changes['maxDate']) {\n\t\t\t\t\tthis._cRef!.setInput('maxDate', this.maxDate);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (changes['datepickerClass']) {\n\t\t\tconst { currentValue, previousValue } = changes['datepickerClass'];\n\t\t\tthis._applyPopupClass(currentValue, previousValue);\n\t\t}\n\n\t\tif (changes['autoClose'] && this.isOpen()) {\n\t\t\tthis._setCloseHandlers();\n\t\t}\n\t}\n\n\tngOnDestroy() {\n\t\tthis.close();\n\t}\n\n\tprivate _applyDatepickerInputs(datepickerComponentRef: ComponentRef<NgbDatepicker>): void {\n\t\t[\n\t\t\t'contentTemplate',\n\t\t\t'dayTemplate',\n\t\t\t'dayTemplateData',\n\t\t\t'displayMonths',\n\t\t\t'firstDayOfWeek',\n\t\t\t'footerTemplate',\n\t\t\t'markDisabled',\n\t\t\t'minDate',\n\t\t\t'maxDate',\n\t\t\t'navigation',\n\t\t\t'outsideDays',\n\t\t\t'showNavigation',\n\t\t\t'showWeekNumbers',\n\t\t\t'weekdays',\n\t\t].forEach((inputName: string) => {\n\t\t\tif (this[inputName] !== undefined) {\n\t\t\t\tdatepickerComponentRef.setInput(inputName, this[inputName]);\n\t\t\t}\n\t\t});\n\t\tdatepickerComponentRef.setInput('startDate', this.startDate || this._model);\n\t}\n\n\tprivate _applyPopupClass(newClass: string, oldClass?: string) {\n\t\tconst popupEl = this._cRef?.location.nativeElement as HTMLElement;\n\t\tif (popupEl) {\n\t\t\tif (newClass) {\n\t\t\t\tpopupEl.classList.add(newClass);\n\t\t\t}\n\t\t\tif (oldClass) {\n\t\t\t\tpopupEl.classList.remove(oldClass);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _applyPopupStyling(nativeElement: HTMLElement) {\n\t\tnativeElement.classList.add('dropdown-menu', 'show');\n\n\t\tif (this.container === 'body') {\n\t\t\tnativeElement.classList.add('ngb-dp-body');\n\t\t}\n\n\t\tthis._applyPopupClass(this.datepickerClass);\n\t}\n\n\tprivate _subscribeForDatepickerOutputs(datepickerInstance: NgbDatepicker) {\n\t\tdatepickerInstance.navigate.subscribe((navigateEvent) => this.navigate.emit(navigateEvent));\n\t\tdatepickerInstance.dateSelect.subscribe((date) => {\n\t\t\tthis.dateSelect.emit(date);\n\t\t\tif (this.autoClose === true || this.autoClose === 'inside') {\n\t\t\t\tthis.close();\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate _writeModelValue(model: NgbDate | null) {\n\t\tconst value = this._parserFormatter.format(model);\n\t\tthis._inputValue = value;\n\t\tthis._elRef.nativeElement.value = value;\n\t\tif (this.isOpen()) {\n\t\t\tthis._cRef!.instance.writeValue(this._dateAdapter.toModel(model));\n\t\t\tthis._onTouched();\n\t\t}\n\t}\n\n\tprivate _fromDateStruct(date: NgbDateStruct | null): NgbDate | null {\n\t\tconst ngbDate = date ? new NgbDate(date.year, date.month, date.day) : null;\n\t\treturn this._calendar.isValid(ngbDate) ? ngbDate : null;\n\t}\n\n\tprivate _setCloseHandlers() {\n\t\tthis._destroyCloseHandlers$.next();\n\t\tngbAutoClose(\n\t\t\tthis._ngZone,\n\t\t\tthis._document,\n\t\t\tthis.autoClose,\n\t\t\t() => this.close(),\n\t\t\tthis._destroyCloseHandlers$,\n\t\t\t[],\n\t\t\t[this._elRef.nativeElement, this._cRef!.location.nativeElement],\n\t\t);\n\t}\n}\n","import { NgbDate } from '../ngb-date';\nimport { NgbPeriod, NgbCalendar } from '../ngb-calendar';\nimport { Service } from '@angular/core';\nimport { isNumber } from './_ngb-ngbootstrap-utilities.mjs';\n\n@Service({ autoProvided: false })\nexport abstract class NgbCalendarHijri extends NgbCalendar {\n\t/**\n\t * Returns the number of days in a specific Hijri month.\n\t * `month` is 1 for Muharram, 2 for Safar, etc.\n\t * `year` is any Hijri year.\n\t */\n\tabstract getDaysPerMonth(month: number, year: number): number;\n\n\t/**\n\t * Returns the equivalent Hijri date value for a give input Gregorian date.\n\t * `gDate` is s JS Date to be converted to Hijri.\n\t */\n\tabstract fromGregorian(gDate: Date): NgbDate;\n\n\t/**\n\t * Converts the current Hijri date to Gregorian.\n\t */\n\tabstract toGregorian(hDate: NgbDate): Date;\n\n\tgetDaysPerWeek() {\n\t\treturn 7;\n\t}\n\n\tgetMonths() {\n\t\treturn [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];\n\t}\n\n\tgetWeeksPerMonth() {\n\t\treturn 6;\n\t}\n\n\tgetNext(date: NgbDate, period: NgbPeriod = 'd', number = 1) {\n\t\tdate = new NgbDate(date.year, date.month, date.day);\n\n\t\tswitch (period) {\n\t\t\tcase 'y':\n\t\t\t\tdate = this._setYear(date, date.year + number);\n\t\t\t\tdate.month = 1;\n\t\t\t\tdate.day = 1;\n\t\t\t\treturn date;\n\t\t\tcase 'm':\n\t\t\t\tdate = this._setMonth(date, date.month + number);\n\t\t\t\tdate.day = 1;\n\t\t\t\treturn date;\n\t\t\tcase 'd':\n\t\t\t\treturn this._setDay(date, date.day + number);\n\t\t\tdefault:\n\t\t\t\treturn date;\n\t\t}\n\t}\n\n\tgetPrev(date: NgbDate, period: NgbPeriod = 'd', number = 1) {\n\t\treturn this.getNext(date, period, -number);\n\t}\n\n\tgetWeekday(date: NgbDate) {\n\t\tconst day = this.toGregorian(date).getDay();\n\t\t// in JS Date Sun=0, in ISO 8601 Sun=7\n\t\treturn day === 0 ? 7 : day;\n\t}\n\n\tgetWeekNumber(week: readonly NgbDate[], firstDayOfWeek: number) {\n\t\t// in JS Date Sun=0, in ISO 8601 Sun=7\n\t\tif (firstDayOfWeek === 7) {\n\t\t\tfirstDayOfWeek = 0;\n\t\t}\n\n\t\tconst thursdayIndex = (4 + 7 - firstDayOfWeek) % 7;\n\t\tconst date = week[thursdayIndex];\n\n\t\tconst jsDate = this.toGregorian(date);\n\t\tjsDate.setDate(jsDate.getDate() + 4 - (jsDate.getDay() || 7)); // Thursday\n\t\tconst time = jsDate.getTime();\n\t\tconst MuhDate = this.toGregorian(new NgbDate(date.year, 1, 1)); // Compare with Muharram 1\n\t\treturn Math.floor(Math.round((time - MuhDate.getTime()) / 86400000) / 7) + 1;\n\t}\n\n\tgetToday(): NgbDate {\n\t\treturn this.fromGregorian(new Date());\n\t}\n\n\tisValid(date?: NgbDate | null): boolean {\n\t\treturn (\n\t\t\tdate != null &&\n\t\t\tisNumber(date.year) &&\n\t\t\tisNumber(date.month) &&\n\t\t\tisNumber(date.day) &&\n\t\t\t!isNaN(this.toGregorian(date).getTime())\n\t\t);\n\t}\n\n\tprivate _setDay(date: NgbDate, day: number): NgbDate {\n\t\tday = +day;\n\t\tlet mDays = this.getDaysPerMonth(date.month, date.year);\n\t\tif (day <= 0) {\n\t\t\twhile (day <= 0) {\n\t\t\t\tdate = this._setMonth(date, date.month - 1);\n\t\t\t\tmDays = this.getDaysPerMonth(date.month, date.year);\n\t\t\t\tday += mDays;\n\t\t\t}\n\t\t} else if (day > mDays) {\n\t\t\twhile (day > mDays) {\n\t\t\t\tday -= mDays;\n\t\t\t\tdate = this._setMonth(date, date.month + 1);\n\t\t\t\tmDays = this.getDaysPerMonth(date.month, date.year);\n\t\t\t}\n\t\t}\n\t\tdate.day = day;\n\t\treturn date;\n\t}\n\n\tprivate _setMonth(date: NgbDate, month: number): NgbDate {\n\t\tmonth = +month;\n\t\tdate.year = date.year + Math.floor((month - 1) / 12);\n\t\tdate.month = Math.floor((((month - 1) % 12) + 12) % 12) + 1;\n\t\treturn date;\n\t}\n\n\tprivate _setYear(date: NgbDate, year: number): NgbDate {\n\t\tdate.year = +year;\n\t\treturn date;\n\t}\n}\n","import { NgbCalendarHijri } from './ngb-calendar-hijri';\nimport { NgbDate } from '../ngb-date';\nimport { Service } from '@angular/core';\n\n/**\n * Checks if islamic year is a leap year\n */\nfunction isIslamicLeapYear(hYear: number): boolean {\n\treturn (14 + 11 * hYear) % 30 < 11;\n}\n\n/**\n * Checks if gregorian years is a leap year\n */\nfunction isGregorianLeapYear(gDate: Date): boolean {\n\tconst year = gDate.getFullYear();\n\treturn (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n}\n\n/**\n * Returns the start of Hijri Month.\n * `hMonth` is 0 for Muharram, 1 for Safar, etc.\n * `hYear` is any Hijri hYear.\n */\nfunction getIslamicMonthStart(hYear: number, hMonth: number): number {\n\treturn Math.ceil(29.5 * hMonth) + (hYear - 1) * 354 + Math.floor((3 + 11 * hYear) / 30.0);\n}\n\n/**\n * Returns the start of Hijri year.\n * `year` is any Hijri year.\n */\nfunction getIslamicYearStart(year: number): number {\n\treturn (year - 1) * 354 + Math.floor((3 + 11 * year) / 30.0);\n}\n\nfunction mod(a: number, b: number): number {\n\treturn a - b * Math.floor(a / b);\n}\n\n/**\n * The civil calendar is one type of Hijri calendars used in islamic countries.\n * Uses a fixed cycle of alternating 29- and 30-day months,\n * with a leap day added to the last month of 11 out of every 30 years.\n * http://cldr.unicode.org/development/development-process/design-proposals/islamic-calendar-types\n * All the calculations here are based on the equations from \"Calendrical Calculations\" By Edward M. Reingold, Nachum\n * Dershowitz.\n */\n\nconst GREGORIAN_EPOCH = 1721425.5;\nconst ISLAMIC_EPOCH = 1948439.5;\n\n@Service({ autoProvided: false })\nexport class NgbCalendarIslamicCivil extends NgbCalendarHijri {\n\t/**\n\t * Returns the equivalent islamic(civil) date value for a give input Gregorian date.\n\t * `gDate` is a JS Date to be converted to Hijri.\n\t */\n\tfromGregorian(gDate: Date): NgbDate {\n\t\tconst gYear = gDate.getFullYear(),\n\t\t\tgMonth = gDate.getMonth(),\n\t\t\tgDay = gDate.getDate();\n\n\t\tlet julianDay =\n\t\t\tGREGORIAN_EPOCH -\n\t\t\t1 +\n\t\t\t365 * (gYear - 1) +\n\t\t\tMath.floor((gYear - 1) / 4) +\n\t\t\t-Math.floor((gYear - 1) / 100) +\n\t\t\tMath.floor((gYear - 1) / 400) +\n\t\t\tMath.floor((367 * (gMonth + 1) - 362) / 12 + (gMonth + 1 <= 2 ? 0 : isGregorianLeapYear(gDate) ? -1 : -2) + gDay);\n\t\tjulianDay = Math.floor(julianDay) + 0.5;\n\n\t\tconst days = julianDay - ISLAMIC_EPOCH;\n\t\tconst hYear = Math.floor((30 * days + 10646) / 10631.0);\n\t\tlet hMonth = Math.ceil((days - 29 - getIslamicYearStart(hYear)) / 29.5);\n\t\thMonth = Math.min(hMonth, 11);\n\t\tconst hDay = Math.ceil(days - getIslamicMonthStart(hYear, hMonth)) + 1;\n\t\treturn new NgbDate(hYear, hMonth + 1, hDay);\n\t}\n\n\t/**\n\t * Returns the equivalent JS date value for a give input islamic(civil) date.\n\t * `hDate` is an islamic(civil) date to be converted to Gregorian.\n\t */\n\ttoGregorian(hDate: NgbDate): Date {\n\t\tconst hYear = hDate.year;\n\t\tconst hMonth = hDate.month - 1;\n\t\tconst hDay = hDate.day;\n\t\tconst julianDay =\n\t\t\thDay + Math.ceil(29.5 * hMonth) + (hYear - 1) * 354 + Math.floor((3 + 11 * hYear) / 30) + ISLAMIC_EPOCH - 1;\n\n\t\tconst wjd = Math.floor(julianDay - 0.5) + 0.5,\n\t\t\tdepoch = wjd - GREGORIAN_EPOCH,\n\t\t\tquadricent = Math.floor(depoch / 146097),\n\t\t\tdqc = mod(depoch, 146097),\n\t\t\tcent = Math.floor(dqc / 36524),\n\t\t\tdcent = mod(dqc, 36524),\n\t\t\tquad = Math.floor(dcent / 1461),\n\t\t\tdquad = mod(dcent, 1461),\n\t\t\tyindex = Math.floor(dquad / 365);\n\t\tlet year = quadricent * 400 + cent * 100 + quad * 4 + yindex;\n\t\tif (!(cent === 4 || yindex === 4)) {\n\t\t\tyear++;\n\t\t}\n\n\t\tconst gYearStart =\n\t\t\tGREGORIAN_EPOCH +\n\t\t\t365 * (year - 1) +\n\t\t\tMath.floor((year - 1) / 4) -\n\t\t\tMath.floor((year - 1) / 100) +\n\t\t\tMath.floor((year - 1) / 400);\n\n\t\tconst yearday = wjd - gYearStart;\n\n\t\tconst tjd =\n\t\t\tGREGORIAN_EPOCH -\n\t\t\t1 +\n\t\t\t365 * (year - 1) +\n\t\t\tMath.floor((year - 1) / 4) -\n\t\t\tMath.floor((year - 1) / 100) +\n\t\t\tMath.floor((year - 1) / 400) +\n\t\t\tMath.floor(739 / 12 + (isGregorianLeapYear(new Date(year, 3, 1)) ? -1 : -2) + 1);\n\n\t\tconst leapadj = wjd < tjd ? 0 : isGregorianLeapYear(new Date(year, 3, 1)) ? 1 : 2;\n\n\t\tconst month = Math.floor(((yearday + leapadj) * 12 + 373) / 367);\n\t\tconst tjd2 =\n\t\t\tGREGORIAN_EPOCH -\n\t\t\t1 +\n\t\t\t365 * (year - 1) +\n\t\t\tMath.floor((year - 1) / 4) -\n\t\t\tMath.floor((year - 1) / 100) +\n\t\t\tMath.floor((year - 1) / 400) +\n\t\t\tMath.floor(\n\t\t\t\t(367 * month - 362) / 12 + (month <= 2 ? 0 : isGregorianLeapYear(new Date(year, month - 1, 1)) ? -1 : -2) + 1,\n\t\t\t);\n\n\t\tconst day = wjd - tjd2 + 1;\n\n\t\treturn new Date(year, month - 1, day);\n\t}\n\n\t/**\n\t * Returns the number of days in a specific Hijri month.\n\t * `month` is 1 for Muharram, 2 for Safar, etc.\n\t * `year` is any Hijri year.\n\t */\n\tgetDaysPerMonth(month: number, year: number): number {\n\t\tyear = year + Math.floor(month / 13);\n\t\tmonth = ((month - 1) % 12) + 1;\n\t\tlet length = 29 + (month % 2);\n\t\tif (month === 12 && isIslamicLeapYear(year)) {\n\t\t\tlength++;\n\t\t}\n\t\treturn length;\n\t}\n}\n","import { NgbCalendarIslamicCivil } from './ngb-calendar-islamic-civil';\nimport { NgbDate } from '../ngb-date';\nimport { Service } from '@angular/core';\n\n/**\n * Umalqura calendar is one type of Hijri calendars used in islamic countries.\n * This Calendar is used by Saudi Arabia for administrative purpose.\n * Unlike tabular calendars, the algorithm involves astronomical calculation, but it's still deterministic.\n * http://cldr.unicode.org/development/development-process/design-proposals/islamic-calendar-types\n */\n\nconst GREGORIAN_FIRST_DATE = new Date(1882, 10, 12);\nconst GREGORIAN_LAST_DATE = new Date(2174, 10, 25);\nconst HIJRI_BEGIN = 1300;\nconst HIJRI_END = 1600;\nconst ONE_DAY = 1000 * 60 * 60 * 24;\n\nconst MONTH_LENGTH = [\n\t// 1300-1304\n\t'101010101010',\n\t'110101010100',\n\t'111011001001',\n\t'011011010100',\n\t'011011101010',\n\t// 1305-1309\n\t'001101101100',\n\t'101010101101',\n\t'010101010101',\n\t'011010101001',\n\t'011110010010',\n\t// 1310-1314\n\t'101110101001',\n\t'010111010100',\n\t'101011011010',\n\t'010101011100',\n\t'110100101101',\n\t// 1315-1319\n\t'011010010101',\n\t'011101001010',\n\t'101101010100',\n\t'101101101010',\n\t'010110101101',\n\t// 1320-1324\n\t'010010101110',\n\t'101001001111',\n\t'010100010111',\n\t'011010001011',\n\t'011010100101',\n\t// 1325-1329\n\t'101011010101',\n\t'001011010110',\n\t'100101011011',\n\t'010010011101',\n\t'101001001101',\n\t// 1330-1334\n\t'110100100110',\n\t'110110010101',\n\t'010110101100',\n\t'100110110110',\n\t'001010111010',\n\t// 1335-1339\n\t'101001011011',\n\t'010100101011',\n\t'101010010101',\n\t'011011001010',\n\t'101011101001',\n\t// 1340-1344\n\t'001011110100',\n\t'100101110110',\n\t'001010110110',\n\t'100101010110',\n\t'101011001010',\n\t// 1345-1349\n\t'101110100100',\n\t'101111010010',\n\t'010111011001',\n\t'001011011100',\n\t'100101101101',\n\t// 1350-1354\n\t'010101001101',\n\t'101010100101',\n\t'101101010010',\n\t'101110100101',\n\t'010110110100',\n\t// 1355-1359\n\t'100110110110',\n\t'010101010111',\n\t'001010010111',\n\t'010101001011',\n\t'011010100011',\n\t// 1360-1364\n\t'011101010010',\n\t'101101100101',\n\t'010101101010',\n\t'101010101011',\n\t'010100101011',\n\t// 1365-1369\n\t'110010010101',\n\t'110101001010',\n\t'110110100101',\n\t'010111001010',\n\t'101011010110',\n\t// 1370-1374\n\t'100101010111',\n\t'010010101011',\n\t'100101001011',\n\t'101010100101',\n\t'101101010010',\n\t// 1375-1379\n\t'101101101010',\n\t'010101110101',\n\t'001001110110',\n\t'100010110111',\n\t'010001011011',\n\t// 1380-1384\n\t'010101010101',\n\t'010110101001',\n\t'010110110100',\n\t'100111011010',\n\t'010011011101',\n\t// 1385-1389\n\t'001001101110',\n\t'100100110110',\n\t'101010101010',\n\t'110101010100',\n\t'110110110010',\n\t// 1390-1394\n\t'010111010101',\n\t'001011011010',\n\t'100101011011',\n\t'010010101011',\n\t'101001010101',\n\t// 1395-1399\n\t'101101001001',\n\t'101101100100',\n\t'101101110001',\n\t'010110110100',\n\t'101010110101',\n\t// 1400-1404\n\t'101001010101',\n\t'110100100101',\n\t'111010010010',\n\t'111011001001',\n\t'011011010100',\n\t// 1405-1409\n\t'101011101001',\n\t'100101101011',\n\t'010010101011',\n\t'101010010011',\n\t'110101001001',\n\t// 1410-1414\n\t'110110100100',\n\t'110110110010',\n\t'101010111001',\n\t'010010111010',\n\t'101001011011',\n\t// 1415-1419\n\t'010100101011',\n\t'101010010101',\n\t'101100101010',\n\t'101101010101',\n\t'010101011100',\n\t// 1420-1424\n\t'010010111101',\n\t'001000111101',\n\t'100100011101',\n\t'101010010101',\n\t'101101001010',\n\t// 1425-1429\n\t'101101011010',\n\t'010101101101',\n\t'001010110110',\n\t'100100111011',\n\t'010010011011',\n\t// 1430-1434\n\t'011001010101',\n\t'011010101001',\n\t'011101010100',\n\t'101101101010',\n\t'010101101100',\n\t// 1435-1439\n\t'101010101101',\n\t'010101010101',\n\t'101100101001',\n\t'101110010010',\n\t'101110101001',\n\t// 1440-1444\n\t'010111010100',\n\t'101011011010',\n\t'010101011010',\n\t'101010101011',\n\t'010110010101',\n\t// 1445-1449\n\t'011101001001',\n\t'011101100100',\n\t'101110101010',\n\t'010110110101',\n\t'001010110110',\n\t// 1450-1454\n\t'101001010110',\n\t'111001001101',\n\t'101100100101',\n\t'101101010010',\n\t'101101101010',\n\t// 1455-1459\n\t'010110101101',\n\t'001010101110',\n\t'100100101111',\n\t'010010010111',\n\t'011001001011',\n\t// 1460-1464\n\t'011010100101',\n\t'011010101100',\n\t'101011010110',\n\t'010101011101',\n\t'010010011101',\n\t// 1465-1469\n\t'101001001101',\n\t'110100010110',\n\t'110110010101',\n\t'010110101010',\n\t'010110110101',\n\t// 1470-1474\n\t'001011011010',\n\t'100101011011',\n\t'010010101101',\n\t'010110010101',\n\t'011011001010',\n\t// 1475-1479\n\t'011011100100',\n\t'101011101010',\n\t'010011110101',\n\t'001010110110',\n\t'100101010110',\n\t// 1480-1484\n\t'101010101010',\n\t'101101010100',\n\t'101111010010',\n\t'010111011001',\n\t'001011101010',\n\t// 1485-1489\n\t'100101101101',\n\t'010010101101',\n\t'101010010101',\n\t'101101001010',\n\t'101110100101',\n\t// 1490-1494\n\t'010110110010',\n\t'100110110101',\n\t'010011010110',\n\t'101010010111',\n\t'010101000111',\n\t// 1495-1499\n\t'011010010011',\n\t'011101001001',\n\t'101101010101',\n\t'010101101010',\n\t'101001101011',\n\t// 1500-1504\n\t'010100101011',\n\t'101010001011',\n\t'110101000110',\n\t'110110100011',\n\t'010111001010',\n\t// 1505-1509\n\t'101011010110',\n\t'010011011011',\n\t'001001101011',\n\t'100101001011',\n\t'101010100101',\n\t// 1510-1514\n\t'101101010010',\n\t'101101101001',\n\t'010101110101',\n\t'000101110110',\n\t'100010110111',\n\t// 1515-1519\n\t'001001011011',\n\t'010100101011',\n\t'010101100101',\n\t'010110110100',\n\t'100111011010',\n\t// 1520-1524\n\t'010011101101',\n\t'000101101101',\n\t'100010110110',\n\t'101010100110',\n\t'110101010010',\n\t// 1525-1529\n\t'110110101001',\n\t'010111010100',\n\t'101011011010',\n\t'100101011011',\n\t'010010101011',\n\t// 1530-1534\n\t'011001010011',\n\t'011100101001',\n\t'011101100010',\n\t'101110101001',\n\t'010110110010',\n\t// 1535-1539\n\t'101010110101',\n\t'010101010101',\n\t'101100100101',\n\t'110110010010',\n\t'111011001001',\n\t// 1540-1544\n\t'011011010010',\n\t'101011101001',\n\t'010101101011',\n\t'010010101011',\n\t'101001010101',\n\t// 1545-1549\n\t'110100101001',\n\t'110101010100',\n\t'110110101010',\n\t'100110110101',\n\t'010010111010',\n\t// 1550-1554\n\t'101000111011',\n\t'010010011011',\n\t'101001001101',\n\t'101010101010',\n\t'101011010101',\n\t// 1555-1559\n\t'001011011010',\n\t'100101011101',\n\t'010001011110',\n\t'101000101110',\n\t'110010011010',\n\t// 1560-1564\n\t'110101010101',\n\t'011010110010',\n\t'011010111001',\n\t'010010111010',\n\t'101001011101',\n\t// 1565-1569\n\t'010100101101',\n\t'101010010101',\n\t'101101010010',\n\t'101110101000',\n\t'101110110100',\n\t// 1570-1574\n\t'010110111001',\n\t'001011011010',\n\t'100101011010',\n\t'101101001010',\n\t'110110100100',\n\t// 1575-1579\n\t'111011010001',\n\t'011011101000',\n\t'101101101010',\n\t'010101101101',\n\t'010100110101',\n\t// 1580-1584\n\t'011010010101',\n\t'110101001010',\n\t'110110101000',\n\t'110111010100',\n\t'011011011010',\n\t// 1585-1589\n\t'010101011011',\n\t'001010011101',\n\t'011000101011',\n\t'101100010101',\n\t'101101001010',\n\t// 1590-1594\n\t'101110010101',\n\t'010110101010',\n\t'101010101110',\n\t'100100101110',\n\t'110010001111',\n\t// 1595-1599\n\t'010100100111',\n\t'011010010101',\n\t'011010101010',\n\t'101011010110',\n\t'010101011101',\n\t// 1600\n\t'001010011101',\n];\n\nfunction getDaysDiff(date1: Date, date2: Date): number {\n\t// Ignores the time part in date1 and date2:\n\tconst time1 = Date.UTC(date1.getFullYear(), date1.getMonth(), date1.getDate());\n\tconst time2 = Date.UTC(date2.getFullYear(), date2.getMonth(), date2.getDate());\n\tconst diff = Math.abs(time1 - time2);\n\treturn Math.round(diff / ONE_DAY);\n}\n\n@Service({ autoProvided: false })\nexport class NgbCalendarIslamicUmalqura extends NgbCalendarIslamicCivil {\n\t/**\n\t * Returns the equivalent islamic(Umalqura) date value for a give input Gregorian date.\n\t * `gdate` is s JS Date to be converted to Hijri.\n\t */\n\tfromGregorian(gDate: Date): NgbDate {\n\t\tlet hDay = 1,\n\t\t\thMonth = 0,\n\t\t\thYear = 1300;\n\t\tlet daysDiff = getDaysDiff(gDate, GREGORIAN_FIRST_DATE);\n\t\tif (gDate.getTime() - GREGORIAN_FIRST_DATE.getTime() >= 0 && gDate.getTime() - GREGORIAN_LAST_DATE.getTime() <= 0) {\n\t\t\tlet year = 1300;\n\t\t\tfor (let i = 0; i < MONTH_LENGTH.length; i++, year++) {\n\t\t\t\tfor (let j = 0; j < 12; j++) {\n\t\t\t\t\tlet numOfDays = +MONTH_LENGTH[i][j] + 29;\n\t\t\t\t\tif (daysDiff <= numOfDays) {\n\t\t\t\t\t\thDay = daysDiff + 1;\n\t\t\t\t\t\tif (hDay > numOfDays) {\n\t\t\t\t\t\t\thDay = 1;\n\t\t\t\t\t\t\tj++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (j > 11) {\n\t\t\t\t\t\t\tj = 0;\n\t\t\t\t\t\t\tyear++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\thMonth = j;\n\t\t\t\t\t\thYear = year;\n\t\t\t\t\t\treturn new NgbDate(hYear, hMonth + 1, hDay);\n\t\t\t\t\t}\n\t\t\t\t\tdaysDiff = daysDiff - numOfDays;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null as any;\n\t\t} else {\n\t\t\treturn super.fromGregorian(gDate);\n\t\t}\n\t}\n\t/**\n\t * Converts the current Hijri date to Gregorian.\n\t */\n\ttoGregorian(hDate: NgbDate): Date {\n\t\tconst hYear = hDate.year;\n\t\tconst hMonth = hDate.month - 1;\n\t\tconst hDay = hDate.day;\n\t\tlet gDate = new Date(GREGORIAN_FIRST_DATE);\n\t\tlet dayDiff = hDay - 1;\n\t\tif (hYear >= HIJRI_BEGIN && hYear <= HIJRI_END) {\n\t\t\tfor (let y = 0; y < hYear - HIJRI_BEGIN; y++) {\n\t\t\t\tfor (let m = 0; m < 12; m++) {\n\t\t\t\t\tdayDiff += +MONTH_LENGTH[y][m] + 29;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (let m = 0; m < hMonth; m++) {\n\t\t\t\tdayDiff += +MONTH_LENGTH[hYear - HIJRI_BEGIN][m] + 29;\n\t\t\t}\n\t\t\tgDate.setDate(GREGORIAN_FIRST_DATE.getDate() + dayDiff);\n\t\t} else {\n\t\t\tgDate = super.toGregorian(hDate);\n\t\t}\n\t\treturn gDate;\n\t}\n\t/**\n\t * Returns the number of days in a specific Hijri hMonth.\n\t * `hMonth` is 1 for Muharram, 2 for Safar, etc.\n\t * `hYear` is any Hijri hYear.\n\t */\n\tgetDaysPerMonth(hMonth: number, hYear: number): number {\n\t\tif (hYear >= HIJRI_BEGIN && hYear <= HIJRI_END) {\n\t\t\tconst pos = hYear - HIJRI_BEGIN;\n\t\t\treturn +MONTH_LENGTH[pos][hMonth - 1] + 29;\n\t\t}\n\t\treturn super.getDaysPerMonth(hMonth, hYear);\n\t}\n}\n","import { NgbDate } from '../ngb-date';\n\n/**\n * Returns the equivalent JS date value for a give input Jalali date.\n * `jalaliDate` is an Jalali date to be converted to Gregorian.\n */\nexport function toGregorian(jalaliDate: NgbDate): Date {\n\tlet jdn = jalaliToJulian(jalaliDate.year, jalaliDate.month, jalaliDate.day);\n\tlet date = julianToGregorian(jdn);\n\tdate.setHours(6, 30, 3, 200);\n\treturn date;\n}\n\n/**\n * Returns the equivalent jalali date value for a give input Gregorian date.\n * `gdate` is a JS Date to be converted to jalali.\n * utc to local\n */\nexport function fromGregorian(gdate: Date): NgbDate {\n\tlet g2d = gregorianToJulian(gdate.getFullYear(), gdate.getMonth() + 1, gdate.getDate());\n\treturn julianToJalali(g2d);\n}\n\nexport function setJalaliYear(date: NgbDate, yearValue: number): NgbDate {\n\tdate.year = +yearValue;\n\treturn date;\n}\n\nexport function setJalaliMonth(date: NgbDate, month: number): NgbDate {\n\tmonth = +month;\n\tdate.year = date.year + Math.floor((month - 1) / 12);\n\tdate.month = Math.floor((((month - 1) % 12) + 12) % 12) + 1;\n\treturn date;\n}\n\nexport function setJalaliDay(date: NgbDate, day: number): NgbDate {\n\tlet mDays = getDaysPerMonth(date.month, date.year);\n\tif (day <= 0) {\n\t\twhile (day <= 0) {\n\t\t\tdate = setJalaliMonth(date, date.month - 1);\n\t\t\tmDays = getDaysPerMonth(date.month, date.year);\n\t\t\tday += mDays;\n\t\t}\n\t} else if (day > mDays) {\n\t\twhile (day > mDays) {\n\t\t\tday -= mDays;\n\t\t\tdate = setJalaliMonth(date, date.month + 1);\n\t\t\tmDays = getDaysPerMonth(date.month, date.year);\n\t\t}\n\t}\n\tdate.day = day;\n\treturn date;\n}\n\nfunction mod(a: number, b: number): number {\n\treturn a - b * Math.floor(a / b);\n}\n\nfunction div(a: number, b: number) {\n\treturn Math.trunc(a / b);\n}\n\n/*\n This function determines if the Jalali (Persian) year is\n leap (366-day long) or is the common year (365 days), and\n finds the day in March (Gregorian calendar) of the first\n day of the Jalali year (jalaliYear).\n @param jalaliYear Jalali calendar year (-61 to 3177)\n @return\n leap: number of years since the last leap year (0 to 4)\n gYear: Gregorian year of the beginning of Jalali year\n march: the March day of Farvardin the 1st (1st day of jalaliYear)\n @see: http://www.astro.uni.torun.pl/~kb/Papers/EMP/PersianC-EMP.htm\n @see: http://www.fourmilab.ch/documents/calendar/\n */\nfunction jalCal(jalaliYear: number) {\n\t// Jalali years starting the 33-year rule.\n\tlet breaks = [\n\t\t-61, 9, 38, 199, 426, 686, 756, 818, 1111, 1181, 1210, 1635, 2060, 2097, 2192, 2262, 2324, 2394, 2456, 3178,\n\t];\n\tconst breaksLength = breaks.length;\n\tconst gYear = jalaliYear + 621;\n\tlet leapJ = -14;\n\tlet jp = breaks[0];\n\n\tif (jalaliYear < jp || jalaliYear >= breaks[breaksLength - 1]) {\n\t\tthrow new Error('Invalid Jalali year ' + jalaliYear);\n\t}\n\n\t// Find the limiting years for the Jalali year jalaliYear.\n\tlet jump;\n\tfor (let i = 1; i < breaksLength; i += 1) {\n\t\tconst jm = breaks[i];\n\t\tjump = jm - jp;\n\t\tif (jalaliYear < jm) {\n\t\t\tbreak;\n\t\t}\n\t\tleapJ = leapJ + div(jump, 33) * 8 + div(mod(jump, 33), 4);\n\t\tjp = jm;\n\t}\n\tlet n = jalaliYear - jp;\n\n\t// Find the number of leap years from AD 621 to the beginning\n\t// of the current Jalali year in the Persian calendar.\n\tleapJ = leapJ + div(n, 33) * 8 + div(mod(n, 33) + 3, 4);\n\tif (mod(jump, 33) === 4 && jump - n === 4) {\n\t\tleapJ += 1;\n\t}\n\n\t// And the same in the Gregorian calendar (until the year gYear).\n\tconst leapG = div(gYear, 4) - div((div(gYear, 100) + 1) * 3, 4) - 150;\n\n\t// Determine the Gregorian date of Farvardin the 1st.\n\tconst march = 20 + leapJ - leapG;\n\n\t// Find how many years have passed since the last leap year.\n\tif (jump - n < 6) {\n\t\tn = n - jump + div(jump + 4, 33) * 33;\n\t}\n\tlet leap = mod(mod(n + 1, 33) - 1, 4);\n\tif (leap === -1) {\n\t\tleap = 4;\n\t}\n\n\treturn { leap: leap, gy: gYear, march: march };\n}\n\n/*\n Calculates Gregorian and Julian calendar dates from the Julian Day number\n (jdn) for the period since jdn=-34839655 (i.e. the year -100100 of both\n calendars) to some millions years ahead of the present.\n @param jdn Julian Day number\n @return\n gYear: Calendar year (years BC numbered 0, -1, -2, ...)\n gMonth: Calendar month (1 to 12)\n gDay: Calendar day of the month M (1 to 28/29/30/31)\n */\nfunction julianToGregorian(julianDayNumber: number) {\n\tlet j = 4 * julianDayNumber + 139361631;\n\tj = j + div(div(4 * julianDayNumber + 183187720, 146097) * 3, 4) * 4 - 3908;\n\tconst i = div(mod(j, 1461), 4) * 5 + 308;\n\tconst gDay = div(mod(i, 153), 5) + 1;\n\tconst gMonth = mod(div(i, 153), 12) + 1;\n\tconst gYear = div(j, 1461) - 100100 + div(8 - gMonth, 6);\n\n\treturn new Date(gYear, gMonth - 1, gDay);\n}\n\n/*\n Converts a date of the Jalali calendar to the Julian Day number.\n @param jy Jalali year (1 to 3100)\n @param jm Jalali month (1 to 12)\n @param jd Jalali day (1 to 29/31)\n @return Julian Day number\n */\nfunction gregorianToJulian(gy: number, gm: number, gd: number) {\n\tlet d = div((gy + div(gm - 8, 6) + 100100) * 1461, 4) + div(153 * mod(gm + 9, 12) + 2, 5) + gd - 34840408;\n\td = d - div(div(gy + 100100 + div(gm - 8, 6), 100) * 3, 4) + 752;\n\treturn d;\n}\n\n/*\n Converts the Julian Day number to a date in the Jalali calendar.\n @param julianDayNumber Julian Day number\n @return\n jalaliYear: Jalali year (1 to 3100)\n jalaliMonth: Jalali month (1 to 12)\n jalaliDay: Jalali day (1 to 29/31)\n */\nfunction julianToJalali(julianDayNumber: number) {\n\tlet gy = julianToGregorian(julianDayNumber).getFullYear(), // Calculate Gregorian year (gy).\n\t\tjalaliYear = gy - 621,\n\t\tr = jalCal(jalaliYear),\n\t\tgregorianDay = gregorianToJulian(gy, 3, r.march),\n\t\tjalaliDay,\n\t\tjalaliMonth,\n\t\tnumberOfDays;\n\n\t// Find number of days that passed since 1 Farvardin.\n\tnumberOfDays = julianDayNumber - gregorianDay;\n\tif (numberOfDays >= 0) {\n\t\tif (numberOfDays <= 185) {\n\t\t\t// The first 6 months.\n\t\t\tjalaliMonth = 1 + div(numberOfDays, 31);\n\t\t\tjalaliDay = mod(numberOfDays, 31) + 1;\n\t\t\treturn new NgbDate(jalaliYear, jalaliMonth, jalaliDay);\n\t\t} else {\n\t\t\t// The remaining months.\n\t\t\tnumberOfDays -= 186;\n\t\t}\n\t} else {\n\t\t// Previous Jalali year.\n\t\tjalaliYear -= 1;\n\t\tnumberOfDays += 179;\n\t\tif (r.leap === 1) {\n\t\t\tnumberOfDays += 1;\n\t\t}\n\t}\n\tjalaliMonth = 7 + div(numberOfDays, 30);\n\tjalaliDay = mod(numberOfDays, 30) + 1;\n\n\treturn new NgbDate(jalaliYear, jalaliMonth, jalaliDay);\n}\n\n/*\n Converts a date of the Jalali calendar to the Julian Day number.\n @param jYear Jalali year (1 to 3100)\n @param jMonth Jalali month (1 to 12)\n @param jDay Jalali day (1 to 29/31)\n @return Julian Day number\n */\nfunction jalaliToJulian(jYear: number, jMonth: number, jDay: number) {\n\tlet r = jalCal(jYear);\n\treturn gregorianToJulian(r.gy, 3, r.march) + (jMonth - 1) * 31 - div(jMonth, 7) * (jMonth - 7) + jDay - 1;\n}\n\n/**\n * Returns the number of days in a specific jalali month.\n */\nfunction getDaysPerMonth(month: number, year: number): number {\n\tif (month <= 6) {\n\t\treturn 31;\n\t}\n\tif (month <= 11) {\n\t\treturn 30;\n\t}\n\tif (jalCal(year).leap === 0) {\n\t\treturn 30;\n\t}\n\treturn 29;\n}\n","import { Service } from '@angular/core';\nimport { NgbDate } from '../ngb-date';\nimport { NgbCalendar, NgbPeriod } from '../ngb-calendar';\nimport { isInteger } from './_ngb-ngbootstrap-utilities.mjs';\n\nimport { fromGregorian, setJalaliDay, setJalaliMonth, setJalaliYear, toGregorian } from './jalali';\n\n@Service({ autoProvided: false })\nexport class NgbCalendarPersian extends NgbCalendar {\n\tgetDaysPerWeek() {\n\t\treturn 7;\n\t}\n\n\tgetMonths() {\n\t\treturn [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];\n\t}\n\n\tgetWeeksPerMonth() {\n\t\treturn 6;\n\t}\n\n\tgetNext(date: NgbDate, period: NgbPeriod = 'd', number = 1) {\n\t\tdate = new NgbDate(date.year, date.month, date.day);\n\n\t\tswitch (period) {\n\t\t\tcase 'y':\n\t\t\t\tdate = setJalaliYear(date, date.year + number);\n\t\t\t\tdate.month = 1;\n\t\t\t\tdate.day = 1;\n\t\t\t\treturn date;\n\t\t\tcase 'm':\n\t\t\t\tdate = setJalaliMonth(date, date.month + number);\n\t\t\t\tdate.day = 1;\n\t\t\t\treturn date;\n\t\t\tcase 'd':\n\t\t\t\treturn setJalaliDay(date, date.day + number);\n\t\t\tdefault:\n\t\t\t\treturn date;\n\t\t}\n\t}\n\n\tgetPrev(date: NgbDate, period: NgbPeriod = 'd', number = 1) {\n\t\treturn this.getNext(date, period, -number);\n\t}\n\n\tgetWeekday(date: NgbDate) {\n\t\tconst day = toGregorian(date).getDay();\n\t\t// in JS Date Sun=0, in ISO 8601 Sun=7\n\t\treturn day === 0 ? 7 : day;\n\t}\n\n\tgetWeekNumber(week: readonly NgbDate[], firstDayOfWeek: number) {\n\t\t// in JS Date Sun=0, in ISO 8601 Sun=7\n\t\tif (firstDayOfWeek === 7) {\n\t\t\tfirstDayOfWeek = 0;\n\t\t}\n\n\t\tconst thursdayIndex = (4 + 7 - firstDayOfWeek) % 7;\n\t\tconst date = week[thursdayIndex];\n\n\t\tconst jsDate = toGregorian(date);\n\t\tjsDate.setDate(jsDate.getDate() + 4 - (jsDate.getDay() || 7)); // Thursday\n\t\tconst time = jsDate.getTime();\n\t\tconst startDate = toGregorian(new NgbDate(date.year, 1, 1));\n\t\treturn Math.floor(Math.round((time - startDate.getTime()) / 86400000) / 7) + 1;\n\t}\n\n\tgetToday(): NgbDate {\n\t\treturn fromGregorian(new Date());\n\t}\n\n\tisValid(date?: NgbDate | null): boolean {\n\t\treturn (\n\t\t\tdate != null &&\n\t\t\tisInteger(date.year) &&\n\t\t\tisInteger(date.month) &&\n\t\t\tisInteger(date.day) &&\n\t\t\t!isNaN(toGregorian(date).getTime())\n\t\t);\n\t}\n}\n","import { NgbDate } from '../ngb-date';\nimport { NgbDateStruct } from '../ngb-date-struct';\n\nconst PARTS_PER_HOUR = 1080;\nconst PARTS_PER_DAY = 24 * PARTS_PER_HOUR;\nconst PARTS_FRACTIONAL_MONTH = 12 * PARTS_PER_HOUR + 793;\nconst PARTS_PER_MONTH = 29 * PARTS_PER_DAY + PARTS_FRACTIONAL_MONTH;\nconst BAHARAD = 11 * PARTS_PER_HOUR + 204;\nconst HEBREW_DAY_ON_JAN_1_1970 = 2092591;\nconst GREGORIAN_EPOCH = 1721425.5;\n\nfunction isGregorianLeapYear(year: number): boolean {\n\treturn (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n}\n\nfunction numberOfFirstDayInYear(year: number): number {\n\tlet monthsBeforeYear = Math.floor((235 * year - 234) / 19);\n\tlet fractionalMonthsBeforeYear = monthsBeforeYear * PARTS_FRACTIONAL_MONTH + BAHARAD;\n\tlet dayNumber = monthsBeforeYear * 29 + Math.floor(fractionalMonthsBeforeYear / PARTS_PER_DAY);\n\tlet timeOfDay = fractionalMonthsBeforeYear % PARTS_PER_DAY;\n\n\tlet dayOfWeek = dayNumber % 7; // 0 == Monday\n\n\tif (dayOfWeek === 2 || dayOfWeek === 4 || dayOfWeek === 6) {\n\t\tdayNumber++;\n\t\tdayOfWeek = dayNumber % 7;\n\t}\n\tif (dayOfWeek === 1 && timeOfDay > 15 * PARTS_PER_HOUR + 204 && !isHebrewLeapYear(year)) {\n\t\tdayNumber += 2;\n\t} else if (dayOfWeek === 0 && timeOfDay > 21 * PARTS_PER_HOUR + 589 && isHebrewLeapYear(year - 1)) {\n\t\tdayNumber++;\n\t}\n\treturn dayNumber;\n}\n\nfunction getDaysInGregorianMonth(month: number, year: number): number {\n\tlet days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\tif (isGregorianLeapYear(year)) {\n\t\tdays[1]++;\n\t}\n\treturn days[month - 1];\n}\n\nfunction getHebrewMonths(year: number): number {\n\treturn isHebrewLeapYear(year) ? 13 : 12;\n}\n\n/**\n * Returns the number of days in a specific Hebrew year.\n * `year` is any Hebrew year.\n */\nfunction getDaysInHebrewYear(year: number): number {\n\treturn numberOfFirstDayInYear(year + 1) - numberOfFirstDayInYear(year);\n}\n\nexport function isHebrewLeapYear(year?: number): boolean {\n\tif (year != null) {\n\t\tlet b = (year * 12 + 17) % 19;\n\t\treturn b >= (b < 0 ? -7 : 12);\n\t}\n\treturn false;\n}\n\n/**\n * Returns the number of days in a specific Hebrew month.\n * `month` is 1 for Nisan, 2 for Iyar etc. Note: Hebrew leap year contains 13 months.\n * `year` is any Hebrew year.\n */\nexport function getDaysInHebrewMonth(month: number, year: number): number {\n\tlet yearLength = numberOfFirstDayInYear(year + 1) - numberOfFirstDayInYear(year);\n\tlet yearType = (yearLength <= 380 ? yearLength : yearLength - 30) - 353;\n\tlet leapYear = isHebrewLeapYear(year);\n\tlet daysInMonth = leapYear\n\t\t? [30, 29, 29, 29, 30, 30, 29, 30, 29, 30, 29, 30, 29]\n\t\t: [30, 29, 29, 29, 30, 29, 30, 29, 30, 29, 30, 29];\n\tif (yearType > 0) {\n\t\tdaysInMonth[2]++; // Kislev gets an extra day in normal or complete years.\n\t}\n\tif (yearType > 1) {\n\t\tdaysInMonth[1]++; // Heshvan gets an extra day in complete years only.\n\t}\n\treturn daysInMonth[month - 1];\n}\n\nexport function getDayNumberInHebrewYear(date: NgbDate): number {\n\tlet numberOfDay = 0;\n\tfor (let i = 1; i < date.month; i++) {\n\t\tnumberOfDay += getDaysInHebrewMonth(i, date.year);\n\t}\n\treturn numberOfDay + date.day;\n}\n\nexport function setHebrewMonth(date: NgbDate, val: number): NgbDate {\n\tlet after = val >= 0;\n\tif (!after) {\n\t\tval = -val;\n\t}\n\twhile (val > 0) {\n\t\tif (after) {\n\t\t\tif (val > getHebrewMonths(date.year) - date.month) {\n\t\t\t\tval -= getHebrewMonths(date.year) - date.month + 1;\n\t\t\t\tdate.year++;\n\t\t\t\tdate.month = 1;\n\t\t\t} else {\n\t\t\t\tdate.month += val;\n\t\t\t\tval = 0;\n\t\t\t}\n\t\t} else {\n\t\t\tif (val >= date.month) {\n\t\t\t\tdate.year--;\n\t\t\t\tval -= date.month;\n\t\t\t\tdate.month = getHebrewMonths(date.year);\n\t\t\t} else {\n\t\t\t\tdate.month -= val;\n\t\t\t\tval = 0;\n\t\t\t}\n\t\t}\n\t}\n\treturn date;\n}\n\nexport function setHebrewDay(date: NgbDate, val: number): NgbDate {\n\tlet after = val >= 0;\n\tif (!after) {\n\t\tval = -val;\n\t}\n\twhile (val > 0) {\n\t\tif (after) {\n\t\t\tif (val > getDaysInHebrewYear(date.year) - getDayNumberInHebrewYear(date)) {\n\t\t\t\tval -= getDaysInHebrewYear(date.year) - getDayNumberInHebrewYear(date) + 1;\n\t\t\t\tdate.year++;\n\t\t\t\tdate.month = 1;\n\t\t\t\tdate.day = 1;\n\t\t\t} else if (val > getDaysInHebrewMonth(date.month, date.year) - date.day) {\n\t\t\t\tval -= getDaysInHebrewMonth(date.month, date.year) - date.day + 1;\n\t\t\t\tdate.month++;\n\t\t\t\tdate.day = 1;\n\t\t\t} else {\n\t\t\t\tdate.day += val;\n\t\t\t\tval = 0;\n\t\t\t}\n\t\t} else {\n\t\t\tif (val >= date.day) {\n\t\t\t\tval -= date.day;\n\t\t\t\tdate.month--;\n\t\t\t\tif (date.month === 0) {\n\t\t\t\t\tdate.year--;\n\t\t\t\t\tdate.month = getHebrewMonths(date.year);\n\t\t\t\t}\n\t\t\t\tdate.day = getDaysInHebrewMonth(date.month, date.year);\n\t\t\t} else {\n\t\t\t\tdate.day -= val;\n\t\t\t\tval = 0;\n\t\t\t}\n\t\t}\n\t}\n\treturn date;\n}\n\n/**\n * Returns the equivalent Hebrew date value for a give input Gregorian date.\n * `gdate` is a JS Date to be converted to Hebrew date.\n */\nexport function fromGregorian(gdate: Date): NgbDate {\n\tconst date = new Date(gdate);\n\tconst gYear = date.getFullYear(),\n\t\tgMonth = date.getMonth(),\n\t\tgDay = date.getDate();\n\tlet julianDay =\n\t\tGREGORIAN_EPOCH -\n\t\t1 +\n\t\t365 * (gYear - 1) +\n\t\tMath.floor((gYear - 1) / 4) -\n\t\tMath.floor((gYear - 1) / 100) +\n\t\tMath.floor((gYear - 1) / 400) +\n\t\tMath.floor((367 * (gMonth + 1) - 362) / 12 + (gMonth + 1 <= 2 ? 0 : isGregorianLeapYear(gYear) ? -1 : -2) + gDay);\n\tjulianDay = Math.floor(julianDay + 0.5);\n\tlet daysSinceHebEpoch = julianDay - 347997;\n\tlet monthsSinceHebEpoch = Math.floor((daysSinceHebEpoch * PARTS_PER_DAY) / PARTS_PER_MONTH);\n\tlet hYear = Math.floor((monthsSinceHebEpoch * 19 + 234) / 235) + 1;\n\tlet firstDayOfThisYear = numberOfFirstDayInYear(hYear);\n\tlet dayOfYear = daysSinceHebEpoch - firstDayOfThisYear;\n\twhile (dayOfYear < 1) {\n\t\thYear--;\n\t\tfirstDayOfThisYear = numberOfFirstDayInYear(hYear);\n\t\tdayOfYear = daysSinceHebEpoch - firstDayOfThisYear;\n\t}\n\tlet hMonth = 1;\n\tlet hDay = dayOfYear;\n\twhile (hDay > getDaysInHebrewMonth(hMonth, hYear)) {\n\t\thDay -= getDaysInHebrewMonth(hMonth, hYear);\n\t\thMonth++;\n\t}\n\treturn new NgbDate(hYear, hMonth, hDay);\n}\n\n/**\n * Returns the equivalent JS date value for a given Hebrew date.\n * `hebrewDate` is an Hebrew date to be converted to Gregorian.\n */\nexport function toGregorian(hebrewDate: NgbDateStruct | NgbDate): Date {\n\tconst hYear = hebrewDate.year;\n\tconst hMonth = hebrewDate.month;\n\tconst hDay = hebrewDate.day;\n\tlet days = numberOfFirstDayInYear(hYear);\n\tfor (let i = 1; i < hMonth; i++) {\n\t\tdays += getDaysInHebrewMonth(i, hYear);\n\t}\n\tdays += hDay;\n\tlet diffDays = days - HEBREW_DAY_ON_JAN_1_1970;\n\tlet after = diffDays >= 0;\n\tif (!after) {\n\t\tdiffDays = -diffDays;\n\t}\n\tlet gYear = 1970;\n\tlet gMonth = 1;\n\tlet gDay = 1;\n\twhile (diffDays > 0) {\n\t\tif (after) {\n\t\t\tif (diffDays >= (isGregorianLeapYear(gYear) ? 366 : 365)) {\n\t\t\t\tdiffDays -= isGregorianLeapYear(gYear) ? 366 : 365;\n\t\t\t\tgYear++;\n\t\t\t} else if (diffDays >= getDaysInGregorianMonth(gMonth, gYear)) {\n\t\t\t\tdiffDays -= getDaysInGregorianMonth(gMonth, gYear);\n\t\t\t\tgMonth++;\n\t\t\t} else {\n\t\t\t\tgDay += diffDays;\n\t\t\t\tdiffDays = 0;\n\t\t\t}\n\t\t} else {\n\t\t\tif (diffDays >= (isGregorianLeapYear(gYear - 1) ? 366 : 365)) {\n\t\t\t\tdiffDays -= isGregorianLeapYear(gYear - 1) ? 366 : 365;\n\t\t\t\tgYear--;\n\t\t\t} else {\n\t\t\t\tif (gMonth > 1) {\n\t\t\t\t\tgMonth--;\n\t\t\t\t} else {\n\t\t\t\t\tgMonth = 12;\n\t\t\t\t\tgYear--;\n\t\t\t\t}\n\t\t\t\tif (diffDays >= getDaysInGregorianMonth(gMonth, gYear)) {\n\t\t\t\t\tdiffDays -= getDaysInGregorianMonth(gMonth, gYear);\n\t\t\t\t} else {\n\t\t\t\t\tgDay = getDaysInGregorianMonth(gMonth, gYear) - diffDays + 1;\n\t\t\t\t\tdiffDays = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn new Date(gYear, gMonth - 1, gDay);\n}\n\nexport function hebrewNumerals(numerals: number): string {\n\tif (!numerals) {\n\t\treturn '';\n\t}\n\tconst hArray0_9 = ['', '\\u05d0', '\\u05d1', '\\u05d2', '\\u05d3', '\\u05d4', '\\u05d5', '\\u05d6', '\\u05d7', '\\u05d8'];\n\tconst hArray10_19 = [\n\t\t'\\u05d9',\n\t\t'\\u05d9\\u05d0',\n\t\t'\\u05d9\\u05d1',\n\t\t'\\u05d9\\u05d2',\n\t\t'\\u05d9\\u05d3',\n\t\t'\\u05d8\\u05d5',\n\t\t'\\u05d8\\u05d6',\n\t\t'\\u05d9\\u05d6',\n\t\t'\\u05d9\\u05d7',\n\t\t'\\u05d9\\u05d8',\n\t];\n\tconst hArray20_90 = ['', '', '\\u05db', '\\u05dc', '\\u05de', '\\u05e0', '\\u05e1', '\\u05e2', '\\u05e4', '\\u05e6'];\n\tconst hArray100_900 = [\n\t\t'',\n\t\t'\\u05e7',\n\t\t'\\u05e8',\n\t\t'\\u05e9',\n\t\t'\\u05ea',\n\t\t'\\u05ea\\u05e7',\n\t\t'\\u05ea\\u05e8',\n\t\t'\\u05ea\\u05e9',\n\t\t'\\u05ea\\u05ea',\n\t\t'\\u05ea\\u05ea\\u05e7',\n\t];\n\tconst hArray1000_9000 = [\n\t\t'',\n\t\t'\\u05d0',\n\t\t'\\u05d1',\n\t\t'\\u05d1\\u05d0',\n\t\t'\\u05d1\\u05d1',\n\t\t'\\u05d4',\n\t\t'\\u05d4\\u05d0',\n\t\t'\\u05d4\\u05d1',\n\t\t'\\u05d4\\u05d1\\u05d0',\n\t\t'\\u05d4\\u05d1\\u05d1',\n\t];\n\tconst geresh = '\\u05f3',\n\t\tgershaim = '\\u05f4';\n\tlet mem = 0;\n\tlet result: string[] = [];\n\tlet step = 0;\n\twhile (numerals > 0) {\n\t\tlet m = numerals % 10;\n\t\tif (step === 0) {\n\t\t\tmem = m;\n\t\t} else if (step === 1) {\n\t\t\tif (m !== 1) {\n\t\t\t\tresult.unshift(hArray20_90[m], hArray0_9[mem]);\n\t\t\t} else {\n\t\t\t\tresult.unshift(hArray10_19[mem]);\n\t\t\t}\n\t\t} else if (step === 2) {\n\t\t\tresult.unshift(hArray100_900[m]);\n\t\t} else {\n\t\t\tif (m !== 5) {\n\t\t\t\tresult.unshift(hArray1000_9000[m], geresh, ' ');\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\tnumerals = Math.floor(numerals / 10);\n\t\tif (step === 0 && numerals === 0) {\n\t\t\tresult.unshift(hArray0_9[m]);\n\t\t}\n\t\tstep++;\n\t}\n\tresult = result.join('').split('');\n\tif (result.length === 1) {\n\t\tresult.push(geresh);\n\t} else if (result.length > 1) {\n\t\tresult.splice(result.length - 1, 0, gershaim);\n\t}\n\treturn result.join('');\n}\n","import { NgbDate } from '../ngb-date';\nimport { fromJSDate, NgbCalendar, NgbPeriod, toJSDate } from '../ngb-calendar';\nimport { Service } from '@angular/core';\nimport { isNumber } from './_ngb-ngbootstrap-utilities.mjs';\nimport {\n\tfromGregorian,\n\tgetDayNumberInHebrewYear,\n\tgetDaysInHebrewMonth,\n\tisHebrewLeapYear,\n\ttoGregorian,\n\tsetHebrewDay,\n\tsetHebrewMonth,\n} from './hebrew';\n\n/**\n * @since 3.2.0\n */\n@Service({ autoProvided: false })\nexport class NgbCalendarHebrew extends NgbCalendar {\n\tgetDaysPerWeek() {\n\t\treturn 7;\n\t}\n\n\tgetMonths(year?: number) {\n\t\tif (year && isHebrewLeapYear(year)) {\n\t\t\treturn [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13];\n\t\t} else {\n\t\t\treturn [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];\n\t\t}\n\t}\n\n\tgetWeeksPerMonth() {\n\t\treturn 6;\n\t}\n\n\tisValid(date?: NgbDate | null): boolean {\n\t\tif (date != null) {\n\t\t\tlet b = isNumber(date.year) && isNumber(date.month) && isNumber(date.day);\n\t\t\tb = b && date.month > 0 && date.month <= (isHebrewLeapYear(date.year) ? 13 : 12);\n\t\t\tb = b && date.day > 0 && date.day <= getDaysInHebrewMonth(date.month, date.year);\n\t\t\treturn b && !isNaN(toGregorian(date).getTime());\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tgetNext(date: NgbDate, period: NgbPeriod = 'd', number = 1) {\n\t\tdate = new NgbDate(date.year, date.month, date.day);\n\n\t\tswitch (period) {\n\t\t\tcase 'y':\n\t\t\t\tdate.year += number;\n\t\t\t\tdate.month = 1;\n\t\t\t\tdate.day = 1;\n\t\t\t\treturn date;\n\t\t\tcase 'm':\n\t\t\t\tdate = setHebrewMonth(date, number);\n\t\t\t\tdate.day = 1;\n\t\t\t\treturn date;\n\t\t\tcase 'd':\n\t\t\t\treturn setHebrewDay(date, number);\n\t\t\tdefault:\n\t\t\t\treturn date;\n\t\t}\n\t}\n\n\tgetPrev(date: NgbDate, period: NgbPeriod = 'd', number = 1) {\n\t\treturn this.getNext(date, period, -number);\n\t}\n\n\tgetWeekday(date: NgbDate) {\n\t\tconst day = toGregorian(date).getDay();\n\t\t// in JS Date Sun=0, in ISO 8601 Sun=7\n\t\treturn day === 0 ? 7 : day;\n\t}\n\n\tgetWeekNumber(week: readonly NgbDate[], firstDayOfWeek: number) {\n\t\tconst date = week[week.length - 1];\n\t\treturn Math.ceil(getDayNumberInHebrewYear(date) / 7);\n\t}\n\n\tgetToday(): NgbDate {\n\t\treturn fromGregorian(new Date());\n\t}\n\n\t/**\n\t * @since 3.4.0\n\t */\n\ttoGregorian(date: NgbDate): NgbDate {\n\t\treturn fromJSDate(toGregorian(date));\n\t}\n\n\t/**\n\t * @since 3.4.0\n\t */\n\tfromGregorian(date: NgbDate): NgbDate {\n\t\treturn fromGregorian(toJSDate(date));\n\t}\n}\n","import { NgbDatepickerI18n } from '../datepicker-i18n';\nimport { NgbDateStruct } from '../ngb-date-struct';\nimport { hebrewNumerals, isHebrewLeapYear } from './hebrew';\nimport { Service } from '@angular/core';\n\nconst WEEKDAYS = ['שני', 'שלישי', 'רביעי', 'חמישי', 'שישי', 'שבת', 'ראשון'];\nconst MONTHS = ['תשרי', 'חשון', 'כסלו', 'טבת', 'שבט', 'אדר', 'ניסן', 'אייר', 'סיון', 'תמוז', 'אב', 'אלול'];\nconst MONTHS_LEAP = [\n\t'תשרי',\n\t'חשון',\n\t'כסלו',\n\t'טבת',\n\t'שבט',\n\t'אדר א׳',\n\t'אדר ב׳',\n\t'ניסן',\n\t'אייר',\n\t'סיון',\n\t'תמוז',\n\t'אב',\n\t'אלול',\n];\n\n/**\n * @since 3.2.0\n */\n@Service({ autoProvided: false })\nexport class NgbDatepickerI18nHebrew extends NgbDatepickerI18n {\n\tgetMonthShortName(month: number, year?: number): string {\n\t\treturn this.getMonthFullName(month, year);\n\t}\n\n\tgetMonthFullName(month: number, year?: number): string {\n\t\treturn isHebrewLeapYear(year) ? MONTHS_LEAP[month - 1] || '' : MONTHS[month - 1] || '';\n\t}\n\n\tgetWeekdayLabel(weekday: number, width?: Intl.DateTimeFormatOptions['weekday']) {\n\t\treturn WEEKDAYS[weekday - 1] || '';\n\t}\n\n\tgetDayAriaLabel(date: NgbDateStruct): string {\n\t\treturn `${hebrewNumerals(date.day)} ${this.getMonthFullName(date.month, date.year)} ${hebrewNumerals(date.year)}`;\n\t}\n\n\tgetDayNumerals(date: NgbDateStruct): string {\n\t\treturn hebrewNumerals(date.day);\n\t}\n\n\tgetWeekNumerals(weekNumber: number): string {\n\t\treturn hebrewNumerals(weekNumber);\n\t}\n\n\tgetYearNumerals(year: number): string {\n\t\treturn hebrewNumerals(year);\n\t}\n}\n","import { NgbDate } from '../ngb-date';\n\n/**\n * Returns the equivalent JS date value for a give input Buddhist date.\n * `date` is an Buddhist date to be converted to Gregorian.\n */\nexport function toGregorian(date: NgbDate): Date {\n\treturn new Date(date.year - 543, date.month - 1, date.day);\n}\n\n/**\n * Returns the equivalent Buddhist date value for a give input Gregorian date.\n * `gdate` is a JS Date to be converted to Buddhist.\n * utc to local\n */\nexport function fromGregorian(gdate: Date): NgbDate {\n\treturn new NgbDate(gdate.getFullYear() + 543, gdate.getMonth() + 1, gdate.getDate());\n}\n","import { Service } from '@angular/core';\nimport { isInteger } from './_ngb-ngbootstrap-utilities.mjs';\nimport { NgbCalendarGregorian, NgbPeriod } from '../ngb-calendar';\nimport { NgbDate } from '../ngb-date';\nimport { fromGregorian, toGregorian } from './buddhist';\n\n/**\n * @since 9.1.0\n */\n@Service({ autoProvided: false })\nexport class NgbCalendarBuddhist extends NgbCalendarGregorian {\n\tgetToday(): NgbDate {\n\t\treturn fromGregorian(new Date());\n\t}\n\n\tgetNext(date: NgbDate, period: NgbPeriod = 'd', number = 1) {\n\t\tlet jsDate = toGregorian(date);\n\t\tlet checkMonth = true;\n\t\tlet expectedMonth = jsDate.getMonth();\n\n\t\tswitch (period) {\n\t\t\tcase 'y':\n\t\t\t\tjsDate.setFullYear(jsDate.getFullYear() + number);\n\t\t\t\tbreak;\n\t\t\tcase 'm':\n\t\t\t\texpectedMonth += number;\n\t\t\t\tjsDate.setMonth(expectedMonth);\n\t\t\t\texpectedMonth = expectedMonth % 12;\n\t\t\t\tif (expectedMonth < 0) {\n\t\t\t\t\texpectedMonth = expectedMonth + 12;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'd':\n\t\t\t\tjsDate.setDate(jsDate.getDate() + number);\n\t\t\t\tcheckMonth = false;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\treturn date;\n\t\t}\n\n\t\tif (checkMonth && jsDate.getMonth() !== expectedMonth) {\n\t\t\t// this means the destination month has less days than the initial month\n\t\t\t// let's go back to the end of the previous month:\n\t\t\tjsDate.setDate(0);\n\t\t}\n\n\t\treturn fromGregorian(jsDate);\n\t}\n\n\tgetPrev(date: NgbDate, period: NgbPeriod = 'd', number = 1) {\n\t\treturn this.getNext(date, period, -number);\n\t}\n\n\tgetWeekday(date: NgbDate) {\n\t\tlet jsDate = toGregorian(date);\n\t\tlet day = jsDate.getDay();\n\t\t// in JS Date Sun=0, in ISO 8601 Sun=7\n\t\treturn day === 0 ? 7 : day;\n\t}\n\n\tgetWeekNumber(week: readonly NgbDate[], firstDayOfWeek: number) {\n\t\t// in JS Date Sun=0, in ISO 8601 Sun=7\n\t\tif (firstDayOfWeek === 7) {\n\t\t\tfirstDayOfWeek = 0;\n\t\t}\n\n\t\tconst thursdayIndex = (4 + 7 - firstDayOfWeek) % 7;\n\t\tlet date = week[thursdayIndex];\n\n\t\tconst jsDate = toGregorian(date);\n\t\tjsDate.setDate(jsDate.getDate() + 4 - (jsDate.getDay() || 7)); // Thursday\n\t\tconst time = jsDate.getTime();\n\t\tjsDate.setMonth(0); // Compare with Jan 1\n\t\tjsDate.setDate(1);\n\t\treturn Math.floor(Math.round((time - jsDate.getTime()) / 86400000) / 7) + 1;\n\t}\n\n\tisValid(date?: NgbDate | null): boolean {\n\t\tif (!date || !isInteger(date.year) || !isInteger(date.month) || !isInteger(date.day)) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// year 0 doesn't exist in Gregorian calendar\n\t\tif (date.year === 0) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst jsDate = toGregorian(date);\n\n\t\treturn (\n\t\t\t!isNaN(jsDate.getTime()) &&\n\t\t\tjsDate.getFullYear() === date.year - 543 &&\n\t\t\tjsDate.getMonth() + 1 === date.month &&\n\t\t\tjsDate.getDate() === date.day\n\t\t);\n\t}\n}\n","import { NgbDate } from '../ngb-date';\n\nconst JD_EPOCH = 1724220.5;\nconst DAYSPERMONTH = [30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 5];\n\n/**\n * Determine whether this date is in a leap year.\n * * `year` is the year to examine\n * returns boolean - true if this is a leap year, false if not\n * */\n\nexport function isEthiopianLeapYear(year: number): boolean {\n\tif (year != null) {\n\t\treturn year % 4 == 3 || year % 4 == -1;\n\t}\n\treturn false;\n}\n\n/**\n * Sets the Ethiopian year.\n * * `date` is Ethiopian date\n * * `yearValue` incremented year\n * returns NgbDate - ethiopian date\n * */\n\nexport function setEthiopianYear(date: NgbDate, yearValue: number): NgbDate {\n\tdate.year = +yearValue;\n\treturn date;\n}\n\n/**\n * Sets the Ethiopian month.\n * * `date` is Ethiopian date\n * * `val` incremented month\n * returns NgbDate - Ethiopian date\n * */\nexport function setEthiopianMonth(date: NgbDate, val: number): NgbDate {\n\tval = +val;\n\tdate.year = date.year + Math.floor((val - 1) / 13);\n\tdate.month = Math.floor((((val - 1) % 13) + 13) % 13) + 1;\n\treturn date;\n}\n\n/**\n * Sets the Ethiopian day.\n * * `date` is Ethiopian date\n * * `day` incremented day\n * returns NgbDate - Ethiopian date\n * */\nexport function setEthiopianDay(date: NgbDate, day: number): NgbDate {\n\tlet mDays = getDaysPerMonth(date.month, date.year);\n\tif (day <= 0) {\n\t\twhile (day <= 0) {\n\t\t\tdate = setEthiopianMonth(date, date.month - 1);\n\t\t\tmDays = getDaysPerMonth(date.month, date.year);\n\t\t\tday += mDays;\n\t\t}\n\t} else if (day > mDays) {\n\t\twhile (day > mDays) {\n\t\t\tday -= mDays;\n\t\t\tdate = setEthiopianMonth(date, date.month + 1);\n\t\t\tmDays = getDaysPerMonth(date.month, date.year);\n\t\t}\n\t}\n\tdate.day = day;\n\treturn date;\n}\n\nfunction getDaysPerMonth(month: number, year: number): number {\n\tlet leapYear = isEthiopianLeapYear(year);\n\treturn DAYSPERMONTH[month - 1] + (month === 13 && leapYear ? 1 : 0);\n}\n\nexport function toGregorian(ethiopianDate: NgbDate): Date {\n\tlet jdn = ethiopianToJulian(ethiopianDate.year, ethiopianDate.month, ethiopianDate.day);\n\tlet date = julianToGregorian(jdn);\n\tdate.setHours(6, 30, 3, 200);\n\treturn date;\n}\n\nexport function fromGregorian(gdate: Date): NgbDate {\n\tlet g2d = gregorianToJulian(gdate.getFullYear(), gdate.getMonth() + 1, gdate.getDate());\n\treturn juilianToEthiopia(g2d);\n}\n\nexport function ethiopianToJulian(year: number, month: number, day: number) {\n\tif (year < 0) {\n\t\tyear++;\n\t} // No year zero\n\treturn day + (month - 1) * 30 + (year - 1) * 365 + Math.floor(year / 4) + JD_EPOCH - 1;\n}\n\nfunction juilianToEthiopia(jd: number) {\n\tlet c = Math.floor(jd) + 0.5 - JD_EPOCH;\n\tlet year = Math.floor((c - Math.floor((c + 366) / 1461)) / 365) + 1;\n\tif (year <= 0) {\n\t\tyear--;\n\t} // No year zero\n\tc = Math.floor(jd) + 0.5 - ethiopianToJulian(year, 1, 1);\n\tlet month = Math.floor(c / 30) + 1;\n\tlet day = c - (month - 1) * 30 + 1;\n\treturn new NgbDate(year, month, day);\n}\n\nfunction julianToGregorian(jd: number) {\n\tlet z = Math.floor(jd + 0.5);\n\tlet a = Math.floor((z - 1867216.25) / 36524.25);\n\ta = z + 1 + a - Math.floor(a / 4);\n\tlet b = a + 1524;\n\tlet c = Math.floor((b - 122.1) / 365.25);\n\tlet d = Math.floor(365.25 * c);\n\tlet e = Math.floor((b - d) / 30.6001);\n\tlet day = b - d - Math.floor(e * 30.6001);\n\tlet month = e - (e > 13.5 ? 13 : 1);\n\tlet year = c - (month > 2.5 ? 4716 : 4715);\n\tif (year <= 0) {\n\t\tyear--;\n\t} // No year zero\n\treturn new Date(year, month, day);\n}\n\nexport function gregorianToJulian(year: number, month: number, day: number) {\n\tif (year < 0) {\n\t\tyear++;\n\t} // No year zero\n\t// Jean Meeus algorithm, \"Astronomical Algorithms\", 1991\n\tif (month < 3) {\n\t\tmonth += 12;\n\t\tyear--;\n\t}\n\tlet a = Math.floor(year / 100);\n\tlet b = 2 - a + Math.floor(a / 4);\n\treturn Math.floor(365.25 * (year + 4716)) + Math.floor(30.6001 * (month + 1)) + day + b - 1524.5;\n}\n","import { Service } from '@angular/core';\nimport { isInteger } from './_ngb-ngbootstrap-utilities.mjs';\nimport { NgbCalendar, NgbPeriod } from '../ngb-calendar';\nimport { NgbDate } from '../ngb-date';\nimport {\n\tethiopianToJulian,\n\tfromGregorian,\n\tsetEthiopianDay,\n\tsetEthiopianMonth,\n\tsetEthiopianYear,\n\ttoGregorian,\n} from './ethiopian';\n\n/**\n * @since 16.0.0\n */\n@Service({ autoProvided: false })\nexport class NgbCalendarEthiopian extends NgbCalendar {\n\tgetDaysPerWeek(): number {\n\t\treturn 7;\n\t}\n\n\tgetMonths(year?: number | undefined): number[] {\n\t\treturn [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13];\n\t}\n\n\tgetNext(date: NgbDate, period: NgbPeriod = 'd', number = 1): NgbDate {\n\t\tdate = new NgbDate(date.year, date.month, date.day);\n\t\tswitch (period) {\n\t\t\tcase 'y':\n\t\t\t\tdate = setEthiopianYear(date, date.year + number);\n\t\t\t\tdate.month = 1;\n\t\t\t\tdate.day = 1;\n\t\t\t\treturn date;\n\t\t\tcase 'm':\n\t\t\t\tdate = setEthiopianMonth(date, date.month + number);\n\t\t\t\tdate.day = 1;\n\t\t\t\treturn date;\n\t\t\tcase 'd':\n\t\t\t\treturn setEthiopianDay(date, date.day + number);\n\t\t\tdefault:\n\t\t\t\treturn date;\n\t\t}\n\t}\n\tgetPrev(date: NgbDate, period: NgbPeriod = 'd', number = 1) {\n\t\treturn this.getNext(date, period, -number);\n\t}\n\n\tgetWeekday(date: NgbDate): number {\n\t\tconst dt = Math.floor(ethiopianToJulian(date.year, date.month, date.day) + 3) % 7;\n\t\treturn dt === 0 ? 7 : dt;\n\t}\n\n\tgetWeekNumber(week: readonly NgbDate[], firstDayOfWeek: number): number {\n\t\tif (firstDayOfWeek === 7) {\n\t\t\tfirstDayOfWeek = 0;\n\t\t}\n\n\t\tconst thursdayIndex = (4 + 7 - firstDayOfWeek) % 7;\n\t\tconst date = week[thursdayIndex];\n\t\tconst jsDate = toGregorian(date);\n\t\tjsDate.setDate(jsDate.getDate() + 4 - (jsDate.getDay() || 7)); // Thursday\n\t\tconst time = jsDate.getTime();\n\t\tconst startDate = toGregorian(new NgbDate(date.year, 1, 1));\n\t\treturn Math.floor(Math.round((time - startDate.getTime()) / 86400000) / 7) + 1;\n\t}\n\n\tgetWeeksPerMonth() {\n\t\treturn 6;\n\t}\n\n\tgetToday(): NgbDate {\n\t\treturn fromGregorian(new Date());\n\t}\n\n\tisValid(date: NgbDate): boolean {\n\t\treturn (\n\t\t\tdate &&\n\t\t\tisInteger(date.year) &&\n\t\t\tisInteger(date.month) &&\n\t\t\tisInteger(date.day) &&\n\t\t\t!isNaN(toGregorian(date).getTime())\n\t\t);\n\t}\n}\n","import { NgbDatepickerI18n } from '../datepicker-i18n';\nimport { Service } from '@angular/core';\nimport { NgbDateStruct } from '../ngb-date-struct';\n\nconst WEEKDAYS = ['እሑድ', 'ሰኞ', 'ማክሰኞ', 'ረቡዕ', 'ሓሙስ', 'ዓርብ', 'ቅዳሜ'];\nconst MONTHS = ['መስከረም', 'ጥቅምት', 'ኅዳር', 'ታህሣሥ', 'ጥር', 'የካቲት', 'መጋቢት', 'ሚያዝያ', 'ግንቦት', 'ሰኔ', 'ሐምሌ', 'ነሐሴ', 'ጳጉሜ'];\n\n/**\n * @since 16.0.0\n */\n@Service({ autoProvided: false })\nexport class NgbDatepickerI18nAmharic extends NgbDatepickerI18n {\n\tgetMonthShortName(month: number, year?: number | undefined): string {\n\t\treturn this.getMonthFullName(month, year);\n\t}\n\n\tgetMonthFullName(month: number, year?: number | undefined): string {\n\t\treturn MONTHS[month - 1];\n\t}\n\n\tgetWeekdayLabel(weekday: number, width?: Intl.DateTimeFormatOptions['weekday']): string {\n\t\treturn WEEKDAYS[weekday - 1];\n\t}\n\n\tgetDayAriaLabel(date: NgbDateStruct): string {\n\t\treturn `${date.day} ${this.getMonthFullName(date.month, date.year)} ${date.year}`;\n\t}\n}\n","import { Service } from '@angular/core';\nimport { NgbDateAdapter } from './ngb-date-adapter';\nimport { NgbDateStruct } from '../ngb-date-struct';\nimport { isInteger } from './_ngb-ngbootstrap-utilities.mjs';\n\n/**\n * [`NgbDateAdapter`](#/components/datepicker/api#NgbDateAdapter) implementation that uses\n * native javascript dates as a user date model.\n */\n@Service({ autoProvided: false })\nexport class NgbDateNativeAdapter extends NgbDateAdapter<Date> {\n\t/**\n\t * Converts a native `Date` to a `NgbDateStruct`.\n\t */\n\tfromModel(date: Date | null): NgbDateStruct | null {\n\t\treturn date instanceof Date && !isNaN(date.getTime()) ? this._fromNativeDate(date) : null;\n\t}\n\n\t/**\n\t * Converts a `NgbDateStruct` to a native `Date`.\n\t */\n\ttoModel(date: NgbDateStruct | null): Date | null {\n\t\treturn date && isInteger(date.year) && isInteger(date.month) && isInteger(date.day)\n\t\t\t? this._toNativeDate(date)\n\t\t\t: null;\n\t}\n\n\tprotected _fromNativeDate(date: Date): NgbDateStruct {\n\t\treturn { year: date.getFullYear(), month: date.getMonth() + 1, day: date.getDate() };\n\t}\n\n\tprotected _toNativeDate(date: NgbDateStruct): Date {\n\t\tconst jsDate = new Date(date.year, date.month - 1, date.day, 12);\n\t\t// avoid 30 -> 1930 conversion\n\t\tjsDate.setFullYear(date.year);\n\t\treturn jsDate;\n\t}\n}\n","import { Service } from '@angular/core';\nimport { NgbDateStruct } from '../ngb-date-struct';\nimport { NgbDateNativeAdapter } from './ngb-date-native-adapter';\n\n/**\n * Same as [`NgbDateNativeAdapter`](#/components/datepicker/api#NgbDateNativeAdapter), but with UTC dates.\n *\n * @since 3.2.0\n */\n@Service({ autoProvided: false })\nexport class NgbDateNativeUTCAdapter extends NgbDateNativeAdapter {\n\tprotected _fromNativeDate(date: Date): NgbDateStruct {\n\t\treturn { year: date.getUTCFullYear(), month: date.getUTCMonth() + 1, day: date.getUTCDate() };\n\t}\n\n\tprotected _toNativeDate(date: NgbDateStruct): Date {\n\t\tconst jsDate = new Date(Date.UTC(date.year, date.month - 1, date.day));\n\t\t// avoid 30 -> 1930 conversion\n\t\tjsDate.setUTCFullYear(date.year);\n\t\treturn jsDate;\n\t}\n}\n","import { NgModule } from '@angular/core';\nimport { NgbDatepicker, NgbDatepickerContent } from './datepicker';\nimport { NgbDatepickerMonth } from './datepicker';\nimport { NgbInputDatepicker } from './datepicker-input';\n\nexport { NgbDatepicker, NgbDatepickerContent, NgbDatepickerNavigateEvent, NgbDatepickerState } from './datepicker';\nexport { NgbInputDatepicker } from './datepicker-input';\nexport { NgbCalendar, NgbPeriod, NgbCalendarGregorian } from './ngb-calendar';\nexport { NgbCalendarIslamicCivil } from './hijri/ngb-calendar-islamic-civil';\nexport { NgbCalendarIslamicUmalqura } from './hijri/ngb-calendar-islamic-umalqura';\nexport { NgbCalendarPersian } from './jalali/ngb-calendar-persian';\nexport { NgbCalendarHebrew } from './hebrew/ngb-calendar-hebrew';\nexport { NgbDatepickerI18nHebrew } from './hebrew/datepicker-i18n-hebrew';\nexport { NgbCalendarBuddhist } from './buddhist/ngb-calendar-buddhist';\nexport { NgbCalendarEthiopian } from './ethiopian/ngb-calendar-ethiopian';\nexport { NgbDatepickerI18nAmharic } from './ethiopian/datepicker-i18n-amharic';\nexport { NgbDatepickerMonth } from './datepicker';\nexport { NgbDatepickerDayView } from './datepicker-day-view';\nexport { NgbDatepickerNavigation } from './datepicker-navigation';\nexport { NgbDatepickerNavigationSelect } from './datepicker-navigation-select';\nexport { NgbDatepickerConfig } from './datepicker-config';\nexport { NgbInputDatepickerConfig } from './datepicker-input-config';\nexport { NgbDatepickerI18n, NgbDatepickerI18nDefault } from './datepicker-i18n';\nexport { NgbDateStruct } from './ngb-date-struct';\nexport { NgbDate } from './ngb-date';\nexport { NgbDateAdapter, NgbDateStructAdapter } from './adapters/ngb-date-adapter';\nexport { NgbDateNativeAdapter } from './adapters/ngb-date-native-adapter';\nexport { NgbDateNativeUTCAdapter } from './adapters/ngb-date-native-utc-adapter';\nexport { NgbDateParserFormatter } from './ngb-date-parser-formatter';\nexport { NgbDatepickerKeyboardService } from './datepicker-keyboard-service';\nexport { DayTemplateContext } from './datepicker-day-template-context';\n\nconst NGB_DATEPICKER_DIRECTIVES = [NgbDatepicker, NgbDatepickerContent, NgbInputDatepicker, NgbDatepickerMonth];\n\n@NgModule({\n\texports: NGB_DATEPICKER_DIRECTIVES,\n\timports: NGB_DATEPICKER_DIRECTIVES,\n})\nexport class NgbDatepickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["isGregorianLeapYear","mod","GREGORIAN_EPOCH","toGregorian","julianToGregorian","fromGregorian","gregorianToJulian","getDaysPerMonth","WEEKDAYS","MONTHS"],"mappings":"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ACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAA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"}