1(()=>{"use strict";let{PluginBaseClass:e}=window,t="loader",s={BEFORE:"before",INNER:"inner"};class i{constructor(e,t=s.BEFORE){this.parent=e instanceof Element?e:document.body.querySelector(e),this.position=t}create(){if(!this.exists()){if(this.position===s.INNER){this._previousHTML=this.parent.innerHTML,this.parent.innerHTML=i.getTemplate();return}this.parent.insertAdjacentHTML(this._getPosition(),i.getTemplate())}}remove(){if(this.position===s.INNER){this.parent.innerHTML=this._previousHTML;return}this.parent.querySelectorAll(`.${t}`).forEach(e=>e.remove())}exists(){return this.parent.querySelectorAll(`.${t}`).length>0}_getPosition(){return this.position===s.BEFORE?"afterbegin":"beforeend"}static getTemplate(){return`<div class="${t}" role="status"> 2 <span class="visually-hidden">Loading...</span> 3 </div>`}static SELECTOR_CLASS(){return t}}let r="element-loader-backdrop";class o extends i{static create(e){e.classList.add("has-element-loader"),o.exists(e)||(o.appendLoader(e),setTimeout(()=>{let t=e.querySelector(`.${r}`);t&&t.classList.add("element-loader-backdrop-open")},1))}static remove(e){e.classList.remove("has-element-loader");let t=e.querySelector(`.${r}`);t&&t.remove()}static exists(e){return e.querySelectorAll(`.${r}`).length>0}static getTemplate(){return` 4 <div class="${r}"> 5 <div class="loader" role="status"> 6 <span class="visually-hidden">Loading...</span> 7 </div> 8 </div> 9 `}static appendLoader(e){e.insertAdjacentHTML("beforeend",o.getTemplate())}}class a extends window.PluginBaseClass{static #e=this.options={alertContainer:"#coe-abo-edit-alert-container"};init(){this._registerAjaxCallbacks()}_registerAjaxCallbacks(){PluginManager.getPluginInstanceFromElement(this.el,"FormAjaxSubmit")&&(this.$emitter.subscribe("beforeSubmit",()=>{this.el.querySelectorAll(".btn").forEach(e=>o.create(e))}),this.$emitter.subscribe("onAfterAjaxSubmit",e=>{this._handleResponse(e.detail.response),this.el.querySelectorAll(".btn").forEach(e=>o.remove(e))}))}_handleResponse(e){document.querySelector(this.options.alertContainer)?.remove(),document.body.classList.contains("is-ctl-product")&&document.body.classList.contains("is-act-index")&&window.location.reload()}}let{PluginBaseClass:n}=window,l=window.PluginManager;l.register("CoeAboBuyWidget",class extends e{init(){this.widgetSubscriptionSelectedClass="is--subscription-selected",this.buyForm=document.querySelector("#productDetailPageBuyProductForm"),this.subscriptionWidget=document.querySelector("#productDetailSubscriptionWidget"),this.buyForm&&this.subscriptionWidget&&(this.registerEvents(),this.refreshFormAction())}registerEvents(){let e=this;this.subscriptionWidget.querySelectorAll("input[type=radio]").forEach(t=>{t.addEventListener("change",function(){e.refreshFormAction()})})}refreshFormAction(){if(!this.subscriptionWidget)return;let e=this.subscriptionWidget.querySelector("input[type=radio]:checked");e&&(this.buyForm.setAttribute("action",e.getAttribute("data-form-action")),"1"==e.value?this.subscriptionWidget.classList.add(this.widgetSubscriptionSelectedClass):this.subscriptionWidget.classList.remove(this.widgetSubscriptionSelectedClass))}},"#productDetailSubscriptionWidget"),l.register("CoeAboEndEditSession",a,"[data-coe-abo-end-edit-session]"),l.register("CoeAboAdjustDate",class extends n{init(){this.datesFromLast=this.el.closest(".modal-body").querySelector("#datesFromLast"),this.datesFromToday=this.el.closest(".modal-body").querySelector("#datesFromToday"),this.datesFromLast&&this.datesFromToday&&this.registerEvents()}registerEvents(){let e=this;this.el.addEventListener("change",function(){e.adjustDisplayedDates()})}adjustDisplayedDates(){"last"===this.el.value?(this.datesFromLast.style.display="block",this.datesFromToday.style.display="none"):(this.datesFromLast.style.display="none",this.datesFromToday.style.display="block")}},"[data-coe-abo-adjust-date]")})();
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.