import React, {useState, useRef, useMemo, type ChangeEvent, type FormEventHandler} from 'react'; import {pdfPasswordFormStyles as styles} from './styles.js'; import {isSafari} from './helpers.js'; type Props = { isPasswordInvalid?: boolean; onSubmit?: (password: string) => void; onPasswordChange?: (password: string) => void; onPasswordFieldFocus?: (isFocused: boolean) => void; }; function PDFPasswordForm({isPasswordInvalid, onSubmit, onPasswordChange, onPasswordFieldFocus}: Props) { const [password, setPassword] = useState(''); const [validationErrorText, setValidationErrorText] = useState(''); const [shouldShowForm, setShouldShowForm] = useState(false); const textInputRef = useRef(null); const errorText = useMemo(() => { if (isPasswordInvalid) { return 'Incorrect password. Please try again.'; } if (validationErrorText) { return validationErrorText; } return ''; }, [isPasswordInvalid, validationErrorText]); const updatePassword = (event: ChangeEvent) => { const newPassword = event.target.value; setPassword(newPassword); onPasswordChange?.(newPassword); setValidationErrorText(''); }; const validate = () => { if (!isPasswordInvalid && password) { return true; } if (!password) { setValidationErrorText('Password required. Pleaser enter.'); } return false; }; const submitPassword: FormEventHandler = (e) => { e.preventDefault(); if (!validate()) { return; } onSubmit?.(password); }; const validateAndNotifyPasswordBlur = () => { validate(); onPasswordFieldFocus?.(false); }; if (!shouldShowForm) { return (

This PDF is password protected.
Please   to view it.

); } return (

View PDF

{!!errorText &&

{errorText}

}
); } PDFPasswordForm.displayName = 'PDFPasswordForm'; export type {Props as PDFPasswordFormProps}; export default PDFPasswordForm;