(() => { 'use strict'; const button = document.querySelector('.email-copy'); const address = document.querySelector('.email-address'); const status = document.querySelector('.email-copy-status'); if (!button || !address || !status) return; const label = button.querySelector('.email-copy-label'); const initialStatus = status.textContent; let resetTimer; function copyFallback(value) { const field = document.createElement('textarea'); field.value = value; field.setAttribute('readonly', ''); field.style.cssText = 'position:fixed;left:-9999px;top:0;opacity:0'; document.body.append(field); field.select(); try { if (!document.execCommand('copy')) throw new Error('Copy failed'); } finally { field.remove(); button.focus({ preventScroll: true }); } } button.addEventListener('click', async () => { clearTimeout(resetTimer); const value = address.textContent.trim(); try { try { if (!navigator.clipboard?.writeText) throw new Error('Clipboard unavailable'); await navigator.clipboard.writeText(value); } catch { copyFallback(value); } label.textContent = '복사 완료'; button.classList.add('is-copied'); status.textContent = '이메일 주소를 복사했습니다. 메일의 받는 사람에 붙여넣어 주세요.'; } catch { label.textContent = '다시 복사'; button.classList.remove('is-copied'); status.textContent = '복사하지 못했습니다. 이메일 주소를 선택해 직접 복사해 주세요.'; } status.classList.add('is-feedback'); resetTimer = setTimeout(() => { label.textContent = '주소 복사'; button.classList.remove('is-copied'); status.classList.remove('is-feedback'); status.textContent = initialStatus; }, 6000); }); })();