{"version":3,"file":"static/chunks/9044-d8fc6c13dd497556.js","mappings":"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","sources":["webpack://_N_E/./pages/components/LoginOverlay.js","webpack://_N_E/./pages/components/styles/HeaderTest.module.css"],"sourcesContent":["import React, { useState, useRef, useEffect, useContext } from 'react';\nimport { useRouter } from 'next/router';\nimport styles from './styles/HeaderTest.module.css';\nimport { trackButtonClick } from '../../utils/mixpanel';\nimport axiosInstance from '../../utils/axiosInstance';\nimport { AuthContext } from '../../utils/AuthContext';\nimport { GoogleOAuthProvider, GoogleLogin } from '@react-oauth/google';\n\nconst LoginOverlay = ({ isVisible, onClose }) => {\n const router = useRouter();\n const { login } = useContext(AuthContext);\n \n // Animation states\n const [animationState, setAnimationState] = useState('closed');\n const [shouldRender, setShouldRender] = useState(false);\n \n // Form states\n const [email, setEmail] = useState('');\n const [emailError, setEmailError] = useState('');\n const [otp, setOtp] = useState('');\n const [step, setStep] = useState('email');\n const [loginError, setLoginError] = useState('');\n const [resendTimer, setResendTimer] = useState(12);\n const [canResend, setCanResend] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n\n // Refs\n const resendIntervalRef = useRef(null);\n const overlayContentRef = useRef(null);\n const emailInputRef = useRef(null);\n\n // Animation effect\n useEffect(() => {\n if (isVisible) {\n setShouldRender(true);\n setAnimationState('entering');\n } else {\n setAnimationState('exiting');\n const timer = setTimeout(() => {\n setShouldRender(false);\n }, 300);\n return () => clearTimeout(timer);\n }\n }, [isVisible]);\n\n // Focus management effect\n useEffect(() => {\n if (isVisible && emailInputRef.current) {\n const previousActiveElement = document.activeElement;\n emailInputRef.current.focus();\n\n const handleTabKey = (e) => {\n const focusableElements = overlayContentRef.current?.querySelectorAll(\n 'a[href], button, textarea, input, select'\n );\n if (!focusableElements) return;\n \n const firstElement = focusableElements[0];\n const lastElement = focusableElements[focusableElements.length - 1];\n\n if (e.key === 'Tab') {\n if (e.shiftKey && document.activeElement === firstElement) {\n e.preventDefault();\n lastElement.focus();\n } else if (!e.shiftKey && document.activeElement === lastElement) {\n e.preventDefault();\n firstElement.focus();\n }\n }\n\n if (e.key === 'Escape') {\n handleClose();\n }\n };\n\n document.addEventListener('keydown', handleTabKey);\n return () => {\n document.removeEventListener('keydown', handleTabKey);\n if (previousActiveElement) previousActiveElement.focus();\n };\n }\n }, [isVisible]);\n\n // Timer effect\n useEffect(() => {\n if (step === 'otp') {\n setCanResend(false);\n setResendTimer(12);\n startResendTimer();\n } else {\n stopResendTimer();\n }\n return () => stopResendTimer();\n }, [step]);\n\n const handleClose = () => {\n setAnimationState('exiting');\n const timer = setTimeout(() => {\n onClose();\n // Reset form state when closing\n setStep('email');\n setEmail('');\n setOtp('');\n setEmailError('');\n setLoginError('');\n }, 300);\n return () => clearTimeout(timer);\n };\n\n const handleGoogleSuccess = async (credentialResponse) => {\n setIsLoading(true);\n try {\n const response = await axiosInstance.post('/auth/google/callback/', {\n credential: credentialResponse.credential\n });\n\n const { access, refresh } = response.data;\n if (access && refresh) {\n login(access, refresh);\n trackButtonClick('Google Login Success');\n handleClose();\n router.push('/');\n }\n } catch (error) {\n console.error('Google login error:', error);\n setLoginError('Google login failed. Please try again.');\n trackButtonClick('Google Login Failed');\n } finally {\n setIsLoading(false);\n }\n };\n\n const handleGoogleError = () => {\n console.error('Google login failed');\n setLoginError('Google login failed. Please try again.');\n trackButtonClick('Google Login Error');\n };\n\n const startResendTimer = () => {\n resendIntervalRef.current = setInterval(() => {\n setResendTimer((prevTimer) => {\n if (prevTimer <= 1) {\n clearInterval(resendIntervalRef.current);\n setCanResend(true);\n return 0;\n }\n return prevTimer - 1;\n });\n }, 1000);\n };\n\n const stopResendTimer = () => {\n if (resendIntervalRef.current) {\n clearInterval(resendIntervalRef.current);\n resendIntervalRef.current = null;\n }\n };\n\n const formatTime = (totalSeconds) => {\n const minutes = Math.floor(totalSeconds / 60).toString().padStart(2, '0');\n const seconds = (totalSeconds % 60).toString().padStart(2, '0');\n return `${minutes}:${seconds}`;\n };\n\n const validateEmail = (email) => {\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n return emailRegex.test(email);\n };\n\n const handleSubmit = async (event) => {\n event.preventDefault();\n setIsLoading(true);\n\n if (step === 'email') {\n if (!validateEmail(email)) {\n setEmailError('Email is not valid');\n setLoginError('');\n setIsLoading(false);\n return;\n }\n setEmailError('');\n\n try {\n await axiosInstance.post('/send-otp/', { email });\n setStep('otp');\n trackButtonClick('Sent OTP');\n } catch (error) {\n console.error('Error sending OTP:', error);\n setLoginError('Failed to send code. Please try again.');\n } finally {\n setIsLoading(false);\n }\n } else if (step === 'otp') {\n if (!otp) {\n setLoginError('Please enter the OTP.');\n setIsLoading(false);\n return;\n }\n try {\n const response = await axiosInstance.post('/verify-otp/', { email, otp });\n const { access, refresh } = response.data;\n\n if (access && refresh) {\n login(access, refresh);\n trackButtonClick('Logged In');\n handleClose();\n router.push('/');\n } else {\n throw new Error('Invalid response from server');\n }\n } catch (error) {\n console.error('OTP verification error:', error);\n setLoginError('Invalid OTP. Please try again.');\n } finally {\n setIsLoading(false);\n }\n }\n };\n\n const handleResendOtp = async () => {\n if (!canResend) return;\n\n setIsLoading(true);\n try {\n await axiosInstance.post('/send-otp/', { email });\n alert('OTP resent to your email.');\n setCanResend(false);\n setResendTimer(12);\n startResendTimer();\n trackButtonClick('Resent OTP');\n } catch (error) {\n console.error('Error resending OTP:', error);\n setLoginError('Failed to resend code. Please try again.');\n } finally {\n setIsLoading(false);\n }\n };\n\n const handleChangeEmail = () => {\n setStep('email');\n setEmail('');\n setOtp('');\n setEmailError('');\n setLoginError('');\n stopResendTimer();\n };\n\n if (!shouldRender) return null;\n\n return (\n
{emailError}
}\n {loginError &&{loginError}
}\n