{"version":3,"file":"quicklinks-D-uf7JCM.js","sources":["../../../scripts/module/quickLinks.js"],"sourcesContent":["/* eslint-disable no-restricted-syntax */\nconst bodyElement = document.querySelector('body');\nconst allQuicklinks = document.querySelectorAll('[data-name]');\nconst allServicesLinks = [];\nconst serviceLinksContainerEl = document.querySelector('#quicklinksContainer');\nconst hasHotelContent = document.querySelector('#hotel-content');\nconst headerOffset = document.querySelector('#booking-header-search') && !hasHotelContent ? 240 : 160;\n\nfor (const quicklinksElem of allQuicklinks) {\n\tif (quicklinksElem.getAttribute('id') && quicklinksElem.getAttribute('data-name')) {\n\t\tallServicesLinks.push({\n\t\t\tid: quicklinksElem.getAttribute('id'),\n\t\t\ttitle: quicklinksElem.getAttribute('data-name'),\n\t\t});\n\t}\n}\n\nif (serviceLinksContainerEl && allServicesLinks.length > 0) {\n\tserviceLinksContainerEl.innerHTML = '';\n\n\tfor (const serviceItem of allServicesLinks) {\n\t\tconst serviceLinkEl = document.createElement('a');\n\t\tserviceLinkEl.classList.add('quick-link-text');\n\t\tserviceLinkEl.href = `${document.URL}#${serviceItem.id}`;\n\t\tserviceLinkEl.title = serviceItem.title;\n\t\tserviceLinkEl.innerHTML = serviceItem.title;\n\t\tserviceLinkEl.setAttribute('data-target', serviceItem.id);\n\n\t\tserviceLinkEl.addEventListener('click', function (eve) {\n\t\t\teve.preventDefault();\n\t\t\teve.stopPropagation();\n\t\t\tconst targetEl = document.querySelector(`#${eve.target.getAttribute('data-target')}`);\n\t\t\tconst elementPosition = hasHotelContent?.contains(targetEl) ? targetEl.getBoundingClientRect().top + window.scrollY : targetEl.offsetTop;\n\t\t\tconst offsetPosition = elementPosition - headerOffset;\n\n\t\t\twindow.scroll(0, offsetPosition, { behavior: 'smooth' });\n\t\t});\n\n\t\tconst serviceLinkListItemEl = document.createElement('li');\n\t\tserviceLinkListItemEl.appendChild(serviceLinkEl);\n\n\t\tserviceLinksContainerEl.appendChild(serviceLinkListItemEl);\n\t}\n}\n\nconst serviceLinksOuterEl = document.querySelector('#quicklinksOuter:not(.js-disable-sticky-scroll)');\nif (serviceLinksOuterEl) {\n\tdocument.querySelector('html').classList.add('scroll-smooth');\n\tconst headerSearchEl = document.querySelector('#booking-header-search');\n\tconst bookingHotelWidgetEl = document.querySelector('#hotel-content #booking-hotels-booking-widget');\n\tconst serviceLinksOuterOffsetTop = serviceLinksOuterEl.getBoundingClientRect().top + window.scrollY - 100;\n\tconst mediaBreakPoint = '(min-width: 768px)';\n\tconst mq = window.matchMedia(mediaBreakPoint);\n\tconst categoryParam = new URLSearchParams(window.location.search)?.get('category');\n\tconst bookingCategories = ['holidays', 'flights', 'hotels', 'car-hire', 'motorhome-hire'];\n\n\tconst scrollStickyServiceLinks = () => {\n\t\tconst scrollPosY = window.pageYOffset || document.documentElement.scrollTop;\n\n\t\t// eslint-disable-next-line no-shadow\n\t\tconst removeScrolling = function (mq) {\n\t\t\tif (mq.matches) {\n\t\t\t\tif (scrollPosY > serviceLinksOuterOffsetTop && !serviceLinksOuterEl.classList.contains('scrolling')) {\n\t\t\t\t\tserviceLinksOuterEl.classList.add('scrolling');\n\t\t\t\t\tif (bookingHotelWidgetEl) {\n\t\t\t\t\t\tbookingHotelWidgetEl.classList.add('scrolling');\n\t\t\t\t\t}\n\t\t\t\t\tbodyElement.classList.add('scrolling');\n\n\t\t\t\t\t// add extra spacing if the header widget is expanded\n\t\t\t\t\tif (headerSearchEl && bookingCategories.includes(categoryParam)) {\n\t\t\t\t\t\tserviceLinksOuterEl.classList.add('header-booking-widget-expanded');\n\t\t\t\t\t}\n\t\t\t\t} else if (scrollPosY <= serviceLinksOuterOffsetTop && serviceLinksOuterEl.classList.contains('scrolling')) {\n\t\t\t\t\tserviceLinksOuterEl.classList.remove('scrolling');\n\t\t\t\t\tserviceLinksOuterEl.classList.remove('header-widget-expanded');\n\t\t\t\t\tif (bookingHotelWidgetEl) {\n\t\t\t\t\t\tbookingHotelWidgetEl.classList.remove('scrolling');\n\t\t\t\t\t}\n\t\t\t\t\tbodyElement.classList.remove('scrolling');\n\n\t\t\t\t\tif (serviceLinksOuterEl.classList.contains('header-booking-widget-expanded')) {\n\t\t\t\t\t\tserviceLinksOuterEl.classList.remove('header-booking-widget-expanded');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (!mq.matches) {\n\t\t\t\tif (serviceLinksOuterEl.classList.contains('scrolling')) {\n\t\t\t\t\tserviceLinksOuterEl.classList.remove('scrolling');\n\t\t\t\t\tif (bookingHotelWidgetEl) {\n\t\t\t\t\t\tbookingHotelWidgetEl.classList.remove('scrolling');\n\t\t\t\t\t}\n\t\t\t\t\tbodyElement.classList.remove('scrolling');\n\n\t\t\t\t\tif (serviceLinksOuterEl.classList.contains('header-booking-widget-expanded')) {\n\t\t\t\t\t\tserviceLinksOuterEl.classList.remove('header-booking-widget-expanded');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tmq.addListener(removeScrolling);\n\t\tremoveScrolling(mq);\n\t};\n\n\tscrollStickyServiceLinks();\n\n\twindow.addEventListener(\n\t\t'scroll',\n\t\tfunction () {\n\t\t\tscrollStickyServiceLinks();\n\t\t},\n\t\tfalse\n\t);\n}\n\nconst simpleQuickLinksOuterEls = document.querySelectorAll('.simple-quick-links-outer');\nfor (const simpleQuickLinksOuterElem of simpleQuickLinksOuterEls) {\n\tconst simpleQuickLinksContainer = simpleQuickLinksOuterElem.querySelector('.simple-quick-links-container');\n\tconst simpleQuickLinksItems = simpleQuickLinksContainer.querySelectorAll('.simple-quick-link-item');\n\n\tfor (const simpleQuickLinksItem of simpleQuickLinksItems) {\n\t\tsimpleQuickLinksItem.addEventListener('click', function (eve) {\n\t\t\tconst href = eve.currentTarget.getAttribute('href');\n\t\t\tconst hashTag = href.split('#')[1];\n\t\t\tconst targetEl = document.querySelector(`#${hashTag}`);\n\t\t\tif (href.includes('#') && hashTag && targetEl) {\n\t\t\t\teve.preventDefault();\n\t\t\t\teve.stopPropagation();\n\t\t\t\tconst elementPosition = targetEl.offsetTop;\n\t\t\t\tconst offsetPosition = elementPosition - headerOffset;\n\t\t\t\twindow.scroll(0, offsetPosition, { behavior: 'smooth' });\n\t\t\t}\n\t\t});\n\t}\n}\n"],"names":["bodyElement","allQuicklinks","allServicesLinks","serviceLinksContainerEl","hasHotelContent","headerOffset","quicklinksElem","serviceItem","serviceLinkEl","eve","targetEl","offsetPosition","serviceLinkListItemEl","serviceLinksOuterEl","headerSearchEl","bookingHotelWidgetEl","serviceLinksOuterOffsetTop","mq","categoryParam","_a","bookingCategories","scrollStickyServiceLinks","scrollPosY","removeScrolling","simpleQuickLinksOuterEls","simpleQuickLinksOuterElem","simpleQuickLinksItems","simpleQuickLinksItem","href","hashTag"],"mappings":"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"}