{"version":3,"file":"pwreset.mjs","sourceRoot":"","sources":["../../../../../src/account/static/js/pwreset.mjs"],"names":[],"mappings":"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","sourcesContent":["import { apiRequest } from './account.mjs';\n\nconst dialog = document.getElementById('pwreset-dialog');\nconst error = document.getElementById('pwreset-error');\nconst button = document.getElementById('pwreset-button');\n\nif (button) {\n  button.addEventListener('click', async (event) => {\n    error.innerText = '';\n    event.preventDefault();\n    if (!button.form.reportValidity()) return;\n    try {\n      const inputs = new FormData(button.form);\n      await apiRequest('/api/pwreset', { login: inputs.get('login'), resetUrl: inputs.get('resetUrl') });\n    } catch (err) {\n      error.innerText = err.message;\n      return;\n    }\n    dialog.close();\n  });\n}\n\nconst newPasswordInput = document.getElementById('newPassword');\nconst confirmPasswordInput = document.getElementById('confirmPassword');\nconst confirmPasswordError = document.getElementById('confirmPassword-error');\n\nif (newPasswordInput && confirmPasswordInput && confirmPasswordError) {\n  const mismatchMessage = confirmPasswordError.dataset.mismatchMessage || 'Passwords do not match';\n\n  const showMismatch = () => {\n    confirmPasswordError.innerText = mismatchMessage;\n    confirmPasswordError.classList.remove('hidden');\n  };\n\n  const clearMismatch = () => {\n    confirmPasswordError.innerText = '';\n    confirmPasswordError.classList.add('hidden');\n  };\n\n  const isMatching = () => newPasswordInput.value === confirmPasswordInput.value;\n\n  confirmPasswordInput.addEventListener('blur', () => {\n    if (!confirmPasswordInput.value) {\n      clearMismatch();\n      return;\n    }\n    if (isMatching()) clearMismatch();\n    else showMismatch();\n  });\n\n  newPasswordInput.addEventListener('input', () => {\n    if (confirmPasswordError.innerText && isMatching()) clearMismatch();\n  });\n\n  confirmPasswordInput.form?.addEventListener('submit', (event) => {\n    if (!isMatching()) {\n      event.preventDefault();\n      showMismatch();\n      confirmPasswordInput.focus();\n    }\n  });\n}\n\nfunction bindPasswordToggle(inputId, toggleId, iconId) {\n  const passwordInput = document.getElementById(inputId);\n  const toggleButton = document.getElementById(toggleId);\n  const eyeIcon = document.getElementById(iconId);\n\n  if (!(passwordInput instanceof HTMLInputElement) || !toggleButton || !eyeIcon) return;\n\n  toggleButton.addEventListener('click', () => {\n    const showing = passwordInput.type === 'password';\n    passwordInput.type = showing ? 'text' : 'password';\n    eyeIcon.classList.toggle('fa-eye', !showing);\n    eyeIcon.classList.toggle('fa-eye-slash', showing);\n  });\n}\n\ndocument.addEventListener('DOMContentLoaded', () => {\n  bindPasswordToggle('newPassword', 'togglePassword', 'eyeIcon');\n  bindPasswordToggle('confirmPassword', 'toggleConfirmPassword', 'confirmEyeIcon');\n});\n"]}