{"version":3,"file":"YearBody.mjs","sources":["../../../../../../../../packages/vue-components/vc-picker/src/panels/YearPanel/YearBody.tsx"],"sourcesContent":["import type { GenerateConfig } from '../../generate';\nimport type { Locale, NullableDateType } from '../../interface';\nimport useCellClassName from '../../hooks/useCellClassName';\nimport useMergeProps from '../../hooks/useMergeProps';\nimport { useInjectRange } from '../../RangeContext';\nimport { formatValue, isSameYear } from '../../utils/dateUtil';\nimport PanelBody from '../PanelBody';\nimport { YEAR_DECADE_COUNT } from './constant';\n\nexport const YEAR_COL_COUNT = 3;\nconst YEAR_ROW_COUNT = 4;\n\nexport interface YearBodyProps<DateType> {\n  prefixCls: string;\n  locale: Locale;\n  generateConfig: GenerateConfig<DateType>;\n  value?: NullableDateType<DateType>;\n  viewDate: DateType;\n  disabledDate?: (date: DateType) => boolean;\n  onSelect: (value: DateType) => void;\n}\n\nfunction YearBody<DateType>(_props: YearBodyProps<DateType>) {\n  const props = useMergeProps(_props);\n  const { prefixCls, value, viewDate, locale, generateConfig } = props;\n  const { rangedValue, hoverRangedValue } = useInjectRange();\n\n  const yearPrefixCls = `${prefixCls}-cell`;\n\n  // =============================== Year ===============================\n  const yearNumber = generateConfig.getYear(viewDate);\n  const startYear = Math.floor(yearNumber / YEAR_DECADE_COUNT) * YEAR_DECADE_COUNT;\n  const endYear = startYear + YEAR_DECADE_COUNT - 1;\n  const baseYear = generateConfig.setYear(\n    viewDate,\n    startYear - Math.ceil((YEAR_COL_COUNT * YEAR_ROW_COUNT - YEAR_DECADE_COUNT) / 2),\n  );\n\n  const isInView = (date: DateType) => {\n    const currentYearNumber = generateConfig.getYear(date);\n    return startYear <= currentYearNumber && currentYearNumber <= endYear;\n  };\n\n  const getCellClassName = useCellClassName<DateType>({\n    cellPrefixCls: yearPrefixCls,\n    value,\n    generateConfig,\n    rangedValue: rangedValue.value,\n    hoverRangedValue: hoverRangedValue.value,\n    isSameCell: (current, target) => isSameYear(generateConfig, current, target),\n    isInView,\n    offsetCell: (date, offset) => generateConfig.addYear(date, offset),\n  });\n\n  return (\n    <PanelBody\n      {...props}\n      rowNum={YEAR_ROW_COUNT}\n      colNum={YEAR_COL_COUNT}\n      baseDate={baseYear}\n      getCellText={generateConfig.getYear}\n      getCellClassName={getCellClassName}\n      getCellDate={generateConfig.addYear}\n      titleCell={date =>\n        formatValue(date, {\n          locale,\n          format: 'YYYY',\n          generateConfig,\n        })}\n    />\n  );\n}\n\nYearBody.displayName = 'YearBody';\nYearBody.inheritAttrs = false;\n\nexport default YearBody;\n"],"names":["YEAR_COL_COUNT","YEAR_ROW_COUNT","YearBody","_props","props","useMergeProps","prefixCls","value","viewDate","locale","generateConfig","rangedValue","hoverRangedValue","useInjectRange","yearPrefixCls","yearNumber","getYear","startYear","Math","floor","YEAR_DECADE_COUNT","endYear","baseYear","setYear","ceil","isInView","date","currentYearNumber","getCellClassName","useCellClassName","cellPrefixCls","isSameCell","current","target","isSameYear","offsetCell","offset","addYear","_createVNode","PanelBody","formatValue","format","displayName","inheritAttrs"],"mappings":";;;;;;;;AASO,MAAMA,cAAiB,GAAA,EAAA;AAC9B,MAAMC,cAAiB,GAAA,CAAA,CAAA;AAYvB,SAASC,SAAmBC,MAAiC,EAAA;AAC3D,EAAMC,MAAAA,KAAAA,GAAQC,cAAcF,MAAM,CAAA,CAAA;AAClC,EAAM,MAAA;AAAA,IAAEG,SAAAA;AAAAA,IAAWC,KAAAA;AAAAA,IAAOC,QAAAA;AAAAA,IAAUC,MAAAA;AAAAA,IAAQC,cAAAA;AAAAA,GAAmBN,GAAAA,KAAAA,CAAAA;AAC/D,EAAM,MAAA;AAAA,IAAEO,WAAAA;AAAAA,IAAaC,gBAAAA;AAAAA,MAAqBC,cAAe,EAAA,CAAA;AAEzD,EAAMC,MAAAA,aAAAA,GAAiB,GAAER,SAAU,CAAA,KAAA,CAAA,CAAA;AAGnC,EAAMS,MAAAA,UAAAA,GAAaL,cAAeM,CAAAA,OAAAA,CAAQR,QAAQ,CAAA,CAAA;AAClD,EAAA,MAAMS,SAAYC,GAAAA,IAAAA,CAAKC,KAAMJ,CAAAA,UAAAA,GAAaK,iBAAiB,CAAIA,GAAAA,iBAAAA,CAAAA;AAC/D,EAAMC,MAAAA,OAAAA,GAAUJ,YAAYG,iBAAoB,GAAA,CAAA,CAAA;AAChD,EAAME,MAAAA,QAAAA,GAAWZ,cAAea,CAAAA,OAAAA,CAC9Bf,QACAS,EAAAA,SAAAA,GAAYC,IAAKM,CAAAA,IAAAA,CAAAA,CAAMxB,cAAiBC,GAAAA,cAAAA,GAAiBmB,iBAAqB,IAAA,CAAC,CACjF,CAAA,CAAA;AAEA,EAAA,MAAMK,WAAYC,CAAmB,IAAA,KAAA;AACnC,IAAMC,MAAAA,iBAAAA,GAAoBjB,cAAeM,CAAAA,OAAAA,CAAQU,IAAI,CAAA,CAAA;AACrD,IAAOT,OAAAA,SAAAA,IAAaU,qBAAqBA,iBAAqBN,IAAAA,OAAAA,CAAAA;AAAAA,GAChE,CAAA;AAEA,EAAA,MAAMO,mBAAmBC,gBAA2B,CAAA;AAAA,IAClDC,aAAehB,EAAAA,aAAAA;AAAAA,IACfP,KAAAA;AAAAA,IACAG,cAAAA;AAAAA,IACAC,aAAaA,WAAYJ,CAAAA,KAAAA;AAAAA,IACzBK,kBAAkBA,gBAAiBL,CAAAA,KAAAA;AAAAA,IACnCwB,YAAYA,CAACC,OAAAA,EAASC,WAAWC,UAAWxB,CAAAA,cAAAA,EAAgBsB,SAASC,MAAM,CAAA;AAAA,IAC3ER,QAAAA;AAAAA,IACAU,YAAYA,CAACT,IAAAA,EAAMU,WAAW1B,cAAe2B,CAAAA,OAAAA,CAAQX,MAAMU,MAAM,CAAA;AAAA,GAClE,CAAA,CAAA;AAED,EAAA,OAAAE,YAAAC,SAAA,EAAA;AAAA,IAAA,GAEQnC,KAAAA;AAAAA,IAAK,QACDH,EAAAA,cAAAA;AAAAA,IAAc,QACdD,EAAAA,cAAAA;AAAAA,IAAc,UACZsB,EAAAA,QAAAA;AAAAA,IAAQ,eACLZ,cAAeM,CAAAA,OAAAA;AAAAA,IAAO,kBACjBY,EAAAA,gBAAAA;AAAAA,IAAgB,eACrBlB,cAAe2B,CAAAA,OAAAA;AAAAA,IAAO,WAAA,EACxBX,CACTc,IAAAA,KAAAA,WAAAA,CAAYd,IAAM,EAAA;AAAA,MAChBjB,MAAAA;AAAAA,MACAgC,MAAQ,EAAA,MAAA;AAAA,MACR/B,cAAAA;AAAAA,KACD,CAAA;AAAA,KAAC,IAAA,CAAA,CAAA;AAGV,CAAA;AAEAR,QAAAA,CAASwC,WAAc,GAAA,UAAA,CAAA;AACvBxC,QAAAA,CAASyC,YAAe,GAAA,KAAA;;;;"}