{"version":3,"file":"js/13011-e7c80ce09b47f9664402.js","mappings":"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","sources":["webpack://cms-web/./app/frontend/src/elements/scrollsnap_slider/scrollsnap_slider_nav.js","webpack://cms-web/./app/frontend/src/utils/fakeGif.js","webpack://cms-web/./app/frontend/src/shared/megabanner_slider/megabanner_slider.js","webpack://cms-web/./app/frontend/src/utils/load_hls_video.js"],"sourcesContent":["import Swiper from 'swiper'\nimport { Navigation, Pagination } from 'swiper/modules'\n\nimport { currentDevice } from '../../core/utils/currentDevice'\n\nexport function init(ss_slider, ss_nav, callback, options = {}) {\n if (!ss_slider) return false\n const slides = ss_slider.querySelectorAll('.js-slide-element')\n const slidesObserver = new IntersectionObserver(observeSlides, options)\n for (let i = 0; i < slides.length; ++i) {\n slidesObserver.observe(slides[i])\n }\n\n function observeSlides(entries) {\n if (entries.length) {\n entries.forEach(function (entry) {\n if (entry.isIntersecting && ss_nav) {\n ss_nav.querySelectorAll('.radio-btn').forEach(function (nav_btn) {\n nav_btn.classList.remove('active')\n })\n callback && callback(entry.target)\n const slide_item = ss_nav.querySelector(`[data-slide-index=\"${entry.target.getAttribute('data-index')}\"]`)\n if (slide_item !== null) slide_item.classList.add('active')\n }\n })\n }\n }\n}\n\nexport function initWithMutation(ss_slider, ss_nav, callback, options = { attributes: true }) {\n const slides = ss_slider.querySelectorAll('.js-slide-element')\n const slidesObserver = new MutationObserver(observeSlides)\n\n function observeSlides(mutations) {\n if (!mutations.length) return\n mutations.forEach(mutation => {\n const { target, attributeName } = mutation\n\n if (attributeName === 'class' && ss_nav) {\n if (!target.classList.contains('active')) return\n\n ss_nav.querySelectorAll('.radio-btn').forEach(function (nav_btn) {\n nav_btn.classList.remove('active')\n })\n callback && callback(target)\n ss_nav.querySelector(`[data-slide-index=\"${target.getAttribute('data-index')}\"]`).classList.add('active')\n }\n })\n }\n\n for (let i = 0; i < slides.length; ++i) {\n slidesObserver.observe(slides[i], options)\n }\n}\n\nexport function carouselModule(block) {\n const carouselContainer = `${block} .carousel-container`\n\n if (!currentDevice.isMobile) {\n Swiper.use([Navigation, Pagination])\n const swiper = new Swiper(carouselContainer, {\n slidesPerView: 1,\n spaceBetween: 0,\n loop: true,\n pagination: {\n el: '.swiper-pagination',\n clickable: true,\n },\n navigation: {\n nextEl: '.swiper-button-next',\n prevEl: '.swiper-button-prev',\n },\n lazyPreloadPrevNext: 3,\n })\n } else {\n const carouselContainerMobile = Array.from(document.querySelectorAll(carouselContainer))\n\n carouselContainerMobile.forEach(carousel => {\n const carouselContent = carousel.querySelectorAll('.carousel')\n const arrItems = Array.from(carousel.querySelectorAll('.carousel__item'))\n const itemsLength = arrItems.length\n\n // Show navigation buttons if more than one photo\n if (itemsLength > 1) {\n // We find out the width of each photo\n const itemsWidth = arrItems.map(arrItem => arrItem.scrollWidth)\n // Sum total width\n const totalItemsWidth = itemsWidth.reduce((a, b) => a + b, 0)\n\n const controlCarousels = carousel.querySelector('.controls-carousel')\n\n controlCarousels.innerHTML = ''\n\n arrItems.forEach((arrItem, index) => {\n // Add template\n controlCarousels.innerHTML += templateNavigationControls()\n // To the first button we add aria-press true so that it is highlighted\n if (index === 0) {\n controlCarousels.querySelector('button').setAttribute('aria-pressed', true)\n }\n })\n\n const buttonsNavigationCarousel = carousel.querySelectorAll('.controls__dot')\n\n buttonsNavigationCarousel.forEach((buttonNavigationCarousel, index) => {\n buttonNavigationCarousel.addEventListener('click', e => {\n e.preventDefault()\n e.stopPropagation()\n setAriaPressed(buttonsNavigationCarousel, index)\n\n const destinoCarrusel = carousel.querySelector('.carousel')\n\n // Calculate total width of photos for scroll scrolling\n const scrollLeft = Math.floor(totalItemsWidth * (index / itemsLength))\n\n smoothScroll(destinoCarrusel, scrollLeft, true)\n })\n })\n\n // If we change the photo, mark the corresponding navigation button.\n carouselContent.forEach(carouselItem => {\n carouselItem.addEventListener(\n 'scroll',\n () => {\n const index = Math.round((carouselItem.scrollLeft / carouselItem.scrollWidth) * itemsLength)\n setAriaPressed(buttonsNavigationCarousel, index)\n },\n 200\n )\n })\n }\n })\n\n // Template HTML\n function templateNavigationControls() {\n return `\n \n `\n }\n\n // Scroll Smooth\n function smoothScroll(node, topOrLeft, horizontal) {\n return node.scrollTo({\n [horizontal ? 'left' : 'top']: topOrLeft,\n behavior: 'smooth',\n })\n }\n\n // Add aria-pressed to false for every navigation item except the one in focus.\n function setAriaPressed(elements, index) {\n elements.forEach((element, i) => {\n element.setAttribute('aria-pressed', !!(i === index))\n })\n }\n IB.lazyImg.loadAllImagesSelector($('.carousel'))\n }\n}\n","\n/**\n * Creates a new fake gif which iterates over given gifSlides\n */\nclass fakeGif {\n constructor({ gifSlides, maxDuration = 0 }) {\n this.gifSlides = gifSlides;\n this.isPlaying = false;\n this.activeIndex = 0;\n this.transitionsCounter = 0;\n\n const gifSpeeds = this.gifSlides.get().map(gifItem => (gifItem.dataset.autoplaySpeed ? parseInt(gifItem.dataset.autoplaySpeed) : 6));\n this.totalDuration =\n gifSpeeds.reduce(function (lastValue, newValue) {\n return lastValue + newValue;\n }) * 1000;\n\n this.maxTransitions = maxDuration ? Math.ceil(maxDuration / this.totalDuration) : 0;\n }\n\n // Getters\n get duration() {\n return this.totalDuration;\n }\n\n // Methods\n gifLoop() {\n const currentSlide = $(this.gifSlides[this.activeIndex]);\n const currentGifAutoplaySpeed = currentSlide.data('autoplaySpeed') || 6;\n let gifAutoplaySpeed = parseInt(currentGifAutoplaySpeed) * 1000;\n\n this.gifSlides.removeClass('active');\n currentSlide.addClass('active');\n this.activeIndex = this.gifSlides.get(this.activeIndex + 1) ? this.activeIndex + 1 : 0;\n this.transitionsCounter += 1;\n\n if (this.maxTransitions && this.transitionsCounter > this.maxTransitions) {\n this.stop();\n } else {\n window.setTimeout(() => this.gifLoop(), gifAutoplaySpeed);\n }\n }\n\n start() {\n if (this.isPlaying) return;\n this.gifLoop();\n this.isPlaying = true;\n }\n\n stop() {\n if (!this.isPlaying) return;\n Object.assign(this, {\n isPlaying: false,\n activeIndex: 0,\n transitionsCounter: 0,\n });\n }\n}\n\nexport default fakeGif;\n","import _debounce from 'lodash/debounce'\n\nimport * as SliderNav from '../../elements/scrollsnap_slider/scrollsnap_slider_nav'\nimport fakeGif from '../../utils/fakeGif'\nimport { loadHlsVideo } from '../../utils/load_hls_video'\n\nconst MEGABANNER_SELECTOR = '.js-megabanner-slider'\nconst is_mobile = IB.currentDevice === 'mobile'\n\nconst $block = $(MEGABANNER_SELECTOR)\nlet sliderState = {\n isPlaying: false,\n activeIndex: 0,\n}\n\nconst configAutoplaySpeed = $block.data('autoplaySpeed') || 6\nconst mainSliderSpeed = configAutoplaySpeed * 1000\nlet autoplaySpeed = mainSliderSpeed\n\nlet startX = 0\nlet startY = 0\n\nfunction initializeSliderSwipeEventHandlers(items, items_nav) {\n const slider = document.querySelector('.js-megabanner-slider .ss-slider')\n\n slider.addEventListener('touchstart', function (event) {\n const touch = event.touches[0]\n startX = touch.pageX\n startY = touch.pageY\n })\n\n slider.addEventListener(\n 'touchmove',\n _debounce(function (event) {\n const touch = event.touches[0]\n const currentX = touch.pageX\n const currentY = touch.pageY\n const diffX = startX - currentX\n const diffY = startY - currentY\n const isHorizontalSwipe = Math.abs(diffX) > Math.abs(diffY)\n\n if (!isHorizontalSwipe) {\n return\n }\n\n const activeSlide = document.querySelector('.js-megabanner-slider .js-slide-element.active')\n const currentActiveSlideIndexInArray = Array.from(items).indexOf(activeSlide)\n const max_items = items.length\n\n let nextItemArrayIndex\n\n if (diffX > 0) {\n nextItemArrayIndex = currentActiveSlideIndexInArray + 1 >= max_items ? 0 : currentActiveSlideIndexInArray + 1\n } else {\n nextItemArrayIndex = currentActiveSlideIndexInArray - 1 < 0 ? max_items - 1 : currentActiveSlideIndexInArray - 1\n }\n\n clearTimeout(mainLoopTimeoutID) // stops autoplay\n changePicture(items, nextItemArrayIndex, items_nav) // changes slide\n mainLoop(items, items_nav, nextItemArrayIndex) // starts autoplay again\n }, 100)\n )\n}\n\nexport function init(megabanner) {\n const videos = megabanner.find('.js-head-video');\n\n if (videos.length) loadVideos(videos);\n\n loadHlsVideo('.js-megabanner-slider');\n let $items = megabanner.find('.item:not(.hidden)');\n\n if (!$items.length) return;\n\n let device = IB.currentDevice;\n let position_name = device === 'small_desktop' ? 'desktop' : device;\n position_name = 'positions-' + position_name;\n\n let $that;\n let coords;\n let $ft_item_container;\n $items.each(function () {\n $ft_item_container = megabanner.find('.ft-item-container:not(.js-hotel-slide):not(.js-text-slide)');\n $that = megabanner.find('.ft-item');\n\n if (!$that.length) {\n return;\n }\n if (typeof $that.data(position_name) == 'undefined') {\n coords = 'left-middle';\n } else {\n coords = $that.data(position_name);\n }\n $ft_item_container.addClass(coords);\n });\n\n megabanner.data('sliderState', {\n isPlaying: false,\n activeIndex: 0,\n });\n sliderState = megabanner.data('sliderState');\n\n document.addEventListener('ada:activated', function () {\n activateADAalts();\n });\n\n document.addEventListener('ada:deactivated', function () {\n deactivateADAalts();\n });\n}\n\n// LOAD VIDEO\nfunction loadVideos (videos) {\n\n if (!videos.length) return;\n\n videos.forEach((video) => {\n if (Boolean(video.querySelector('source'))) return; // Sources already loaded\n let videoSources = Boolean(video.dataset.mp4Src) ? `` : '';\n videoSources += Boolean(video.dataset.webmSrc) ? `` : '';\n video.innerHTML += videoSources;\n });\n\n}\n\n//--------- AUTOPLAY --------------------------------------------------------------\nlet mainLoopTimeoutID;\n/**\n * Recursive loop that shows a new slide in each iteration\n * @param {*} items - array of slides\n * @param {*} items_nav - nav element\n */\nfunction mainLoop(items, items_nav, current_item) {\n const $currentSlide = $(items[current_item]);\n const $gifSlides = $currentSlide.find('.js-gif-effect');\n\n changePicture(items, current_item, items_nav);\n current_item = current_item + 1 >= items.length ? 0 : current_item + 1;\n\n if ($gifSlides.length) {\n let currentGifInstance = $currentSlide.data('fakeGif');\n currentGifInstance.start();\n\n autoplaySpeed = currentGifInstance.duration > autoplaySpeed ? currentGifInstance.duration : mainSliderSpeed;\n } else {\n autoplaySpeed = mainSliderSpeed;\n }\n\n mainLoopTimeoutID = setTimeout(() => mainLoop(items, items_nav, current_item), autoplaySpeed);\n}\n\nfunction startAutoplay(items, items_nav, current_item) {\n sliderState.isPlaying = true;\n mainLoop(items, items_nav, current_item);\n}\n\nfunction stopAutoplay($slides) {\n if (!sliderState.isPlaying) return;\n sliderState.isPlaying = false;\n}\n\n//--------- SLIDER MANAGEMENT --------------------------------------------------------------\n\n/**\n * Adds hotel slide to megabanner\n */\nfunction addHotelSlide(hotel_image, hotel_url, hotel_name, hotel_description, hotel_stars, hotel_segment_color, hotel_segment_text, megabanner) {\n let hotel = megabanner.find('#megabanner-item-template').get(0);\n\n if (hotel) {\n hotel.querySelector('[data-hotel-img]').src = hotel_image;\n hotel.querySelector('[data-hotel-url]').setAttribute('href', hotel_url);\n hotel.querySelector('[data-hotel-name]').textContent = hotel_name;\n hotel.querySelector('[data-hotel-name]').dataset.hotelName = hotel_name;\n hotel.querySelector('[data-hotel-description]').innerHTML = hotel_description;\n hotel.querySelector('[data-hotel-stars]').classList.add(`r${hotel_stars}*`);\n hotel.querySelector('[data-hotel-stars-desc]').textContent = hotel_stars;\n if (hotel_segment_color) {\n hotel.querySelector('[data-hotel-segment]').classList.add(hotel_segment_color);\n }\n if (hotel_segment_text) {\n hotel.querySelector('[data-hotel-segment]').textContent = hotel_segment_text;\n }\n hotel.classList.remove('hidden');\n hotel.classList.remove('is-hidden');\n\n if (IB.currentDevice !== 'mobile') {\n let $items = $block.find('.item:not(.hidden)');\n let $items_nav = $block.find('.items-nav');\n\n $items_nav.removeClass('is-hidden');\n stopAutoplay();\n $items_nav.find('[data-item-total-items]').html($items.length);\n $items_nav.find('[data-item-current-index]').html(2);\n } else {\n let slider = document.querySelector('.js-megabanner-slider .ss-slider');\n let $slider = $('.js-megabanner-slider .ss-slider');\n let $hotel = $('#megabanner-item-template');\n let hotel_slider_nav = document.querySelector('[data-hotel-slide-nav]');\n\n let slider_nav = document.querySelector('.ss-slider-nav');\n\n hotel.classList.add('ss-slide');\n $slider.scrollLeft($hotel.offset().left);\n if (hotel_slider_nav) {\n hotel_slider_nav.classList.remove('hidden');\n document.querySelector('.first-radio-btn')?.classList.add('is-hidden');\n }\n if (slider_nav) {\n slider_nav.classList.remove('is-hidden');\n }\n if (slider) {\n if (is_mobile) {\n SliderNav.initWithMutation(slider, slider.closest('.ss-slider-container').querySelector('.ss-slider-nav'));\n } else {\n SliderNav.init(slider, slider.closest('.ss-slider-container').querySelector('.ss-slider-nav'));\n }\n }\n }\n hotel.classList.add('active');\n }\n}\n\n/**\n * Gets last visited hotel data from localstorage to create and add an hotel slide to megabanner\n */\nfunction addHotelSlideFromLocalStorage(item, megabanner) {\n const hotel_stars = item.category;\n const hotel_description = item.summary ? item.summary : '';\n const hotel_name = item.place_title;\n const hotel_url = item.path;\n let hotel_image = '';\n let hotel_segment_color = '';\n let hotel_segment_text = '';\n\n // We can not continue if ther is no hotel image\n if (IB.currentDevice === 'desktop') {\n if (!item.image_desktop) return;\n hotel_image = item.image_desktop;\n }\n if (IB.currentDevice === 'tablet') {\n if (!item.image_tablet) return;\n hotel_image = item.image_tablet;\n }\n if (IB.currentDevice === 'mobile') {\n if (!item.image_mobile) return;\n hotel_image = item.image_mobile;\n }\n if (item.segmentations.length) {\n hotel_segment_color = `seg-${item.segmentations[0].class}`;\n hotel_segment_text = item.segmentations[0].title;\n }\n\n addHotelSlide(hotel_image, hotel_url, hotel_name, hotel_description, hotel_stars, hotel_segment_color, hotel_segment_text, megabanner);\n}\n\n/**\n * Starts slider\n */\nfunction startSlider(megabanner) {\n console.log('startSlider: call registered');\n megabanner ||= $('.js-megabanner-slider').first()\n if (!megabanner.length) return\n\n if (document.querySelector('.js-megabanner-slider') === null) return;\n\n console.log('startSlider: initializing...');\n\n megabanner.find('.corporative-banner.static-slide').addClass('is-hidden').removeClass('active');\n\n showFalseGif(); // shows banner offer false gif\n\n let local_last_searches = localStorage.getItem('last_searches');\n if (local_last_searches) {\n local_last_searches = JSON.parse(local_last_searches);\n if (local_last_searches.length === 0) {\n console.warn('startSlider: no last searches, empty object');\n } else {\n // We only want hotel searches\n local_last_searches = local_last_searches.filter(search => search.place_to_go.includes('h'));\n if (local_last_searches.length) {\n let lastHotelSearch = local_last_searches[local_last_searches.length - 1];\n addHotelSlideFromLocalStorage(lastHotelSearch, megabanner);\n } else {\n console.warn('startSlider: no hotel in last searches');\n }\n }\n } else {\n console.warn('startSlider: no last searches available');\n }\n\n initChangeNavButton();\n // starts autoplay\n let $items = megabanner.find('.item:not(.hidden):not(.is-hidden)');\n let $items_nav = is_mobile ? megabanner.find('.ss-slider-nav') : megabanner.find('.items-nav');\n let $currentItem = 0;\n\n updateSliderCounter($items, $items_nav);\n\n // play new promo banner\n startAutoplay($items, $items_nav, $currentItem);\n\n // Hide navigation buttons when necessary\n if ($items.length > 1) {\n $items_nav.removeClass('is-hidden');\n }\n\n initializeNavButtons($items, $items_nav);\n\n if (is_mobile) initializeSliderSwipeEventHandlers($items, $items_nav);\n\n activateADAalts(); // replace img for alts if in accessibility mode\n\n requestIdleCallback(function () {\n const interval = setInterval(function () {\n if (typeof utag !== 'undefined') {\n document.querySelector('.home-page .js-megabanner-slider').dispatchEvent(new CustomEvent('homeWithFastbookingAnalytics'));\n clearInterval(interval);\n }\n }, 100);\n });\n}\n\nfunction changePicture(items, item_index, items_nav) {\n let $item = $(items[item_index]);\n let klass = 'active';\n\n if ($item.hasClass('js-false-gif-slide')) {\n const $gifSlides = $item.find('.js-gif-effect');\n let currentGifInstance = $item.data('fakeGif');\n\n if (!currentGifInstance && $gifSlides.length) {\n $item.data('fakeGif', new fakeGif({ gifSlides: $gifSlides, maxDuration: mainSliderSpeed }));\n currentGifInstance = $item.data('fakeGif');\n }\n\n currentGifInstance.start();\n }\n\n items.each(function () {\n $(this).removeClass(klass);\n });\n\n $item.addClass(klass);\n\n if (items_nav) {\n if (items_nav.data('active-item-index')) {\n items_nav.attr('data-active-item-index', item_index + 1);\n }\n if (items_nav.find('[data-item-current-index]').length) {\n items_nav.find('[data-item-current-index]').html(item_index + 1);\n }\n }\n}\n\n/**\n * shows banner offer false gif\n */\nfunction showFalseGif() {\n const $falseGif = $block.find('.js-false-gif-slide');\n\n if (!$falseGif.length) return;\n\n $falseGif.removeClass('is-hidden');\n if (is_mobile) {\n let false_gif_slider_nav = document.querySelector('[data-nested-items]');\n if (false_gif_slider_nav != null) false_gif_slider_nav.classList.remove('hidden');\n }\n}\n\n//--------- NAVIGATION --------------------------------------------------------------\n\nfunction initChangeNavButton() {\n let slider = document.querySelector('.js-megabanner-slider .ss-slider');\n if (slider) {\n if (is_mobile) {\n SliderNav.initWithMutation(slider, slider.closest('.ss-slider-container').querySelector('.ss-slider-nav'));\n } else {\n SliderNav.init(slider, slider.closest('.ss-slider-container').querySelector('.ss-slider-nav'));\n }\n }\n}\n\nfunction initializeNavButtons(items, items_nav) {\n let $items_nav_btns = items_nav.find('.nav-prev, .nav-next');\n\n $items_nav_btns.off();\n $items_nav_btns.on('click', function (event) {\n let current_item_index = parseInt($block.find('[data-item-current-index]').html());\n let next_item_index = current_item_index;\n let max_items = parseInt($block.find('[data-item-total-items]').html());\n\n stopAutoplay();\n\n if ($(event.currentTarget).hasClass('nav-prev')) {\n next_item_index = current_item_index === 1 ? max_items : next_item_index - 1;\n } else {\n next_item_index = current_item_index === items.length ? 1 : next_item_index + 1;\n }\n changePicture(items, next_item_index - 1, items_nav);\n });\n}\n\n//--------- PAGINATION --------------------------------------------------------------\n\nfunction updateSliderCounter(items, items_nav) {\n let maxItems = items.length;\n\n if (items_nav === undefined || items_nav.length == 0 || items_nav[0].querySelector('.counter') == null) return;\n\n items_nav[0].querySelector('.counter').querySelector('[data-item-current-index]').innerHTML = 0;\n items_nav[0].querySelector('.counter').querySelector('[data-item-total-items]').innerHTML = maxItems;\n\n changePicture(items, 0, items_nav);\n}\n\n//--------- ACCESIBILITY --------------------------------------------------------------\n\nfunction activateADAalts() {\n if (IB.a11y.isAdaActivated() !== true) return;\n $block.each(function () {\n let $item = $(this).find('.item:not(.hidden)');\n let $items = $item.find('.items');\n let picture_blocks = $items.children();\n\n // Si estoy en modo accesible debo ocultar las imágenes que se superponen sobre la imagen principal\n // para sustituirlas por sus alts\n picture_blocks.each(function () {\n if (!$(this).hasClass('js-search-slide')) {\n const $that = $(this).find('.ft-item');\n let image_alt = $that.find('img').attr('alt');\n\n if (!IB.is_in_microsite && image_alt) {\n $that.parent().addClass('without-img hidden');\n $that.addClass('has-alt-text');\n $that.find('picture').addClass('hidden');\n $that.append(\"\" + image_alt + '
');\n }\n }\n });\n });\n}\n\nfunction deactivateADAalts() {\n if (IB.a11y.isAdaActivated() === true) return;\n $block.each(function () {\n let $item = $(this).find('.item:not(.hidden)');\n let $items = $item.find('.items');\n let picture_blocks = $items.children();\n\n // Si estoy en modo accesible debo eliminar los alts de las imágenes para volver\n // a mostrar las imágenes\n picture_blocks.each(function () {\n if (!$(this).hasClass('js-search-slide')) {\n const $that = $(this).find('.ft-item');\n let image_alt = $that.find('img').attr('alt');\n\n if (!IB.is_in_microsite && image_alt) {\n $that.parent().removeClass('without-img hidden');\n $that.removeClass('has-alt-text');\n $that.find('picture').removeClass('hidden');\n $that.find('.t-hero').remove();\n }\n }\n });\n });\n}\n\n//--------- PUBLIC --------------------------------------------------------------\n\nwindow.IB.megabanner = {\n init: init,\n startSlider: startSlider,\n};\n\n//--------- INITIALIZE --------------------------------------------------------------\n\n$(function () {\n let megabanners = $(MEGABANNER_SELECTOR);\n\n if (!megabanners.length) return;\n\n megabanners.each(function(){\n IB.megabanner.init($(this));\n\n if (!$(this).find('.js-corporative-banner').length) {\n IB.megabanner.startSlider($(this));\n }\n })\n\n if (IB.is_in_microsite) {\n IB.megabanner.startSlider();\n }\n});\n","import Hls from 'hls.js'\n\nimport inViewport from '../utils/inViewport'\n\nconst HLS_LOADED_CLASS = 'is-hls-loaded'\n\nfunction init(hlsVideos, config = {}) {\n const autoplay = config.autoplay !== undefined ? config.autoPlay : true\n const loop = config.loop !== undefined ? config.loop : true\n const playsWhenEnterViewport = config.playsWhenEnterViewport !== undefined ? config.playsWhenEnterViewport : true\n\n hlsVideos.forEach(video => {\n if (video.classList.contains(HLS_LOADED_CLASS)) return\n\n const videoSrc = video.dataset.url ? video.dataset.url : ''\n\n if (Hls.isSupported()) {\n const hls = new Hls()\n hls.loadSource(videoSrc)\n hls.attachMedia(video)\n } else if (video.canPlayType('application/vnd.apple.mpegurl')) {\n video.setAttribute('src', videoSrc)\n }\n\n video.classList.add(HLS_LOADED_CLASS)\n\n video.muted = true\n video.autoplay = autoplay\n video.loop = loop\n video.playsInline = autoplay\n\n if (playsWhenEnterViewport) {\n inViewport(video, element => {\n if (element.isIntersecting) {\n ;['canplaythrough', 'ended'].forEach(event => {\n video.addEventListener(event, () => {\n const timeout = event === 'ended' ? 10 : 0\n setTimeout(() => {\n video\n .play()\n .then(() => {\n // console.log(`Video played on event ${event}`)\n })\n .catch(error => {\n // console.log(`Error calling play() on video on event${event}`, error)\n })\n }, timeout)\n })\n })\n }\n })\n }\n })\n}\n\nexport function loadHlsVideo(baseSelector, config) {\n const videoElements = document.querySelectorAll(`${baseSelector} .hls-video`)\n\n if (videoElements.length) {\n init(videoElements, config)\n }\n}\n\nexport function loadHlsVideoByElem(elem, config) {\n const videoElements = elem.querySelectorAll('.hls-video')\n\n if (videoElements.length) {\n init(videoElements, config)\n }\n}\n"],"names":["init","ss_slider","ss_nav","callback","options","arguments","length","undefined","slides","querySelectorAll","slidesObserver","IntersectionObserver","entries","forEach","entry","isIntersecting","nav_btn","classList","remove","target","slide_item","querySelector","getAttribute","add","i","observe","initWithMutation","attributes","MutationObserver","mutations","mutation","attributeName","contains","carouselModule","block","carouselContainer","currentDevice","isMobile","setAriaPressed","elements","index","element","setAttribute","Array","from","document","carousel","carouselContent","arrItems","itemsLength","totalItemsWidth","map","arrItem","scrollWidth","reduce","a","b","controlCarousels","innerHTML","buttonsNavigationCarousel","buttonNavigationCarousel","addEventListener","e","preventDefault","stopPropagation","destinoCarrusel","scrollLeft","Math","floor","topOrLeft","horizontal","scrollTo","behavior","carouselItem","round","IB","lazyImg","loadAllImagesSelector","$","Swiper","use","Navigation","Pagination","slidesPerView","spaceBetween","loop","pagination","el","clickable","navigation","nextEl","prevEl","lazyPreloadPrevNext","constructor","_ref","gifSlides","maxDuration","this","isPlaying","activeIndex","transitionsCounter","gifSpeeds","get","gifItem","dataset","autoplaySpeed","parseInt","totalDuration","lastValue","newValue","maxTransitions","ceil","duration","gifLoop","currentSlide","currentGifAutoplaySpeed","data","gifAutoplaySpeed","removeClass","addClass","stop","window","setTimeout","start","Object","assign","MEGABANNER_SELECTOR","is_mobile","$block","sliderState","mainSliderSpeed","mainLoopTimeoutID","startX","startY","mainLoop","items","items_nav","current_item","$currentSlide","$gifSlides","find","changePicture","currentGifInstance","stopAutoplay","$slides","addHotelSlideFromLocalStorage","item","megabanner","hotel_stars","category","hotel_description","summary","hotel_name","place_title","hotel_url","path","hotel_image","hotel_segment_color","hotel_segment_text","image_desktop","image_tablet","image_mobile","segmentations","class","title","hotel","src","textContent","hotelName","$items","$items_nav","html","slider","$slider","$hotel","hotel_slider_nav","slider_nav","offset","left","SliderNav","closest","addHotelSlide","item_index","$item","klass","hasClass","fakeGif","each","attr","activateADAalts","a11y","isAdaActivated","children","$that","image_alt","is_in_microsite","parent","append","videos","video","Boolean","videoSources","mp4Src","webmSrc","loadVideos","loadHlsVideo","coords","$ft_item_container","device","position_name","deactivateADAalts","startSlider","console","log","first","$falseGif","false_gif_slider_nav","showFalseGif","local_last_searches","localStorage","getItem","JSON","parse","warn","filter","search","place_to_go","includes","initChangeNavButton","maxItems","updateSliderCounter","$items_nav_btns","off","on","event","current_item_index","next_item_index","max_items","currentTarget","initializeNavButtons","touch","touches","pageX","pageY","_debounce","currentX","currentY","diffX","diffY","abs","activeSlide","currentActiveSlideIndexInArray","indexOf","nextItemArrayIndex","clearTimeout","initializeSliderSwipeEventHandlers","requestIdleCallback","interval","setInterval","utag","dispatchEvent","CustomEvent","clearInterval","megabanners","HLS_LOADED_CLASS","hlsVideos","config","autoplay","autoPlay","playsWhenEnterViewport","videoSrc","url","Hls","hls","loadSource","attachMedia","canPlayType","muted","playsInline","inViewport","play","then","catch","error","baseSelector","videoElements","loadHlsVideoByElem","elem"],"sourceRoot":""}