<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">import{M as h}from"./modal.DuRuWaPD.js";import{F as d,a as o}from"./FormFieldsErrorFormatter.BEYwN301.js";import{m as p}from"./module.esm.Cm4okMZt.js";import{S as f}from"./searchableSelect.CzZBhkuH.js";class A extends h{constructor(t){super(),this.appointmentModal=t}init(){const t=this.handleModalTriggerClick.bind(this);document.querySelectorAll(this.appointmentModal).forEach(s=&gt;{s.dataset.listenerAdded||(s.addEventListener("click",t),s.dataset.listenerAdded="true")})}handleModalTriggerClick(t){t.preventDefault();const e=t.target,s=e.dataset.modalUrl;s&amp;&amp;this.loadModal(e,s)}async loadModal(t,e){const i=await(await fetch(e)).json();this.services=Object.values(i.data.services||{}),this.specialists=Object.values(i.data.specialists||{}),this.branches=Object.values(i.data.branches||{});const a=new h({afterOpen:()=&gt;this.onModalOpen(t)});a.injectContent((i==null?void 0:i.html)??"Sorry, we're unable to retrieve information at the moment. Please try again later."),a.show()}onModalOpen(t){this.form=document.querySelector("[data-appointment-form]"),this.form&amp;&amp;(new d(this.form),this.errorFormatter=new o(this.form)),this.serviceId=t.getAttribute("data-service-id"),this.specialistId=t.getAttribute("data-specialist-id"),this.branchId=t.getAttribute("data-branch-id"),this.addEventListeners(),p.data("appointmentModal",()=&gt;({services:this.services,specialists:this.specialists,branches:this.branches,filteredServices:this.services,filteredSpecialists:this.specialists,filteredBranches:this.branches,examinationArea:null,selectedService:null,selectedSpecialist:null,selectedBranch:null,serviceId:this.serviceId,specialistId:this.specialistId,branchId:this.branchId,init(){new f,this.$nextTick(()=&gt;{const e=[];this.serviceId&amp;&amp;e.push(this.initService(parseInt(this.serviceId))),this.specialistId&amp;&amp;e.push(this.initSpecialist(parseInt(this.specialistId))),this.branchId&amp;&amp;e.push(this.initBranch(parseInt(this.branchId))),Promise.all(e).then(()=&gt;this.applyAllFilters())})},initService(e){return new Promise(s=&gt;{this.selectedService=this.services.find(i=&gt;i.id===e),this.selectedService&amp;&amp;(this.examinationArea=this.selectedService.examination_zone),s()})},initSpecialist(e){return new Promise(s=&gt;{this.selectedSpecialist=this.specialists.find(i=&gt;i.id===e),s()})},initBranch(e){return new Promise(s=&gt;{this.selectedBranch=this.branches.find(i=&gt;i.id===e),s()})},applyAllFilters(){var s,i,a,l,c,n;this.resetLists();const e={service:{selected:this.selectedService,specialists:(s=this.selectedService)==null?void 0:s.specialists,branches:(i=this.selectedService)==null?void 0:i.branches},specialist:{selected:this.selectedSpecialist,branches:(a=this.selectedSpecialist)==null?void 0:a.branches,services:(l=this.selectedSpecialist)==null?void 0:l.services},branch:{selected:this.selectedBranch,specialists:(c=this.selectedBranch)==null?void 0:c.specialists,services:(n=this.selectedBranch)==null?void 0:n.services}};e.service.selected&amp;&amp;(this.filteredSpecialists=this.filteredSpecialists.filter(r=&gt;e.service.specialists.includes(r.id)),this.filteredBranches=this.filteredBranches.filter(r=&gt;e.service.branches.includes(r.id))),e.specialist.selected&amp;&amp;(this.filteredBranches=this.filteredBranches.filter(r=&gt;e.specialist.branches.includes(r.id)),this.filteredServices=this.filteredServices.filter(r=&gt;e.specialist.services.includes(r.id))),e.branch.selected&amp;&amp;(this.filteredSpecialists=this.filteredSpecialists.filter(r=&gt;e.branch.specialists.includes(r.id)),this.filteredServices=this.filteredServices.filter(r=&gt;e.branch.services.includes(r.id)))},resetLists(){this.filteredServices=[...this.services],this.filteredSpecialists=[...this.specialists],this.filteredBranches=[...this.branches]},handleServiceChange(e){e?(this.selectedService=this.services.find(s=&gt;s.id==e),this.selectedService&amp;&amp;(this.examinationArea=this.selectedService.examination_zone,this.applyAllFilters())):this.resetService()},handleSpecialistChange(e){e?(this.selectedSpecialist=this.specialists.find(s=&gt;s.id==e),this.applyAllFilters()):this.resetSpecialist()},handleBranchChange(e){e?(this.selectedBranch=this.branches.find(s=&gt;s.id==e),this.applyAllFilters()):this.resetBranch()},resetService(){this.selectedService=null,this.examinationArea=null,this.filteredServices=this.services,this.applyAllFilters()},resetSpecialist(){this.selectedSpecialist=null,this.filteredSpecialists=this.specialists,this.applyAllFilters()},resetBranch(){this.selectedBranch=null,this.filteredBranches=this.branches,this.applyAllFilters()}}))}addEventListeners(){this.form.addEventListener("error",t=&gt;{t.detail.errors&amp;&amp;this.errorFormatter.drawErrors(t.detail.errors)}),this.form.addEventListener("valid",async t=&gt;{const e=await t.detail.response.json();this.errorFormatter.clearErrors();const s=this.form.closest(".appointment-modal");s&amp;&amp;(s.innerHTML="");const i=document.createElement("p");i.className="text-center",i.textContent=e.message,s.appendChild(i)})}}export{A};
</pre></body></html>