{"version":3,"file":"js/12748-a2eb6ad0db934755f0f8.js","mappings":"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","sources":["webpack://cms-web/./app/frontend/src/blocks/destinations_index_packed/destinations_index.js","webpack://cms-web/./app/frontend/src/shared/filter_order_panel/filter_order_panel.js","webpack://cms-web/./node_modules/lodash/debounce.js","webpack://cms-web/./node_modules/lodash/now.js"],"sourcesContent":["import '../../shared/filters_sidebar/filters_sidebar'\n\nimport { currentDevice } from '../../core/utils/currentDevice'\nimport { initFilterOrderPanel } from '../../shared/filter_order_panel/filter_order_panel'\n\nlet handleRootDestinationClick\nlet handleClosePanelClick\nlet handleFilterDestListLinkClick\n\n/* eslint-disable */\nexport function init() {\n // Feature/73371: se ha dejado mucha lógica antigua ya que se usa para los filtros del modal de gastronomía y del information-module\n\n if (currentDevice.isMobile && !document.body.classList.contains('inspiration-guide')) {\n initFilterOrderPanel();\n $('[data-mobile-panel]').mobilepanel();\n }\n\n if (!$('[data-root-destination]').length) return false;\n\n let $root_destinations = $('.root-destination');\n\n handleRootDestinationClick = function() {\n selectDestination($(this))\n }\n\n $('[data-root-destination]').on('click', handleRootDestinationClick);\n\n function selectDestination (elem) {\n let $el = elem;\n let $target = $('.' + $el.attr('data-root-destination'));\n\n $('[data-root-destination]').removeClass('active');\n $el.addClass('active');\n\n if (!currentDevice.isMobile) {\n if ($('#hotels-filter-map').is(':visible')) {\n $root_destinations.not($target).removeClass('current');\n $target.addClass('current');\n IB.hotels_filter_map.filterVisible();\n $('.js-filters-sidebar').find('.root-destination').not($target)\n .addClass('hidden');\n $('.js-filters-sidebar').find($target).removeClass('hidden');\n } else {\n $root_destinations.not($target).addClass('hidden');\n $target.removeClass('hidden');\n }\n } else {\n $root_destinations.not($target).addClass('hidden');\n $target.removeClass('hidden');\n }\n if($('[data-filterable-wrap]').length)\n window.FilterSidebar.clear($('[data-filterable-wrap]'));\n\n elem.get(0).dispatchEvent(new CustomEvent('root-destination:tab-changed'))\n }\n\n if (!currentDevice.isMobile) return false;\n\n $('[data-root-destination]').each(function (index, el) {\n let $el = $(el).clone();\n let data_root = $el.attr('data-root-destination');\n $el.find('.hotel-count').remove();\n\n });\n\n let label = $('.filter-dest-list-link').data('mobile-panel-title');\n let $filters_sidebar = $('.js-filters-sidebar');\n let $filters_panel_title = $('

' + label + '

');\n let $panel = $('
');\n let $destination_filter = ($('.destination-index-tabs-nav').length) ? '.destination-index-tabs-nav' : '.destination-select select';\n let $destination_filter_selection = ($('.destination-index-tabs-nav').length) ? 'li.active' : 'option:selected';\n let $default_value = $($destination_filter).find($destination_filter_selection).attr('data-root-destination');\n let $list = $('
').attr('id', 'filter-dest').addClass('formz filter-dest-panel')\n .attr('data-current-selection', $default_value)\n .attr('data-panel-option-list', '')\n .attr('data-trigger-click', '');\n\n $($destination_filter).find('[data-root-destination]').each(function (index, el) {\n let $radio_button = '';\n let final_text = $(el).html();\n let $radio_button_label = '';\n if ($('#filter-dest').length <= 0) $list.append($radio_button + $radio_button_label + '
');\n });\n\n let $filter_dest_panel_title = $('

' + label + '

');\n let $apply_text = $('.filter-dest-list-link').data('mobile-panel-apply');\n let $filter_dest_panel_button = $('' + $apply_text + '');\n let $panel_filter_dest = $('
');\n\n $('body').append($panel, $panel_filter_dest);\n $('#mobile-filter-panel').append($filters_panel_title, $filters_sidebar);\n $('#mobile-filter-panel-dest').append($filter_dest_panel_title, $list, $filter_dest_panel_button);\n\n $(document).on('click', '[data-close-panel]', handleClosePanelClick);\n\n handleFilterDestListLinkClick = function () {\n let $current_selected = $('[data-panel-option-list]').attr('data-current-selection');\n $('#filter-dest input[value=\"' + $current_selected + '\"]').click();\n }\n $(document).on('click', '.filter-dest-list-link', handleFilterDestListLinkClick);\n}\n\ninit();\n\n// Collapsables of new destination page\nfunction collapsableHandler() {\n const collapsableBlock = document.querySelectorAll('.js-destination-header-collapsable')\n\n collapsableBlock.forEach(element => {\n const collapseButton = element.querySelector('.js-destination-header-collapsable-button')\n element.addEventListener('click', () => {\n collapseButton.classList.toggle('active')\n })\n })\n}\n\ncollapsableHandler()\n","/* eslint-disable */\nimport on from '../../utils/events_delegation';\n\n/**\n * This module creates the mobile filters panel (filters + order) when needed\n */\n\n// Creating mobile filter panels: filter and order\nimport './order_panel.scss';\nimport _debounce from 'lodash/debounce';\nimport inViewport from '../../utils/inViewport';\nimport { currentDevice } from '../../core/utils/currentDevice';\n\nconst AUTO_OFFER_LIST_PRESENT = document.querySelector('.automatic-offer-list');\n\nconst $document = $(document);\nexport function initFilterOrderPanel() {\n let $hotelsFiltering;\n if ($('.hotels-info-with-filtering').length > 0) {\n $hotelsFiltering = $('.hotels-info-with-filtering');\n } else if ($('.destination-index-container').length > 0) {\n $hotelsFiltering = $('.destination-index-container');\n } else if ($('.hotel-list').length > 0) {\n $hotelsFiltering = $('.hotel-list');\n } else {\n return false;\n }\n\n if ($hotelsFiltering.hasClass('filter-order-panel-initialized')) return false;\n\n let $filtersSidebar = $('.filters-sidebar');\n let $sortLinks = $('.js-sort-links');\n let $footerFilterButtons = $('.js-footer-filter-buttons');\n let $footerFilterButtonsWrapper = $('.js-footer-filter-buttons-wrapper');\n let orderLabel = '';\n let $orderOptions = {};\n\n if ($sortLinks.length) {\n orderLabel = $sortLinks.attr('data-order-label');\n\n // Get order options list\n let $currentOrderType = $sortLinks.find('a.active').attr('data-js-selector');\n\n $orderOptions = $('
')\n .attr('id', 'order-list')\n .addClass('filters formz mobile-panel__option-list js-order-option-list')\n .attr('data-current-order', $currentOrderType)\n .attr('data-trigger-click', 'data-root-destination')\n .attr('style', 'display:block;');\n\n let counter = 0;\n\n // get order options list\n $('.js-sort-links')\n .find('li')\n .each(function (index, el) {\n if (counter < document.querySelectorAll('.js-sort-links li').length / document.querySelectorAll('.js-sort-links').length) {\n let $link = $(el).find('a');\n let linkJsSelector = ($link.data('order-type') && $link.data('order-type').length) ? $link.data('order-type') : $link.data('js-selector');\n\n let isChecked = $currentOrderType === linkJsSelector ? ' checked ' : '';\n let $radioButton =\n '';\n let $radioButtonLabel = '';\n $orderOptions.append($radioButton + $radioButtonLabel + '
');\n counter++;\n }\n });\n }\n\n $footerFilterButtonsWrapper.removeClass('is-hidden');\n\n if ($filtersSidebar.length || $('.hotels-info-with-filtering .filters-sidebar').length) {\n // Panel with filters and order options\n // Remove old panel if exists\n $('#mobile-filter-panel')?.remove();\n $filtersSidebar = $('.filters-sidebar')\n // Filter panel creation\n let $mobileText = $hotelsFiltering.data('mobile-filter-link-text');\n let $filtersPanelTitle = $('

' + $mobileText + '

');\n let $panel = $(\n '
'\n );\n\n // Append panel components\n if ($sortLinks.length && document.querySelectorAll('.js-order-panel').length == 0) {\n // Order filter panel creation\n let $orderFilterPanel = $('
');\n let $orderFilterTitle = $('' + orderLabel + '');\n\n $orderFilterPanel.append($orderFilterTitle, $orderOptions);\n $filtersSidebar.prepend($orderFilterPanel);\n }\n\n if (!document.querySelector('#mobile-filter-panel.ready')) {\n $panel.append($filtersPanelTitle, $filtersSidebar);\n $('body').append($panel);\n }\n\n // Footer buttons\n $footerFilterButtons.find('.js-footer-filter-order').remove();\n } else if ($sortLinks.length) {\n // Remove old panel if exists\n $('#mobile-filter-panel-order')?.remove();\n // Panel with order options only\n let $orderPanelTitle = $('

' + orderLabel + '

');\n let $closePanelButton = $('');\n let $applyText = $('.order-list-link').data('mobile-panel-apply');\n let $orderPanelButton = $(\n '' +\n $applyText +\n ''\n );\n let $panelOrder = $(\n '
'\n );\n\n $panelOrder.append($orderPanelTitle, $orderOptions, $orderPanelButton, $closePanelButton);\n $('body').append($panelOrder);\n\n // Footer buttons\n $footerFilterButtons.find('.js-footer-filter-filter').remove();\n }\n\n // Apply default order\n if ($sortLinks.length) {\n applyOrder();\n }\n\n //Initialize elements of panel\n $('.filters-panel').find('input[type=checkbox], input[type=radio], select').formikation();\n\n // Footer filter buttons visibility\n let $buttonLabels = $footerFilterButtons.find('.js-footer-filter-label');\n let widthApplied = false;\n let lastScrollTop = 0;\n let delta = 5;\n let windowHeight = $(window).outerHeight();\n let finishLoad = false;\n let filtersBlockVisible = false;\n const $filterButtons = document.querySelector('.js-special-offer-mobile-filter-group');\n\n if ($filterButtons) {\n // Show floating filters if page filters block is not visible\n inViewport(\n $filterButtons,\n element => {\n filtersBlockVisible = element.isIntersecting;\n },\n { threshold: 1 }\n );\n }\n\n $(window).scroll(\n _debounce(() => {\n let windowScrollTop = $(window).scrollTop();\n let hotelsFilteringOffset = $hotelsFiltering.offset();\n let wrapperOffsetBottom = hotelsFilteringOffset.top + $hotelsFiltering.outerHeight() + 40 - windowScrollTop < 0;\n let topReachedFilters = hotelsFilteringOffset.top - 40 - (windowScrollTop + windowHeight) < 0;\n let mustBeVisible = topReachedFilters && !wrapperOffsetBottom && !filtersBlockVisible;\n\n $footerFilterButtonsWrapper.toggleClass('is-active', mustBeVisible);\n\n // Make sure they scroll more than delta\n if (Math.abs(lastScrollTop - windowScrollTop) <= delta) return;\n\n if (windowScrollTop > lastScrollTop) {\n // Scroll Down\n if (!$footerFilterButtons.hasClass('is-collapsed')) {\n let visibilityOffsetBottom = hotelsFilteringOffset.top + 140 - windowScrollTop < 0;\n $footerFilterButtons.toggleClass('is-collapsed', visibilityOffsetBottom);\n }\n } else {\n // Scroll Up\n $footerFilterButtons.removeClass('is-collapsed');\n }\n lastScrollTop = windowScrollTop;\n\n // set default label width\n if (!widthApplied && topReachedFilters && !$footerFilterButtons.hasClass('is-collapsed') && $buttonLabels.length && $buttonLabels.eq(0).outerWidth() !== 0) {\n $buttonLabels.each(function (index, el) {\n let $this = $(this);\n $this.removeAttr('style');\n $this.css('width', $this.outerWidth() + 'px');\n });\n widthApplied = true;\n }\n }, 50)\n );\n\n $hotelsFiltering.addClass('filter-order-panel-initialized')\n}\n\n// MAP panel\n$(document).on('click', '.js-footer-filter-buttons .hotel-map-link', function (event) {\n event.preventDefault();\n if ($(this).hasClass('disabled')) return false;\n\n if (!$(this).hasClass('map-is-activated')) {\n IB.hotels_filter_map.init($(this), {\n type: 'visible',\n });\n } else {\n IB.hotels_filter_map.filterVisible();\n }\n});\n\n// Checks if order filter has been changed by user\n/**\n *\n * @return {boolean} - true if changed, false if not changed\n */\nfunction orderOptionChanged() {\n let $orderOptionList = $('.js-order-option-list');\n\n if (!$orderOptionList.length) return;\n\n let lastOrderFilter = $orderOptionList.attr('data-current-order');\n let selectedOrderFilter = $orderOptionList.find('input:checked').val();\n return lastOrderFilter !== selectedOrderFilter;\n}\n\n/**\n * Sorts list by order option selected\n */\nfunction applyOrder() {\n let $orderOptionList = $('.js-order-option-list');\n\n if (!$orderOptionList.length) return;\n\n let selected_option = $orderOptionList.find('input:checked').val();\n\n if (!selected_option) return;\n\n $orderOptionList.attr('data-current-order', selected_option);\n $orderOptionList.find('label[for=\"' + selected_option + '\"]').click();\n $('[data-js-selector=\"' + selected_option + '\"]').click();\n}\n\n// Events\n// Click on filters apply button\n$document.on('click', '[data-mobile-panel] .js-apply-filters', function () {\n // Apply current selected order filter\n if ($('.js-sort-links').length && orderOptionChanged()) {\n applyOrder();\n }\n});\n\nfunction resetPanel() {\n document.querySelector('.mobile-panel.filters-panel').addEventListener(\n 'transitionend',\n function (event) {\n document.querySelectorAll('.filters-block').forEach(function (item) {\n item.style.display = 'block';\n });\n },\n { once: true }\n );\n}\n\n\ndocument.addEventListener(\"DOMContentLoaded\", function() {\n // Code to be executed when the DOM is fully loaded\n if (AUTO_OFFER_LIST_PRESENT) {\n if (currentDevice.isMobile || currentDevice.isLikeMobile) {\n // Order panel\n //---------------------------------------------------------//\n\n on({\n eventName: 'click',\n selector: '.js-filter-order-only',\n handler() {\n document.querySelectorAll('.filters-block:not(.js-order-panel)').forEach(function (item) {\n item.style.display = 'none';\n });\n },\n })\n\n // No order panel\n //---------------------------------------------------------//\n\n on({\n eventName: 'click',\n selector: '.js-filter-all',\n handler() {\n document.querySelector('.filters-block.js-order-panel').style.display = 'none';\n },\n })\n\n // Reset panel class\n //---------------------------------------------------------//\n\n on({\n eventName: 'click',\n selector: '.js-filters-panel .close-mobile-panel, .bottom-actions',\n handler() {\n resetPanel();\n },\n })\n\n //---------------------------------------------------------//\n }\n }\n\n if ((currentDevice.isMobile || currentDevice.isLikeMobile) && $('.js-order-panel').length) {\n on({\n eventName: 'click',\n selector: '.js-order-panel',\n handler() {\n // Toggle filter\n document.querySelector('.js-order-panel a').classList.toggle('active');\n document.querySelector('.mobile-panel__option-list').classList.toggle('is-hidden');\n },\n })\n }\n});\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n"],"names":["handleRootDestinationClick","handleClosePanelClick","handleFilterDestListLinkClick","init","currentDevice","isMobile","document","body","classList","contains","initFilterOrderPanel","$","mobilepanel","length","$root_destinations","elem","$el","$target","attr","removeClass","addClass","not","is","IB","hotels_filter_map","filterVisible","find","window","FilterSidebar","clear","get","dispatchEvent","CustomEvent","selectDestination","this","on","each","index","el","clone","remove","label","data","$filters_sidebar","$filters_panel_title","$panel","$destination_filter","$destination_filter_selection","$default_value","$list","$radio_button","final_text","html","$radio_button_label","append","$filter_dest_panel_title","$apply_text","$filter_dest_panel_button","$panel_filter_dest","$current_selected","click","querySelectorAll","forEach","element","collapseButton","querySelector","addEventListener","toggle","AUTO_OFFER_LIST_PRESENT","$document","$hotelsFiltering","hasClass","$filtersSidebar","$sortLinks","$footerFilterButtons","$footerFilterButtonsWrapper","orderLabel","$orderOptions","$currentOrderType","counter","$link","linkJsSelector","$radioButton","$radioButtonLabel","text","$mobileText","$filtersPanelTitle","$orderFilterPanel","$orderFilterTitle","prepend","$orderPanelTitle","$closePanelButton","$applyText","$orderPanelButton","$panelOrder","applyOrder","formikation","$buttonLabels","widthApplied","lastScrollTop","windowHeight","outerHeight","filtersBlockVisible","$filterButtons","inViewport","isIntersecting","threshold","scroll","_debounce","windowScrollTop","scrollTop","hotelsFilteringOffset","offset","wrapperOffsetBottom","top","topReachedFilters","mustBeVisible","toggleClass","Math","abs","visibilityOffsetBottom","eq","outerWidth","$this","removeAttr","css","$orderOptionList","selected_option","val","event","preventDefault","type","orderOptionChanged","isLikeMobile","eventName","selector","handler","item","style","display","once","isObject","require","now","toNumber","nativeMax","max","nativeMin","min","module","exports","func","wait","options","lastArgs","lastThis","maxWait","result","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","TypeError","invokeFunc","time","args","thisArg","undefined","apply","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","setTimeout","timeWaiting","remainingWait","debounced","isInvoking","arguments","leadingEdge","clearTimeout","cancel","flush","root","Date"],"sourceRoot":""}