import React, { useContext } from 'react'; import Dayjs from 'dayjs'; import { getDisplayName } from '../utils/getDisplayName'; import type { TFunction } from 'i18next'; import type { Moment } from 'moment'; import type { UnknownType } from '../../types/types'; export const isDayOrMoment = (output: TDateTimeParserOutput): output is Dayjs.Dayjs | Moment => (output as Dayjs.Dayjs | Moment).isSame != null; export type TDateTimeParserInput = string | number | Date; export type TDateTimeParserOutput = string | number | Date | Dayjs.Dayjs | Moment; export type TDateTimeParser = (input?: TDateTimeParserInput) => TDateTimeParserOutput; export type TranslationContextValue = { t: TFunction | ((key: string) => string); tDateTimeParser: TDateTimeParser; }; export const TranslationContext = React.createContext({ t: (key) => key, tDateTimeParser: (input) => Dayjs(input), }); export const TranslationProvider: React.FC<{ value: TranslationContextValue; }> = ({ children, value }) => ( {children} ); export const useTranslationContext = () => useContext(TranslationContext); export const withTranslationContext =

( Component: React.ComponentType

, ): React.FC> => { const WithTranslationContextComponent = (props: Omit) => { const translationContext = useTranslationContext(); return ; }; WithTranslationContextComponent.displayName = `WithTranslationContext${getDisplayName( Component, )}`; return WithTranslationContextComponent; };