1(function(){const SESSION_KEY='hwh_pending_newsletter';const FREQ_TO_CHOICE={quotidienne:'daily',hebdomadaire:'weekly'};function isAuthed(){return document.documentElement.classList.contains('hwh-authed')||!!(window.HWH&&window.HWH.is_logged_in)} 2function track(choice,previous){if(window.HWH&&typeof window.HWH.trackEmailUpdate==='function'){window.HWH.trackEmailUpdate(choice,previous)}} 3function noticeOf(form){const param=form.getAttribute('data-param')||'default';return document.querySelector('.notice-newsletter-'+param)} 4function show(form,selector,display){form.querySelectorAll(selector).forEach(el=>{el.style.display=display})} 5function fail(form,message,retry=!0){form.classList.remove('active');form.classList.add('finished-unvalid');show(form,'.loading-valid','none');show(form,'.check-unvalid',retry?'inline-block':'none');if(!retry){show(form,'.submit-valid','inline-block')} 6const notice=noticeOf(form);if(notice){notice.classList.remove('success');notice.classList.add('error');notice.textContent='Erreur : '+message}} 7function getFrequence(form){const field=form.querySelector('input[name="frequence"]:checked')||form.querySelector('input[name="frequence"]');return field?field.value:'quotidienne'} 8function submitConnected(form){const notice=noticeOf(form);const frequence=getFrequence(form);const choice=FREQ_TO_CHOICE[frequence]||'daily';const previous=(window.HWH&&window.HWH.newsletter&&window.HWH.newsletter.choice)||'';form.classList.add('active');show(form,'.submit-valid, .check-valid, .check-unvalid','none');show(form,'.loading-valid','inline-block');const body=new URLSearchParams();body.append('action','hwh_update_newsletters');body.append('nonce',(window.HWH&&window.HWH.nonce)||'');body.append('newsletter_choice',choice);fetch(window.HWH.ajax_url,{method:'POST',credentials:'same-origin',headers:{'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8'},body:body.toString(),}).then(r=>r.json()).then(res=>{if(!res||!res.success){fail(form,(res&&res.data&&res.data.message)||'Erreur inconnue');track(choice,previous);return} 9form.classList.remove('active');show(form,'.loading-valid','none');show(form,'.submit-valid','inline-block');if(notice){notice.classList.remove('error');notice.classList.add('success');notice.textContent='Vous recevrez à présent notre newsletter '+frequence+'.'} 10if(window.HWH&&window.HWH.newsletter){window.HWH.newsletter.choice=choice} 11track(choice,previous)}).catch(()=>{fail(form,'Erreur réseau');track(choice,previous)})} 12function submitAnonymous(form){const honeypot=form.querySelector('input[name="address-confirm"]');if(honeypot&&honeypot.value.trim()){return} 13const emailInput=form.querySelector('input[name="address"]');const email=emailInput?emailInput.value.trim():'';if(!email||('email'===emailInput.type&&!emailInput.checkValidity())){fail(form,"L'adresse email fournie ne semble pas être valide. Merci de la vérifier avant de réessayer.",!1);return} 14if(!window.HWH||'function'!==typeof window.HWH.openModal){fail(form,'Le module de connexion est indisponible. Merci de réessayer.',!1);return} 15const param=form.getAttribute('data-param')||'default';try{sessionStorage.setItem(SESSION_KEY,JSON.stringify({email:email,frequence:getFrequence(form),param:param,event_info:'NL - OK - '+param,}))}catch(_err){} 16window.HWH.openModal('login','','form-newsletter',{email:email})} 17function onSubmit(event){const form=event.target.closest('.form_nl');if(!form){return} 18event.preventDefault();form.classList.remove('finished-valid','finished-unvalid');if(isAuthed()){submitConnected(form)}else{submitAnonymous(form)}} 19function applyConnectedUpgrade(){if(!isAuthed()){return} 20const nl=(window.HWH&&window.HWH.newsletter)||null;document.querySelectorAll('.form_nl:not(.update-sub)').forEach(form=>{form.classList.add('is-logged-in');const email=form.querySelector('input[name="address"]');if(email){if(nl&&nl.email_obfuscated){email.value=nl.email_obfuscated;email.readOnly=!0;email.setAttribute('aria-readonly','true');email.classList.add('hwh-field-locked');email.style.display=''}else{email.style.display='none'}} 21if(nl&&nl.choice&&'none'!==nl.choice){form.querySelectorAll('button.submit .submit-valid').forEach(span=>
21{span.textContent='Enregistrer la fréquence'})}})} 22function init(){document.addEventListener('submit',onSubmit);applyConnectedUpgrade();window.addEventListener('hwh:account',applyConnectedUpgrade)} 23if('loading'===document.readyState){document.addEventListener('DOMContentLoaded',init)}else{init()}})()
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.