(()=>{class e{constructor(){this.createModal(),this.setupModal(),this.currentSourceDay=null,this.days=["monday","tuesday","wednesday","thursday","friday","saturday","sunday"],this.init()}handleChange(e){window.targetCheck(".hours-copy-btn")&&e.preventDefault({bubbles:!0})}init(){this.addCopyButtons(),this.bindEvents()}createModal(){this.modalElement=document.querySelector("dialog#copy-hours")}setupModal(){this.modal=new window.jvbModal(this.modalElement,{open:".hours-copy-btn",openMessage:"Copy hours modal opened",closeMessage:"Copy hours modal closed"}),this.modal.subscribe((e,t)=>{switch(e){case"modal-open":let e=t.event,o=t.modal;const s=e.target.closest('.group:not([data-field="openingHours"])'),n=this.getDayNameFromGroup(s);if(!n)return;this.currentSourceDay=n;const a=this.getSourceDayData(s),r=o.querySelector(".source-day"),c=o.querySelector(".source-hours");r&&(r.textContent=window.uppercaseFirst?window.uppercaseFirst(n):n.charAt(0).toUpperCase()+n.slice(1)),c&&(a.isOpen&&a.opens&&a.closes?(c.textContent=`${a.opens} - ${a.closes}`,c.className="source-hours"):(c.textContent="Closed",c.className="source-hours closed")),this.modal.modal.querySelector(`label[for=copy-to-${n}]`).hidden=!0,this.modal.modal.querySelectorAll(`label:not([for=copy-to-${n}])[hidden]`).hidden=!1;break;case"modal-close":this.applyCopyHours(),this.currentSourceDay=null}})}addCopyButtons(){document.querySelectorAll('[data-field="openingHours"] .group.field').forEach(e=>{if(!e.querySelector(".hours-copy-btn")){const t=this.createCopyButton();e.append(t)}})}createCopyButton(){const e=window.getTemplate("blankButton");return e.type="button",e.className="hours-copy-btn",e.title="Copy this time to other days",e.prepend(window.getIcon("copy")),e.setAttribute("data-action","copy-hours"),e}bindEvents(){this.changeHandler=this.handleChange.bind(this),this.modal.modal.addEventListener("change",this.changeHandler)}getDayNameFromGroup(e){return e.dataset.field.replace("openingHours|","")}getSourceDayData(e){const t=e.querySelector(`input[type="checkbox"][name="openingHours|${this.currentSourceDay}|isOpen"]`),o=e.querySelector(`input[name="openingHours|${this.currentSourceDay}|opens"]`),s=e.querySelector(`input[name="openingHours|${this.currentSourceDay}|closes"]`);return{isOpen:!!t&&t.checked,opens:o?o.value:"",closes:s?s.value:""}}applyCopyHours(){if(!this.currentSourceDay)return;const e=document.querySelector(`.group[data-field="openingHours|${this.currentSourceDay}"]`);if(!e)return;const t=this.getSourceDayData(e),o=Array.from(this.modal.modal.querySelectorAll("input:checked")).map(e=>e.value);0!==o.length?(o.forEach(e=>{this.applyHoursToDay(e,t)}),this.showSuccessFeedback(o.length)):alert("Please select at least one day to copy to.")}applyHoursToDay(e,t){const o=document.querySelector(`.group[data-field="openingHours|${e}`);if(!o)return;const s=o.querySelector(`input[type="checkbox"][name="openingHours|${e}|isOpen"]`),n=o.querySelector(`input[name="openingHours|${e}|opens"]`),a=o.querySelector(`input[name="openingHours|${e}|closes"]`);s&&(s.checked=t.isOpen,s.dispatchEvent(new Event("change",{bubbles:!0})),t.isOpen&&n&&a?(n.value=t.opens,n.dispatchEvent(new Event("change",{bubbles:!0})),a.value=t.closes,a.dispatchEvent(new Event("change",{bubbles:!0}))):n&&a&&(n.value="",n.dispatchEvent(new Event("change",{bubbles:!0})),a.value="",a.dispatchEvent(new Event("change",{bubbles:!0}))))}showSuccessFeedback(e){let t=document.getElementById("copy-success-feedback");const o=1===e?"Hours copied to 1 day successfully!":`Hours copied to ${e} days successfully!`;t.querySelector("span").textContent=o,t.classList.add("show"),window.debouncer.schedule("copy-success",()=>{t.classList.remove("show")},3e3),window.jvbA11y&&window.jvbA11y.announce&&window.jvbA11y.announce(o)}}document.addEventListener("DOMContentLoaded",()=>{window.jvbCopy=new e})})();