1import{u as c,w as o}from"./chunk-VJGBCIFP.js";import"./chunk-XCPXRTXT.js";import"./chunk-XJLSI5BW.js";import"./chunk-ZOYOJ6FT.js";import"./chunk-6KHOHYTW.js";var d=1e3,n=class{constructor(t){this.element=t,this._init()}_init(){let{subscribed:t,letterId:s,unsubscribeIcon:e,subscribeIcon:i,subscribeText:r,unsubscribeText:h}=this.element.dataset;this.subscribed=t==="true",this.letterId=s,this.button=this.element.querySelector("button"),this.text=this.element.querySelector("button span"),this.unsubscribeIcon=this.element.querySelector(`.icon-${e}`),this.errorIcon=this.element.querySelector(".icon-close"),this.checkIcon=this.element.querySelector(".icon-check"),this.spinnerIcon=this.element.querySelector(".icon-spinner"),this.subscribeIcon=this.element.querySelector(`.icon-${i}`),this.unsubscribeText=h,this.subscribeText=r,this._updateButton(),this._setupEventListener()}_loading(){this.loading=!0,this.element.classList.add("newsletter__opt-btn--loading"),this.button.classList.add("button--loading"),this.spinnerIcon.classList.remove("hidden")}_loaded(){this.loading=!1,this.checkIcon.classList.add("hidden"),this.errorIcon.classList.add("hidden"),this.element.classList.remove("newsletter__opt-btn--loading")}_setupEventListener(){this.button.addEventListener("click",t=>{if(this.loading)return t.preventDefault();this._loading(),this._toggleSubscription()})}_toggleSubscriptionStatus(){this.subscribed=!this.subscribed}_updateIcon(){this.subscribed?(this.subscribeIcon.classList.add("hidden"),this.unsubscribeIcon.classList.remove("hidden")):(this.unsubscribeIcon.classList.add("hidden"),this.subscribeIcon.classList.remove("hidden"))}_showFeedback({success:t=!1}){this.spinnerIcon.classList.add("hidden"),this.button.classList.remove("button--loading"),t?this.checkIcon.classList.remove("hidden"):this.errorIcon.classList.remove("hidden");let e=`newsletter__opt-btn--${t?"success":"error"}`;this.button.classList.add(e),setTimeout(()=>{this._loaded(),this._updateButton(),this.button.classList.remove(e)},d)}_updateButton(){this._updateIcon(),this.subscribed?(this.text.textContent=this.unsubscribeText,this.button.classList.add("newsletter__opt-btn--subscribed")):(this.text.textContent=this.subscribeText,this.button.classList.remove("newsletter__opt-btn--subscribed"))}_toggleSubscription(){let t=this.subscribed?"unsubscribe":"subscribe",{namespace:s}=window.lclClientConfig;return fetch("/api/newsletter/update-preference",{method:"POST",body:JSON.stringify({letterId:this.letterId,namespace:s,type:t}),headers:{"Content-type":"application/json"}}).then(e=>{if(!e.ok)throw this._showFeedback({success:!1}),new Error("Failed to update preference to newsletter");this._toggleSubscriptionStatus(),this._showFeedback({success:!0})}).catch(e=>{this._showFeedback({success:!1}),o(i=>{i.setExtra("type",t),i.setExtra("letterId",this.letterId),c(e)})})}};export{n as default}; 2//# sourceMappingURL=newsletter-button-module-MVUOM4SZ.js.map
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.