import{f as p}from"./index-a4e39586.js";import{F as f}from"./form-handler-d276c37d.js";import{g as b}from"./request-a636442b.js";import{D as c}from"./drb-confirm-helpers-15e164fa.js";import{D as C}from"./drb-dialog-helpers-eb8a8feb.js";import{a as u}from"./v2-alert-pink-5610c78e.js";import{c as w}from"./v2-confirm-calendar-33acb4d5.js";import{c as y}from"./check-verified-654e50fe.js";const v=` `,_={init(){this.bindListeners()},bindListeners(){document.addEventListener("drb-dialog-content-updated",n=>{const e=n.target.closest("drb-dialog#schedule-meeting"),t=e==null?void 0:e.querySelector("form");t&&setTimeout(()=>{this.initDatePicker(t),this.initForm(t),this.setDefaultTimeValues(t),this.bindGoogleCalendarAvailability(t)},0)}),document.addEventListener("click",n=>{const e=n.target.closest("[data-open-schedule-meeting-dialog]"),t=e==null?void 0:e.getAttribute("data-open-schedule-meeting-dialog"),a=e==null?void 0:e.getAttribute("data-engagement-meeting-id");t&&this.openScheduleDialog(new URL(t,window.location.origin),a)}),document.addEventListener("click",n=>{const e=n.target.closest("[data-cancel-scheduled-meeting]"),t=e==null?void 0:e.getAttribute("data-cancel-scheduled-meeting");t&&this.openCancelMeetingDialog(t)})},initForm(n){n.formHandler=new f(n,{defaultServerErrorMsg:"Failed to schedule meeting",onlyAllowSubmitIfDirty:n.hasAttribute("data-is-editing"),transformData:e=>({engagement_meeting:e}),onSuccess:async e=>{const{engagement_meeting:{add_to_calendar_links:t}}=await e.json(),a={google:"Add to Google",outlook:"Add to Outlook",ical:"Add to Calendar"},r=t.map(({calendar:o,url:s,ics:l})=>` Add to Calendar: ${o} `).join(""),i=n.closest("drb-dialog");i==null||i.close(),c.open({id:"schedule-meeting-success",allowLightDismiss:!0,centered:!0,cancelText:"",confirmText:"",iconHtml:w,title:"Your meeting has been scheduled.",message:`
Add to Calendar
${r}
`})}})},setDefaultTimeValues(n){const e=n.querySelector("[data-schedule-meeting-start-time]"),t=n.querySelector("[data-schedule-meeting-timezone]");if(e&&!e.value){const a=e.querySelector("drb-option:not([disabled])");e.value=(a==null?void 0:a.value)||""}if(t&&!t.value){const a=Intl.DateTimeFormat().resolvedOptions().timeZone,r=-new Date().getTimezoneOffset(),i=t.querySelector(`drb-option[value="${a}"]`)||t.querySelector(`drb-option[data-timezone-offset="${r}"]`);t.value=(i==null?void 0:i.value)||"America/New_York"}},initDatePicker(n){var a;const e=n==null?void 0:n.querySelector("[data-schedule-meeting-date-picker]"),t=((a=e==null?void 0:e.getAttribute("data-available-days"))==null?void 0:a.split("|"))||[];e&&(e.value&&!t.includes(e.value)&&t.push(e.value),p(e,{altInput:!0,allowInput:!0,static:!0,defaultDate:e.value||t[0],enable:t.map(r=>{const[i,o,s]=r.split("-").map(Number);return new Date(s,o-1,i)}),minDate:"today",dateFormat:"d-m-Y",altFormat:"l, M j",onReady:(r,i,o)=>{o.input.nextElementSibling.setAttribute("data-pristine-required-message",o.input.getAttribute("data-pristine-required-message"))}}))},openScheduleDialog(n,e){const t=Intl.DateTimeFormat().resolvedOptions().timeZone;n.searchParams.set("timezone",t),e&&n.searchParams.set("engagement_meeting_id",e),C.openRemote({url:n.toString(),dialogId:"schedule-meeting",shouldReload:!0})},openCancelMeetingDialog(n){c.open({id:"cancel-scheduled-meeting",allowLightDismiss:!0,centered:!0,cancelText:"Back",confirmText:"Cancel Meeting",iconHtml:v,title:"Are you sure?",message:"This meeting will be canceled.",onConfirm:async()=>{try{if(!(await fetch(n,{method:"DELETE",headers:{"X-Requested-With":"XMLHttpRequest","X-CSRF-Token":b()}})).ok)throw new Error("Error cancelling meeting");c.open({title:"Meeting has been canceled",iconHtml:y,allowLightDismiss:!0,centered:!0,cancelText:"Close",confirmText:""})}catch(e){console.error(e),c.open({title:"Error cancelling meeting",message:"Please try again later.",iconHtml:u,allowLightDismiss:!0,centered:!0,cancelText:"Close",confirmText:""})}return!0}})},bindGoogleCalendarAvailability(n){const e=n.querySelector("[data-schedule-meeting-start-time]");if(!e)return;const t=a=>{e.toggleAttribute("disabled",a),e.toggleAttribute("data-loading",a)};n.addEventListener("change",async a=>{const r=a.target.matches("[data-schedule-meeting-timezone]"),i=a.target.matches("[data-schedule-meeting-date-picker]"),o=a.target.matches("[data-schedule-meeting-length]");if(!r&&!i&&!o)return;const{engagement_meeting:{engagement_id:s,scheduled_date:l,scheduled_time_zone:g,meeting_length:h}}=n.formHandler.getPayloadData();t(!0);const m=await this.fetchAvailableStartTimeOptions(s,l,h,g);if(!m)return;t(!1),e.innerHTML=m;const d=e.querySelector("drb-option:not([disabled])");e.value=(d==null?void 0:d.value)||""})},async fetchAvailableStartTimeOptions(n,e,t,a){if(!n||!e||!t||!a)return null;const r="Error fetching user availability.";try{const i=new URL(`/engagements/${n}/meeting_availability`,window.location.origin);i.searchParams.set("date",e),i.searchParams.set("timezone",a),i.searchParams.set("meeting_length",t);const o=await fetch(i),s=await o.text();if(!o.ok){let l;throw o.status===422&&(l=s),new Error(l||r)}return s}catch(i){return console.error(i),c.open({title:i,message:"Please try again later.",iconHtml:u,allowLightDismiss:!0,centered:!0,cancelText:"Close",confirmText:""}),null}}};export{_ as S,v as q}; //# sourceMappingURL=schedule-meeting-dialog-2d6c0307.js.map