{"version":3,"sources":["attractionSearchbox.js"],"names":["AttractionSearchBox","_createClass","t","options","arguments","length","undefined","_classCallCheck","this","specificProductId","target","querySelector","productSelect","departureOptions","productOptions","submit","bind","key","value","form","addEventListener","querySelectorAll","dateValues","searchBoxes","dateTimes","getValues","getDateTimeContainer","Promise","resolve","productId","createPayload","passengerTypes","parseInt","outboundHour","hours","departureId","call","element","outboundDate","date","dataset","id","infantId","_document$querySelect","adultIds","_document$querySelect2","document","infantAmount","passengers","getSelectedForTypeId","adultAmount","getSelectedForTypeArrayId","split","map","passengerType","reduce","ValidateInfant","errors","b","message","infantValidationMessage","push","parsedDate","outbound","isBefore","moment","_this","search","ValidatePayload","payload","then","ShowErrors","area","innerText","error","style","display","innerHTML","forEach","event","appendChild","localStorage","JSON","stringify","currentSearchType","_this2","searchPayload","preventDefault","uri","Utilities","ShowLoader","response","json","products","_this3","selectedId","filter","x","Id","get","fetch","Name","bindProducts","bindList","_this4","locations","keyValues","data","formWrappers","_this5","bindDepartureLocations","LocationId","destinationId","selectedDepartureId","_this6","filtered","refreshDepartureOptions","_","departurePoints","LargeSelectList","productLargeSelect","_this7","loadProducts","departurePointLargeSelect","departurePointId","concat","toISOString","preferredDateTime","_this8","setDateTime","_this9","all","departurePointSelect","renderDateTimePicker","loadPreferredDate","LargeSelectPax","remove","SearchBoxValidationCallback","addListener","paxSelect","buildUnixString","model","outboundMinute","d","CheckValidation","datePicker","container","timePicker","LargeSelectDate","closest","LargeSelectTime","bookNowProductSearch","Initialise"],"mappings":"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","file":"attractionSearchbox.js","sourcesContent":["const AttractionSearchBox = class {\n constructor(t, options = {}) {\n options = options || {};\n this.specificProductId = options.specificProductId;\n\n this.target = t;\n this.form = this.target.querySelector(\"form\");\n \n this.productLargeSelect = this.target.querySelector(\"[data-attraction-filter=products] [data-select-type=list]\");\n this.productOptions = [];\n this.productSelect = {};\n\n this.departurePointLargeSelect = this.target.querySelector(\"[data-attraction-filter=departurePoints] [data-select-type=list]\");\n this.departureOptions = [];\n\n this.form.addEventListener('submit', this.submit.bind(this));\n }\n\n createPayload() {\n let passengerTypes = this.target.querySelectorAll('[name=passengerType]');\n let dateValues = searchBoxes.dateTimes.getValues(this.getDateTimeContainer());\n\n return Promise.resolve({\n productId: parseInt(this.form.productId.value),\n departureId: parseInt(this.form.departureId.value),\n outboundDate: dateValues.date,\n outboundHour: dateValues.hours,\n outboundMinute: dateValues.minutes,\n passengers: [].filter.call(passengerTypes, (element) => element.value !== \"0\")\n .map(element => ({ id: element.dataset.id, value: element.value }))\n });\n }\n \n ValidateInfant(errors) {\n const infantId = document.querySelector(\"[data-infant-id]\")?.dataset.infantId;\n const adultIds = document.querySelector(\"[data-adult-ids]\")?.dataset.adultIds;\n \n if (!infantId || !adultIds) {\n return;\n }\n \n const infantAmount = searchBoxes.passengers.getSelectedForTypeId(this.form, infantId).value;\n const adultAmount = searchBoxes.passengers.getSelectedForTypeArrayId(this.form, adultIds.split(','))\n .map(passengerType => passengerType.value)\n .reduce((a, b) => parseInt(a) + parseInt(b), 0);\n\n if (infantAmount > 0 && adultAmount <= 0){\n const message = this.form.dataset.infantValidationMessage;\n errors.push(message);\n }\n }\n\n ValidatePayload(search) {\n let errors = [];\n\n this.ValidateInfant(errors);\n\n let outbound = searchBoxes.dateTimes.getValues(this.getDateTimeContainer()).parsedDate();\n\n if (!outbound) {\n errors.push(\"The departure date is invalid\");\n } else if (outbound.isBefore(new moment())) {\n errors.push(\"The outbound date cannot be before today's date.\");\n }\n\n if (!search.passengers.length) {\n errors.push(\"Please select at least 1 passenger.\");\n }\n\n return errors;\n }\n\n CheckValidation() {\n this.createPayload()\n .then(payload => this.ValidatePayload(payload))\n .then(errors => this.ShowErrors(errors));\n }\n\n ShowErrors(errors) {\n let area = this.target.querySelector(\".search-form__validation-area\");\n\n area.innerHTML = \"\";\n errors.forEach(error => {\n let message = document.createElement(\"p\");\n message.innerText = error;\n area.appendChild(message);\n });\n\n area.style.display = area.innerHTML === \"\" ? \"none\" : \"block\";\n\n return errors;\n }\n\n submit() {\n event.preventDefault();\n\n this.createPayload()\n .then(payload => {\n localStorage.currentSearch = JSON.stringify(payload);\n localStorage.currentSearchType = \"attractionresults\";\n\n this.form.searchPayload.value = JSON.stringify(payload);\n\n return payload;\n })\n .then(payload => this.ValidatePayload(payload))\n .then(errors => this.ShowErrors(errors))\n .then(errors => {\n if (!errors.length) {\n Utilities.ShowLoader();\n this.form.submit();\n }\n });\n }\n\n get(uri) {\n return window.fetch(uri)\n .then(response => response.json());\n }\n\n bindProducts(products, selectedId = 0) {\n return Promise.resolve(typeof selectedId === \"undefined\" ? parseInt(this.form.productId.value) : selectedId)\n .then(id => products.filter(x => x.Id == id).length ? id : products.length ? products[0].Id : 0)\n .then(id => {\n return {\n keyValues: products.map(x => {\n return {\n key: x.Id,\n value: x.Name\n };\n }),\n selectedId: id\n };\n })\n .then(data => searchBoxes.formWrappers.bindList(this.form.productId, data.keyValues, data.selectedId));\n }\n\n bindDepartureLocations(locations, selectedId = 0) {\n return Promise.resolve(typeof selectedId === \"undefined\" ? parseInt(this.form.departureId.value) : selectedId)\n .then(id => locations.filter(x => x.Id == id).length ? id : locations.length ? locations[0].Id : 0)\n .then(id => {\n return {\n keyValues: locations.map(x => {\n return {\n key: x.Id,\n value: x.Name\n };\n }),\n selectedId: id\n };\n })\n .then(data => searchBoxes.formWrappers.bindList(this.form.departureId, data.keyValues, data.selectedId));\n }\n\n refreshDepartureOptions(selectedDepartureId = 0) {\n return Promise.resolve(parseInt(this.form.productId.value))\n .then(productId => this.productOptions.filter(x => x.Id == productId)[0].LocationId)\n .then(destinationId => this.departurePoints.filter(x => x.Id != destinationId))\n .then(locations => this.bindDepartureLocations(locations, selectedDepartureId));\n }\n\n loadProducts() {\n return this.get(\"/api/data/Products\")\n .then(products => {\n if (this.specificProductId) {\n var filtered = products.filter(x => x.Id == this.specificProductId);\n\n if (filtered.length == 1) {\n return filtered;\n }\n }\n\n return products;\n })\n .then(products => {\n this.productOptions = products;\n\n return this.bindProducts(products)\n .then(_ => {\n if (products.length == 1) {\n this.form.productId.disabled = true;\n this.productLargeSelect.querySelector(\".large-select__icon\").style.display = \"none\";\n this.productLargeSelect.querySelector(\".large-select__value\").innerHTML =\n products[0].Name;\n } else {\n this.productSelect = new LargeSelectList(this.productLargeSelect);\n }\n });\n });\n }\n\n loadDeparturePoints() {\n return this.get(\"/api/data/departurepoints\")\n .then(data => {\n this.departurePoints = data;\n\n return this.bindDepartureLocations(data)\n .then(_ => {\n this.departurePointSelect = new LargeSelectList(this.departurePointLargeSelect);\n });\n });\n }\n\n getDateTimeContainer() {\n return this.form.querySelector(\"[data-attraction-filter=travelDate]\");\n }\n\n loadPreferredDate() {\n var productId = parseInt(this.form.productId.value);\n var departurePointId = parseInt(this.form.departureId.value);\n\n var date = searchBoxes.dateTimes.getValues(this.getDateTimeContainer()).parsedDate() || new moment();\n\n return this.get(`/api/data/ProductDefaultDate?productId=${productId}&departurePointId=${departurePointId}&selectedDateTime=${date.toISOString()}`)\n .then(preferredDateTime => {\n if (preferredDateTime) {\n this.setDateTime(preferredDateTime);\n }\n });\n }\n\n Initialise() {\n return Promise.all([\n this.loadProducts(),\n this.loadDeparturePoints()\n ])\n .then(_ => this.refreshDepartureOptions())\n .then(_ => {\n this.renderDateTimePicker(this.getDateTimeContainer());\n\n return this.loadPreferredDate();\n })\n .then(_ => {\n this.paxSelect = new LargeSelectPax(this.target.querySelector(\"[data-attraction-filter=pax] [data-select-type=pax]\"));\n\n this.target.querySelector('[data-loader]').remove();\n this.target.querySelector('form').style.display = '';\n\n this.form.productId.addEventListener('change',\n () => {\n this.refreshDepartureOptions()\n .then(_ => this.loadPreferredDate());\n });\n this.form.departureId.addEventListener('change',\n () => {\n this.loadPreferredDate();\n });\n this.form.outboundDate.addEventListener('change', () => {\n this.loadPreferredDate();\n });\n\n SearchBoxValidationCallback.addListener(\"Product\",\n () => {\n this.CheckValidation();\n });\n });\n }\n\n bind(model) {\n return this.bindProducts(this.productOptions, model.productId)\n .then(_ => this.refreshDepartureOptions(model.departureId))\n .then(_ => this.setDateTime(searchBoxes.dateTimes.buildUnixString(model.outboundDate, model.outboundHour, model.outboundMinute)))\n .then(_ => searchBoxes.passengers.setSelected(this.form, model.passengers));\n }\n\n setDateTime(d) {\n if (typeof d === 'undefined') {\n d = new Date();\n }\n\n searchBoxes.dateTimes.setDateTime(this.getDateTimeContainer(), new moment(d));\n }\n\n renderDateTimePicker(container) {\n let datePicker = container.querySelector(\"[data-select-type='datetime-date']\");\n let timePicker = container.querySelector(\"[data-select-type='datetime-time']\");\n\n return [\n new LargeSelectDate(datePicker, datePicker.closest('.date-time-picker')),\n new LargeSelectTime(timePicker, timePicker.closest('.date-time-picker'))\n ];\n }\n};\n\nfunction bookNowProductSearch(target, productId) {\n let searchBox = new AttractionSearchBox(target,\n {\n specificProductId: productId\n });\n return searchBox.Initialise();\n}\n"]}