{"version":3,"sources":["jsdelivr-header.js","/npm/skipper-organisms@1.0.1/dist/accommodation-search-form.es.js"],"names":[],"mappings":"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","file":"/npm/skipper-organisms@1.0.1/dist/accommodation-search-form.es.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.37.0.\n * Original file: /npm/skipper-organisms@1.0.1/dist/accommodation-search-form.es.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","var accommodationSearchForm = \"\";\nconst extend = function(to, from, overwrite) {\n  let prop, hasProp;\n  for (prop in from) {\n    hasProp = to[prop] !== void 0;\n    if (hasProp && typeof from[prop] === \"object\" && from[prop] !== null && from[prop].nodeName === void 0) {\n      if (isDate(from[prop])) {\n        if (overwrite) {\n          to[prop] = new Date(from[prop].getTime());\n        }\n      } else if (Array.isArray(from[prop])) {\n        if (overwrite) {\n          to[prop] = from[prop].slice(0);\n        }\n      } else {\n        to[prop] = extend({}, from[prop], overwrite);\n      }\n    } else if (overwrite || !hasProp) {\n      to[prop] = from[prop];\n    }\n  }\n  return to;\n};\nconst isDate = function(obj) {\n  return /Date/.test(Object.prototype.toString.call(obj)) && !isNaN(obj.getTime());\n};\nconst defaults = {\n  blockId: \"\",\n  blockClass: \"\",\n  accommodations: [],\n  checkIn: null,\n  checkOut: null,\n  rooms: 1,\n  promoCode: null,\n  maxRoom: 10,\n  maxGuest: 10,\n  showAccommodations: true,\n  showDatesLabel: true,\n  showPromocode: true,\n  monthsShort: [\n    \"Jan\",\n    \"Feb\",\n    \"Mar\",\n    \"Apr\",\n    \"May\",\n    \"Jun\",\n    \"Jul\",\n    \"Aug\",\n    \"Sep\",\n    \"Oct\",\n    \"Nov\",\n    \"Dec\"\n  ],\n  hotelErrorMsg: \"Please select a hotel\"\n};\nconst renderHotels = (hotels) => {\n  let optEle = \"\";\n  hotels.forEach((hotel) => {\n    optEle += `<div class=\"option\">\n                        <input type=\"radio\" class=\"radio\" id=\"${hotel}\" value=\"${hotel}\" name=\"hotel\"/>\n                        <label for=\"${hotel}\">${hotel}</label>\n                    </div>`;\n  });\n  return `\n    <div class=\"md:pr-4\" id=\"hotel-selector\">\n        <label class=\"form_label sm:hidden\" for=\"hotel-selector\" > Select Hotel </label>\n        <div class=\"select-box hotel\">\n            <div class=\"options-container\">\n                ${optEle}\n            </div>\n            <div class=\"selected\">Select Hotel</div>\n        </div>\n        <div class=\"sm:px-4 error-msg\" id=\"hotel-error\"></div>\n    </div>`;\n};\nconst renderDate = (type, options) => {\n  let dateString = \"\", dateValue = \"\";\n  if (type === \"check-in\") {\n    dateValue = options.checkIn.getDate() + ` ${options.monthsShort[options.checkIn.getMonth()]}`;\n    dateString = options.checkIn.getDate() + ` <small>${options.monthsShort[options.checkIn.getMonth()]}</small>`;\n  } else if (type === \"check-out\") {\n    dateValue = options.checkOut.getDate() + ` ${options.monthsShort[options.checkOut.getMonth()]}`;\n    dateString = options.checkOut.getDate() + ` <small>${options.monthsShort[options.checkOut.getMonth()]}</small>`;\n  }\n  let valEle = \"\";\n  if (options.showDatesLabel) {\n    valEle = `<input type=\"text\" class=\"hidden\" name=\"${type}\" id=\"datepicker-${type}\" value=\"${dateValue}\"/>\n                <label class=\"datepicker text-center\" for=\"datepicker-${type}\" id=\"datepicker-${type}-label\">${dateString}</label>`;\n  } else {\n    valEle = `<input type=\"text\" class=\"\" name=\"${type}\" id=\"datepicker-${type}\" value=\"${dateValue}\"/>`;\n  }\n  return `\n    <div class=\"px-2 md:px-4 sm:py-2 sm:flex sm:justify-between sm:items-center sm:border-t${type === \"check-in\" ? \"-r\" : \"\"}\" >\n        <label class=\"form_label text-center\">${type === \"check-in\" ? \"Check In\" : type === \"check-out\" ? \"Check Out\" : \"\"}</label>\n        ${valEle}\n    </div>`;\n};\nconst renderRooms = (opts) => {\n  let roomsEle = \"\";\n  for (let i = 1; i <= opts.maxRoom; i++) {\n    roomsEle += `\n        <div class=\"option\"> \n            <input type=\"radio\" class=\"radio\" id=\"rooms_${i}\" value=\"${i}\" name=\"rooms\" checked /> \n            <label for=\"rooms_${i}\">${i}</label> \n        </div>`;\n  }\n  return `\n    <div class=\"sm:grid px-2 md:px-4 sm:border-t-r\" id=\"rooms-selector\" >\n        <label class=\"form_label sm:text-center\" for=\"rooms-selector\" > Rooms </label>\n        <div class=\"select-box\">\n            <div class=\"options-container\">\n                ${roomsEle}                \n            </div>\n            <div class=\"selected sm:w-10 sm:mx-auto\">1</div>\n        </div>\n    </div>`;\n};\nconst renderGuest = (opts) => {\n  let guestEle = \"\";\n  for (let i = 1; i <= opts.maxGuest; i++) {\n    guestEle += `\n        <div class=\"option\"> \n            <input type=\"radio\" class=\"radio\" id=\"guests_${i}\" value=\"${i}\" name=\"guests\" checked /> \n            <label for=\"guests_${i}\">${i}</label> \n        </div>`;\n  }\n  return `\n    <div class=\"sm:grid px-2 md:px-4 sm:border-t\" id=\"guests-selector\" >\n        <label class=\"form_label sm:text-center\" for=\"guests-selector\" > Guests </label>\n        <div class=\"select-box\">\n            <div class=\"options-container sm:w-10\">\n            ${guestEle}\n            </div>\n            <div class=\"selected sm:w-10 sm:mx-auto\">1</div>\n        </div> \n    </div>\n        `;\n};\nconst renderPromoCode = () => {\n  return `\n    <div class=\"px-4 sm:py-5 sm:flex sm:border-t\">\n        <label class=\"form_label\" for=\"promo-code\" >Promo Code</label >\n        <input type=\"text\" class=\"promo-code\" name=\"promo-code\" id=\"promo-code\"/>\n    </div>`;\n};\nconst renderButtn = () => {\n  return `\n    <button type=\"submit\" class=\"submit_button\">\n        Book Now\n    </button>`;\n};\nlet AccomodationForm = function(options) {\n  let self = this;\n  self.config(options);\n  if (self._o.el) {\n    let logSubmit = function(event) {\n      event.preventDefault();\n      let errorMessage = \"\";\n      let hotel = \"\";\n      const hotelSelector = form.querySelector(\"#hotel-selector\").querySelector('input[type=\"radio\"]:checked');\n      if (!hotelSelector) {\n        errorMessage += \"Please select a hotel.\\n\";\n        self._o.hotelErrorMsg = \"Please select a hotel to continue\";\n      } else {\n        hotel = hotelSelector.value;\n        self._o.hotelErrorMsg = \"\";\n      }\n      const checkIn = form.elements[\"check-in\"].value;\n      const checkOut = form.elements[\"check-out\"].value;\n      const rooms = form.querySelector(\"#rooms-selector\").querySelector('input[type=\"radio\"]:checked').value;\n      const guests = form.querySelector(\"#guests-selector\").querySelector('input[type=\"radio\"]:checked').value;\n      const promoCode = form.elements[\"promo-code\"].value;\n      const formData = {\n        hotel,\n        checkIn,\n        checkOut,\n        rooms,\n        guests,\n        promoCode\n      };\n      var event = new CustomEvent(\"accommodation-search-form-submitted\", {\n        detail: formData\n      });\n      self.showError();\n      if (!errorMessage.length > 0) {\n        document.dispatchEvent(event);\n      }\n    };\n    self.render();\n    const closeBtn = document.querySelector(\"#btn-close\");\n    closeBtn.addEventListener(\"click\", () => {\n      self.close();\n    });\n    const selected = document.querySelectorAll(\".selected\");\n    selected.forEach((item) => {\n      const optionsContainer = item.parentElement.querySelector(\".options-container\");\n      const optionList = optionsContainer.querySelectorAll(\".option\");\n      item.addEventListener(\"click\", () => {\n        optionsContainer.classList.toggle(\"active\");\n        document.addEventListener(\"mousedown\", function(e) {\n          if (!e.composedPath().includes(optionsContainer)) {\n            optionsContainer.classList.remove(\"active\");\n          }\n        });\n      });\n      optionList.forEach((o) => {\n        o.addEventListener(\"click\", () => {\n          item.innerHTML = o.querySelector(\"label\").innerHTML;\n          optionsContainer.classList.remove(\"active\");\n        });\n      });\n    });\n    const form = document.getElementById(\"accommodations\");\n    form.addEventListener(\"submit\", logSubmit);\n  }\n};\nAccomodationForm.prototype = {\n  config: function(options) {\n    if (!this._o) {\n      this._o = extend({}, defaults, true);\n    }\n    let opts = extend(this._o, options, true);\n    if (opts.blockId) {\n      opts.el = document.getElementById(this._o.blockId);\n    } else if (opts.blockClass) {\n      opts.el = document.getElementsByClassName(this._o.blockClass);\n    }\n    opts.checkIn = new Date();\n    opts.checkIn.setDate(opts.checkIn.getDate() + 1);\n    opts.checkOut = new Date();\n    opts.checkOut.setDate(opts.checkOut.getDate() + 2);\n    return opts;\n  },\n  render: function() {\n    this._o.el.classList.add(\"form_container\");\n    let hotelsEle = \"\";\n    if (this._o.accommodations.length > 0 && this._o.showAccommodations) {\n      hotelsEle = renderHotels(this._o.accommodations);\n    }\n    let checkInEle = renderDate(\"check-in\", this._o);\n    let checkOutEle = renderDate(\"check-out\", this._o);\n    this._o.el.innerHTML = `\n        <div class=\"md:hidden sm:flex sm:flex-row-reverse\">\n            <button id=\"btn-close\" class=\"btn-close bg-white border-0\">\n            <svg fill=\"none\" stroke=\"#000\" width=\"1.5rem\" height=\"1.5rem\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"3\" d=\"M6 18L18 6M6 6l12 12\"></path></svg>\n            </button>\n        </div>\n        <form class=\"booking_form sm:border\" id=\"accommodations\">\n            ${hotelsEle}\n            <div class=\"grid grid-cols-2\">\n                ${checkInEle}\n                ${checkOutEle}\n                <div class=\"date-ranger\" id=\"calendar-component\" style=\"grid-column: span 2 / span 2;\">\n                </div>\n            </div>\n            <div class=\"grid grid-cols-2\">\n                ${renderRooms(this._o)}\n                ${renderGuest(this._o)}\n            </div>\n            ${this._o.showPromocode ? renderPromoCode() : \"\"}\n            ${renderButtn()}\n        </form>\n        `;\n    this._o.el.classList.add(\"sm:hidden\");\n    let btn = document.createElement(\"button\");\n    btn.innerHTML = \"Book Now\";\n    btn.type = \"button\";\n    btn.id = \"btn-mobile-book-now\";\n    btn.className = \"mobile_submit_button\";\n    btn.addEventListener(\"click\", () => {\n      btn.classList.add(\"!z-1\");\n      this._o.el.classList.remove(\"sm:hidden\");\n    });\n    if (this._o.el.nextSibling) {\n      this._o.el.parentNode.insertBefore(btn, this._o.el.nextSibling);\n    } else {\n      this._o.el.parentNode.appendChild(btn);\n    }\n  },\n  showError: function() {\n    const error = document.querySelector(`#hotel-error`);\n    error.innerHTML = this._o.hotelErrorMsg;\n  },\n  close: function() {\n    this._o.el.classList.add(\"sm:hidden\");\n    this._o.el.parentNode.querySelector(\"#btn-mobile-book-now\").classList.remove(\"!z-1\");\n  }\n};\nexport { AccomodationForm };\n"]}