{"version":3,"file":"utils.mjs","sources":["../../../../../../packages/components/date-picker/src/utils.ts"],"sourcesContent":["import { isNumber, isSameArray } from '../../../utils/is'\nimport type { DateCell } from './types'\n\n// ymd => 不做任何处理 纯获取\nexport const getYMD = (date?: Date): number[] => {\n  if (!date) return []\n  const _date = new Date(date)\n  const y = _date.getFullYear()\n  const m = _date.getMonth()\n  const d = _date.getDate()\n  return [y, m, d]\n}\n\n// 获取当前月有多少天\nexport const daysOfMonth = (date?: Date) => {\n  const [y, m] = getYMD(date)\n  return new Date(y, m + 1, 0).getDate()\n}\n// 当前日期在本年是第几天\nexport const daysOfYear = (date?: Date) => {\n  const [y, m, d] = getYMD(date)\n  let day = d\n  for (let i = 0; i < m; i++) {\n    day += daysOfMonth(new Date(y, i, 1))\n  }\n  return day\n}\n\n// 获取当前月的第一天是星期几\nexport const firstDateIsWeekOfMonth = (date?: Date) => {\n  const [y, m] = getYMD(date)\n  return new Date(y, m, 1).getDay()\n}\n\n// date的加减计算\nexport const diffOfDate = (date: Date, diff?: number) => {\n  const [oldYear, oldMonth, oldDate] = getYMD(date)\n  const _date = new Date(oldYear, oldMonth, oldDate)\n  _date.setDate(oldDate + (diff ? diff : 0))\n  return _date\n}\n\n// 月份的加减计算\nexport const diffOfMonth = (date: Date, diff?: number) => {\n  const [oldYear, oldMonth] = getYMD(date)\n  const _date = new Date(oldYear, oldMonth, 1)\n  _date.setMonth(oldMonth + (diff ? diff : 0))\n  return _date\n}\n\n// 年份的加减计算\nexport const diffOfYear = (date: Date, diff?: number) => {\n  const [oldYear, oldMonth] = getYMD(date)\n  const _date = new Date(oldYear, oldMonth, 1)\n  _date.setFullYear(oldYear + (diff ? diff : 0))\n  return _date\n}\n\nexport const isSameDate = (a: Date | undefined, b: Date | undefined) => {\n  return isSameArray(getYMD(a), getYMD(b))\n}\n\nexport const isSameMonth = (a: Date | undefined, b: Date | undefined) => {\n  return isSameArray(getYMD(a).slice(0, 2), getYMD(b).slice(0, 2))\n}\n\nexport const isSameYear = (a: Date | undefined, b: Date | undefined) => {\n  return isSameArray(getYMD(a).slice(0, 1), getYMD(b).slice(0, 1))\n}\n\nexport const getDateRangeOfWeek = (date: Date, weeks: Array<{ label: string; value: number }>) => {\n  const dayOfWeek = date.getDay()\n  const index = weeks.findIndex((week) => week.value === dayOfWeek)\n  const range: Date[] = [date]\n  for (let i = 1; i <= index; i++) {\n    range.unshift(diffOfDate(date, -i))\n  }\n  for (let i = 1; i < 7 - index; i++) {\n    range.push(diffOfDate(date, i))\n  }\n  return range\n}\n\nexport const parseWeek2DateRange = (\n  year: number,\n  week: number,\n  weeks: Array<{ label: string; value: number }>\n) => {\n  const firstDay = new Date(year, 0, 1)\n  const index = weeks.findIndex((w) => w.value === firstDay.getDay())\n  const range = getDateRangeOfWeek(firstDay, weeks)\n  const start = range[0]\n  const end = range[range.length - 1]\n  const std = index > 3 ? diffOfDate(end, 1) : start\n  const s = diffOfDate(std, (week - 1) * 7)\n  const e = diffOfDate(std, week * 7 - 1)\n  return [s, e]\n}\n\nexport const weekOfYear = (\n  date: Date,\n  weeks: Array<{ label: string; value: number }>\n): { year: number; week: number } => {\n  const range = getDateRangeOfWeek(date, weeks)\n  const [prevYear] = getYMD(range[0])\n  const [nextYear] = getYMD(range[range.length - 1])\n  let stdYear = range[0].getFullYear()\n  if (prevYear !== nextYear) {\n    const prevDates = range.filter((d) => d.getFullYear() === prevYear)\n    const nextDates = range.filter((d) => d.getFullYear() === nextYear)\n    if (prevDates.length < nextDates.length) {\n      stdYear = range[range.length - 1].getFullYear()\n    }\n  }\n  const yearStartDate = new Date(stdYear, 0, 1)\n  const index = weeks.findIndex((week) => week.value === yearStartDate.getDay())\n  const start = index > 3 ? diffOfDate(yearStartDate, 6 - index) : diffOfDate(yearStartDate, -index)\n  const weekCounter = Math.floor((date.getTime() - start.getTime()) / (24 * 60 * 60 * 1000) / 7) + 1\n  return {\n    year: stdYear,\n    week: weekCounter\n  }\n}\n\n// format:yyyy-MM-dd hh:mm:ss\nexport const dateFormat = (date: any, format?: string) => {\n  if (!format) return date\n  if (typeof date === 'string') {\n    const mts = date.match(/(\\/Date\\((\\d+)\\)\\/)/)\n    if (mts && mts.length >= 3) {\n      date = parseInt(mts[2])\n    }\n  }\n  date = new Date(date)\n  if (!date || date.toUTCString() == 'Invalid Date') {\n    return ''\n  }\n  const map: Record<string, any> = {\n    M: date.getMonth() + 1, //月份\n    d: date.getDate(), // 日\n    h: date.getHours(), //小时\n    m: date.getMinutes(), //分\n    s: date.getSeconds(), //秒\n    q: Math.floor((date.getMonth() + 3) / 3), //季度\n    S: date.getMilliseconds() //毫秒\n  }\n  format = format.replace(/([yMdhmsqS])+/g, (all, t) => {\n    let v = map[t]\n    if (v !== undefined) {\n      if (all.length > 1) {\n        v = '0' + v\n        v = v.substr(v.length - 2)\n      }\n      return v\n    } else if (t === 'y') {\n      return (date.getFullYear() + '').slice(4 - all.length)\n    }\n    return all\n  })\n  return format\n}\n\nexport const genCell = (cell: Partial<DateCell>) => {\n  const _cell: DateCell = {\n    value: '',\n    label: '',\n    date: new Date(),\n    isCur: false,\n    isPrev: false,\n    isNext: false,\n    isRange: false,\n    isSelect: false,\n    isNow: false,\n    isRangeStart: false,\n    isRangeEnd: false,\n    isDisabled: false,\n    format: dateFormat\n  }\n  return Object.assign({}, _cell, cell)\n}\n\nexport const compareMonth = (newDate: Date | undefined, oldDate: Date | undefined) => {\n  const [newYear, newMonth] = getYMD(newDate)\n  const [, oldMonth] = getYMD(oldDate)\n  if (newMonth !== oldMonth && isNumber(newMonth)) {\n    return new Date(newYear, newMonth, 1)\n  }\n}\n\nexport const compareYear = (newDate: Date | undefined, oldDate: Date | undefined) => {\n  const [newYear] = getYMD(newDate)\n  const [oldYear] = getYMD(oldDate)\n  if (newYear !== oldYear && isNumber(newYear)) {\n    return new Date(newYear, 1, 1)\n  }\n}\n\nexport const transToStartTimestampOfDay = (date: Date) => {\n  const [y, m, d] = getYMD(date)\n  const _date = new Date(y, m, d) // 转化成 2023-08-01 00:00:00 格式\n  return _date.getTime()\n}\n\nexport const dateHasInRange = (dateRange: Date[], date: Date, type: 'range' | 'start' | 'end') => {\n  const time = transToStartTimestampOfDay(date)\n  const times = dateRange.map((d) => transToStartTimestampOfDay(d))\n  const max = Math.max(...times)\n  const min = Math.min(...times)\n  let ret = false\n  switch (type) {\n    case 'range':\n      ret = time >= min && time <= max\n      break\n    case 'start':\n      ret = time === min\n      break\n    case 'end':\n      ret = time === max\n      break\n  }\n  return ret\n}\n"],"names":[],"mappings":"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"}