{"version":3,"file":"danielmoncada-angular-datetime-picker-moment-adapter.mjs","sources":["../../../projects/picker/src/lib/moment-adapter/moment-date-time-adapter.class.ts","../../../projects/picker/src/lib/moment-adapter/moment-date-time-format.class.ts","../../../projects/picker/src/lib/moment-adapter/moment-date-time.module.ts","../../../projects/picker/src/danielmoncada-angular-datetime-picker-moment-adapter.ts"],"sourcesContent":["/**\n * moment-date-time-adapter.class\n */\n\nimport { Inject, Injectable, InjectionToken, Optional } from '@angular/core';\nimport _moment, { Moment } from 'moment';\nimport { DateTimeAdapter, OWL_DATE_TIME_LOCALE } from '@danielmoncada/angular-datetime-picker';\n\nconst moment = (_moment as unknown)['default'] ? (_moment as unknown)['default'] : _moment;\n\n/** Configurable options for {@see MomentDateAdapter}. */\nexport interface OwlMomentDateTimeAdapterOptions {\n  /**\n   * Turns the use of utc dates on or off.\n   * Changing this will change how the DateTimePicker output value.\n   * {@default false}\n   */\n  useUtc: boolean;\n\n  /**\n   * Turns the use of strict string parsing in moment.\n   * Changing this will change how the DateTimePicker interprets input.\n   * {@default false}\n   */\n  parseStrict: boolean;\n}\n\n/** InjectionToken for moment date adapter to configure options. */\nexport const OWL_MOMENT_DATE_TIME_ADAPTER_OPTIONS = new InjectionToken<OwlMomentDateTimeAdapterOptions>(\n  'OWL_MOMENT_DATE_TIME_ADAPTER_OPTIONS',\n  {\n    providedIn: 'root',\n    factory: OWL_MOMENT_DATE_TIME_ADAPTER_OPTIONS_FACTORY,\n  },\n);\n\nexport function OWL_MOMENT_DATE_TIME_ADAPTER_OPTIONS_FACTORY(): OwlMomentDateTimeAdapterOptions {\n  return {\n    useUtc: false,\n    parseStrict: false,\n  };\n}\n\n/** Creates an array and fills it with values. */\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  public firstMonthOfTheYear: number = 0;\n  public firstDayOfTheWeek: number = 0;\n\n  private _localeData: {\n    longMonths: string[];\n    shortMonths: string[];\n    longDaysOfWeek: string[];\n    shortDaysOfWeek: string[];\n    narrowDaysOfWeek: string[];\n    dates: string[];\n  };\n\n  constructor(\n    @Optional() @Inject(OWL_DATE_TIME_LOCALE) private owlDateTimeLocale: string,\n    @Optional() @Inject(OWL_MOMENT_DATE_TIME_ADAPTER_OPTIONS) private options?: OwlMomentDateTimeAdapterOptions,\n  ) {\n    super();\n    this.setLocale(owlDateTimeLocale || moment.locale());\n  }\n\n  get parseStrict() {\n    return this.options && this.options.parseStrict;\n  }\n\n  public setLocale(locale: string) {\n    super.setLocale(locale);\n\n    const momentLocaleData = moment.localeData(locale);\n    this._localeData = {\n      longMonths: momentLocaleData.months(),\n      shortMonths: momentLocaleData.monthsShort(),\n      longDaysOfWeek: momentLocaleData.weekdays(true),\n      shortDaysOfWeek: momentLocaleData.weekdaysShort(true),\n      narrowDaysOfWeek: momentLocaleData.weekdaysMin(true),\n      dates: range(31, (i) => this.createDate(2017, 0, i + 1).format('D')),\n    };\n  }\n\n  public getYear(date: Moment): number {\n    return this.clone(date).year();\n  }\n\n  public getMonth(date: Moment): number {\n    return this.clone(date).month();\n  }\n\n  public getDay(date: Moment): number {\n    return this.clone(date).day();\n  }\n\n  public getDate(date: Moment): number {\n    return this.clone(date).date();\n  }\n\n  public getHours(date: Moment): number {\n    return this.clone(date).hours();\n  }\n\n  public getMinutes(date: Moment): number {\n    return this.clone(date).minutes();\n  }\n\n  public getSeconds(date: Moment): number {\n    return this.clone(date).seconds();\n  }\n\n  public getTime(date: Moment): number {\n    return this.clone(date).valueOf();\n  }\n\n  public getNumDaysInMonth(date: Moment): number {\n    return this.clone(date).daysInMonth();\n  }\n\n  public differenceInCalendarDays(dateLeft: Moment, dateRight: Moment): number {\n    return this.clone(dateLeft).diff(dateRight, 'days');\n  }\n\n  public getYearName(date: Moment): string {\n    return this.clone(date).format('YYYY');\n  }\n\n  public getMonthNames(style: 'long' | 'short' | 'narrow'): string[] {\n    return style === 'long' ? this._localeData.longMonths : this._localeData.shortMonths;\n  }\n\n  public getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[] {\n    if (style === 'long') {\n      return this._localeData.longDaysOfWeek;\n    }\n    if (style === 'short') {\n      return this._localeData.shortDaysOfWeek;\n    }\n    return this._localeData.narrowDaysOfWeek;\n  }\n\n  public getDateNames(): string[] {\n    return this._localeData.dates;\n  }\n\n  public toIso8601(date: Moment): string {\n    return this.clone(date).format();\n  }\n\n  public isEqual(dateLeft: Moment, dateRight: Moment): boolean {\n    if (dateLeft && dateRight) {\n      return this.clone(dateLeft).isSame(this.clone(dateRight));\n    }\n\n    return dateLeft === dateRight;\n  }\n\n  public isSameDay(dateLeft: Moment, dateRight: Moment): boolean {\n    if (dateLeft && dateRight) {\n      return this.clone(dateLeft).isSame(this.clone(dateRight), 'day');\n    }\n\n    return dateLeft === dateRight;\n  }\n\n  public isValid(date: Moment): boolean {\n    return this.clone(date).isValid();\n  }\n\n  public invalid(): Moment {\n    return moment.invalid();\n  }\n\n  public isDateInstance(obj: unknown): boolean {\n    return moment.isMoment(obj);\n  }\n\n  public addCalendarYears(date: Moment, amount: number): Moment {\n    return this.clone(date).add({ years: amount });\n  }\n\n  public addCalendarMonths(date: Moment, amount: number): Moment {\n    return this.clone(date).add({ months: amount });\n  }\n\n  public addCalendarDays(date: Moment, amount: number): Moment {\n    return this.clone(date).add({ days: amount });\n  }\n\n  public setHours(date: Moment, amount: number): Moment {\n    return this.clone(date).hours(amount);\n  }\n\n  public setMinutes(date: Moment, amount: number): Moment {\n    return this.clone(date).minutes(amount);\n  }\n\n  public setSeconds(date: Moment, amount: number): Moment {\n    return this.clone(date).seconds(amount);\n  }\n\n  public createDate(year: number, month: number, date: number): Moment;\n\n  public createDate(year: number, month: number, date: number, hours = 0, minutes = 0, seconds = 0): Moment {\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 (hours < 0 || hours > 23) {\n      throw Error(`Invalid hours \"${hours}\". Hours has to be between 0 and 23.`);\n    }\n\n    if (minutes < 0 || minutes > 59) {\n      throw Error(`Invalid minutes \"${minutes}\". Minutes has to between 0 and 59.`);\n    }\n\n    if (seconds < 0 || seconds > 59) {\n      throw Error(`Invalid seconds \"${seconds}\". Seconds has to be between 0 and 59.`);\n    }\n\n    const result = this.createMoment({ year, month, date, hours, minutes, seconds }).locale(this.getLocale());\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;\n  }\n\n  public clone(date: Moment): Moment {\n    return this.createMoment(date).clone().locale(this.getLocale());\n  }\n\n  public now(): Moment {\n    return this.createMoment().locale(this.getLocale());\n  }\n\n  public format(date: Moment, displayFormat: string): string {\n    date = this.clone(date);\n    if (!this.isValid(date)) {\n      throw Error('MomentDateTimeAdapter: Cannot format invalid date.');\n    }\n    return date.format(displayFormat);\n  }\n\n  public parse(value: unknown, parseFormat: unknown): Moment | null {\n    if (value && typeof value === 'string') {\n      return this.createMoment(value, parseFormat, this.getLocale(), this.parseStrict);\n    }\n    return value ? this.createMoment(value).locale(this.getLocale()) : null;\n  }\n\n  /**\n   * Returns the given value if given a valid Moment or null. Deserializes valid ISO 8601 strings\n   * (https://www.ietf.org/rfc/rfc3339.txt) and valid Date objects into valid Moments and empty\n   * string into null. Returns an invalid date for all other values.\n   */\n  deserialize(value: unknown): Moment | null {\n    let date: _moment.Moment;\n\n    if (value instanceof Date) {\n      date = this.createMoment(value);\n    }\n    if (typeof value === 'string') {\n      if (!value) {\n        return null;\n      }\n      date = this.createMoment(value, moment.ISO_8601, this.parseStrict).locale(this.getLocale());\n    }\n    if (date && this.isValid(date)) {\n      return date;\n    }\n\n    return super.deserialize(value);\n  }\n\n  /** Creates a Moment instance while respecting the current UTC settings. */\n  private createMoment(...args: unknown[]): Moment {\n    return this.options && this.options.useUtc ? moment.utc(...args) : moment(...args);\n  }\n}\n","/**\n * moment-date-time-format.class\n */\nimport { OwlDateTimeFormats } from '@danielmoncada/angular-datetime-picker';\n\nexport const OWL_MOMENT_DATE_TIME_FORMATS: OwlDateTimeFormats = {\n  parseInput: 'l LT',\n  fullPickerInput: 'l LT',\n  datePickerInput: 'l',\n  timePickerInput: 'LT',\n  monthYearLabel: 'MMM YYYY',\n  dateA11yLabel: 'LL',\n  monthYearA11yLabel: 'MMMM YYYY',\n};\n","/**\n * moment-date-time.module\n */\n\nimport { NgModule } from '@angular/core';\nimport { MomentDateTimeAdapter, OWL_MOMENT_DATE_TIME_ADAPTER_OPTIONS } from './moment-date-time-adapter.class';\nimport { OWL_MOMENT_DATE_TIME_FORMATS } from './moment-date-time-format.class';\nimport { DateTimeAdapter, OWL_DATE_TIME_FORMATS, OWL_DATE_TIME_LOCALE } from '@danielmoncada/angular-datetime-picker';\n\n@NgModule({\n  providers: [\n    {\n      provide: DateTimeAdapter,\n      useClass: MomentDateTimeAdapter,\n      deps: [OWL_DATE_TIME_LOCALE, OWL_MOMENT_DATE_TIME_ADAPTER_OPTIONS],\n    },\n  ],\n})\nexport class MomentDateTimeModule {}\n\n@NgModule({\n  imports: [MomentDateTimeModule],\n  providers: [{ provide: OWL_DATE_TIME_FORMATS, useValue: OWL_MOMENT_DATE_TIME_FORMATS }],\n})\nexport class OwlMomentDateTimeModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}