(()=>{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(){if(this.modalElement=document.querySelector("dialog#copy-hours"),!this.modalElement){const e=window.getTemplate("copyHours");document.body.appendChild(e),this.modalElement=document.querySelector("dialog#copy-hours")}console.log(this.modalElement)}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,o)=>{switch(e){case"modal-open":let e=o.event,t=o.modal;const s=e.target.closest(".group-fields:not(.hours)");console.log(s);const n=this.getDayNameFromGroup(s);if(console.log(n),!n)return;this.currentSourceDay=n,console.log(n);const c=this.getSourceDayData(s);console.log(c);const a=t.querySelector(".source-day"),l=t.querySelector(".source-hours");console.log("Elements: ",{sourceDayEl:a,sourceHoursEl:l}),a&&(a.textContent=window.uppercaseFirst?window.uppercaseFirst(n):n.charAt(0).toUpperCase()+n.slice(1)),l&&(c.isOpen&&c.opens&&c.closes?(l.textContent=`${c.opens} - ${c.closes}`,l.className="source-hours"):(l.textContent="Closed",l.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(".group-fields.hours .group-fields:not(.hours)").forEach(e=>{if(!e.querySelector(".hours-copy-btn")){const o=this.createCopyButton();e.insertBefore(o,e.querySelector(".field.time"))}})}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){const o=Array.from(e.classList);return this.days.find(e=>o.includes(e))}getSourceDayData(e){console.log(e);const o=e.querySelector('input[type="checkbox"][name$=":open"]'),t=e.querySelector('input[name$=":time_opens"]'),s=e.querySelector('input[name$=":time_closes"]');return{isOpen:!!o&&o.checked,opens:t?t.value:"",closes:s?s.value:""}}applyCopyHours(){if(!this.currentSourceDay)return;const e=document.querySelector(`.group-fields.${this.currentSourceDay}`);if(!e)return;const o=this.getSourceDayData(e),t=Array.from(this.modal.modal.querySelectorAll("input:checked")).map(e=>e.value);0!==t.length?(t.forEach(e=>{this.applyHoursToDay(e,o)}),this.showSuccessFeedback(t.length)):alert("Please select at least one day to copy to.")}applyHoursToDay(e,o){const t=document.querySelector(`.group-fields.${e}`);if(!t)return;const s=t.querySelector('input[type="checkbox"][name$=":open"]'),n=t.querySelector('input[name$=":time_opens"]'),c=t.querySelector('input[name$=":time_closes"]');console.log("applying hours to days: ",{openCheckbox:s,opensInput:n,closesInput:c}),s&&(s.checked=o.isOpen,s.dispatchEvent(new Event("change",{bubbles:!0})),o.isOpen&&n&&c?(n.value=o.opens,c.value=o.closes):n&&c&&(n.value="",c.value=""))}showSuccessFeedback(e){let o=document.getElementById("copy-success-feedback");o||(o=document.createElement("div"),o.id="copy-success-feedback",o.className="copy-success-feedback",document.body.appendChild(o));const t=1===e?"Hours copied to 1 day successfully!":`Hours copied to ${e} days successfully!`;o.querySelector("span").textContent=t,o.classList.add("show"),window.debouncer.schedule("copy-success",()=>{o.classList.remove("show")},3e3),window.jvbA11y&&window.jvbA11y.announce&&window.jvbA11y.announce(t)}}document.addEventListener("DOMContentLoaded",()=>{window.jvbCopy=new e})})();