{"version":3,"file":"utils.mjs","sources":["../../../../../packages/components/date-picker/src/utils.ts"],"sourcesContent":["import dayjs from 'dayjs'\nimport { isArray } from '@element-ultra/utils'\n\nimport type { Dayjs } from 'dayjs'\nimport type { DateCell } from './date-picker.type'\n\ntype DayRange = [Dayjs | undefined, Dayjs | undefined]\n\nexport const isValidRange = (range: DayRange): boolean => {\n  if (!isArray(range)) return false\n\n  const [left, right] = range\n\n  return (\n    dayjs.isDayjs(left) && dayjs.isDayjs(right) && left.isSameOrBefore(right)\n  )\n}\n\ntype GetDefaultValueParams = {\n  lang: string\n  unit: 'month' | 'year'\n  unlinkPanels: boolean\n}\n\nexport type DefaultValue = [Date, Date] | Date | undefined\n\nexport const getDefaultValue = (\n  defaultValue: DefaultValue,\n  { lang, unit, unlinkPanels }: GetDefaultValueParams\n) => {\n  let start: Dayjs\n\n  if (isArray(defaultValue)) {\n    let [left, right] = defaultValue.map((d) => dayjs(d).locale(lang))\n    if (!unlinkPanels) {\n      right = left.add(1, unit)\n    }\n    return [left, right]\n  } else if (defaultValue) {\n    start = dayjs(defaultValue)\n  } else {\n    start = dayjs()\n  }\n  start = start.locale(lang)\n  return [start, start.add(1, unit)]\n}\n\ntype Dimension = {\n  row: number\n  column: number\n}\n\ntype BuildPickerTableMetadata = {\n  startDate?: Dayjs | null\n  unit: 'month' | 'day'\n  columnIndexOffset: number\n  now: Dayjs\n  nextEndDate: Dayjs | null\n  relativeDateGetter: (index: number) => Dayjs\n  setCellMetadata?: (\n    cell: DateCell,\n    dimension: { rowIndex: number; columnIndex: number }\n  ) => void\n  setRowMetadata?: (row: DateCell[]) => void\n}\n\nexport const buildPickerTable = (\n  dimension: Dimension,\n  rows: DateCell[][],\n  {\n    columnIndexOffset,\n    startDate,\n    nextEndDate,\n    now,\n    unit,\n    relativeDateGetter,\n    setCellMetadata,\n    setRowMetadata,\n  }: BuildPickerTableMetadata\n) => {\n  for (let rowIndex = 0; rowIndex < dimension.row; rowIndex++) {\n    const row = rows[rowIndex]\n    for (let columnIndex = 0; columnIndex < dimension.column; columnIndex++) {\n      let cell = row[columnIndex + columnIndexOffset]\n      if (!cell) {\n        cell = {\n          row: rowIndex,\n          column: columnIndex,\n          type: 'normal',\n          inRange: false,\n          start: false,\n          end: false,\n        }\n      }\n      const index = rowIndex * dimension.column + columnIndex\n      const nextStartDate = relativeDateGetter(index)\n      cell.dayjs = nextStartDate\n      cell.date = nextStartDate.toDate()\n      cell.timestamp = nextStartDate.valueOf()\n      cell.type = 'normal'\n\n      cell.inRange =\n        !!(\n          startDate &&\n          nextStartDate.isSameOrAfter(startDate, unit) &&\n          nextEndDate &&\n          nextStartDate.isSameOrBefore(nextEndDate, unit)\n        ) ||\n        !!(\n          startDate &&\n          nextStartDate.isSameOrBefore(startDate, unit) &&\n          nextEndDate &&\n          nextStartDate.isSameOrAfter(nextEndDate, unit)\n        )\n\n      if (startDate?.isSameOrAfter(nextEndDate)) {\n        cell.start = !!nextEndDate && nextStartDate.isSame(nextEndDate, unit)\n        cell.end = startDate && nextStartDate.isSame(startDate, unit)\n      } else {\n        cell.start = !!startDate && nextStartDate.isSame(startDate, unit)\n        cell.end = !!nextEndDate && nextStartDate.isSame(nextEndDate, unit)\n      }\n\n      const isToday = nextStartDate.isSame(now, unit)\n\n      if (isToday) {\n        cell.type = 'today'\n      }\n      setCellMetadata?.(cell, { rowIndex, columnIndex })\n      row[columnIndex + columnIndexOffset] = cell\n    }\n    setRowMetadata?.(row)\n  }\n}\n"],"names":[],"mappings":"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"}