{"version":3,"file":"ng-zorro-antd-core-time.mjs","sources":["../../components/core/time/candy-date.ts","../../components/core/time/time.ts","../../components/core/time/time-parser.ts","../../components/core/time/public-api.ts","../../components/core/time/ng-zorro-antd-core-time.ts"],"sourcesContent":["/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport {\n  addMonths,\n  addYears,\n  differenceInCalendarDays,\n  differenceInCalendarMonths,\n  differenceInCalendarYears,\n  differenceInCalendarQuarters,\n  differenceInHours,\n  differenceInMinutes,\n  differenceInSeconds,\n  isFirstDayOfMonth,\n  isLastDayOfMonth,\n  isSameDay,\n  isSameHour,\n  isSameMinute,\n  isSameMonth,\n  isSameSecond,\n  isSameYear,\n  isSameQuarter,\n  isToday,\n  isValid,\n  setDay,\n  setMonth,\n  setYear,\n  startOfMonth,\n  startOfWeek,\n  getQuarter,\n  setQuarter\n} from 'date-fns';\n\nimport { warn } from 'ng-zorro-antd/core/logger';\nimport { IndexableObject, NzSafeAny } from 'ng-zorro-antd/core/types';\n\nexport type CandyDateMode = 'decade' | 'year' | 'quarter' | 'month' | 'day' | 'hour' | 'minute' | 'second';\nexport type NormalizedMode = 'decade' | 'year' | 'month';\nexport type WeekDayIndex = 0 | 1 | 2 | 3 | 4 | 5 | 6;\nexport type CandyDateType = CandyDate | Date | null;\nexport type SingleValue = CandyDate | null;\nexport type CompatibleValue = SingleValue | SingleValue[];\n\nexport function wrongSortOrder(rangeValue: SingleValue[]): boolean {\n  const [start, end] = rangeValue;\n  return !!start && !!end && end.isBeforeDay(start);\n}\n\nexport function normalizeRangeValue(\n  value: SingleValue[],\n  hasTimePicker: boolean,\n  type: NormalizedMode = 'month',\n  activePart: 'left' | 'right' = 'left'\n): CandyDate[] {\n  const [start, end] = value;\n  let newStart: CandyDate = start || new CandyDate();\n  let newEnd: CandyDate = end || (hasTimePicker ? newStart : newStart.add(1, type));\n\n  if (start && !end) {\n    newStart = start;\n    newEnd = hasTimePicker ? start : start.add(1, type);\n  } else if (!start && end) {\n    newStart = hasTimePicker ? end : end.add(-1, type);\n    newEnd = end;\n  } else if (start && end && !hasTimePicker) {\n    if (start.isSame(end, type)) {\n      newEnd = newStart.add(1, type);\n    } else {\n      if (activePart === 'left') {\n        newEnd = newStart.add(1, type);\n      } else {\n        newStart = newEnd.add(-1, type);\n      }\n    }\n  }\n  return [newStart, newEnd];\n}\n\nexport function cloneDate(value: CompatibleValue): CompatibleValue {\n  if (Array.isArray(value)) {\n    return value.map(v => (v instanceof CandyDate ? v.clone() : null));\n  } else {\n    return value instanceof CandyDate ? value.clone() : null;\n  }\n}\n\n/**\n * Wrapping kind APIs for date operating and unify\n * NOTE: every new API return new CandyDate object without side effects to the former Date object\n * NOTE: most APIs are based on local time other than customized locale id (this needs tobe support in future)\n * TODO: support format() against to angular's core API\n */\nexport class CandyDate implements IndexableObject {\n  nativeDate: Date;\n  // locale: string; // Custom specified locale ID\n\n  constructor(date?: Date | string | number) {\n    if (date) {\n      if (date instanceof Date) {\n        this.nativeDate = date;\n      } else if (typeof date === 'string' || typeof date === 'number') {\n        warn('The string type is not recommended for date-picker, use \"Date\" type');\n        this.nativeDate = new Date(date);\n      } else {\n        throw new Error('The input date type is not supported (\"Date\" is now recommended)');\n      }\n    } else {\n      this.nativeDate = new Date();\n    }\n  }\n\n  calendarStart(options?: { weekStartsOn: WeekDayIndex | undefined }): CandyDate {\n    return new CandyDate(startOfWeek(startOfMonth(this.nativeDate), options));\n  }\n\n  // ---------------------------------------------------------------------\n  // | Native shortcuts\n  // -----------------------------------------------------------------------------\\\n\n  getYear(): number {\n    return this.nativeDate.getFullYear();\n  }\n\n  getMonth(): number {\n    return this.nativeDate.getMonth();\n  }\n\n  getDay(): number {\n    return this.nativeDate.getDay();\n  }\n\n  getTime(): number {\n    return this.nativeDate.getTime();\n  }\n\n  getDate(): number {\n    return this.nativeDate.getDate();\n  }\n\n  getHours(): number {\n    return this.nativeDate.getHours();\n  }\n\n  getMinutes(): number {\n    return this.nativeDate.getMinutes();\n  }\n\n  getSeconds(): number {\n    return this.nativeDate.getSeconds();\n  }\n\n  getMilliseconds(): number {\n    return this.nativeDate.getMilliseconds();\n  }\n\n  // ---------------------------------------------------------------------\n  // | New implementing APIs\n  // ---------------------------------------------------------------------\n\n  clone(): CandyDate {\n    return new CandyDate(new Date(this.nativeDate));\n  }\n\n  setHms(hour: number, minute: number, second: number): CandyDate {\n    const newDate = new Date(this.nativeDate.setHours(hour, minute, second));\n    return new CandyDate(newDate);\n  }\n\n  setYear(year: number): CandyDate {\n    return new CandyDate(setYear(this.nativeDate, year));\n  }\n\n  addYears(amount: number): CandyDate {\n    return new CandyDate(addYears(this.nativeDate, amount));\n  }\n\n  // NOTE: month starts from 0\n  // NOTE: Don't use the native API for month manipulation as it not restrict the date when it overflows, eg. (new Date('2018-7-31')).setMonth(1) will be date of 2018-3-03 instead of 2018-2-28\n  setMonth(month: number): CandyDate {\n    return new CandyDate(setMonth(this.nativeDate, month));\n  }\n\n  addMonths(amount: number): CandyDate {\n    return new CandyDate(addMonths(this.nativeDate, amount));\n  }\n\n  setDay(day: number, options?: { weekStartsOn: WeekDayIndex }): CandyDate {\n    return new CandyDate(setDay(this.nativeDate, day, options));\n  }\n\n  setDate(amount: number): CandyDate {\n    const date = new Date(this.nativeDate);\n    date.setDate(amount);\n    return new CandyDate(date);\n  }\n\n  getQuarter(): number {\n    return getQuarter(this.nativeDate);\n  }\n\n  setQuarter(quarter: number): CandyDate {\n    return new CandyDate(setQuarter(this.nativeDate, quarter));\n  }\n\n  addDays(amount: number): CandyDate {\n    return this.setDate(this.getDate() + amount);\n  }\n\n  add(amount: number, mode: NormalizedMode): CandyDate {\n    switch (mode) {\n      case 'decade':\n        return this.addYears(amount * 10);\n      case 'year':\n        return this.addYears(amount);\n      case 'month':\n        return this.addMonths(amount);\n      default:\n        return this.addMonths(amount);\n    }\n  }\n\n  isSame(date: CandyDateType, grain: CandyDateMode = 'day'): boolean {\n    let fn;\n    switch (grain) {\n      case 'decade':\n        fn = (pre: Date, next: Date) => Math.abs(pre.getFullYear() - next.getFullYear()) < 11;\n        break;\n      case 'year':\n        fn = isSameYear;\n        break;\n      case 'quarter':\n        fn = isSameQuarter;\n        break;\n      case 'month':\n        fn = isSameMonth;\n        break;\n      case 'day':\n        fn = isSameDay;\n        break;\n      case 'hour':\n        fn = isSameHour;\n        break;\n      case 'minute':\n        fn = isSameMinute;\n        break;\n      case 'second':\n        fn = isSameSecond;\n        break;\n      default:\n        fn = isSameDay;\n        break;\n    }\n    return fn(this.nativeDate, this.toNativeDate(date));\n  }\n\n  isSameYear(date: CandyDateType): boolean {\n    return this.isSame(date, 'year');\n  }\n  isSameQuarter(date: CandyDateType): boolean {\n    return this.isSame(date, 'quarter');\n  }\n\n  isSameMonth(date: CandyDateType): boolean {\n    return this.isSame(date, 'month');\n  }\n\n  isSameDay(date: CandyDateType): boolean {\n    return this.isSame(date, 'day');\n  }\n\n  isSameHour(date: CandyDateType): boolean {\n    return this.isSame(date, 'hour');\n  }\n\n  isSameMinute(date: CandyDateType): boolean {\n    return this.isSame(date, 'minute');\n  }\n\n  isSameSecond(date: CandyDateType): boolean {\n    return this.isSame(date, 'second');\n  }\n\n  isBefore(date: CandyDateType, grain: CandyDateMode = 'day'): boolean {\n    if (date === null) {\n      return false;\n    }\n    let fn;\n    switch (grain) {\n      case 'year':\n        fn = differenceInCalendarYears;\n        break;\n      case 'quarter':\n        fn = differenceInCalendarQuarters;\n        break;\n      case 'month':\n        fn = differenceInCalendarMonths;\n        break;\n      case 'day':\n        fn = differenceInCalendarDays;\n        break;\n      case 'hour':\n        fn = differenceInHours;\n        break;\n      case 'minute':\n        fn = differenceInMinutes;\n        break;\n      case 'second':\n        fn = differenceInSeconds;\n        break;\n      default:\n        fn = differenceInCalendarDays;\n        break;\n    }\n    return fn(this.nativeDate, this.toNativeDate(date)) < 0;\n  }\n\n  isBeforeYear(date: CandyDateType): boolean {\n    return this.isBefore(date, 'year');\n  }\n\n  isBeforeQuarter(date: CandyDateType): boolean {\n    return this.isBefore(date, 'quarter');\n  }\n\n  isBeforeMonth(date: CandyDateType): boolean {\n    return this.isBefore(date, 'month');\n  }\n\n  isBeforeDay(date: CandyDateType): boolean {\n    return this.isBefore(date, 'day');\n  }\n\n  // Equal to today accurate to \"day\"\n  isToday(): boolean {\n    return isToday(this.nativeDate);\n  }\n\n  isValid(): boolean {\n    return isValid(this.nativeDate);\n  }\n\n  isFirstDayOfMonth(): boolean {\n    return isFirstDayOfMonth(this.nativeDate);\n  }\n\n  isLastDayOfMonth(): boolean {\n    return isLastDayOfMonth(this.nativeDate);\n  }\n\n  private toNativeDate(date: NzSafeAny): Date {\n    return date instanceof CandyDate ? date.nativeDate : date;\n  }\n}\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nexport const timeUnits: Array<[string, number]> = [\n  ['Y', 1000 * 60 * 60 * 24 * 365], // years\n  ['M', 1000 * 60 * 60 * 24 * 30], // months\n  ['D', 1000 * 60 * 60 * 24], // days\n  ['H', 1000 * 60 * 60], // hours\n  ['m', 1000 * 60], // minutes\n  ['s', 1000], // seconds\n  ['S', 1] // million seconds\n];\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\n// from https://github.com/hsuanxyz/ng-time-parser\nimport { FormStyle, getLocaleDayPeriods, TranslationWidth } from '@angular/common';\n\nimport { isNotNil } from 'ng-zorro-antd/core/util';\n\nexport interface TimeResult {\n  hour: number | null;\n  minute: number | null;\n  second: number | null;\n  period: number | null;\n}\n\nexport class NgTimeParser {\n  regex: RegExp = null!;\n  matchMap: Record<string, null | number> = {\n    hour: null,\n    minute: null,\n    second: null,\n    periodNarrow: null,\n    periodWide: null,\n    periodAbbreviated: null\n  };\n\n  constructor(\n    private format: string,\n    private localeId: string\n  ) {\n    this.genRegexp();\n  }\n\n  toDate(str: string): Date {\n    const result = this.getTimeResult(str);\n    const time = new Date();\n\n    if (isNotNil(result?.hour)) {\n      time.setHours(result!.hour);\n    }\n\n    if (isNotNil(result?.minute)) {\n      time.setMinutes(result!.minute);\n    }\n\n    if (isNotNil(result?.second)) {\n      time.setSeconds(result!.second);\n    }\n\n    if (result?.period === 1 && time.getHours() < 12) {\n      time.setHours(time.getHours() + 12);\n    }\n\n    return time;\n  }\n\n  getTimeResult(str: string): TimeResult | null {\n    const match = this.regex.exec(str);\n    let period = null;\n    if (match) {\n      if (isNotNil(this.matchMap.periodNarrow)) {\n        period = getLocaleDayPeriods(this.localeId, FormStyle.Format, TranslationWidth.Narrow).indexOf(\n          match[this.matchMap.periodNarrow + 1]\n        );\n      }\n      if (isNotNil(this.matchMap.periodWide)) {\n        period = getLocaleDayPeriods(this.localeId, FormStyle.Format, TranslationWidth.Wide).indexOf(\n          match[this.matchMap.periodWide + 1]\n        );\n      }\n      if (isNotNil(this.matchMap.periodAbbreviated)) {\n        period = getLocaleDayPeriods(this.localeId, FormStyle.Format, TranslationWidth.Abbreviated).indexOf(\n          match[this.matchMap.periodAbbreviated + 1]\n        );\n      }\n      return {\n        hour: isNotNil(this.matchMap.hour) ? Number.parseInt(match[this.matchMap.hour + 1], 10) : null,\n        minute: isNotNil(this.matchMap.minute) ? Number.parseInt(match[this.matchMap.minute + 1], 10) : null,\n        second: isNotNil(this.matchMap.second) ? Number.parseInt(match[this.matchMap.second + 1], 10) : null,\n        period\n      };\n    } else {\n      return null;\n    }\n  }\n\n  genRegexp(): void {\n    let regexStr = this.format.replace(/([.*+?^=!:${}()|[\\]/\\\\])/g, '\\\\$&');\n    const hourRegex = /h{1,2}/i;\n    const minuteRegex = /m{1,2}/;\n    const secondRegex = /s{1,2}/;\n    const periodNarrow = /aaaaa/;\n    const periodWide = /aaaa/;\n    const periodAbbreviated = /a{1,3}/;\n\n    const hourMatch = hourRegex.exec(this.format);\n    const minuteMatch = minuteRegex.exec(this.format);\n    const secondMatch = secondRegex.exec(this.format);\n    const periodNarrowMatch = periodNarrow.exec(this.format);\n    let periodWideMatch: null | RegExpExecArray = null;\n    let periodAbbreviatedMatch: null | RegExpExecArray = null;\n    if (!periodNarrowMatch) {\n      periodWideMatch = periodWide.exec(this.format);\n    }\n    if (!periodWideMatch && !periodNarrowMatch) {\n      periodAbbreviatedMatch = periodAbbreviated.exec(this.format);\n    }\n\n    const matchs = [hourMatch, minuteMatch, secondMatch, periodNarrowMatch, periodWideMatch, periodAbbreviatedMatch]\n      .filter(m => !!m)\n      .sort((a, b) => a!.index - b!.index);\n\n    matchs.forEach((match, index) => {\n      switch (match) {\n        case hourMatch:\n          this.matchMap.hour = index;\n          regexStr = regexStr.replace(hourRegex, '(\\\\d{1,2})');\n          break;\n        case minuteMatch:\n          this.matchMap.minute = index;\n          regexStr = regexStr.replace(minuteRegex, '(\\\\d{1,2})');\n          break;\n        case secondMatch:\n          this.matchMap.second = index;\n          regexStr = regexStr.replace(secondRegex, '(\\\\d{1,2})');\n          break;\n        case periodNarrowMatch: {\n          this.matchMap.periodNarrow = index;\n          const periodsNarrow = getLocaleDayPeriods(this.localeId, FormStyle.Format, TranslationWidth.Narrow).join('|');\n          regexStr = regexStr.replace(periodNarrow, `(${periodsNarrow})`);\n          break;\n        }\n        case periodWideMatch: {\n          this.matchMap.periodWide = index;\n          const periodsWide = getLocaleDayPeriods(this.localeId, FormStyle.Format, TranslationWidth.Wide).join('|');\n          regexStr = regexStr.replace(periodWide, `(${periodsWide})`);\n          break;\n        }\n        case periodAbbreviatedMatch: {\n          this.matchMap.periodAbbreviated = index;\n          const periodsAbbreviated = getLocaleDayPeriods(\n            this.localeId,\n            FormStyle.Format,\n            TranslationWidth.Abbreviated\n          ).join('|');\n          regexStr = regexStr.replace(periodAbbreviated, `(${periodsAbbreviated})`);\n          break;\n        }\n      }\n    });\n\n    this.regex = new RegExp(regexStr);\n  }\n}\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nexport * from './candy-date';\nexport * from './time';\nexport { NgTimeParser as ɵNgTimeParser } from './time-parser';\nexport type { TimeResult as ɵTimeResult } from './time-parser';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}