{"version":3,"file":"useTableData.mjs","sources":["../../../../components/date-picker/hooks/useTableData.tsx"],"sourcesContent":["import { useConfig } from '@tdesign/shared-hooks';\nimport { isArray, isFunction } from 'lodash-es';\nimport dayjs from 'dayjs';\nimport {\n  getWeeks,\n  getYears,\n  getMonths,\n  getQuarters,\n  flagActive,\n  getRangeBounds,\n  monthHasAnyAllowed as monthAllowed,\n  yearHasAnyAllowed as yearAllowed,\n} from '@tdesign/common-js/date-picker/utils';\n\nexport function useTableData(props: any) {\n  // 国际化文本初始化\n  const { globalConfig } = useConfig('datePicker');\n\n  const options = {\n    minDate: props.minDate,\n    maxDate: props.maxDate,\n    disableDate: props.disableDate,\n    firstDayOfWeek: props.firstDayOfWeek ?? globalConfig.value.firstDayOfWeek,\n    monthLocal: globalConfig.value.months as string[],\n    quarterLocal: globalConfig.value.quarters as string[],\n    showWeekOfYear: props.mode === 'week',\n    dayjsLocale: globalConfig.value.dayjsLocale,\n    cancelRangeSelectLimit: props.cancelRangeSelectLimit,\n  };\n\n  // 结合 range 进行禁用与边界设置\n  const baseDisableDate = options.disableDate as (d: Date) => boolean | undefined;\n  let finalDisableDate: (d: Date) => boolean = (date: Date) => (baseDisableDate ? !!baseDisableDate(date) : false);\n\n  if (isArray(props.range)) {\n    const { min: rawMin, max: rawMax } = getRangeBounds(props.range);\n    const rangeMin = rawMin ? new Date(dayjs(rawMin).startOf('day').format()) : null;\n    const rangeMax = rawMax ? new Date(dayjs(rawMax).endOf('day').format()) : null;\n    const min = rangeMin;\n    const max = rangeMax;\n\n    // 与原有 min/maxDate 求交集（仅在 date/week 模式下使用，以免 year/month/quarter 被过度限制）\n    if (['date', 'week'].includes(props.mode)) {\n      if (min) {\n        options.minDate = options.minDate ? new Date(Math.max(options.minDate.getTime(), min.getTime())) : min;\n      }\n      if (max) {\n        options.maxDate = options.maxDate ? new Date(Math.min(options.maxDate.getTime(), max.getTime())) : max;\n      }\n    }\n\n    // 额外通过函数层面确保越界禁用（防御性）\n    const intervalOverlap = (aStart: Date, aEnd: Date, bStart: Date | null, bEnd: Date | null) => {\n      const s1 = aStart.getTime();\n      const e1 = aEnd.getTime();\n      const s2 = bStart ? bStart.getTime() : -Infinity;\n      const e2 = bEnd ? bEnd.getTime() : +Infinity;\n      return !(e1 < s2 || s1 > e2);\n    };\n\n    finalDisableDate = (date: Date) => {\n      const base = baseDisableDate ? !!baseDisableDate(date) : false;\n\n      if (props.mode === 'date' || props.mode === 'week') {\n        const t = date.getTime();\n        const aboveMin = min ? t >= min.getTime() : true;\n        const belowMax = max ? t <= max.getTime() : true;\n        const allowed = aboveMin && belowMax;\n        return base || !allowed;\n      }\n\n      if (props.mode === 'month') {\n        const start = new Date(date.getFullYear(), date.getMonth(), 1);\n        const end = new Date(date.getFullYear(), date.getMonth() + 1, 0);\n        end.setHours(23, 59, 59, 999);\n        const allowed = intervalOverlap(start, end, min, max);\n        return base || !allowed;\n      }\n\n      if (props.mode === 'quarter') {\n        const startMonth = Math.floor(date.getMonth() / 3) * 3;\n        const start = new Date(date.getFullYear(), startMonth, 1);\n        const end = new Date(date.getFullYear(), startMonth + 3, 0);\n        end.setHours(23, 59, 59, 999);\n        const allowed = intervalOverlap(start, end, min, max);\n        return base || !allowed;\n      }\n\n      if (props.mode === 'year') {\n        const start = new Date(date.getFullYear(), 0, 1);\n        const end = new Date(date.getFullYear(), 11, 31);\n        end.setHours(23, 59, 59, 999);\n        const allowed = intervalOverlap(start, end, min, max);\n        return base || !allowed;\n      }\n\n      return base;\n    };\n  } else if (isFunction(props.range)) {\n    const allow = props.range as (d: Date) => boolean;\n    finalDisableDate = (date: Date) => {\n      const base = baseDisableDate ? !!baseDisableDate(date) : false;\n\n      if (props.mode === 'date' || props.mode === 'week') {\n        const disallowedByRange = !allow(date);\n        return base || disallowedByRange;\n      }\n\n      if (props.mode === 'month') {\n        const allowed = monthAllowed(props.range, date.getFullYear(), date.getMonth());\n        return base || !allowed;\n      }\n\n      if (props.mode === 'quarter') {\n        const startMonth = Math.floor(date.getMonth() / 3) * 3;\n        let allowed = false;\n        for (let m = startMonth; m < startMonth + 3; m++) {\n          if (monthAllowed(props.range, date.getFullYear(), m)) {\n            allowed = true;\n            break;\n          }\n        }\n        return base || !allowed;\n      }\n\n      if (props.mode === 'year') {\n        const allowed = yearAllowed(props.range, date.getFullYear());\n        return base || !allowed;\n      }\n\n      return base;\n    };\n  }\n\n  options.disableDate = finalDisableDate;\n\n  let data: Array<any> = [];\n  if (props.mode === 'date') {\n    data = getWeeks({ year: props.year, month: props.month }, options);\n  } else if (props.mode === 'week') {\n    data = getWeeks({ year: props.year, month: props.month }, options);\n  } else if (props.mode === 'quarter') {\n    data = getQuarters(props.year, options);\n  } else if (props.mode === 'month') {\n    data = getMonths(props.year, options);\n  } else if (props.mode === 'year') {\n    data = getYears(props.year, options);\n  }\n  return flagActive(data, {\n    start: props.start,\n    end: props.end,\n    hoverStart: props.hoverStart,\n    hoverEnd: props.hoverEnd,\n    type: props.mode,\n    isRange: props.isRange,\n    value: props.value,\n    multiple: props.multiple,\n  });\n}\n"],"names":["useTableData","props","_props$firstDayOfWeek","_useConfig","useConfig","globalConfig","options","minDate","maxDate","disableDate","firstDayOfWeek","value","monthLocal","months","quarterLocal","quarters","showWeekOfYear","mode","dayjsLocale","cancelRangeSelectLimit","baseDisableDate","finalDisableDate","date","isArray","range","_getRangeBounds","getRangeBounds","rawMin","min","rawMax","max","rangeMin","Date","dayjs","startOf","format","rangeMax","endOf","includes","Math","getTime","intervalOverlap","aStart","aEnd","bStart","bEnd","s1","e1","s2","Infinity","e2","base","t","aboveMin","belowMax","allowed","start","getFullYear","getMonth","end","setHours","startMonth","floor","isFunction","allow","disallowedByRange","monthAllowed","m","yearAllowed","data","getWeeks","year","month","getQuarters","getMonths","getYears","flagActive","hoverStart","hoverEnd","type","isRange","multiple"],"mappings":"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"}