{"version":3,"file":"js/78363-216bb73713104b8a8bff.js","mappings":"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","sources":["webpack://cms-web/./app/frontend/src/blocks/information_modules_packed/information_modules.analytics.js","webpack://cms-web/./app/frontend/src/blocks/information_modules_packed/information_modules.js","webpack://cms-web/./app/frontend/src/elements/scrollsnap_slider/scrollsnap_slider_nav.js","webpack://cms-web/./app/frontend/src/utils/e_image_counter.js","webpack://cms-web/./app/frontend/src/utils/load_hls_video.js"],"sourcesContent":["import { sendUtagEvent } from '../../core/analytics/utag_events'\nimport on from '../../utils/events_delegation'\nimport { cleaned_title, getCleanedString } from '../../utils/utilities'\n\nexport function initializeUtagEvents() {\n on({\n eventName: 'click',\n selector: '.utag-entertainment-link',\n handler() {\n const fhiPageType = document.querySelector('html').dataset.fhiTest\n const isFhiPage = fhiPageType !== undefined\n const eventLabel = this.closest('.utag-information-module')?.dataset.utagBlockTitle || ''\n const cardTitle = this.closest('.utag-information-module').dataset.utagCardTitle || ''\n\n sendUtagEvent({\n data: {\n event_name: 'information_module',\n event_cat: 'information module',\n event_act: getCleanedString(eventLabel),\n event_lbl: cleaned_title(cardTitle || ''),\n event_purpose: 'information',\n event_structure: 'body',\n ...(isFhiPage ? { page_variation: fhiPageType } : {}),\n },\n })\n },\n })\n\n on({\n eventName: 'click',\n selector: '.utag-information-module-book-now',\n handler() {\n const fhiPageType = document.querySelector('html').dataset.fhiTest\n const isFhiPage = fhiPageType !== undefined\n\n sendUtagEvent({\n data: {\n event_name: 'searcher_hotel',\n event_cat: 'searcher',\n event_act: 'scroll to fastbooking',\n event_lbl: 'popup',\n event_purpose: 'booking',\n event_structure: 'sticky',\n ...(isFhiPage ? { page_variation: fhiPageType } : {}),\n },\n })\n },\n once: true,\n })\n\n on({\n eventName: 'click',\n selector: '.utag-navegation-modal-videos-prev',\n handler(e) {\n const blockTitle = e.target.closest('.modal__content').querySelector('[data-block-title]')?.dataset.blockTitle\n const cardTitle =\n e.target.closest('.modal__content').querySelector('.swiper-slide-active .video-content')?.dataset\n .utagCardTitle || ''\n\n const orderSlide = e.target.closest('.modal__content').querySelector('.swiper-slide-prev .video-content')\n ?.dataset.orderSlide\n const numSlide = parseInt(orderSlide, 10) + 1\n\n sendUtagEvent({\n data: {\n event_name: 'information_module',\n event_cat: 'information module',\n event_act: getCleanedString(blockTitle || ''),\n event_lbl: getCleanedString(cardTitle) || numSlide,\n event_purpose: 'information',\n event_structure: 'popup',\n },\n })\n },\n })\n\n on({\n eventName: 'click',\n selector: '.utag-navegation-modal-videos-next',\n handler(e) {\n const blockTitle = e.target.closest('.modal__content').querySelector('[data-block-title]')?.dataset.blockTitle\n const cardTitle =\n e.target.closest('.modal__content').querySelector('.swiper-slide-active .video-content')?.dataset\n .utagCardTitle || ''\n const orderSlide = e.target.closest('.modal__content').querySelector('.swiper-slide-next .video-content')\n ?.dataset.orderSlide\n const numSlide = parseInt(orderSlide, 10) + 1\n\n sendUtagEvent({\n data: {\n event_name: 'information_module',\n event_cat: 'information module',\n event_act: getCleanedString(blockTitle || ''),\n event_lbl: getCleanedString(cardTitle) || numSlide,\n event_purpose: 'information',\n event_structure: 'popup',\n },\n })\n },\n })\n on({\n eventName: 'click',\n selector: '.utag-trigger-modal-videos',\n handler(e) {\n const blockTitle = e.target.closest('.utag-information-module').dataset.utagBlockTitle\n const cardTitle = e.target.closest('.utag-information-module').dataset.utagCardTitle\n\n const orderSlide = e.target.closest('.utag-information-module').querySelector('.video-content').dataset.orderSlide\n const numSlider = parseInt(orderSlide, 10) + 1\n\n sendUtagEvent({\n data: {\n event_name: 'information_module',\n event_cat: 'information module',\n event_act: getCleanedString(blockTitle || ''),\n event_lbl: getCleanedString(cardTitle) || numSlider,\n event_purpose: 'information',\n event_structure: 'body',\n },\n })\n },\n })\n\n on({\n eventName: 'click',\n selector: '.information-modules .utag-see-more-link',\n handler() {\n const element = this\n const utagBlockTitle = element.closest('.info-items').dataset.utagBlockTitle\n const utagCardTitle = element.closest('[data-utag-card-title]').dataset.utagCardTitle\n\n const event_cat = 'information module'\n const event_act = cleaned_title(utagBlockTitle || '')\n const event_lbl = utagCardTitle\n\n sendUtagEvent({\n data: {\n event_name: 'information_module',\n event_cat,\n event_act: getCleanedString(event_act || ''),\n event_lbl: getCleanedString(event_lbl || ''),\n event_purpose: 'information',\n event_structure: 'body',\n },\n })\n },\n })\n\n on({\n eventName: 'click',\n selector: '.info-items .content .text a',\n handler() {\n const element = this\n const blockTitle = element.closest('.utag-information-module').dataset.utagBlockTitle || ''\n const cardTitle = element.closest('.utag-information-module').dataset.utagCardTitle || ''\n const event_cat = 'information module'\n const event_act = cleaned_title(blockTitle || '')\n const event_lbl = cardTitle\n\n sendUtagEvent({\n data: {\n event_name: 'information_module',\n event_cat,\n event_act: getCleanedString(event_act || ''),\n event_lbl: getCleanedString(event_lbl || ''),\n event_purpose: 'information',\n event_structure: 'body',\n },\n })\n },\n })\n}\n","import '../../utils/scroll_lock'\nimport '../destinations_index_packed/destinations_index.js'\n\nimport Swiper from 'swiper'\nimport { Controller, Navigation, Pagination, Scrollbar } from 'swiper/modules'\nimport YouTubePlayer from 'youtube-player'\n\nimport { currentDevice } from '../../core/utils/currentDevice'\nimport { carouselModule } from '../../elements/scrollsnap_slider/scrollsnap_slider_nav'\nimport fastbooking from '../../shared/fastbooking/ibh_fastbooking'\nimport { hideHeaderStickyHotel } from '../../shared/header_sticky_hotel/header_sticky_hotel'\nimport Modal from '../../shared/modal/modal.js'\nimport { addImageCounter } from '../../utils/e_image_counter'\nimport { loadHlsVideo } from '../../utils/load_hls_video'\nimport { initializeUtagEvents } from '../information_modules_packed/information_modules.analytics.js'\n\nconst videoPlayers = []\n\nfunction handlerStatusVideo(element) {\n const activeIndex = element.activeIndex\n element.slides.forEach((slide, index) => {\n const videoContent = slide.querySelector('.video-content')\n\n if (videoContent.classList.contains('js-video-youtube')) {\n if (index === activeIndex) {\n videoPlayers[index].player.playVideo()\n } else {\n videoPlayers[index].player.pauseVideo()\n }\n return\n }\n\n if (index !== activeIndex && !videoContent.paused) {\n videoContent.pause()\n } else if (index === activeIndex && videoContent.paused) {\n videoContent.play()\n }\n })\n}\n\nfunction stopVideo(videoElement) {\n videoElement.pause()\n videoElement.currentTime = 0\n}\n\nfunction stopVideoYoutube() {\n videoPlayers.forEach((player, index) => {\n videoPlayers[index].player.stopVideo()\n })\n}\n\nfunction initCarouselVideoSwiper(event, block) {\n const swiperContainer = block.querySelector('.swiper-carousel-video')\n if (!swiperContainer) return\n\n const orderSlide = event.target.dataset.orderSlide || event.target.querySelector('.video-content').dataset.orderSlide\n\n const spaceBetween = currentDevice.isMobile ? 0 : 20\n\n Swiper.use([Navigation])\n const swiper = new Swiper(swiperContainer, {\n initialSlide: orderSlide,\n slidesPerView: 1,\n spaceBetween,\n navigation: {\n nextEl: '.swiper-button-next',\n prevEl: '.swiper-button-prev',\n },\n preloadImages: true,\n on: {\n afterInit() {\n handlerStatusVideo(this)\n },\n slideChange() {\n handlerStatusVideo(this)\n },\n },\n })\n swiper.update()\n}\n\nfunction initVideoYoutube(block) {\n const youtubeContainers = Array.from(block.querySelectorAll('.video-content.js-video-youtube'))\n\n if (youtubeContainers.length === 0) return\n\n youtubeContainers.forEach(video => {\n const idVideoYoutube = video.dataset.videoYoutube\n\n // Check if idVideoYoutube is already present in the array\n const existingPlayerIndex = videoPlayers.findIndex(player => player.idVideoYoutube === idVideoYoutube)\n\n // If the idVideoYoutube does not exist in the array, create a new player and add it to the array.\n if (existingPlayerIndex === -1) {\n const player = YouTubePlayer(video, {\n videoId: idVideoYoutube,\n })\n\n videoPlayers.push({\n idVideoYoutube,\n player,\n })\n }\n })\n}\n\nfunction initCarouselVideoModal(event, modalId) {\n Modal.show(modalId, {\n onShow: modal => {\n ScrollLock.on()\n initCarouselVideoSwiper(event, modal)\n },\n onClose: modal => {\n const videos = Array.from(modal.querySelectorAll('.video-content'))\n\n videos.forEach(video => {\n if (!video.classList.contains('js-video-youtube')) {\n stopVideo(video)\n }\n })\n\n stopVideoYoutube()\n\n ScrollLock.off()\n },\n awaitCloseAnimation: true,\n awaitOpenAnimation: true,\n })\n}\n\nfunction addDataOrderSlide(element, position) {\n element.dataset.orderSlide = position\n}\n\nfunction handlerCarouselVideo(block) {\n const videos = Array.from(block.querySelectorAll('.video-content'))\n\n if (videos.length === 0) return\n\n const carouselVideos = block.querySelector('.swiper-carousel-video .swiper-wrapper')\n if (!carouselVideos) return\n\n let modalId\n\n videos.forEach((video, index) => {\n // Clone element and add params\n const clonedVideo = video.cloneNode(true)\n\n // Add attribute if NOT video YT\n if (!video.classList.contains('js-video-youtube')) {\n clonedVideo.setAttribute('muted', false)\n clonedVideo.setAttribute('controls', '')\n }\n\n // Add data for metrics\n const cardTitle = video.closest('.utag-information-module')?.dataset.utagBlockTitle || ''\n clonedVideo.setAttribute('data-utag-card-title', cardTitle)\n\n // Create container and add class\n const swiperSlideDiv = document.createElement('div')\n swiperSlideDiv.classList.add('swiper-slide')\n\n // Add to container\n swiperSlideDiv.appendChild(clonedVideo)\n\n // Add to the html of the modal\n carouselVideos.appendChild(swiperSlideDiv)\n\n addDataOrderSlide(video, index)\n addDataOrderSlide(clonedVideo, index)\n\n video.removeAttribute('id')\n\n const contentVideo = video.closest('.image')\n modalId = contentVideo.dataset.carouselVideosTrigger\n contentVideo.addEventListener('click', event => {\n initCarouselVideoModal(event, modalId)\n })\n })\n\n // Due to problems with Swiper on mobile, the YT videos are initialised before there is some kind of content.\n // because without content, it wouldn't start correctly.\n const modal = document.querySelector(`#${modalId}`)\n initVideoYoutube(modal)\n}\n/* eslint-disable */\n/* eslint-disable */\nexport function init(blockId) {\n\n loadHlsVideo('.information-modules');\n const $el = blockId ? $(`[data-block-id=\"${blockId}\"]`) : $('.information-modules');\n const isFhiPage = document.querySelector('html').dataset.fhiTest !== undefined;\n\n if (!$el.length) return false;\n\n // Verificamos si el body tiene la clase 'inspiration-guide'\n const isInspirationGuide = document.body.classList.contains('inspiration-guide');\n\n // logic for 'inspiration-guide'\n let isMobile;\n if (isInspirationGuide) {\n isMobile = window.matchMedia(\"(max-width: 768px)\").matches;\n\n } else {\n isMobile = currentDevice.isMobile;\n }\n\n const desktop_limit = isMobile ? 1 : 3;\n Swiper.use([Navigation, Controller, Pagination, Scrollbar]);\n\n $el.each(function (index, el) {\n const infoItems = $(el).find('.info-item');\n\n infoItems.each((_, infoItem) => {\n const swiperElement = $(infoItem).find('.swiper.ib-swiper').get(0);\n if (swiperElement) {\n new Swiper(swiperElement, {\n slidesPerView: 1,\n spaceBetween: 12,\n loop: false,\n lazyPreloadPrevNext: 1,\n pagination: {\n el: $(swiperElement).find('.js-swiper-pagination').get(0),\n clickable: true,\n },\n navigation: {\n prevEl: $(swiperElement).find('.js-swiper-button-prev').get(0),\n nextEl: $(swiperElement).find('.js-swiper-button-next').get(0),\n },\n });\n }\n });\n\n if (!isMobile && $(el).find('.info-item').length > desktop_limit) {\n if ($(el).find('.info-item').length > 1) {\n const $container = $(el).find('.js-swiper-scrollbar-navigation');\n\n $container.find('img').each(function () {\n const $img = $(this);\n $img.attr('src', $img.attr('data-mobile'));\n });\n\n addImageCounter($container);\n\n const block = $el.get(0);\n const swiperScrollbarN = block.querySelector('.js-swiper-scrollbar-navigation');\n const swiperScrollbarNScroll = swiperScrollbarN.querySelector(\n ':scope > .js-swiper-navigation-wrapper .js-swiper-scrollbar-scroll'\n );\n const swiperScrollbarNScrollPrev = swiperScrollbarN.querySelector(\n ':scope > .js-swiper-navigation-wrapper .js-swiper-button-prev'\n );\n const swiperScrollbarNScrollNext = swiperScrollbarN.querySelector(\n ':scope > .js-swiper-navigation-wrapper .js-swiper-button-next'\n );\n\n new Swiper(swiperScrollbarN, {\n slidesPerView: 3,\n spaceBetween: 12,\n loop: false,\n lazyPreloadPrevNext: 1,\n scrollbar: {\n el: swiperScrollbarNScroll,\n hide: false,\n draggable: true,\n },\n navigation: {\n prevEl: swiperScrollbarNScrollPrev,\n nextEl: swiperScrollbarNScrollNext,\n },\n });\n }\n } else if (isMobile && $(el).find('.info-item').length) {\n const block = $el.get(0);\n const swiperScrollbarN = block.querySelector('.js-swiper-scrollbar-navigation');\n const swiperScrollbarNScroll = swiperScrollbarN.querySelector(\n ':scope > .js-swiper-navigation-wrapper .js-swiper-scrollbar-scroll'\n );\n new Swiper(swiperScrollbarN, {\n slidesPerView: 1.2,\n spaceBetween: 12,\n loop: false,\n scrollbar: {\n el: swiperScrollbarNScroll,\n hide: false,\n draggable: true,\n },\n navigation: false,\n });\n }\n\n const $element = $(el);\n const $multimodal = $element.find('.modal-module-nfh');\n const $truncate = $element.find('[data-truncate]');\n\n $truncate.find('p').append('...');\n\n if ($multimodal.length) {\n buildMobileSelector($multimodal)\n const $triggerModal = $element.find('[data-modal-information]');\n const $active_menu_tab = $multimodal.find('#tab-active-mobile');\n $triggerModal.on('click', function (e) {\n e.preventDefault();\n const targetTrigger = $(this).data('modal-information');\n const $targetClass = $multimodal.find(`.destination-${targetTrigger}`);\n const $targetTab = $multimodal.find(`[data-root-destination=\"destination-${targetTrigger}\"]`);\n const $tabs = $multimodal.find('.tab');\n const $tabsContent = $multimodal.find('.content-tab');\n const $targetContent = $multimodal.find($targetClass);\n\n $.fancybox.open($multimodal, {\n beforeShow() {\n handlerShowFastbooking($multimodal.get(0), '.js-btn-floating-fastbooking')\n\n $multimodal.removeClass('is-hidden');\n ScrollLock.on();\n\n const setTexts = $multimodal[0].querySelectorAll('[data-take-text-from]:not([data-text-filled])');\n setTexts.forEach(textElem => {\n const originId = textElem.dataset.takeTextFrom;\n\n if (!originId) return;\n\n const originElem = document.querySelector(`#${originId}`);\n\n if (!originElem) return;\n\n const clonedElement = originElem.cloneNode(true);\n\n textElem.appendChild(clonedElement);\n textElem.dataset.textFilled = '';\n });\n\n const idModal = $multimodal[0].id;\n const isSwiperInit = $multimodal[0].querySelector('.swiper-container-initialized');\n\n if (!isSwiperInit) {\n carouselModule(`#${idModal} .gallery-wrapper`);\n }\n },\n afterClose() {\n $multimodal.addClass('is-hidden');\n if ($active_menu_tab.hasClass('s-arrow-up')) {\n $active_menu_tab.removeClass('s-arrow-up');\n $active_menu_tab.addClass('s-arrow-down');\n }\n $multimodal.find('.tabs-wrapper ul').removeClass('visible');\n ScrollLock.off();\n },\n });\n\n $tabsContent.addClass('hidden');\n $tabs.removeClass('active');\n $targetTab.addClass('active');\n $targetContent.removeClass('hidden');\n getNameTab($multimodal);\n });\n }\n carouselModule(`[data-block-id=\"${blockId}\"] .info-item`);\n\n const block = $el.get(0);\n handlerCarouselVideo(block);\n });\n}\n\n\n\ninitializeUtagEvents()\n// NFH menu\nfunction buildMobileSelector($el) {\n if (currentDevice.isMobile && $('body').hasClass('hotel-one-landing-page')) {\n const $active_menu_tab = $el.find('#tab-active-mobile')\n const $target = $el.find('.tab')\n $active_menu_tab.removeClass('hidden')\n $(document).on('click', $active_menu_tab.selector, function (e) {\n e.preventDefault()\n $el.find('.tabs-wrapper ul').toggleClass('visible')\n changeArrow($active_menu_tab)\n })\n $(document).on('click', $target.selector, function (e) {\n e.preventDefault()\n $el.find('.tabs-wrapper ul').removeClass('visible')\n if ($active_menu_tab.hasClass('s-arrow-up')) {\n $active_menu_tab.removeClass('s-arrow-up')\n $active_menu_tab.addClass('s-arrow-down')\n }\n })\n }\n}\n\nfunction changeArrow($selector) {\n if ($selector.hasClass('s-arrow-up')) {\n $selector.removeClass('s-arrow-up')\n $selector.addClass('s-arrow-down')\n } else {\n $selector.removeClass('s-arrow-down')\n $selector.addClass('s-arrow-up')\n }\n}\n\nfunction getNameTab($el) {\n const $active_menu_tab = $el.find('#tab-active-mobile')\n const $target = $el.find('.tab')\n const selected_link = $el.find('.tab.active').find('a').html()\n $active_menu_tab.html(selected_link)\n $(document).on('click', $target.selector, function (e) {\n e.preventDefault()\n const $thisText = $(this).find('a').html()\n $active_menu_tab.html($thisText)\n })\n}\n\nfunction handlerShowFastbooking(block, selector) {\n block.querySelectorAll(selector).forEach(cta => {\n cta.addEventListener('click', () => {\n $.fancybox.close()\n ScrollLock.off()\n\n setTimeout(function () {\n fastbooking.openStickyFastbooking()\n\n if (!currentDevice.isMobile) {\n hideHeaderStickyHotel()\n fastbooking.openDates()\n }\n })\n })\n })\n}\n","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","export function addImageCounter(el, selector) {\n const $el = el\n let total\n\n $el.each(function (index, element) {\n const $item = $(element)\n\n // PY04777-477 - 725645\n // The counter is not initialised if there is a swiper inside another swiper.\n if (!selector) {\n if ($item.find('.swiper-slider:not(.swiper-slider .swiper-slider)').length) {\n selector = '.swiper-slide'\n } else if ($item.find('[data-swiper-slide]:not([data-swiper-slide] [data-swiper-slide])').length) {\n selector = '[data-swiper-slide]'\n } else {\n selector = '.ss-slide'\n }\n }\n\n total = $item.find(selector).length\n $item.find(selector).each(function (i, item) {\n $(item).prepend(`