{"version":3,"file":"use-date-rows.mjs","sources":["../../../../../../../packages/components/date-picker/src/hooks/use-date-rows.ts"],"sourcesContent":["import { computed } from 'vue'\nimport type { Ref } from 'vue'\nimport type { DateCell } from '../types'\nimport { genMatrix } from '../../../../shared/utils'\n\nimport {\n  daysOfMonth,\n  diffOfMonth,\n  firstDateIsWeekOfMonth,\n  genCell,\n  getYMD,\n  isSameDate,\n  dateHasInRange\n} from '../utils'\n\nconst WEEKS = [\n  { label: '日', value: 0 },\n  { label: '一', value: 1 },\n  { label: '二', value: 2 },\n  { label: '三', value: 3 },\n  { label: '四', value: 4 },\n  { label: '五', value: 5 },\n  { label: '六', value: 6 }\n]\n\nexport const useDateRows = ({\n  dayStartOfWeek,\n  date,\n  dateModel,\n  dateRange,\n  disabledDate,\n  dateRangeOfWeek\n}: {\n  dayStartOfWeek: Ref<number>\n  date?: Ref<Date | undefined>\n  dateModel?: Ref<Date[]>\n  dateRange?: Ref<Date[]>\n  disabledDate?: Ref<Function | undefined>\n  dateRangeOfWeek?: Ref<Date[]>\n}) => {\n  const weeks = computed(() => {\n    const weeksCopy = WEEKS.slice()\n    const index = WEEKS.findIndex((week) => week.value === dayStartOfWeek.value)\n    if (~index) {\n      const move = weeksCopy.slice(0, index)\n      const reset = weeksCopy.slice(index)\n      reset.push(...move)\n      return reset\n    }\n\n    return weeksCopy\n  })\n\n  const rows = computed(() => {\n    // 7 * 6\n    const COL = 6\n    const ROW = 7\n    const cells: DateCell[] = new Array(ROW * COL)\n    const days = daysOfMonth(date?.value)\n    const firstDateIsWeek = firstDateIsWeekOfMonth(date?.value)\n    const startIndex = weeks.value.findIndex((week) => week.value === firstDateIsWeek)\n    // 当前\n    const [cur_y, cur_m] = getYMD(date?.value)\n    for (let i = 0; i < days; i++) {\n      const day = i + 1\n      const dateEffect = new Date(cur_y, cur_m, day)\n      cells[startIndex + i] = genCell({\n        label: day,\n        value: day,\n        date: new Date(cur_y, cur_m, day),\n        isCur: true,\n        isNow: isSameDate(new Date(), dateEffect),\n        isRange: dateRange?.value?.length\n          ? dateHasInRange(dateRange!.value, dateEffect, 'range')\n          : false,\n        isSelect: dateModel?.value.some((d) => isSameDate(d, dateEffect)),\n        isRangeStart: dateRange?.value?.length\n          ? dateHasInRange(dateRange!.value, dateEffect, 'start')\n          : false,\n        isRangeEnd: dateRange?.value?.length\n          ? dateHasInRange(dateRange!.value, dateEffect, 'end')\n          : false,\n        isDisabled: disabledDate?.value?.(new Date(dateEffect))\n      })\n    }\n    // 补齐前一个月\n    const prevDate = diffOfMonth(date!.value!, -1)\n    const prevDays = daysOfMonth(prevDate)\n    const [prev_y, prev_m] = getYMD(prevDate)\n    for (let i = 0; i < startIndex; i++) {\n      const day = prevDays - i\n      const dateEffect = new Date(prev_y, prev_m, day)\n      cells[startIndex - i - 1] = genCell({\n        label: day,\n        value: day,\n        date: dateEffect,\n        isPrev: true,\n        isDisabled: disabledDate?.value?.(new Date(dateEffect)),\n        isRange: dateRangeOfWeek?.value?.length\n          ? dateHasInRange(dateRangeOfWeek!.value, dateEffect, 'range')\n          : false,\n        isRangeStart: dateRangeOfWeek?.value?.length\n          ? dateHasInRange(dateRangeOfWeek!.value, dateEffect, 'start')\n          : false,\n        isRangeEnd: dateRangeOfWeek?.value?.length\n          ? dateHasInRange(dateRangeOfWeek!.value, dateEffect, 'end')\n          : false\n      })\n    }\n    // 补齐后一个月\n    const nextDate = diffOfMonth(date!.value!, 1)\n    const [next_y, next_m] = getYMD(nextDate)\n    for (let i = startIndex + days, j = 0; i < ROW * COL; i++) {\n      const day = ++j\n      const dateEffect = new Date(next_y, next_m, day)\n      cells[i] = genCell({\n        label: day,\n        value: day,\n        date: dateEffect,\n        isNext: true,\n        isDisabled: disabledDate?.value?.(new Date(dateEffect)),\n        isRange: dateRangeOfWeek?.value?.length\n          ? dateHasInRange(dateRangeOfWeek!.value, dateEffect, 'range')\n          : false,\n        isRangeStart: dateRangeOfWeek?.value?.length\n          ? dateHasInRange(dateRangeOfWeek!.value, dateEffect, 'start')\n          : false,\n        isRangeEnd: dateRangeOfWeek?.value?.length\n          ? dateHasInRange(dateRangeOfWeek!.value, dateEffect, 'end')\n          : false\n      })\n    }\n\n    return genMatrix(cells, ROW)\n  })\n\n  return {\n    weeks,\n    rows\n  }\n}\n"],"names":[],"mappings":"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"}