diff --git a/src/App.tsx b/src/App.tsx index 401fb8e..289f029 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,6 +1,6 @@ import React, {FormEvent} from 'react'; import {Calendar} from './Calendar'; -import {endGregorian, frSupportedYear, gregorianJDN, jdnFrench, Month, startGregorian} from './dates'; +import {endGregorian, endJD, frSupportedYear, gregorianJDN, jdnFrench, Month, startGregorian, startJD} from './dates'; type YearMonth = { year: number; @@ -92,7 +92,7 @@ class App extends React.Component<{}, AppState> { return; const jdn = gregorianJDN(+this.state.goYear, +this.state.goMonth, +this.state.goDay); - const {year, month} = jdnFrench(jdn); + const {year, month} = jdnFrench(Math.min(Math.max(startJD, jdn), endJD)); this.setState({year, month}); } diff --git a/src/dates.ts b/src/dates.ts index 0916dde..71ef10c 100644 --- a/src/dates.ts +++ b/src/dates.ts @@ -63,7 +63,7 @@ export const decadeNames = [ 'primidi', 'duodi', 'tridi', 'quartidi', 'quintidi', 'sextidi', 'septidi', 'octidi', 'nonidi', 'décadi', ]; -const startJD = data.start_jd; +export const startJD = data.start_jd; export const startYear = data.start_year; const leaps: Array = [0]; @@ -107,8 +107,9 @@ export function jdnGregorian(jdn: number): Date { return new Date(year, month - 1, day); } +export const endJD = frJDN(endYear, 13, frIsLeap(endYear) ? 6: 5); export const startGregorian = jdnGregorian(startJD); -export const endGregorian = jdnGregorian(frJDN(endYear, 13, frIsLeap(endYear) ? 6: 5)); +export const endGregorian = jdnGregorian(endJD); export function jdnFrench(jdn: number): FrenchDate { let lo = 0;