{"version":3,"file":"useCellClassName.mjs","sources":["../../../../../../../packages/vue-components/vc-picker/src/hooks/useCellClassName.ts"],"sourcesContent":["import type { GenerateConfig } from '../generate';\nimport type { NullableDateType, RangeValue } from '../interface';\nimport { isInRange } from '../utils/dateUtil';\nimport { getValue } from '../utils/miscUtil';\n\nexport default function useCellClassName<DateType>({\n  cellPrefixCls,\n  generateConfig,\n  rangedValue,\n  hoverRangedValue,\n  isInView,\n  isSameCell,\n  offsetCell,\n  today,\n  value,\n}: {\n  cellPrefixCls: string;\n  generateConfig: GenerateConfig<DateType>;\n  isSameCell: (current: NullableDateType<DateType>, target: NullableDateType<DateType>) => boolean;\n  offsetCell: (date: DateType, offset: number) => DateType;\n  isInView: (date: DateType) => boolean;\n  rangedValue?: RangeValue<DateType>;\n  hoverRangedValue?: RangeValue<DateType>;\n  today?: NullableDateType<DateType>;\n  value?: NullableDateType<DateType>;\n}) {\n  function getClassName(currentDate: DateType) {\n    const prevDate = offsetCell(currentDate, -1);\n    const nextDate = offsetCell(currentDate, 1);\n\n    const rangeStart = getValue(rangedValue, 0);\n    const rangeEnd = getValue(rangedValue, 1);\n\n    const hoverStart = getValue(hoverRangedValue, 0);\n    const hoverEnd = getValue(hoverRangedValue, 1);\n\n    const isRangeHovered = isInRange(generateConfig, hoverStart, hoverEnd, currentDate);\n\n    function isRangeStart(date: DateType) {\n      return isSameCell(rangeStart, date);\n    }\n    function isRangeEnd(date: DateType) {\n      return isSameCell(rangeEnd, date);\n    }\n    const isHoverStart = isSameCell(hoverStart, currentDate);\n    const isHoverEnd = isSameCell(hoverEnd, currentDate);\n\n    const isHoverEdgeStart\n      = (isRangeHovered || isHoverEnd) && (!isInView(prevDate) || isRangeEnd(prevDate));\n    const isHoverEdgeEnd\n      = (isRangeHovered || isHoverStart) && (!isInView(nextDate) || isRangeStart(nextDate));\n\n    return {\n      // In view\n      [`${cellPrefixCls}-in-view`]: isInView(currentDate),\n\n      // Range\n      [`${cellPrefixCls}-in-range`]: isInRange<DateType>(\n        generateConfig,\n        rangeStart,\n        rangeEnd,\n        currentDate,\n      ),\n      [`${cellPrefixCls}-range-start`]: isRangeStart(currentDate),\n      [`${cellPrefixCls}-range-end`]: isRangeEnd(currentDate),\n      [`${cellPrefixCls}-range-start-single`]: isRangeStart(currentDate) && !rangeEnd,\n      [`${cellPrefixCls}-range-end-single`]: isRangeEnd(currentDate) && !rangeStart,\n      [`${cellPrefixCls}-range-start-near-hover`]:\n        isRangeStart(currentDate)\n        && (isSameCell(prevDate, hoverStart)\n          || isInRange(generateConfig, hoverStart, hoverEnd, prevDate)),\n      [`${cellPrefixCls}-range-end-near-hover`]:\n        isRangeEnd(currentDate)\n        && (isSameCell(nextDate, hoverEnd)\n          || isInRange(generateConfig, hoverStart, hoverEnd, nextDate)),\n\n      // Range Hover\n      [`${cellPrefixCls}-range-hover`]: isRangeHovered,\n      [`${cellPrefixCls}-range-hover-start`]: isHoverStart,\n      [`${cellPrefixCls}-range-hover-end`]: isHoverEnd,\n\n      // Range Edge\n      [`${cellPrefixCls}-range-hover-edge-start`]: isHoverEdgeStart,\n      [`${cellPrefixCls}-range-hover-edge-end`]: isHoverEdgeEnd,\n      [`${cellPrefixCls}-range-hover-edge-start-near-range`]:\n        isHoverEdgeStart && isSameCell(prevDate, rangeEnd),\n      [`${cellPrefixCls}-range-hover-edge-end-near-range`]:\n        isHoverEdgeEnd && isSameCell(nextDate, rangeStart),\n\n      // Others\n      [`${cellPrefixCls}-today`]: isSameCell(today, currentDate),\n      [`${cellPrefixCls}-selected`]: isSameCell(value, currentDate),\n    };\n  }\n\n  return getClassName;\n}\n"],"names":[],"mappings":"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"}