{"version":3,"file":"DateBody.mjs","sources":["../../../../../../../../packages/vue-components/vc-picker/src/panels/DatePanel/DateBody.tsx"],"sourcesContent":["import type { VueNode } from '@antdv/types';\nimport type { GenerateConfig } from '../../generate';\nimport type { Locale } from '../../interface';\nimport useCellClassName from '../../hooks/useCellClassName';\nimport useMergeProps from '../../hooks/useMergeProps';\nimport { useInjectRange } from '../../RangeContext';\nimport { formatValue, getWeekStartDate, isSameDate, isSameMonth, WEEK_DAY_COUNT } from '../../utils/dateUtil';\nimport PanelBody from '../PanelBody';\n\nexport type DateRender<DateType> = (props: { current: DateType; today: DateType }) => VueNode;\n\nexport interface DateBodyPassProps<DateType> {\n  dateRender?: DateRender<DateType>;\n  disabledDate?: (date: DateType) => boolean;\n\n  // Used for week panel\n  prefixColumn?: (date: DateType) => VueNode;\n  rowClassName?: (date: DateType) => string;\n}\n\nexport type DateBodyProps<DateType> = {\n  prefixCls: string;\n  generateConfig: GenerateConfig<DateType>;\n  value?: DateType | null;\n  viewDate: DateType;\n  locale: Locale;\n  rowCount: number;\n  onSelect: (value: DateType) => void;\n} & DateBodyPassProps<DateType>;\n\nfunction DateBody<DateType>(_props: DateBodyProps<DateType>) {\n  const props = useMergeProps(_props);\n  const { prefixCls, generateConfig, prefixColumn, locale, rowCount, viewDate, value, dateRender }\n    = props;\n\n  const { rangedValue, hoverRangedValue } = useInjectRange();\n\n  const baseDate = getWeekStartDate(locale.locale, generateConfig, viewDate);\n  const cellPrefixCls = `${prefixCls}-cell`;\n  const weekFirstDay = generateConfig.locale.getWeekFirstDay(locale.locale);\n  const today = generateConfig.getNow();\n\n  // ============================== Header ==============================\n  const headerCells: VueNode[] = [];\n  const weekDaysLocale: string[]\n    = locale.shortWeekDays\n    || (generateConfig.locale.getShortWeekDays\n      ? generateConfig.locale.getShortWeekDays(locale.locale)\n      : []);\n\n  if (prefixColumn)\n    headerCells.push(<th key=\"empty\" aria-label=\"empty cell\" />);\n\n  for (let i = 0; i < WEEK_DAY_COUNT; i += 1)\n    headerCells.push(<th key={i}>{weekDaysLocale[(i + weekFirstDay) % WEEK_DAY_COUNT]}</th>);\n\n  // =============================== Body ===============================\n  const getCellClassName = useCellClassName({\n    cellPrefixCls,\n    today,\n    value,\n    generateConfig,\n    rangedValue: prefixColumn ? null : rangedValue.value,\n    hoverRangedValue: prefixColumn ? null : hoverRangedValue.value,\n    isSameCell: (current, target) => isSameDate(generateConfig, current, target),\n    isInView: date => isSameMonth(generateConfig, date, viewDate),\n    offsetCell: (date, offset) => generateConfig.addDate(date, offset),\n  });\n\n  const getCellNode = dateRender\n    ? (date: DateType) => dateRender({ current: date, today })\n    : undefined;\n\n  return (\n    <PanelBody\n      {...props}\n      rowNum={rowCount}\n      colNum={WEEK_DAY_COUNT}\n      baseDate={baseDate}\n      getCellNode={getCellNode}\n      getCellText={generateConfig.getDate}\n      getCellClassName={getCellClassName}\n      getCellDate={generateConfig.addDate}\n      titleCell={date =>\n        formatValue(date, {\n          locale,\n          format: 'YYYY-MM-DD',\n          generateConfig,\n        })}\n      headerCells={headerCells}\n    />\n  );\n}\n\nDateBody.displayName = 'DateBody';\nDateBody.inheritAttrs = false;\nDateBody.props = [\n  'prefixCls',\n  'generateConfig',\n  'value?',\n  'viewDate',\n  'locale',\n  'rowCount',\n  'onSelect',\n  'dateRender?',\n  'disabledDate?',\n  // Used for week panel\n  'prefixColumn?',\n  'rowClassName?',\n];\nexport default DateBody;\n"],"names":["DateBody","_props","props","useMergeProps","prefixCls","generateConfig","prefixColumn","locale","rowCount","viewDate","value","dateRender","rangedValue","hoverRangedValue","useInjectRange","baseDate","getWeekStartDate","cellPrefixCls","weekFirstDay","getWeekFirstDay","today","getNow","headerCells","weekDaysLocale","shortWeekDays","getShortWeekDays","push","_createVNode","i","WEEK_DAY_COUNT","getCellClassName","useCellClassName","isSameCell","current","target","isSameDate","isInView","date","isSameMonth","offsetCell","offset","addDate","getCellNode","undefined","PanelBody","getDate","formatValue","format","displayName","inheritAttrs"],"mappings":"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"}