{"version":3,"file":"YearCalendarTable.mjs","sources":["../../../../src/dateLookup/yearCalendar/table/YearCalendarTable.tsx"],"sourcesContent":["import { formatDate } from '@transferwise/formatting';\nimport { useIntl } from 'react-intl';\n\nimport { getFocusableTime } from '../../getFocusableTime/getFocusableTime';\nimport TableLink from '../../tableLink';\n\ninterface YearCalendarTableProps {\n  selectedDate: Date | null;\n  min: Date | null;\n  max: Date | null;\n  viewYear: number;\n  placeholder: string;\n  onSelect: (year: number) => void;\n}\n\nconst ROWS = 5;\nconst COLS = 4;\nconst YEAR_ONLY_FORMAT: Intl.DateTimeFormatOptions = { year: 'numeric' };\n\nconst YearCalendarTable = ({\n  selectedDate,\n  min,\n  max,\n  viewYear,\n  placeholder,\n  onSelect,\n}: YearCalendarTableProps) => {\n  const { locale } = useIntl();\n  const startYear = viewYear - (viewYear % 20);\n  const getLink = (year: number) => {\n    return (\n      <TableLink\n        item={year}\n        type=\"year\"\n        title={formatDate(new Date(year, 0), locale, YEAR_ONLY_FORMAT)}\n        active={isActive(year)}\n        disabled={isDisabled(year)}\n        today={isThisYear(year)}\n        autofocus={autofocusYear === year}\n        onClick={onSelect}\n      />\n    );\n  };\n\n  const isActive = (year: number) => {\n    return !!(selectedDate && year === selectedDate.getFullYear());\n  };\n\n  const isThisYear = (year: number) => {\n    return year === new Date().getFullYear();\n  };\n\n  const isDisabled = (year: number) => {\n    return !!((min && year < min.getFullYear()) || (max && year > max.getFullYear()));\n  };\n\n  const autofocusYear = (() => {\n    const years = Array.from({ length: ROWS * COLS }, (_, index) => startYear + index);\n    return getFocusableTime({ isActive, isNow: isThisYear, isDisabled, timeSpan: years });\n  })();\n\n  return (\n    <table className=\"table table-condensed table-bordered tw-date-lookup-calendar m-b-0\">\n      <thead className=\"sr-only\">\n        <tr>\n          <th colSpan={COLS}>{placeholder}</th>\n        </tr>\n      </thead>\n      <tbody>\n        {Array.from({ length: ROWS }, (_, rowIndex) => (\n          <tr key={rowIndex}>\n            {Array.from({ length: COLS }, (_, colIndex) => (\n              <td key={colIndex}>{getLink(startYear + rowIndex * COLS + colIndex)}</td>\n            ))}\n          </tr>\n        ))}\n      </tbody>\n    </table>\n  );\n};\n\nexport default YearCalendarTable;\n"],"names":["ROWS","COLS","YEAR_ONLY_FORMAT","year","YearCalendarTable","selectedDate","min","max","viewYear","placeholder","onSelect","locale","useIntl","startYear","getLink","_jsx","TableLink","item","type","title","formatDate","Date","active","isActive","disabled","isDisabled","today","isThisYear","autofocus","autofocusYear","onClick","getFullYear","years","Array","from","length","_","index","getFocusableTime","isNow","timeSpan","_jsxs","className","children","colSpan","rowIndex","colIndex"],"mappings":"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"}