{"version":3,"file":"extensions-moment-adapter.mjs","sources":["../../../projects/extensions-moment-adapter/adapter/moment-datetime-adapter.ts","../../../projects/extensions-moment-adapter/adapter/moment-datetime-formats.ts","../../../projects/extensions-moment-adapter/adapter/index.ts","../../../projects/extensions-moment-adapter/extensions-moment-adapter.ts"],"sourcesContent":["import { Injectable, inject } from '@angular/core';\nimport {\n  MAT_MOMENT_DATE_ADAPTER_OPTIONS,\n  MatMomentDateAdapterOptions,\n} from '@angular/material-moment-adapter';\nimport { MAT_DATE_LOCALE } from '@angular/material/core';\nimport { DatetimeAdapter } from '@ng-matero/extensions/core';\n\nimport * as _moment from 'moment';\nimport { Moment } from 'moment';\n\nconst moment = 'default' in _moment ? (_moment as any).default : _moment;\n\nfunction range<T>(length: number, valueFunction: (index: number) => T): T[] {\n  const valuesArray = Array(length);\n  for (let i = 0; i < length; i++) {\n    valuesArray[i] = valueFunction(i);\n  }\n  return valuesArray;\n}\n\n@Injectable()\nexport class MomentDatetimeAdapter extends DatetimeAdapter<Moment> {\n  private _localeData!: {\n    firstDayOfWeek: number;\n    longMonths: string[];\n    shortMonths: string[];\n    dates: string[];\n    hours: string[];\n    minutes: string[];\n    longDaysOfWeek: string[];\n    shortDaysOfWeek: string[];\n    narrowDaysOfWeek: string[];\n  };\n\n  private _useUtc = false;\n\n  constructor() {\n    super();\n\n    const matDateLocale = inject(MAT_DATE_LOCALE, { optional: true });\n    const matMomentAdapterOptions = inject<MatMomentDateAdapterOptions>(\n      MAT_MOMENT_DATE_ADAPTER_OPTIONS,\n      { optional: true }\n    );\n\n    this.setLocale(matDateLocale || moment.locale());\n    this._useUtc = matMomentAdapterOptions?.useUtc || false;\n  }\n\n  override setLocale(locale: string) {\n    super.setLocale(locale);\n\n    const momentLocaleData = moment.localeData(locale);\n    this._localeData = {\n      firstDayOfWeek: momentLocaleData.firstDayOfWeek(),\n      longMonths: momentLocaleData.months(),\n      shortMonths: momentLocaleData.monthsShort(),\n      dates: range(31, i => super.createDate(2017, 0, i + 1).format('D')),\n      hours: range(24, i => this.createDatetime(2017, 0, 1, i, 0).format('H')),\n      minutes: range(60, i => this.createDatetime(2017, 0, 1, 1, i).format('m')),\n      longDaysOfWeek: momentLocaleData.weekdays(),\n      shortDaysOfWeek: momentLocaleData.weekdaysShort(),\n      narrowDaysOfWeek: momentLocaleData.weekdaysMin(),\n    };\n  }\n\n  getHour(date: Moment): number {\n    return super.clone(date).hour();\n  }\n\n  getMinute(date: Moment): number {\n    return super.clone(date).minute();\n  }\n\n  isInNextMonth(startDate: Moment, endDate: Moment): boolean {\n    const nextMonth = this.getDateInNextMonth(startDate);\n    return super.sameMonthAndYear(nextMonth, endDate);\n  }\n\n  getWeek(date: moment.Moment, firstDayOfWeek: number): number {\n    return super.clone(date).week();\n  }\n\n  createDatetime(year: number, month: number, date: number, hour: number, minute: number): Moment {\n    // Check for invalid month and date (except upper bound on date which we have to check after\n    // creating the Date).\n    if (month < 0 || month > 11) {\n      throw Error(`Invalid month index \"${month}\". Month index has to be between 0 and 11.`);\n    }\n\n    if (date < 1) {\n      throw Error(`Invalid date \"${date}\". Date has to be greater than 0.`);\n    }\n\n    if (hour < 0 || hour > 23) {\n      throw Error(`Invalid hour \"${hour}\". Hour has to be between 0 and 23.`);\n    }\n\n    if (minute < 0 || minute > 59) {\n      throw Error(`Invalid minute \"${minute}\". Minute has to be between 0 and 59.`);\n    }\n\n    let result;\n    if (this._useUtc) {\n      result = moment.utc({ year, month, date, hour, minute });\n    } else {\n      result = moment({ year, month, date, hour, minute });\n    }\n\n    // If the result isn't valid, the date must have been out of bounds for this month.\n    if (!result.isValid()) {\n      throw Error(`Invalid date \"${date}\" for month with index \"${month}\".`);\n    }\n\n    return result.locale(this.locale);\n  }\n\n  getFirstDateOfMonth(date: Moment): Moment {\n    return super.clone(date).startOf('month');\n  }\n\n  getHourNames(): string[] {\n    return this._localeData.hours;\n  }\n\n  getMinuteNames(): string[] {\n    return this._localeData.minutes;\n  }\n\n  addCalendarHours(date: Moment, hours: number): Moment {\n    return super.clone(date).add({ hours });\n  }\n\n  addCalendarMinutes(date: Moment, minutes: number): Moment {\n    return super.clone(date).add({ minutes });\n  }\n\n  override deserialize(value: any): Moment | null {\n    return this._delegate.deserialize(value);\n  }\n\n  private getDateInNextMonth(date: Moment) {\n    return super.clone(date).date(1).add({ month: 1 });\n  }\n}\n","import { MtxDatetimeFormats } from '@ng-matero/extensions/core';\n\nexport const MTX_MOMENT_DATETIME_FORMATS: MtxDatetimeFormats = {\n  parse: {\n    dateInput: 'L',\n    monthInput: 'MMMM',\n    yearInput: 'YYYY',\n    datetimeInput: 'L LT',\n    timeInput: 'LT',\n  },\n  display: {\n    dateInput: 'L',\n    monthInput: 'MMMM',\n    yearInput: 'YYYY',\n    datetimeInput: 'L LT',\n    timeInput: 'LT',\n    monthYearLabel: 'MMM YYYY',\n    dateA11yLabel: 'LL',\n    monthYearA11yLabel: 'MMMM YYYY',\n    popupHeaderDateLabel: 'ddd, DD MMM',\n  },\n};\n","import { NgModule, Provider } from '@angular/core';\nimport {\n  MAT_MOMENT_DATE_ADAPTER_OPTIONS,\n  MatMomentDateAdapterOptions,\n  MomentDateAdapter,\n  MomentDateModule,\n} from '@angular/material-moment-adapter';\nimport { DateAdapter, MAT_DATE_LOCALE } from '@angular/material/core';\nimport {\n  DatetimeAdapter,\n  MTX_DATETIME_FORMATS,\n  MtxDatetimeFormats,\n} from '@ng-matero/extensions/core';\nimport { MomentDatetimeAdapter } from './moment-datetime-adapter';\nimport { MTX_MOMENT_DATETIME_FORMATS } from './moment-datetime-formats';\n\nexport * from './moment-datetime-adapter';\nexport * from './moment-datetime-formats';\n\n@NgModule({\n  imports: [MomentDateModule],\n  providers: [{ provide: DatetimeAdapter, useClass: MomentDatetimeAdapter }],\n})\nexport class MomentDatetimeModule {}\n\nexport function provideMomentDatetimeAdapter(\n  formats: MtxDatetimeFormats = MTX_MOMENT_DATETIME_FORMATS,\n  options?: MatMomentDateAdapterOptions\n): Provider[] {\n  const providers: Provider[] = [\n    {\n      provide: DateAdapter,\n      useClass: MomentDateAdapter,\n      deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],\n    },\n    { provide: DatetimeAdapter, useClass: MomentDatetimeAdapter },\n    { provide: MTX_DATETIME_FORMATS, useValue: formats },\n  ];\n\n  if (options) {\n    providers.push({ provide: MAT_MOMENT_DATE_ADAPTER_OPTIONS, useValue: options });\n  }\n\n  return providers;\n}\n\n@NgModule({\n  providers: [provideMomentDatetimeAdapter()],\n})\nexport class MtxMomentDatetimeModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}