// @typescript-eslint/no-unused-vars // WORK IN PROGRESS import { memo, useCallback, useRef } from 'react'; import { View, useWindowDimensions, TextInput as TextInputNative } from 'react-native'; import { useLatest } from '../../hooks'; import { clockTypes, PossibleClockTypes, PossibleInputTypes, toHourInputFormat } from './timeUtils'; import TimeInput from './TimeInput'; import AmPmSwitcher from './AmPmSwitcher'; import { resolveStateVariant } from '../../utils'; import { timePickerInputsStyles } from './utils'; type Props = { inputType: PossibleInputTypes; focused: PossibleClockTypes; hours: number; minutes: number; onFocusInput: (type: PossibleClockTypes) => any; onChange: (hoursMinutesAndFocused: { hours: number; minutes: number; focused?: undefined | PossibleClockTypes; }) => any; is24Hour: boolean; }; function TimeInputs({ hours, minutes, onFocusInput, focused, inputType, onChange, is24Hour, }: Props) { const dimensions = useWindowDimensions(); const isLandscape = dimensions.width > dimensions.height; timePickerInputsStyles.useVariants({ state: resolveStateVariant({ landScape: isLandscape, }) as any, }); const startInput = useRef(null); const endInput = useRef(null); const onSubmitStartInput = useCallback(() => { if (endInput.current) { endInput.current.focus(); } }, [endInput]); const onSubmitEndInput = useCallback(() => { // TODO: close modal and persist time }, []); const minutesRef = useLatest(minutes); const onChangeHours = useCallback( (newHours: number) => { onChange({ hours: newHours, minutes: minutesRef.current, focused: clockTypes.hours, }); }, [onChange, minutesRef], ); const onHourChange = useCallback( (newHoursFromInput: number) => { let newHours = newHoursFromInput; if (newHoursFromInput >= 24) { newHours = 0; } onChange({ hours: newHours, minutes, }); }, [minutes, onChange], ); const onMinuteChange = useCallback( (newMinutesFromInput: number) => { let newMinutes = newMinutesFromInput; if (newMinutesFromInput > 59) { newMinutes = 0; } onChange({ hours: hours, minutes: newMinutes, }); }, [hours, onChange], ); return ( {!is24Hour && ( <> )} ); } export default memo(TimeInputs);