{"version":3,"file":"dateUtil.mjs","sources":["../../../../../../../packages/vue-components/vc-picker/src/utils/dateUtil.ts"],"sourcesContent":["import type { GenerateConfig } from '../generate';\nimport type { CustomFormat, Locale, NullableDateType, PanelMode, PickerMode } from '../interface';\nimport { DECADE_UNIT_DIFF } from '../panels/DecadePanel/constant';\n\nexport const WEEK_DAY_COUNT = 7;\n\nexport function isNullEqual<T>(value1: T, value2: T): boolean | undefined {\n  if (!value1 && !value2)\n    return true;\n\n  if (!value1 || !value2)\n    return false;\n\n  return undefined;\n}\n\nexport function isSameDecade<DateType>(\n  generateConfig: GenerateConfig<DateType>,\n  decade1: NullableDateType<DateType>,\n  decade2: NullableDateType<DateType>,\n) {\n  const equal = isNullEqual(decade1, decade2);\n  if (typeof equal === 'boolean')\n    return equal;\n\n  const num1 = Math.floor(generateConfig.getYear(decade1!) / 10);\n  const num2 = Math.floor(generateConfig.getYear(decade2!) / 10);\n  return num1 === num2;\n}\n\nexport function isSameYear<DateType>(\n  generateConfig: GenerateConfig<DateType>,\n  year1: NullableDateType<DateType>,\n  year2: NullableDateType<DateType>,\n) {\n  const equal = isNullEqual(year1, year2);\n  if (typeof equal === 'boolean')\n    return equal;\n\n  return generateConfig.getYear(year1!) === generateConfig.getYear(year2!);\n}\n\nexport function getQuarter<DateType>(generateConfig: GenerateConfig<DateType>, date: DateType) {\n  const quota = Math.floor(generateConfig.getMonth(date) / 3);\n  return quota + 1;\n}\n\nexport function isSameQuarter<DateType>(\n  generateConfig: GenerateConfig<DateType>,\n  quarter1: NullableDateType<DateType>,\n  quarter2: NullableDateType<DateType>,\n) {\n  const equal = isNullEqual(quarter1, quarter2);\n  if (typeof equal === 'boolean')\n    return equal;\n\n  return (\n    isSameYear(generateConfig, quarter1, quarter2)\n    && getQuarter(generateConfig, quarter1!) === getQuarter(generateConfig, quarter2!)\n  );\n}\n\nexport function isSameMonth<DateType>(\n  generateConfig: GenerateConfig<DateType>,\n  month1: NullableDateType<DateType>,\n  month2: NullableDateType<DateType>,\n) {\n  const equal = isNullEqual(month1, month2);\n  if (typeof equal === 'boolean')\n    return equal;\n\n  return (\n    isSameYear(generateConfig, month1, month2)\n    && generateConfig.getMonth(month1!) === generateConfig.getMonth(month2!)\n  );\n}\n\nexport function isSameDate<DateType>(\n  generateConfig: GenerateConfig<DateType>,\n  date1: NullableDateType<DateType>,\n  date2: NullableDateType<DateType>,\n) {\n  const equal = isNullEqual(date1, date2);\n  if (typeof equal === 'boolean')\n    return equal;\n\n  return (\n    generateConfig.getYear(date1!) === generateConfig.getYear(date2!)\n    && generateConfig.getMonth(date1!) === generateConfig.getMonth(date2!)\n    && generateConfig.getDate(date1!) === generateConfig.getDate(date2!)\n  );\n}\n\nexport function isSameTime<DateType>(\n  generateConfig: GenerateConfig<DateType>,\n  time1: NullableDateType<DateType>,\n  time2: NullableDateType<DateType>,\n) {\n  const equal = isNullEqual(time1, time2);\n  if (typeof equal === 'boolean')\n    return equal;\n\n  return (\n    generateConfig.getHour(time1!) === generateConfig.getHour(time2!)\n    && generateConfig.getMinute(time1!) === generateConfig.getMinute(time2!)\n    && generateConfig.getSecond(time1!) === generateConfig.getSecond(time2!)\n  );\n}\n\nexport function isSameWeek<DateType>(\n  generateConfig: GenerateConfig<DateType>,\n  locale: string,\n  date1: NullableDateType<DateType>,\n  date2: NullableDateType<DateType>,\n) {\n  const equal = isNullEqual(date1, date2);\n  if (typeof equal === 'boolean')\n    return equal;\n\n  return (\n    generateConfig.locale.getWeek(locale, date1!) === generateConfig.locale.getWeek(locale, date2!)\n  );\n}\n\nexport function isEqual<DateType>(\n  generateConfig: GenerateConfig<DateType>,\n  value1: NullableDateType<DateType>,\n  value2: NullableDateType<DateType>,\n) {\n  return isSameDate(generateConfig, value1, value2) && isSameTime(generateConfig, value1, value2);\n}\n\n/** Between in date but not equal of date */\nexport function isInRange<DateType>(\n  generateConfig: GenerateConfig<DateType>,\n  startDate: NullableDateType<DateType>,\n  endDate: NullableDateType<DateType>,\n  current: NullableDateType<DateType>,\n) {\n  if (!startDate || !endDate || !current)\n    return false;\n\n  return (\n    !isSameDate(generateConfig, startDate, current)\n    && !isSameDate(generateConfig, endDate, current)\n    && generateConfig.isAfter(current, startDate)\n    && generateConfig.isAfter(endDate, current)\n  );\n}\n\nexport function getWeekStartDate<DateType>(\n  locale: string,\n  generateConfig: GenerateConfig<DateType>,\n  value: DateType,\n) {\n  const weekFirstDay = generateConfig.locale.getWeekFirstDay(locale);\n  const monthStartDate = generateConfig.setDate(value, 1);\n  const startDateWeekDay = generateConfig.getWeekDay(monthStartDate);\n\n  let alignStartDate = generateConfig.addDate(monthStartDate, weekFirstDay - startDateWeekDay);\n\n  if (\n    generateConfig.getMonth(alignStartDate) === generateConfig.getMonth(value)\n    && generateConfig.getDate(alignStartDate) > 1\n  ) {\n    alignStartDate = generateConfig.addDate(alignStartDate, -7);\n  }\n\n  return alignStartDate;\n}\n\nexport function getClosingViewDate<DateType>(\n  viewDate: DateType,\n  picker: PickerMode,\n  generateConfig: GenerateConfig<DateType>,\n  offset = 1,\n): DateType {\n  switch (picker) {\n    case 'year':\n      return generateConfig.addYear(viewDate, offset * 10);\n    case 'quarter':\n    case 'month':\n      return generateConfig.addYear(viewDate, offset);\n    default:\n      return generateConfig.addMonth(viewDate, offset);\n  }\n}\n\nexport function formatValue<DateType>(\n  value: DateType,\n  {\n    generateConfig,\n    locale,\n    format,\n  }: {\n    generateConfig: GenerateConfig<DateType>;\n    locale: Locale;\n    format: string | CustomFormat<DateType>;\n  },\n) {\n  return typeof format === 'function'\n    ? format(value)\n    : generateConfig.locale.format(locale.locale, value, format);\n}\n\nexport function parseValue<DateType>(\n  value: string,\n  {\n    generateConfig,\n    locale,\n    formatList,\n  }: {\n    generateConfig: GenerateConfig<DateType>;\n    locale: Locale;\n    formatList: Array<string | CustomFormat<DateType>>;\n  },\n) {\n  if (!value || typeof formatList[0] === 'function')\n    return null;\n\n  return generateConfig.locale.parse(locale.locale, value, formatList as string[]);\n}\n\nexport function getCellDateDisabled<DateType>({\n  cellDate,\n  mode,\n  disabledDate,\n  generateConfig,\n}: {\n  cellDate: DateType;\n  mode: Omit<PanelMode, 'time'>;\n  generateConfig: GenerateConfig<DateType>;\n  disabledDate?: (date: DateType) => boolean;\n}): boolean {\n  if (!disabledDate) return false;\n  // Whether cellDate is disabled in range\n  const getDisabledFromRange = (\n    currentMode: 'date' | 'month' | 'year',\n    start: number,\n    end: number,\n  ) => {\n    let current = start;\n    while (current <= end) {\n      let date: DateType;\n      switch (currentMode) {\n        case 'date': {\n          date = generateConfig.setDate(cellDate, current);\n          if (!disabledDate(date))\n            return false;\n\n          break;\n        }\n        case 'month': {\n          date = generateConfig.setMonth(cellDate, current);\n          if (\n            !getCellDateDisabled({\n              cellDate: date,\n              mode: 'month',\n              generateConfig,\n              disabledDate,\n            })\n          ) {\n            return false;\n          }\n\n          break;\n        }\n        case 'year': {\n          date = generateConfig.setYear(cellDate, current);\n          if (\n            !getCellDateDisabled({\n              cellDate: date,\n              mode: 'year',\n              generateConfig,\n              disabledDate,\n            })\n          ) {\n            return false;\n          }\n\n          break;\n        }\n      }\n      current += 1;\n    }\n    return true;\n  };\n  switch (mode) {\n    case 'date':\n    case 'week': {\n      return disabledDate(cellDate);\n    }\n    case 'month': {\n      const startDate = 1;\n      const endDate = generateConfig.getDate(generateConfig.getEndDate(cellDate));\n      return getDisabledFromRange('date', startDate, endDate);\n    }\n    case 'quarter': {\n      const startMonth = Math.floor(generateConfig.getMonth(cellDate) / 3) * 3;\n      const endMonth = startMonth + 2;\n      return getDisabledFromRange('month', startMonth, endMonth);\n    }\n    case 'year': {\n      return getDisabledFromRange('month', 0, 11);\n    }\n    case 'decade': {\n      const year = generateConfig.getYear(cellDate);\n      const startYear = Math.floor(year / DECADE_UNIT_DIFF) * DECADE_UNIT_DIFF;\n      const endYear = startYear + DECADE_UNIT_DIFF - 1;\n      return getDisabledFromRange('year', startYear, endYear);\n    }\n  }\n}\n"],"names":[],"mappings":"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"}