{"version":3,"file":"material-luxon-adapter.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material-luxon-adapter/adapter/luxon-date-adapter.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material-luxon-adapter/adapter/luxon-date-formats.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material-luxon-adapter/adapter/index.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {Injectable, InjectionToken, inject} from '@angular/core';\nimport {DateAdapter, MAT_DATE_LOCALE} from '@angular/material/core';\nimport {\n  DateTime as LuxonDateTime,\n  Info as LuxonInfo,\n  DateTimeOptions as LuxonDateTimeOptions,\n  CalendarSystem as LuxonCalendarSystem,\n} from 'luxon';\n\n/** Configurable options for the `LuxonDateAdapter`. */\nexport interface MatLuxonDateAdapterOptions {\n  /**\n   * Turns the use of utc dates on or off.\n   * Changing this will change how Angular Material components like DatePicker output dates.\n   */\n  useUtc: boolean;\n\n  /**\n   * Sets the first day of week.\n   * Changing this will change how Angular Material components like DatePicker shows start of week.\n   */\n  firstDayOfWeek?: number;\n\n  /**\n   * Sets the output Calendar.\n   * Changing this will change how Angular Material components like DatePicker output dates.\n   */\n  defaultOutputCalendar: LuxonCalendarSystem;\n}\n\n/** InjectionToken for LuxonDateAdapter to configure options. */\nexport const MAT_LUXON_DATE_ADAPTER_OPTIONS = new InjectionToken<MatLuxonDateAdapterOptions>(\n  'MAT_LUXON_DATE_ADAPTER_OPTIONS',\n  {\n    providedIn: 'root',\n    factory: () => ({\n      useUtc: false,\n      defaultOutputCalendar: 'gregory',\n    }),\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/** Adapts Luxon Dates for use with Angular Material. */\n@Injectable()\nexport class LuxonDateAdapter extends DateAdapter<LuxonDateTime> {\n  private _useUTC: boolean;\n  private _firstDayOfWeek: number | undefined;\n  private _defaultOutputCalendar: LuxonCalendarSystem;\n\n  constructor(...args: unknown[]);\n\n  constructor() {\n    super();\n\n    const dateLocale = inject(MAT_DATE_LOCALE, {optional: true});\n    const options = inject<MatLuxonDateAdapterOptions>(MAT_LUXON_DATE_ADAPTER_OPTIONS, {\n      optional: true,\n    });\n\n    this._useUTC = !!options?.useUtc;\n    this._firstDayOfWeek = options?.firstDayOfWeek;\n    this._defaultOutputCalendar = options?.defaultOutputCalendar || 'gregory';\n    this.setLocale(dateLocale || LuxonDateTime.local().locale);\n  }\n\n  getYear(date: LuxonDateTime): number {\n    return date.year;\n  }\n\n  getMonth(date: LuxonDateTime): number {\n    // Luxon works with 1-indexed months whereas our code expects 0-indexed.\n    return date.month - 1;\n  }\n\n  getDate(date: LuxonDateTime): number {\n    return date.day;\n  }\n\n  getDayOfWeek(date: LuxonDateTime): number {\n    return date.weekday;\n  }\n\n  getMonthNames(style: 'long' | 'short' | 'narrow'): string[] {\n    // Adding outputCalendar option, because LuxonInfo doesn't get effected by LuxonSettings\n    return LuxonInfo.months(style, {\n      locale: this.locale,\n      outputCalendar: this._defaultOutputCalendar,\n    });\n  }\n\n  getDateNames(): string[] {\n    // At the time of writing, Luxon doesn't offer similar\n    // functionality so we have to fall back to the Intl API.\n    const dtf = new Intl.DateTimeFormat(this.locale, {day: 'numeric', timeZone: 'utc'});\n\n    // Format a UTC date in order to avoid DST issues.\n    return range(31, i => dtf.format(LuxonDateTime.utc(2017, 1, i + 1).toJSDate()));\n  }\n\n  getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[] {\n    // Note that we shift the array once, because Luxon returns Monday as the\n    // first day of the week, whereas our logic assumes that it's Sunday. See:\n    // https://moment.github.io/luxon/api-docs/index.html#infoweekdays\n    const days = LuxonInfo.weekdays(style, {locale: this.locale});\n    days.unshift(days.pop()!);\n    return days;\n  }\n\n  getYearName(date: LuxonDateTime): string {\n    return date.toFormat('yyyy', this._getOptions());\n  }\n\n  getFirstDayOfWeek(): number {\n    return this._firstDayOfWeek ?? LuxonInfo.getStartOfWeek({locale: this.locale});\n  }\n\n  getNumDaysInMonth(date: LuxonDateTime): number {\n    return date.daysInMonth!;\n  }\n\n  clone(date: LuxonDateTime): LuxonDateTime {\n    return LuxonDateTime.fromObject(date.toObject(), this._getOptions());\n  }\n\n  createDate(year: number, month: number, date: number): LuxonDateTime {\n    const options = this._getOptions();\n\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    // Luxon uses 1-indexed months so we need to add one to the month.\n    const result = this._useUTC\n      ? LuxonDateTime.utc(year, month + 1, date, options)\n      : LuxonDateTime.local(year, month + 1, date, options);\n\n    if (!this.isValid(result)) {\n      throw Error(`Invalid date \"${date}\". Reason: \"${result.invalidReason}\".`);\n    }\n\n    return result;\n  }\n\n  today(): LuxonDateTime {\n    const options = this._getOptions();\n\n    return this._useUTC ? LuxonDateTime.utc(options) : LuxonDateTime.local(options);\n  }\n\n  parse(value: unknown, parseFormat: string | string[]): LuxonDateTime | null {\n    const options: LuxonDateTimeOptions = this._getOptions();\n\n    if (typeof value == 'string' && value.length > 0) {\n      const iso8601Date = LuxonDateTime.fromISO(value, options);\n\n      if (this.isValid(iso8601Date)) {\n        return iso8601Date;\n      }\n\n      const formats = Array.isArray(parseFormat) ? parseFormat : [parseFormat];\n\n      if (!parseFormat.length) {\n        throw Error('Formats array must not be empty.');\n      }\n\n      for (const format of formats) {\n        const fromFormat = LuxonDateTime.fromFormat(value, format, options);\n\n        if (this.isValid(fromFormat)) {\n          return fromFormat;\n        }\n      }\n\n      return this.invalid();\n    } else if (typeof value === 'number') {\n      return LuxonDateTime.fromMillis(value, options);\n    } else if (value instanceof Date) {\n      return LuxonDateTime.fromJSDate(value, options);\n    } else if (value instanceof LuxonDateTime) {\n      return LuxonDateTime.fromMillis(value.toMillis(), options);\n    }\n\n    return null;\n  }\n\n  format(date: LuxonDateTime, displayFormat: string): string {\n    if (!this.isValid(date)) {\n      throw Error('LuxonDateAdapter: Cannot format invalid date.');\n    }\n    if (this._useUTC) {\n      return date.setLocale(this.locale).setZone('utc').toFormat(displayFormat);\n    } else {\n      return date.setLocale(this.locale).toFormat(displayFormat);\n    }\n  }\n\n  addCalendarYears(date: LuxonDateTime, years: number): LuxonDateTime {\n    return date.reconfigure(this._getOptions()).plus({years});\n  }\n\n  addCalendarMonths(date: LuxonDateTime, months: number): LuxonDateTime {\n    return date.reconfigure(this._getOptions()).plus({months});\n  }\n\n  addCalendarDays(date: LuxonDateTime, days: number): LuxonDateTime {\n    return date.reconfigure(this._getOptions()).plus({days});\n  }\n\n  toIso8601(date: LuxonDateTime): string {\n    return date.toISO()!;\n  }\n\n  /**\n   * Returns the given value if given a valid Luxon or null. Deserializes valid ISO 8601 strings\n   * (https://www.ietf.org/rfc/rfc3339.txt) and valid Date objects into valid DateTime and empty\n   * string into null. Returns an invalid date for all other values.\n   */\n  override deserialize(value: unknown): LuxonDateTime | null {\n    const options = this._getOptions();\n    let date: LuxonDateTime | undefined;\n    if (value instanceof Date) {\n      date = LuxonDateTime.fromJSDate(value, options);\n    }\n    if (typeof value === 'string') {\n      if (!value) {\n        return null;\n      }\n      date = LuxonDateTime.fromISO(value, options);\n    }\n    if (date && this.isValid(date)) {\n      return date;\n    }\n    return super.deserialize(value);\n  }\n\n  isDateInstance(obj: unknown): obj is LuxonDateTime {\n    return obj instanceof LuxonDateTime;\n  }\n\n  isValid(date: LuxonDateTime): boolean {\n    return date.isValid;\n  }\n\n  invalid(): LuxonDateTime {\n    return LuxonDateTime.invalid('Invalid Luxon DateTime object.');\n  }\n\n  override setTime(\n    target: LuxonDateTime,\n    hours: number,\n    minutes: number,\n    seconds: number,\n  ): LuxonDateTime {\n    if (typeof ngDevMode === 'undefined' || ngDevMode) {\n      if (hours < 0 || hours > 23) {\n        throw Error(`Invalid hours \"${hours}\". Hours value must be between 0 and 23.`);\n      }\n\n      if (minutes < 0 || minutes > 59) {\n        throw Error(`Invalid minutes \"${minutes}\". Minutes value must be between 0 and 59.`);\n      }\n\n      if (seconds < 0 || seconds > 59) {\n        throw Error(`Invalid seconds \"${seconds}\". Seconds value must be between 0 and 59.`);\n      }\n    }\n\n    return this.clone(target).set({\n      hour: hours,\n      minute: minutes,\n      second: seconds,\n      millisecond: 0,\n    });\n  }\n\n  override getHours(date: LuxonDateTime): number {\n    return date.hour;\n  }\n\n  override getMinutes(date: LuxonDateTime): number {\n    return date.minute;\n  }\n\n  override getSeconds(date: LuxonDateTime): number {\n    return date.second;\n  }\n\n  override parseTime(value: unknown, parseFormat: string | string[]): LuxonDateTime | null {\n    const result = this.parse(value, parseFormat);\n\n    if ((!result || !this.isValid(result)) && typeof value === 'string') {\n      // It seems like Luxon doesn't work well cross-browser for strings that have\n      // additional characters around the time. Try parsing without those characters.\n      return this.parse(value.replace(/[^0-9:(AM|PM)]/gi, ''), parseFormat) || result;\n    }\n\n    return result;\n  }\n\n  override addSeconds(date: LuxonDateTime, amount: number): LuxonDateTime {\n    return date.reconfigure(this._getOptions()).plus({seconds: amount});\n  }\n\n  /** Gets the options that should be used when constructing a new `DateTime` object. */\n  private _getOptions(): LuxonDateTimeOptions {\n    return {\n      zone: this._useUTC ? 'utc' : undefined,\n      locale: this.locale,\n      outputCalendar: this._defaultOutputCalendar,\n    };\n  }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {MatDateFormats} from '@angular/material/core';\n\nexport const MAT_LUXON_DATE_FORMATS: MatDateFormats = {\n  parse: {\n    dateInput: 'D',\n    timeInput: 't',\n  },\n  display: {\n    dateInput: 'D',\n    timeInput: 't',\n    monthYearLabel: 'LLL yyyy',\n    dateA11yLabel: 'DD',\n    monthYearA11yLabel: 'LLLL yyyy',\n    timeOptionLabel: 't',\n  },\n};\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {NgModule, Provider} from '@angular/core';\nimport {DateAdapter, MAT_DATE_FORMATS, MatDateFormats} from '@angular/material/core';\nimport {LuxonDateAdapter} from './luxon-date-adapter';\nimport {MAT_LUXON_DATE_FORMATS} from './luxon-date-formats';\n\nexport * from './luxon-date-adapter';\nexport * from './luxon-date-formats';\n\n@NgModule({\n  providers: [\n    {\n      provide: DateAdapter,\n      useClass: LuxonDateAdapter,\n    },\n  ],\n})\nexport class LuxonDateModule {}\n\n@NgModule({\n  providers: [provideLuxonDateAdapter()],\n})\nexport class MatLuxonDateModule {}\n\nexport function provideLuxonDateAdapter(\n  formats: MatDateFormats = MAT_LUXON_DATE_FORMATS,\n): Provider[] {\n  return [\n    {\n      provide: DateAdapter,\n      useClass: LuxonDateAdapter,\n    },\n    {provide: MAT_DATE_FORMATS, useValue: formats},\n  ];\n}\n"],"names":["MAT_LUXON_DATE_ADAPTER_OPTIONS","InjectionToken","providedIn","factory","useUtc","defaultOutputCalendar","range","length","valueFunction","valuesArray","Array","i","LuxonDateAdapter","DateAdapter","_useUTC","_firstDayOfWeek","_defaultOutputCalendar","constructor","dateLocale","inject","MAT_DATE_LOCALE","optional","options","firstDayOfWeek","setLocale","LuxonDateTime","local","locale","getYear","date","year","getMonth","month","getDate","day","getDayOfWeek","weekday","getMonthNames","style","LuxonInfo","months","outputCalendar","getDateNames","dtf","Intl","DateTimeFormat","timeZone","format","utc","toJSDate","getDayOfWeekNames","days","weekdays","unshift","pop","getYearName","toFormat","_getOptions","getFirstDayOfWeek","getStartOfWeek","getNumDaysInMonth","daysInMonth","clone","fromObject","toObject","createDate","Error","result","isValid","invalidReason","today","parse","value","parseFormat","iso8601Date","fromISO","formats","isArray","fromFormat","invalid","fromMillis","Date","fromJSDate","toMillis","displayFormat","setZone","addCalendarYears","years","reconfigure","plus","addCalendarMonths","addCalendarDays","toIso8601","toISO","deserialize","isDateInstance","obj","setTime","target","hours","minutes","seconds","ngDevMode","set","hour","minute","second","millisecond","getHours","getMinutes","getSeconds","parseTime","replace","addSeconds","amount","zone","undefined","deps","i0","ɵɵFactoryTarget","Injectable","decorators","MAT_LUXON_DATE_FORMATS","dateInput","timeInput","display","monthYearLabel","dateA11yLabel","monthYearA11yLabel","timeOptionLabel","LuxonDateModule","NgModule","ɵinj","ɵɵngDeclareInjector","minVersion","version","ngImport","type","providers","provide","useClass","args","MatLuxonDateModule","provideLuxonDateAdapter","MAT_DATE_FORMATS","useValue"],"mappings":"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"}