{"version":3,"sources":["block-book-now.js"],"names":["BlockBookNow","constructor","container","options","this","Object","assign","bookNowButton","datepicker","bookingLinkDefault","bookingLinkWithVenue","urlFormat","document","querySelector","datePicker","selectedDate","initDatePicker","setEvents","addEventListener","openBlockBookNowPage","bind","venue","getVenue","venueId","dataset","venueName","innerText","date","let","parameters","bookLinkPrefix","bookLinkTarget","bookLink","year","month","day","url","urlTarget","dstapiVenue","window","open","focus","flatpickr","minDate","dateFormat","disableMobile","locale","firstDayOfWeek","onOpen","querySelectorAll","forEach","innerHTML","trim","slice","onChange","dateObj","dateStr","dateArr","replaceAll","split","monthStr","indexOf","venueBook"],"mappings":"qBAAqBA,aACjBC,YAAYC,EAAWC,GAQnBC,KAAKD,QAAUE,OAAOC,OAAO,GAPN,CACnBC,cAAe,sBACfC,WAAY,aACZC,mBAAoB,GACpBC,qBAAsB,GACtBC,UAAW,SACf,EACiDR,CAAO,EACxDC,KAAKF,UAAYU,SAASC,cAAcX,CAAS,EACjDE,KAAKG,cAAgBH,KAAKF,UAAUW,cAAcT,KAAKD,QAAQI,aAAa,EAC5EH,KAAKU,WAAaV,KAAKF,UAAUW,cAAcT,KAAKD,QAAQK,UAAU,EACtEJ,KAAKW,aAAe,KAEpBX,KAAKK,mBAAqBN,EAAQM,mBAClCL,KAAKM,qBAAuBP,EAAQO,qBAEpCN,KAAKY,eAAe,EACpBZ,KAAKa,UAAU,CACnB,CAEAA,YACIb,KAAKG,cAAcW,iBAAiB,QAASd,KAAKe,qBAAqBC,KAAKhB,IAAI,CAAC,CACrF,CAEAe,uBACI,IAAME,EAAQjB,KAAKkB,SAAS,EACtBC,EAAUF,EAAMG,QAAQH,MACxBI,EAAYJ,EAAMR,cAAc,aAAa,EAAEa,UAC/CC,EAAOvB,KAAKW,aAElB,GAAe,OAAZQ,GAAgC,KAAZA,EAAvB,CAIAK,IAAIC,EAAa,GACbC,EAAiB1B,KAAKK,mBACtBsB,EAAiB,SAyBjBC,GAxB0B,QAA3B5B,KAAKD,QAAQQ,UACI,OAAZY,GAAgC,KAAZA,IACpBO,EAAoB1B,KAAKM,qBAAR,IAAgCa,IAIrC,OAAZA,GAAgC,KAAZA,IACpBO,EAAiB1B,KAAKM,qBACtBmB,GAAc,SAASN,GAEf,OAATI,IACmB,KAAfE,IACCA,GAAc,KAElBA,WAAsBF,EAAKM,cAAcN,EAAKO,aAAaP,EAAKQ,KAEvB,KAAA,IAAnC/B,KAAKG,cAAciB,QAAQY,KAA0D,KAAnChC,KAAKG,cAAciB,QAAQY,MACnFN,EAAiB1B,KAAKG,cAAciB,QAAQY,KAEG,KAAA,IAAzChC,KAAKG,cAAciB,QAAQa,WAAsE,KAAzCjC,KAAKG,cAAciB,QAAQa,YACzFN,EAAiB3B,KAAKG,cAAciB,QAAQa,YAIrCP,GACG,KAAfD,IACCG,EAAWF,EAAiB,IAAMD,GAGtCzB,KAAKG,cAAciB,QAAQc,YAAcb,EAEzCc,OAAOC,KAAKR,EAAUD,CAAc,EAAEU,MAAM,CApC5C,CAqCJ,CAEAzB,iBACI0B,UAAUtC,KAAKU,WAAY,CACvB6B,QAAS,QACTC,WAAY,WACZC,cAAe,CAAA,EACfC,OAAQ,CACJC,eAAgB,CACpB,EACAC,OAAQ,KACmBpC,SAASqC,iBAAiB,oBAAoB,EACpDC,QAAQf,IACrBA,EAAIgB,UAAYhB,EAAIgB,UAAUC,KAAK,EAAEC,MAAM,EAAG,CAAC,CACnD,CAAC,CACL,EACAC,SAAU,CAACC,EAASC,KAChB,IAAMC,EAAUD,EAAQE,WAAW,IAAK,EAAE,EAAEC,MAAM,GAAG,EAC/CC,EAAY,uCAAuCC,QAAQJ,EAAQ,EAAE,EAAI,EAAI,EAE7EK,EAAY,CACd7B,KAAMwB,EAAQ,GACdvB,MAAO0B,EACPzB,IAAKsB,EAAQ,EACjB,EAEArD,KAAKW,aAAe+C,CACxB,CACJ,CAAC,CACL,CAEAxC,WACI,OAAOlB,KAAKF,UAAUW,cAAc,eAAe,CACvD,CACJ","file":"block-book-now.min.js","sourcesContent":["export default class BlockBookNow {\r\n constructor(container, options) {\r\n const defaultOptions = {\r\n bookNowButton: '.btn-block-book-now',\r\n datepicker: '.flatpickr',\r\n bookingLinkDefault: '',\r\n bookingLinkWithVenue: '',\r\n urlFormat: 'default'\r\n };\r\n this.options = Object.assign({}, defaultOptions, options);\r\n this.container = document.querySelector(container);\r\n this.bookNowButton = this.container.querySelector(this.options.bookNowButton);\r\n this.datePicker = this.container.querySelector(this.options.datepicker);\r\n this.selectedDate = null;\r\n\r\n this.bookingLinkDefault = options.bookingLinkDefault;\r\n this.bookingLinkWithVenue = options.bookingLinkWithVenue;\r\n\r\n this.initDatePicker();\r\n this.setEvents();\r\n }\r\n\r\n setEvents() {\r\n this.bookNowButton.addEventListener('click', this.openBlockBookNowPage.bind(this));\r\n }\r\n\r\n openBlockBookNowPage() {\r\n const venue = this.getVenue();\r\n const venueId = venue.dataset.venue; \r\n const venueName = venue.querySelector(\".input-text\").innerText;\r\n const date = this.selectedDate;\r\n \r\n if(venueId === null || venueId === '') {\r\n return;\r\n }\r\n\r\n let parameters = '';\r\n let bookLinkPrefix = this.bookingLinkDefault;\r\n let bookLinkTarget = '_blank';\r\n if(this.options.urlFormat === 'PNL') {\r\n if (venueId !== null && venueId !== '') {\r\n bookLinkPrefix = `${this.bookingLinkWithVenue}/${venueId}`;\r\n }\r\n }\r\n else {\r\n if (venueId !== null && venueId !== '') {\r\n bookLinkPrefix = this.bookingLinkWithVenue;\r\n parameters += `venue=${venueId}`;\r\n }\r\n if(date !== null) {\r\n if(parameters !== '') {\r\n parameters += '&';\r\n }\r\n parameters += `year=${date.year}&month=${date.month}&day=${date.day}`;\r\n }\r\n if(typeof this.bookNowButton.dataset.url !== 'undefined' && this.bookNowButton.dataset.url !== '') {\r\n bookLinkPrefix = this.bookNowButton.dataset.url;\r\n }\r\n if(typeof this.bookNowButton.dataset.urlTarget !== 'undefined' && this.bookNowButton.dataset.urlTarget !== '') {\r\n bookLinkTarget = this.bookNowButton.dataset.urlTarget;\r\n }\r\n }\r\n \r\n let bookLink = bookLinkPrefix;\r\n if(parameters !== '') {\r\n bookLink = bookLinkPrefix + '?' + parameters;\r\n }\r\n\r\n this.bookNowButton.dataset.dstapiVenue = venueName;\r\n\r\n window.open(bookLink, bookLinkTarget).focus(); \r\n }\r\n \r\n initDatePicker() {\r\n flatpickr(this.datePicker, {\r\n minDate: \"today\",\r\n dateFormat: \"D, d M Y\",\r\n disableMobile: false,\r\n locale: {\r\n firstDayOfWeek: 1 // start week on monday\r\n },\r\n onOpen: () => {\r\n let flatpickrWeekday = document.querySelectorAll('.flatpickr-weekday')\r\n flatpickrWeekday.forEach(day => {\r\n day.innerHTML = day.innerHTML.trim().slice(0, 1)\r\n });\r\n },\r\n onChange: (dateObj, dateStr) => {\r\n const dateArr = dateStr.replaceAll(',', '').split(' ')\r\n const monthStr = (\"JanFebMarAprMayJunJulAugSepOctNovDec\".indexOf(dateArr[2]) / 3 + 1)\r\n\r\n const venueBook = {\r\n year: dateArr[3],\r\n month: monthStr,\r\n day: dateArr[1]\r\n }\r\n\r\n this.selectedDate = venueBook;\r\n }\r\n })\r\n }\r\n \r\n getVenue() {\r\n return this.container.querySelector('.select-venue');\r\n }\r\n}"]}