{"version":3,"file":"wte-fsd-public.js","mappings":"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","sources":["webpack://wp-travel-engine-trip-fixed-starting-dates/external window [\"wp\",\"domReady\"]","webpack://wp-travel-engine-trip-fixed-starting-dates/external window [\"wp\",\"hooks\"]","webpack://wp-travel-engine-trip-fixed-starting-dates/webpack/bootstrap","webpack://wp-travel-engine-trip-fixed-starting-dates/webpack/runtime/compat get default export","webpack://wp-travel-engine-trip-fixed-starting-dates/webpack/runtime/define property getters","webpack://wp-travel-engine-trip-fixed-starting-dates/webpack/runtime/hasOwnProperty shorthand","webpack://wp-travel-engine-trip-fixed-starting-dates/./src/public/js/index.js"],"sourcesContent":["module.exports = window[\"wp\"][\"domReady\"];","module.exports = window[\"wp\"][\"hooks\"];","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","import { applyFilters } from '@wordpress/hooks';\nimport domReady from '@wordpress/dom-ready';\n\ndomReady(() => {\n // Opens Booking Modal\n const openBookingModal = () => {\n\n let appContainer = document.querySelector('#wptravelengine-trip-booking-modal') ?? null\n if (!appContainer) {\n appContainer = document.createElement('div')\n appContainer.style.display = 'none'\n appContainer.style.height = 0\n appContainer.id = 'wptravelengine-trip-booking-modal'\n document.body.appendChild(appContainer)\n }\n\n document.querySelectorAll('.wte-fsd__booknow-btn').forEach(btn => {\n btn.disabled = false;\n btn.classList.remove('btn-loading');\n\n if (!applyFilters('wptravelengine.tripBookingModal.open', true, { appContainer })) {\n return\n }\n\n // find the parent element which has the data-trip-id attribute\n let parent = btn.parentElement;\n while (parent && !parent.dataset.tripId) {\n parent = parent.parentElement;\n }\n\n btn.addEventListener('click', () => {\n const timestamp = btn.dataset.info;\n const packageId = btn.dataset.packageId;\n const { state, setState } = window?.wptravelengineBooking?.store;\n setTimeout(() => setState({ isOpen: true }));\n setState({\n summary: {\n ...state.summary,\n selectedTripDate: moment(+timestamp * 1000).format('YYYY-MM-DD') ?? null,\n selectedTripPackageID: parseInt(packageId || 0),\n },\n tripID: Number(parent.dataset.tripId) ?? null,\n currentTab: 0,\n isLoading: true\n });\n });\n });\n };\n\n openBookingModal();\n\n // Get fixed departure dates list\n const getDateList = (date, tripId, nonce, isShortcode = false, count, isShowMore = false) => async (el) => {\n const url = wte_fix_date.ajaxurl;\n let parent = el.parentElement\n while (parent && !parent.classList.contains('wte-fsd__container')) {\n parent = parent.parentElement;\n }\n const listWrapper = parent.querySelector('.wte-fsd__availability-list-wrap');\n el.classList.add('btn-loading');\n el.disabled = true;\n parent.classList.add('loading');\n try {\n const response = await fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n body: new URLSearchParams({\n action: isShowMore ? 'load_more_dates' : 'filter_departure_dates',\n date,\n tripID: tripId,\n _nonce: nonce,\n is_singular_trip: tripId,\n is_shortcode: isShortcode,\n count: count || parent.dataset.datesLimit,\n btn_attributes: parent?.dataset?.setAttributes\n }),\n });\n\n const jsonResponse = await response.json();\n\n if (jsonResponse.success && jsonResponse.data?.html) {\n listWrapper.innerHTML = jsonResponse.data.html;\n openBookingModal();\n parent.classList.remove('loading');\n el.classList.remove('btn-loading');\n el.disabled = false;\n if (el.matches('.wte-fsd__availability-show-less')) {\n var screenh = window.innerHeight;\n var toScroll = '' + screenh / 10;\n parent.scrollIntoView(false);\n window.scrollBy(0, toScroll);\n }\n } else {\n console.error('Invalid HTML returned:', jsonResponse);\n }\n } catch (error) {\n console.error('Error:', error);\n }\n };\n\n // Handle tab change\n const handleSelectTab = (parent, tab) => {\n const groupContents = parent.querySelectorAll('[data-tab-of=\"group\"]');\n const privateContents = parent.querySelectorAll('[data-tab-of=\"private\"]');\n groupContents.forEach(content => content.style.display = tab === 'group' ? null : 'none');\n privateContents.forEach(content => content.style.display = tab === 'group' ? 'none' : 'block');\n };\n\n // Handle click on select date\n const fsdButtons = document.querySelectorAll('.wte-fsd__button');\n fsdButtons.forEach(button => {\n button.addEventListener('click', (e) => {\n let parent = e.target.parentElement\n while (parent && !parent.classList.contains('wte-fsd__container')) {\n parent = parent.parentElement;\n }\n const { date, tab } = e.target.dataset;\n const { tripId, nonce, isShortcode } = e.target.parentElement.dataset;\n e.target.parentElement.querySelector('.is-active')?.classList.remove('is-active');\n e.target.classList.add('is-active');\n if (date) getDateList(date, tripId, nonce, isShortcode)(e.target);\n if (tab) handleSelectTab(parent, tab);\n });\n });\n\n // On change fsd select input\n const fsdSelects = document.querySelectorAll('.wte-fsd__date-select');\n if (fsdSelects) {\n fsdSelects.forEach(fsdSelect => {\n fsdSelect.addEventListener('change', (e) => {\n const { tripId, nonce, isShortcode } = e.target.dataset;\n getDateList(e.target.value, tripId, nonce, isShortcode)(fsdSelect);\n });\n });\n }\n\n // Handle click on show more button\n document.addEventListener('click', (e) => {\n const showMoreBtn = e.target.closest('.wte-fsd__availability-show-more');\n const showLessBtn = e.target.closest('.wte-fsd__availability-show-less');\n if (showMoreBtn || showLessBtn) {\n let parent = e.target.parentElement\n while (parent && !parent.classList.contains('wte-fsd__container')) {\n parent = parent.parentElement;\n }\n const tripData = parent.querySelector('.wte-fsd__filter-buttons');\n const activeFilterBtn = tripData.querySelector('.is-active');\n const datesLimit = parseInt(parent.dataset.datesLimit);\n const itemsCount = parseInt(parent.querySelector('.wte-fsd__availability-list').dataset.itemsCount);\n const count = showLessBtn ? itemsCount - datesLimit : itemsCount + datesLimit;\n const date = activeFilterBtn?.dataset.date || '';\n if (tripData) {\n getDateList(date, tripData.dataset.tripId, tripData.dataset.nonce, tripData.dataset.isShortcode, count, true)(e.target);\n } else {\n console.error('No trip data found');\n }\n }\n });\n\n // status dropdown\n const statusDropdownInit = () => {\n tippy(\"[data-tippy-content]\", {\n theme: 'light',\n })\n }\n statusDropdownInit();\n const observer = new MutationObserver(() => {\n statusDropdownInit();\n })\n observer.observe(document.querySelector(\".wte-fsd__container\"), { childList: true, subtree: true });\n})"],"names":["module","exports","window","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","n","getter","__esModule","d","a","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","domReady","openBookingModal","_document$querySelect","appContainer","document","querySelector","createElement","style","display","height","id","body","appendChild","querySelectorAll","forEach","btn","disabled","classList","remove","applyFilters","parent","parentElement","dataset","tripId","addEventListener","_moment$format","_Number","timestamp","info","packageId","state","setState","wptravelengineBooking","store","setTimeout","isOpen","summary","selectedTripDate","moment","format","selectedTripPackageID","parseInt","tripID","Number","currentTab","isLoading","getDateList","date","nonce","isShortcode","count","isShowMore","async","url","wte_fix_date","ajaxurl","el","contains","listWrapper","add","response","fetch","method","headers","URLSearchParams","action","_nonce","is_singular_trip","is_shortcode","datesLimit","btn_attributes","setAttributes","jsonResponse","json","success","data","html","innerHTML","matches","toScroll","innerHeight","scrollIntoView","scrollBy","console","error","button","e","target","tab","handleSelectTab","groupContents","privateContents","content","fsdSelects","fsdSelect","value","showMoreBtn","closest","showLessBtn","tripData","activeFilterBtn","itemsCount","statusDropdownInit","tippy","theme","MutationObserver","observe","childList","subtree"],"sourceRoot":""}