{"version":3,"file":"Years.mjs","sources":["../../../../src/components/Datepicker/Views/Years.tsx"],"sourcesContent":["'use client';\n\nimport type { FC } from 'react';\nimport { twMerge } from 'tailwind-merge';\nimport { mergeDeep } from '../../../helpers/merge-deep';\nimport { useDatePickerContext } from '../DatepickerContext';\nimport { Views, isDateEqual, isDateInRange, startOfYearPeriod } from '../helpers';\n\nexport interface FlowbiteDatepickerViewsYearsTheme {\n  items: {\n    base: string;\n    item: {\n      base: string;\n      disabled: string;\n      selected: string;\n    };\n  };\n}\n\nexport interface DatepickerViewsYearsProps {\n  theme?: FlowbiteDatepickerViewsYearsTheme;\n}\n\nexport const DatepickerViewsYears: FC<DatepickerViewsYearsProps> = ({ theme: customTheme = {} }) => {\n  const { theme: rootTheme, selectedDate, minDate, maxDate, viewDate, setViewDate, setView } = useDatePickerContext();\n\n  const theme = mergeDeep(rootTheme.views.years, customTheme);\n\n  return (\n    <div className={theme.items.base}>\n      {[...Array(12)].map((_year, index) => {\n        const first = startOfYearPeriod(viewDate, 10);\n        const year = first - 1 + index * 1;\n        const newDate = new Date(viewDate.getTime());\n        newDate.setFullYear(year);\n\n        const isSelected = isDateEqual(selectedDate, newDate);\n        const isDisabled = !isDateInRange(newDate, minDate, maxDate);\n\n        return (\n          <button\n            disabled={isDisabled}\n            key={index}\n            type=\"button\"\n            className={twMerge(\n              theme.items.item.base,\n              isSelected && theme.items.item.selected,\n              isDisabled && theme.items.item.disabled,\n            )}\n            onClick={() => {\n              if (isDisabled) return;\n\n              setViewDate(newDate);\n              setView(Views.Months);\n            }}\n          >\n            {year}\n          </button>\n        );\n      })}\n    </div>\n  );\n};\n"],"names":["DatepickerViewsYears","t0","$","_c","theme","t1","t2","undefined","customTheme","rootTheme","selectedDate","minDate","maxDate","viewDate","setViewDate","setView","useDatePickerContext","t3","views","years","mergeDeep","jsx","items","base","Array","map","_year","index","year","startOfYearPeriod","newDate","Date","getTime","setFullYear","isSelected","isDateEqual","isDisabled","isDateInRange","twMerge","item","selected","disabled","Views","Months"],"mappings":";;;;;;AAuBO,MAAMA,IAAsDC,CAAAA,MAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA,GAAC;AAAA,IAAAC,OAAAC;AAAAA,EAAAJ,IAAAA;AAA2BK,MAAAA;AAAAJ,EAAAA,SAAAG,KAAlBA,IAAAA,MAAgBE,cAAhBF,GAAgBH,OAAAG,GAAAH,OAAAI,KAAAA,IAAAJ,EAAA,CAAA;AAAhB,QAAAM,IAAAF,GAC3E;AAAA,IAAAF,OAAAK;AAAAA,IAAAC,cAAAA;AAAAA,IAAAC,SAAAA;AAAAA,IAAAC,SAAAA;AAAAA,IAAAC,UAAAA;AAAAA,IAAAC,aAAAA;AAAAA,IAAAC,SAAAA;AAAAA,MAA6FC,EAAqB;AAAEC,MAAAA;AAAA,MAAAf,EAAA,CAAA,MAAAM,KAAAN,EAAAU,CAAAA,MAAAA,KAAAV,SAAAS,KAAAT,EAAA,CAAA,MAAAO,EAAAS,MAAAC,SAAAjB,EAAAQ,CAAAA,MAAAA,KAAAR,EAAA,CAAA,MAAAa,KAAAb,EAAAY,CAAAA,MAAAA,KAAAZ,SAAAW,GAAA;AAEpH,UAAAT,IAAcgB,EAAUX,EAASS,MAAAC,OAAcX,CAAW;AAGxDS,IAAAA,IAAA,gBAAAI,EAAA,OAAA,EAAgB,WAAAjB,EAAKkB,MAAAC,MAClB,UAAA,CAAA,GAAIC,MAAQ,EAAA,CAAC,EAAAC,IAAA,CAAAC,GAAAC,MAAA;AAEZC,YAAAA,IADcC,EAAkBhB,KAAY,IACtB,IAAGc,IAAS,GAClCG,QAAAC,KAAyBlB,EAAQmB,QAAU,CAAA;AAC3CF,MAAAA,EAAOG,YAAaL,CAAI;AAExBM,YAAAA,IAAmBC,EAAYzB,GAAcoB,CAAO,GACpDM,KAAoBC,EAAcP,GAASnB,GAASC,CAAO;AAGzD,aAAA,gBAAAS,EAAA,UACYe,EAAAA,aAEL,MAAA,UACM,WAAAE,EACTlC,EAAKkB,MAAAiB,KAAAhB,MACLW,KAAc9B,EAAKkB,MAAAiB,KAAAC,UACnBJ,KAAchC,EAAKkB,MAAAiB,KAAAE,QACrB,GACS,SAAA,MAAA;AAAA,QACHL,MAEJtB,EAAYgB,CAAO,GACnBf,EAAO2B,EAAAC,MAAa;AAAA,MAAC,GAGtBf,eAdID,CAeP;AAAA,IAEH,CAAA,EACH,CAAA,GAAMzB,OAAAM,GAAAN,OAAAU,GAAAV,OAAAS,GAAAF,EAAAA,CAAAA,IAAAA,EAAAS,MAAAC,OAAAjB,OAAAQ,GAAAR,OAAAa,GAAAb,OAAAY,GAAAZ,OAAAW,GAAAX,QAAAe;AAAAA,EAAAA;AAAAA,IAAAA,IAAAf,EAAA,EAAA;AA/BNe,SAAAA;AA+BM;"}