{"version":3,"file":"index.mjs","sources":["../../../../components/calendar/utils/index.ts"],"sourcesContent":["import dayjs from 'dayjs';\n\nimport { TdCalendarProps, CalendarCell } from '../type';\nimport { CalendarState } from '../types';\n\n// 组件的一些常量\nimport { FIRST_MONTH_OF_YEAR, LAST_MONTH_OF_YEAR, DAY_CN_MAP } from '../constants';\n\n/**\n * 获取一个日期是周几（1~7）\n */\nexport const getDay = (dt: Date): number => {\n  let day = dayjs(dt).day();\n  if (day === 0) {\n    day = 7;\n  }\n  return day;\n};\n\n/**\n * 获取星期的中文\n * @param num 星期（1~7）\n */\nexport const getDayCn = (num: number): string => {\n  let re = '';\n  const numStr = num.toString();\n  if (numStr in DAY_CN_MAP) {\n    re = DAY_CN_MAP[numStr];\n  }\n  return re;\n};\n\n/**\n * 获取一个日期在日历上的列下标\n * @param firstDayOfWeek 周起始日（1~7）\n * @param dt\n */\nexport const getCellColIndex = (firstDayOfWeek: number, dt: Date): number => {\n  let re = 0;\n  const day = getDay(dt);\n  if (day >= firstDayOfWeek) {\n    re = day - firstDayOfWeek;\n  } else {\n    re = 7 - firstDayOfWeek + day;\n  }\n  return re;\n};\n/**\n * 返回日期+天数（天数可以负数）\n */\nexport const addDate = (dt: Date, days: number) => {\n  const d = new Date(dt);\n  d.setDate(d.getDate() + days);\n  return d;\n};\n\n/**\n * 创建月历单元格数据\n */\nexport const createYearCellsData = (props: TdCalendarProps, state: CalendarState): CalendarCell[] => {\n  const { curSelectedYear: year, curDate, curDateList } = state;\n  const { format, multiple } = props;\n\n  const monthsArr: CalendarCell[] = [];\n  for (let num = FIRST_MONTH_OF_YEAR; num <= LAST_MONTH_OF_YEAR; num++) {\n    const date = new Date(year, num - 1);\n    const isCurrent = multiple\n      ? !!curDateList.find((item) => item.year() === year && parseInt(item.format('M'), 10) === num)\n      : curDate.year() === year && parseInt(curDate.format('M'), 10) === num;\n    monthsArr.push({\n      mode: 'year',\n      isCurrent,\n      date,\n      formattedDate: dayjs(date).format(format),\n      filterDate: null,\n      formattedFilterDate: null,\n      isShowWeekend: true,\n    });\n  }\n\n  return monthsArr;\n};\n\n/**\n * 创建日历单元格数据\n */\nexport const createMonthCellsData = (props: TdCalendarProps, state: CalendarState): CalendarCell[][] => {\n  const {\n    curSelectedYear: year,\n    curSelectedMonth: month,\n    realFirstDayOfWeek: firstDayOfWeek,\n    curDate,\n    curDateList,\n  } = state;\n  const { format, multiple } = props;\n\n  const daysArr: CalendarCell[][] = [];\n  // 当前月份的开始日期\n  const begin: Date = dayjs(`${year}-${month}`).startOf('month').toDate();\n  // 当前月份的结束日期\n  const end: Date = dayjs(dayjs(`${year}-${month}`).endOf('month').format('YYYY-MM-DD')).toDate();\n  const days = end.getDate();\n\n  const beginDateColIndex = getCellColIndex(firstDayOfWeek, begin);\n  let arr = [];\n  let num = 1;\n\n  const createCellData = (belongTo: number, isCurrent: boolean, date: Date, weekOrder: number): CalendarCell => {\n    const day = getDay(date);\n    return {\n      mode: 'month',\n      belongTo,\n      isCurrent,\n      day,\n      weekOrder,\n      date,\n      formattedDate: dayjs(date).format(format),\n      filterDate: null,\n      formattedFilterDate: null,\n      isShowWeekend: true,\n    };\n  };\n\n  const judgeIsCurrent = (date: Date) => {\n    const isCurrent = multiple ? !!curDateList.find((item) => item.isSame(dayjs(date))) : curDate.isSame(dayjs(date));\n    return isCurrent;\n  };\n\n  // 添加上个月中和当前月第一天同一周的日期\n  for (let i = 0; i < beginDateColIndex; i++) {\n    const date = addDate(begin, i - beginDateColIndex);\n    arr.push(createCellData(-1, false, date, num));\n    if (arr.length === 7) {\n      daysArr.push(arr);\n      arr = [];\n      num += 1;\n    }\n  }\n  for (let i = 0; i < days; i++) {\n    const date = addDate(begin, i);\n    const isCurrent = judgeIsCurrent(date);\n    arr.push(createCellData(0, isCurrent, date, num));\n    if (arr.length === 7) {\n      daysArr.push(arr);\n      arr = [];\n      num += 1;\n    }\n  }\n  // 添加下个月中和当前月最后同一周的日期\n  if (arr.length) {\n    const nextMonthCellNum = 7 - arr.length;\n    for (let i = 0; i < nextMonthCellNum; i++) {\n      const date = addDate(end, i + 1);\n      arr.push(createCellData(1, false, date, num));\n    }\n    daysArr.push(arr);\n  }\n\n  return daysArr;\n};\n\n/**\n * 根据当前时间创建一个默认日期\n * @returns 当前日期都dayjs对象\n */\nexport const createDefaultCurDate = (): dayjs.Dayjs => dayjs(dayjs().format('YYYY-MM-DD'));\n"],"names":["getDay","dt","day","dayjs","getDayCn","num","re","numStr","toString","DAY_CN_MAP","getCellColIndex","firstDayOfWeek","addDate","days","d","Date","setDate","getDate","createYearCellsData","props","state","year","curSelectedYear","curDate","curDateList","format","multiple","monthsArr","_loop","date","isCurrent","find","item","parseInt","push","mode","formattedDate","filterDate","formattedFilterDate","isShowWeekend","FIRST_MONTH_OF_YEAR","LAST_MONTH_OF_YEAR","createMonthCellsData","month","curSelectedMonth","realFirstDayOfWeek","daysArr","begin","concat","startOf","toDate","end","endOf","beginDateColIndex","arr","createCellData","belongTo","weekOrder","judgeIsCurrent","isSame","i","length","nextMonthCellNum","createDefaultCurDate"],"mappings":"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"}