{"version":3,"file":"useSelectRange.mjs","sources":["../../../../components/date-picker/hooks/useSelectRange.ts"],"sourcesContent":["import { computed, type Ref } from 'vue';\nimport { isArray, isFunction } from 'lodash-es';\nimport {\n  computePaginationDisabled,\n  decadeHasAnyAllowed,\n  getRangeBounds,\n  monthHasAnyAllowed,\n  yearHasAnyAllowed,\n} from '@tdesign/common-js/date-picker/utils';\n\nimport type { TdDatePickerProps } from '../type';\n\nexport function useSelectRange(props: {\n  range: TdDatePickerProps['range'];\n  mode: TdDatePickerProps['mode'];\n  year: Ref<number>;\n  month?: Ref<number | undefined>;\n}) {\n  const rangeBounds = computed(() => getRangeBounds(props.range));\n\n  const monthAllowed = (year: number, month: number): boolean => monthHasAnyAllowed(props.range, year, month);\n  const yearAllowed = (year: number): boolean => yearHasAnyAllowed(props.range, year);\n  const decadeAllowed = (decadeEndYear: number): boolean => decadeHasAnyAllowed(props.range, decadeEndYear);\n\n  const paginationDisabled = computed(() =>\n    computePaginationDisabled(props.range, props.mode as any, props.year.value, props.month?.value),\n  );\n\n  const canLoadMoreTop = (firstValue: number): boolean => {\n    const { min } = rangeBounds.value;\n\n    if (isArray(props.range)) {\n      if (!min) return true;\n      const minYear = min.getFullYear();\n      if (props.mode === 'year') {\n        const minDecadeEnd = Math.floor(minYear / 10) * 10 + 9;\n        return firstValue > minDecadeEnd;\n      }\n      return firstValue > minYear;\n    }\n\n    if (isFunction(props.range)) {\n      if (props.mode === 'year') {\n        for (let i = firstValue - 10; i >= firstValue - 50; i -= 10) {\n          if (decadeAllowed(i)) return true;\n        }\n        return false;\n      }\n      for (let i = firstValue - 1; i > firstValue - 10; i--) {\n        if (yearAllowed(i)) return true;\n      }\n      return false;\n    }\n\n    return true;\n  };\n\n  const canLoadMoreBottom = (lastValue: number): boolean => {\n    const { max } = rangeBounds.value;\n\n    if (isArray(props.range)) {\n      if (!max) return true;\n      const maxYear = max.getFullYear();\n      if (props.mode === 'year') {\n        const maxDecadeEnd = Math.floor(maxYear / 10) * 10 + 9;\n        return lastValue < maxDecadeEnd;\n      }\n      return lastValue < maxYear;\n    }\n\n    if (isFunction(props.range)) {\n      if (props.mode === 'year') {\n        for (let i = lastValue + 10; i <= lastValue + 50; i += 10) {\n          if (decadeAllowed(i)) return true;\n        }\n        return false;\n      }\n      for (let i = lastValue + 1; i <= lastValue + 10; i++) {\n        if (yearAllowed(i)) return true;\n      }\n      return false;\n    }\n\n    return true;\n  };\n\n  return {\n    rangeBounds,\n    monthHasAnyAllowed: monthAllowed,\n    yearHasAnyAllowed: yearAllowed,\n    decadeHasAnyAllowed: decadeAllowed,\n    paginationDisabled,\n    canLoadMoreTop,\n    canLoadMoreBottom,\n  };\n}\n"],"names":["useSelectRange","props","rangeBounds","computed","getRangeBounds","range","monthAllowed","year","month","monthHasAnyAllowed","yearAllowed","yearHasAnyAllowed","decadeAllowed","decadeEndYear","decadeHasAnyAllowed","paginationDisabled","_props$month","computePaginationDisabled","mode","value","canLoadMoreTop","firstValue","min","isArray","minYear","getFullYear","minDecadeEnd","Math","floor","isFunction","i","canLoadMoreBottom","lastValue","max","maxYear","maxDecadeEnd"],"mappings":"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"}