// @ts-strict-ignore import React, { createContext, type ReactNode } from 'react'; import * as monthUtils from 'loot-core/src/shared/months'; export type BoundsProps = { start: string; end: string; }; export function getValidMonthBounds( bounds: BoundsProps, startMonth: undefined | string, endMonth: string, ) { return { start: startMonth < bounds.start ? bounds.start : startMonth, end: endMonth > bounds.end ? bounds.end : endMonth, }; } type MonthsContextProps = { months: string[]; type: string; }; export const MonthsContext = createContext<MonthsContextProps>(null); type MonthsProviderProps = { startMonth: string | undefined; numMonths: number; monthBounds: BoundsProps; type: string; children: ReactNode; }; export function MonthsProvider({ startMonth, numMonths, monthBounds, type, children, }: MonthsProviderProps) { const endMonth = monthUtils.addMonths(startMonth, numMonths - 1); const bounds = getValidMonthBounds(monthBounds, startMonth, endMonth); const months = monthUtils.rangeInclusive(bounds.start, bounds.end); return ( <MonthsContext.Provider value={{ months, type }}> {children} </MonthsContext.Provider> ); }