import { Box, chakra, HStack, shouldForwardProp, Text, useColorMode, VStack, } from '@chakra-ui/react'; import { __ } from '@wordpress/i18n'; import { isValidMotionProp, motion } from 'framer-motion'; import React, { useEffect, useMemo } from 'react'; import { useTimer } from 'react-timer-hook'; import { COLORS_BASED_ON_SCREEN_COLOR_MODE } from '../../../../assets/js/interactive/constants/general'; import { useCourseContext } from '../../../../assets/js/interactive/context/CourseContext'; interface Props { duration: number; startAt: any; onTimeout?: () => void; } const MeetingTimer: React.FC = (props) => { const { startAt, onTimeout } = props; const { colorMode } = useColorMode(); const { isHeaderOpen } = useCourseContext(); const expiryTimestamp = useMemo(() => { return new Date(startAt); }, [startAt]); const { hours, seconds, minutes, days, restart } = useTimer({ expiryTimestamp, onExpire: onTimeout, }); const LinearBox = chakra(motion.div, { shouldForwardProp: (prop) => isValidMotionProp(prop) || shouldForwardProp(prop), }); const timeBoxStyles = { bg: 'primary.500', color: 'white', fontSize: { sm: 'lg', md: 'xl' }, fontWeight: 'semibold', p: 1, borderRadius: 'sm', textAlign: 'center' as 'center', width: '1.5rem', }; useEffect(() => { restart(expiryTimestamp); }, [expiryTimestamp, restart]); return ( {days > 0 && ( <> {days.toString().padStart(2, '0')[0]} {days.toString().padStart(2, '0')[1]} {__('Days', 'learning-management-system')} : )} {hours.toString().padStart(2, '0')[0]} {hours.toString().padStart(2, '0')[1]} {__('Hours', 'learning-management-system')} : {minutes.toString().padStart(2, '0')[0]} {minutes.toString().padStart(2, '0')[1]} {__('Minutes', 'learning-management-system')} : {seconds.toString().padStart(2, '0')[0]} {seconds.toString().padStart(2, '0')[1]} {__('Seconds', 'learning-management-system')} ); }; export default MeetingTimer;