{"version":3,"file":"ngx-angular-material-hijri-adapter.mjs","sources":["../../../projects/ngx-angular-material-hijri-adapter/src/lib/adapter/entities/moment-hijri-date-formats.ts","../../../projects/ngx-angular-material-hijri-adapter/src/lib/adapter/entities/moment-hijri-date-locale-keys.enum.ts","../../../projects/ngx-angular-material-hijri-adapter/src/lib/adapter/ngx-angular-material-hijri-adapter.service.ts","../../../projects/ngx-angular-material-hijri-adapter/src/lib/adapter/moment-hijri-date-module.ts","../../../projects/ngx-angular-material-hijri-adapter/src/lib/ngx-angular-material-hijri-adapter.module.ts","../../../projects/ngx-angular-material-hijri-adapter/src/public-api.ts","../../../projects/ngx-angular-material-hijri-adapter/src/ngx-angular-material-hijri-adapter.ts"],"sourcesContent":["import { MatDateFormats } from '@angular/material/core';\r\n\r\nexport const MOMENT_HIJRI_DATE_FORMATS: MatDateFormats = {\r\n  parse: {\r\n    dateInput: 'YYYY-MM-DD',\r\n  },\r\n  display: {\r\n    dateInput: 'iDD iMMMM, iYYYY',\r\n    monthYearLabel: 'iMMMM iYYYY',\r\n    dateA11yLabel: 'iDD iMMMM, iYYYY',\r\n    monthYearA11yLabel: 'iMMMM iYYYY',\r\n    monthLabel: 'iMMM',\r\n  },\r\n};\r\n","export enum DateLocaleKeys {\r\n  AR_SA = 'ar-sa',\r\n  AR = 'ar',\r\n  EN = 'en',\r\n  EN_US = 'en-US',\r\n}\r\n","import { Inject, Injectable, Optional } from '@angular/core';\r\nimport { DateAdapter, MAT_DATE_LOCALE } from '@angular/material/core';\r\n\r\nimport { DateLocaleKeys } from './entities/moment-hijri-date-locale-keys.enum';\r\nimport { ILocalData } from './entities/moment-hijri-local-data.interface';\r\nimport * as _moment from 'moment-hijri';\r\n// Since moment-hijri library doesn't have a default export, we normally need to import using the `* as`\r\n// syntax. However, rollup creates a synthetic default module and we thus need to import it using\r\n// the `default as` syntax.\r\n// @ts-ignore:no-duplicate-imports\r\nimport { default as _rollupMoment, Moment, MomentInput, MomentFormatSpecification } from 'moment-hijri';\r\n\r\nconst momentHijri = _rollupMoment || _moment;\r\n\r\n/** Creates an array and fills it with values. */\r\nfunction range<T>(length: number, valueFunction: (index: number) => T): T[] {\r\n  const valuesArray = Array(length);\r\n  for (let i = 0; i < length; i++) {\r\n    valuesArray[i] = valueFunction(i);\r\n  }\r\n  return valuesArray;\r\n}\r\n\r\n@Injectable()\r\nexport class NgxAngularMaterialHijriAdapterService extends DateAdapter<Moment> {\r\n  private _localeData!: ILocalData;\r\n\r\n  constructor(@Optional() @Inject(MAT_DATE_LOCALE) matDateLocale: string) {\r\n    super();\r\n    this._updateMomentLocales();\r\n    this.setLocale(matDateLocale || '');\r\n  }\r\n\r\n  override setLocale(locale: string) {\r\n    super.setLocale(locale);\r\n    const momentLocaleData = momentHijri?.localeData(locale);\r\n\r\n    this._localeData = {\r\n      firstDayOfWeek:\r\n        locale === DateLocaleKeys.AR_SA\r\n          ? momentLocaleData?.firstDayOfWeek()\r\n          : 6, // make Saturday is the first hijri day in 'ar' locale...\r\n      longMonths: momentLocaleData?.months().slice(0),\r\n      shortMonths: momentLocaleData?.monthsShort().slice(0),\r\n      dates: range(30, (i) => this.createDate(1443, 2, i + 1).format('iD')), // set to 30 days month within any hijri year to get 30 formatted days.\r\n      longDaysOfWeek: momentLocaleData?.weekdays().slice(0),\r\n      shortDaysOfWeek: momentLocaleData?.weekdaysShort().slice(0),\r\n      narrowDaysOfWeek: momentLocaleData?.weekdaysMin().slice(0),\r\n    };\r\n  }\r\n  getYear(date: Moment): number {\r\n    return this.clone(date)?.iYear();\r\n  }\r\n  getMonth(date: Moment): number {\r\n    return this.clone(date)?.iMonth();\r\n  }\r\n  getDate(date: Moment): number {\r\n    return this.clone(date)?.iDate();\r\n  }\r\n  getDayOfWeek(date: Moment): number {\r\n    return this.clone(date)?.day();\r\n  }\r\n  getMonthNames(style: 'long' | 'short' | 'narrow'): string[] {\r\n    return style === 'long'\r\n      ? this._localeData?.longMonths\r\n      : this._localeData?.shortMonths;\r\n  }\r\n  getDateNames(): string[] {\r\n    return this._localeData?.dates;\r\n  }\r\n  getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[] {\r\n    switch (style) {\r\n      case 'long':\r\n        return this._localeData?.longDaysOfWeek;\r\n      case 'short':\r\n        return this._localeData?.shortDaysOfWeek;\r\n      case 'narrow':\r\n        return this._localeData?.narrowDaysOfWeek;\r\n    }\r\n  }\r\n  getYearName(date: Moment): string {\r\n    return this.clone(date)?.format('iYYYY');\r\n  }\r\n  getFirstDayOfWeek(): number {\r\n    return this._localeData?.firstDayOfWeek;\r\n  }\r\n  getNumDaysInMonth(date: Moment): number {\r\n    return momentHijri?.iDaysInMonth(this.getYear(date), this.getMonth(date)); // get the current month days number of current hijri (year and month).\r\n  }\r\n  clone(date: Moment): Moment {\r\n    return date?.clone().locale(this.locale);\r\n  }\r\n  createDate(year: number, month: number, date: number): Moment {\r\n    if (month < 0 || month > 11) {\r\n      throw Error(\r\n        `Invalid month index \"${month}\". Month index has to be between 0 and 11.`\r\n      );\r\n    }\r\n    if (date < 1) {\r\n      throw Error(`Invalid date \"${date}\". Date has to be greater than 0.`);\r\n    }\r\n    const result = this._createMoment()\r\n      ?.iYear(year)\r\n      .iMonth(month)\r\n      .iDate(date)\r\n      .hours(0)\r\n      .minutes(0)\r\n      .seconds(0)\r\n      .milliseconds(0)\r\n      .locale(this.locale);\r\n\r\n    if (this.getMonth(result) !== month) {\r\n      throw Error(`Invalid date ${date} for month with index ${month}.`);\r\n    }\r\n    if (!result.isValid()) {\r\n      throw Error(`Invalid date \"${date}\" for month with index \"${month}\".`);\r\n    }\r\n    return result;\r\n  }\r\n  today(): Moment {\r\n    return this._createMoment()?.locale(this.locale);\r\n  }\r\n  parse(value: any, parseFormat: string | string[]): Moment | null {\r\n    if (value && typeof value === 'string') {\r\n      return this._createMoment(value, parseFormat, this.locale);\r\n    }\r\n    return value ? this._createMoment(value)?.locale(this.locale) : null;\r\n  }\r\n  format(date: Moment, displayFormat: string): string {\r\n    date = this.clone(date);\r\n    if (!this.isValid(date)) {\r\n      throw Error('MomentHijriDateAdapter: Cannot format invalid date.');\r\n    }\r\n    return date?.format(displayFormat);\r\n  }\r\n  addCalendarYears(date: Moment, years: number): Moment {\r\n    return this.clone(date)?.add(years, 'iYear');\r\n  }\r\n  addCalendarMonths(date: Moment, months: number): Moment {\r\n    return this.clone(date)?.add(months, 'iMonth');\r\n  }\r\n  addCalendarDays(date: Moment, days: number): Moment {\r\n    return this.clone(date)?.add(days, 'days');\r\n  }\r\n  toIso8601(date: Moment): string {\r\n    return this.clone(date)?.toISOString(true);\r\n  }\r\n  override deserialize(value: any): Moment | null {\r\n    let date: any;\r\n    if (value instanceof Date) {\r\n      date = this._createMoment(value)?.locale(this.locale);\r\n    } else if (this.isDateInstance(value)) {\r\n      return this.clone(value);\r\n    }\r\n    if (typeof value === 'string') {\r\n      if (!value) {\r\n        return null;\r\n      }\r\n      date = this._createMoment(value)?.locale(this.locale);\r\n    }\r\n    if (date && this.isValid(date)) {\r\n      return this._createMoment(date)?.locale(this.locale);\r\n    }\r\n    return super.deserialize(value);\r\n  }\r\n  isDateInstance(obj: any): boolean {\r\n    return momentHijri?.isMoment(obj);\r\n  }\r\n  isValid(date: Moment): boolean {\r\n    return this.clone(date)?.isValid();\r\n  }\r\n  invalid(): Moment {\r\n    return momentHijri?.invalid();\r\n  }\r\n\r\n  private _createMoment(\r\n    date?: MomentInput,\r\n    format?: MomentFormatSpecification,\r\n    locale?: string\r\n  ): Moment {\r\n    return momentHijri(date, format, locale);\r\n  }\r\n  private _updateMomentLocales() {\r\n    const iMonthNamesEn = {\r\n      iMonths:\r\n        `Muharram_Safar_Rabi' al-Awwal_Rabi' al-Thani_Jumada al-Ula_Jumada al-Alkhirah_Rajab_Sha’ban_Ramadhan_Shawwal_Thul-Qi’dah_Thul-Hijjah`.split(\r\n          '_'\r\n        ),\r\n      iMonthsShort:\r\n        `Muh_Saf_Rab-I_Rab-II_Jum-I_Jum-II_Raj_Sha_Ram_Shw_Dhu-Q_Dhu-H`.split(\r\n          '_'\r\n        ),\r\n      months:\r\n        `Muharram_Safar_Rabi' al-Awwal_Rabi' al-Thani_Jumada al-Ula_Jumada al-Alkhirah_Rajab_Sha’ban_Ramadhan_Shawwal_Thul-Qi’dah_Thul-Hijjah`.split(\r\n          '_'\r\n        ),\r\n      monthsShort:\r\n        `Muh_Saf_Rab-I_Rab-II_Jum-I_Jum-II_Raj_Sha_Ram_Shw_Dhu-Q_Dhu-H`.split(\r\n          '_'\r\n        ),\r\n    };\r\n\r\n    const iMonthNamesAr = {\r\n      iMonths:\r\n        'محرم_صفر_ربيع الأول_ربيع الثاني_جمادى الأولى_جمادى الآخرة_رجب_شعبان_رمضان_شوال_ذو القعدة_ذو الحجة'.split(\r\n          '_'\r\n        ),\r\n      iMonthsShort:\r\n        'محرم_صفر_ربيع ١_ربيع ٢_جمادى ١_جمادى ٢_رجب_شعبان_رمضان_شوال_ذو القعدة_ذو الحجة'.split(\r\n          '_'\r\n        ),\r\n      months:\r\n        'محرم_صفر_ربيع الأول_ربيع الثاني_جمادى الأولى_جمادى الآخرة_رجب_شعبان_رمضان_شوال_ذو القعدة_ذو الحجة'.split(\r\n          '_'\r\n        ),\r\n      monthsShort:\r\n        'محرم_صفر_ربيع ١_ربيع ٢_جمادى ١_جمادى ٢_رجب_شعبان_رمضان_شوال_ذو القعدة_ذو الحجة'.split(\r\n          '_'\r\n        ),\r\n    };\r\n\r\n    // Default to the momentjs 2.12+ API\r\n    if (typeof momentHijri?.updateLocale === 'function') {\r\n      // Note: We used 'ar-sa' here to override the initial moment hijri locale...\r\n      momentHijri?.updateLocale(DateLocaleKeys.AR_SA, {\r\n        ...iMonthNamesAr,\r\n      });\r\n      // Note: Don't use 'en' to prevent override the initial Date Adapter...\r\n      momentHijri?.updateLocale(DateLocaleKeys.EN_US, {\r\n        ...iMonthNamesEn,\r\n      });\r\n    } else {\r\n      const oldLocale = momentHijri?.locale();\r\n      momentHijri?.defineLocale(DateLocaleKeys.AR_SA, iMonthNamesEn);\r\n      momentHijri?.locale(oldLocale);\r\n    }\r\n  }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { DateAdapter, MAT_DATE_LOCALE } from '@angular/material/core';\r\nimport { NgxAngularMaterialHijriAdapterService } from './ngx-angular-material-hijri-adapter.service';\r\n\r\n@NgModule({\r\n  providers: [\r\n    {\r\n      provide: DateAdapter,\r\n      useClass: NgxAngularMaterialHijriAdapterService,\r\n      deps: [MAT_DATE_LOCALE],\r\n    },\r\n  ],\r\n})\r\nexport class MomentHijriDateModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { MAT_DATE_FORMATS } from '@angular/material/core';\r\nimport { MOMENT_HIJRI_DATE_FORMATS } from './adapter/entities/moment-hijri-date-formats';\r\nimport { MomentHijriDateModule } from './adapter/moment-hijri-date-module';\r\n\r\n@NgModule({\r\n  imports: [MomentHijriDateModule],\r\n  providers: [\r\n    { provide: MAT_DATE_FORMATS, useValue: MOMENT_HIJRI_DATE_FORMATS },\r\n  ],\r\n})\r\nexport class NgxAngularMaterialHijriAdapterModule {}\r\n","/*\r\n * Public API Surface of ngx-angular-material-hijri-adapter\r\n */\r\nexport * from './lib/adapter/entities';\r\n\r\nexport * from './lib/adapter/ngx-angular-material-hijri-adapter.service';\r\nexport * from './lib/ngx-angular-material-hijri-adapter.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["_rollupMoment","_moment"],"mappings":"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"}