{"version":3,"file":"js/84805-5cf1e365daf101ed9d82.js","mappings":"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","sources":["webpack://cms-web/./app/frontend/src/core/utils/constants.js","webpack://cms-web/./app/frontend/src/core/utils/currentDevice.js","webpack://cms-web/./app/frontend/src/shared/modal/modal.js","webpack://cms-web/./app/frontend/src/utils/cookie_manager.js","webpack://cms-web/./app/frontend/src/utils/get_lazy_data.js"],"sourcesContent":["export const AKAMAI_DEVICE_TYPES = {\n desktop: 'desktop',\n tablet: 'tablet',\n mobile: 'mobile',\n}\n\nexport const REGEX_LIB = {\n onlyNumbers: new RegExp('^[0-9]*$'),\n phoneNumber: new RegExp('^[0-9]{5,15}$'),\n emailFormat: new RegExp(/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/),\n noSpaces: new RegExp('^[a-zA-Z0-9]*$'),\n}\n","import { AKAMAI_DEVICE_TYPES } from './constants'\n\nconst deviceType = document.getElementsByTagName('html')[0].dataset.deviceType\nconst isTouchDevice = 'ontouchstart' in window || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0\nconst isDesktop = deviceType === AKAMAI_DEVICE_TYPES.desktop\n\nexport const currentDevice = {\n type: deviceType,\n isDesktop,\n isLikeDesktop: deviceType === AKAMAI_DEVICE_TYPES.tablet && window.outerWidth > 1024,\n isLikeMobile: deviceType === AKAMAI_DEVICE_TYPES.tablet && window.outerWidth < 768,\n isTouchDesktop: isDesktop && isTouchDevice,\n isTablet: deviceType === AKAMAI_DEVICE_TYPES.tablet,\n isMobile: deviceType === AKAMAI_DEVICE_TYPES.mobile,\n isTouchDevice,\n}\n","// This file extends funcionality of MicroModal to cover all cases of use that iberostar needs but library dont supply\n\nimport MicroModal from 'micromodal'\n\nconst MODAL_TEMPLATE_ID = 'micromodal-template'\n\nconst openedModalIds = {}\nconst defaultConfig = {\n disableFocus: true,\n}\n\nconst DATA_MODAL_PLACEHOLDER = 'data-modal-placeholder'\nconst CLOSE_ANIMATION_TIMEOUT = 500\n\nfunction moveToBody(modal, modalId) {\n if (modal.parentNode !== document.body) {\n const parent = modal.parentNode\n const placeholder = document.createElement('div')\n placeholder.setAttribute(DATA_MODAL_PLACEHOLDER, modalId)\n parent.appendChild(placeholder)\n\n document.body.appendChild(modal)\n }\n}\n\nfunction returnToPlaceholder(modal, modalId) {\n if (modal.parentNode === document.body) {\n const placeholder = document.querySelector(`[${DATA_MODAL_PLACEHOLDER}=\"${modalId}\"]`)\n if (placeholder) {\n const parent = placeholder.parentNode\n\n setTimeout(() => {\n parent.appendChild(modal)\n placeholder.remove()\n }, CLOSE_ANIMATION_TIMEOUT)\n }\n }\n}\n\n// Append modal to body before show to ensure correct positioning\nconst originalShow = MicroModal.show\nMicroModal.show = function (modalId, internalConfig = {}) {\n // clone config to avoid original config modification\n const config = { ...defaultConfig, ...internalConfig }\n\n if (!modalId) {\n // eslint-disable-next-line no-console\n console.warn(`[MicroModal] modal id is required to show modal`)\n return\n }\n\n const modal = document.querySelector(`#${modalId}`)\n\n if (!modal) {\n // eslint-disable-next-line no-console\n console.warn(`[MicroModal] modal with id ${modalId} is not in page`)\n return\n }\n\n moveToBody(modal, modalId)\n\n const originalOnShow = config?.onShow\n config.onShow = modal => {\n if (!openedModalIds[modalId]) {\n openedModalIds[modalId] = config\n }\n\n if (originalOnShow) {\n originalOnShow(modal)\n }\n }\n\n const originalOnClose = config?.onClose\n config.onClose = modal => {\n if (openedModalIds[modalId]) {\n delete openedModalIds[modalId]\n }\n\n if (Object.keys(openedModalIds).length) {\n const nextModal = Object.keys(openedModalIds).slice(-1)[0]\n originalShow(nextModal, openedModalIds[nextModal])\n }\n\n returnToPlaceholder(modal, modalId)\n\n if (originalOnClose) {\n originalOnClose(modal)\n }\n }\n\n originalShow(modalId, config)\n}\n\n// Check if there is any modal opened before call MicroModal.close method\nconst originalClose = MicroModal.close\nMicroModal.close = targetModal => {\n if (!Object.keys(openedModalIds).length) return\n\n originalClose(targetModal)\n}\n\n// Close all opened modals\nMicroModal.closeAll = () => {\n Object.keys(openedModalIds).forEach(() => {\n MicroModal.close()\n })\n}\n\n// Due to a detected bug in micromodal init, and pull request is still not merged https://github.com/ghosh/Micromodal/pull/313\n// That causes error: Invalid attempt to spread non-iterable instance\n// This method was created to initialize micromodal giving a specific data attribute in openTrigger\nMicroModal.init = function (initConfig) {\n if (!initConfig || (initConfig && !initConfig.openTrigger)) {\n // eslint-disable-next-line no-console\n console.warn(`[MicroModal] openTrigger config param is required to initialize modal with init function`)\n return\n }\n if (!initConfig || !initConfig.openTrigger) return\n const config = { ...defaultConfig, ...initConfig }\n const modalTriggers = document.querySelectorAll(`[${config.openTrigger}]`)\n\n if (!modalTriggers.length) return\n\n modalTriggers.forEach(function (trigger) {\n const modalId = trigger.getAttribute(config.openTrigger)\n trigger.addEventListener('click', function () {\n MicroModal.show(modalId, config)\n })\n })\n}\n\n// Shows a modal with html passed as param in config.html\n// example:\n// MicroModal.showHtml({ html: '

Hello!

' })\nMicroModal.showHtml = function (config) {\n if (!config || (config && !config.html)) {\n // eslint-disable-next-line no-console\n console.warn(`[MicroModal] insufficient info to render modal, modal content is required`)\n return\n }\n\n config.modalClass ??= ''\n\n const randomId = new Date().getTime()\n const modalId = `modal-${randomId}`\n const modalTemplate = document.querySelector(`#${MODAL_TEMPLATE_ID}`)\n\n if (!modalTemplate) return\n\n let modalTemplateHtml = modalTemplate.innerHTML\n\n modalTemplateHtml = modalTemplateHtml\n .replaceAll('{{modal_id}}', modalId)\n .replaceAll('{{modal_class}}', config.modalClass)\n .replaceAll('{{modal_content}}', config.html)\n\n document.body.insertAdjacentHTML('beforeend', modalTemplateHtml)\n\n const onClose = config.onClose\n config.onClose = modal => {\n // Call onclose function passed as parameter in config object\n onClose && onClose(modal)\n // Remove dynamic generated modal\n modal.remove()\n }\n\n MicroModal.show(modalId, config)\n}\n\nMicroModal.showIframe = function (config) {\n if (!config || (config && !config.iframe)) {\n // eslint-disable-next-line no-console\n console.warn(`[MicroModal] insufficient info to render modal, iframe url is required`)\n return\n }\n\n // titleIframe. Boolean\n // Show title to a modal iframe\n const titleIframe = config.titleIframe\n ? `

${config.titleIframe}

`\n : ''\n\n const randomId = Math.round(Math.random() * 10000)\n\n config.html = `\n
\n ${titleIframe}\n \n
\n `\n\n config.modalClass = `${config.modalClass || ''} has-iframe`\n\n MicroModal.showHtml(config)\n}\n\nif (typeof window !== 'undefined') {\n window.Modal = MicroModal\n}\n\nexport default MicroModal\n","/* eslint-disable no-undef */\n/* eslint-disable no-console */\n/* eslint-disable no-use-before-define */\n\nconst TECHNICAL_COOKIES = [\n 'X-MARKET',\n 'x-country',\n 'user_id',\n 'locale',\n 'currency',\n '_session_id',\n 'accessibility_mode',\n 'browsing_session',\n 'clean_timestamp',\n 'logged_messages',\n 'next_opening_hotels_popup_displayed',\n 'notifications_shown',\n 'remove_browsing',\n 'resident',\n 'show_myibe_discount',\n 'seen_auto_pop_up',\n 'user_web_name',\n 'cookies_consent',\n 'check_user_id',\n 'fastbooking_is_search',\n 'userLogin',\n 'logged_in_microsites',\n 'no_lb',\n 'cp_no_prom',\n 'cp_no_prom_partpdv',\n 'cp_no_prom_name',\n 'cp_no_prom_image',\n 'cp_expires_at',\n 'cp_promotional',\n 'campaign_cp_no_prom',\n 'campaign_cp_no_prom_origin',\n 'cp_to_crs',\n 'shared_last_searches',\n 'auth0_postregister_form',\n 'user_metadata',\n 'language',\n 'fia_user_id',\n 'fiacp',\n]\n\nconst ANALYTICS_COOKIES = [\n 'hotel_headquarter_origin',\n 'hotel_headquarter_final',\n 'last_access',\n 'page_site_origin',\n 'promotion_creative',\n 'user_points',\n 'user_level',\n 'visitor_has_reservation',\n 'visitor_type',\n 'visitor_is_buyer',\n 'visitor_session_id',\n 'visitor_session_id_expire',\n 'visitor_iberostar',\n 'visitor_recurrence',\n 'visitor_session_count',\n 'crm_id',\n 'affId',\n 'network',\n 'idCliente',\n 'CampaignId',\n 'j',\n 'e',\n 'l',\n 'u',\n 'jb',\n 'mid',\n 'login_success',\n 'custom_var',\n 'idevice_id',\n 'idevice_type',\n 'fastbooking_data_utag',\n 'update_utag_data',\n 'login_continue_as_google_user',\n 'register_success_google_one_tap',\n 'login_success_google_one_tap',\n 'register_error',\n 'register_success',\n 'login_error',\n 'agency_group_name',\n 'business_agent_code',\n 'business_code',\n 'business_name',\n 'business_type',\n 'utag_user',\n 'register_social_network_name',\n 'google_one_tap_login',\n 'social_network_name',\n 'prelead_type',\n]\n//'visitor_internal_market',\n\nconst PERSONALIZATION_COOKIES = [\n 'exit_partner',\n 'visitor_is_repeater',\n 'cp',\n 'cp_name',\n 'cp_image',\n 'cp_partpdv',\n 'campaign_cp',\n 'campaign_cp_origin',\n 'cjevent',\n 'test_reb_header',\n 'token_partner',\n]\n\nconst REMOVABLE_COOKIES = [\n 'visitor_session_id_expire',\n 'hotel_headquarter_origin',\n 'hotel_headquarter_final',\n 'fastbooking_data_utag',\n 'cp',\n 'cp_expires_at',\n 'cp_image',\n 'cp_name',\n 'cp_partpdv',\n 'cp_promotional',\n 'utag_user',\n 'fia_user_id',\n 'fiacp',\n 'idevice_type',\n 'idevice_id',\n 'ihg_data',\n 'register_error',\n 'register_success',\n 'update_utag_data',\n 'cp_no_prom',\n 'cp_no_prom_partpdv',\n 'cp_no_prom_name',\n 'cp_no_prom_image',\n 'campaign_cp_no_prom',\n 'cp_to_crs',\n 'token_partner',\n 'login_success',\n 'login_error',\n 'login_continue_as_google_user',\n 'register_success_google_one_tap',\n 'register_social_network_name',\n 'login_success_google_one_tap',\n 'register_error',\n 'register_success',\n 'social_network_name',\n 'google_one_tap_login',\n 'auth0_postregister_form',\n 'prelead_type',\n]\n\nexport function readCookie(name) {\n const cookieArr = document.cookie.split(';')\n const found = cookieArr.find(c => c.split('=')[0].trim() === name)\n return found?.split('=')[1] // returns the value of the cookie if found, undefined otherwise\n}\n\nexport function setCookie(\n c_name,\n value,\n exdays,\n path = null,\n domain = null,\n secure = null,\n httponly = null,\n same_site = null,\n callback = null\n) {\n const cookie = cookieOptions(exdays, path, domain, secure, httponly, same_site)\n cookie['name'] = c_name\n cookie['value'] = value\n return setCookies(new Array(cookie), callback)\n}\n\nexport function setCookies(cookies, callback) {\n const valid_cookies = []\n let is_cookies_consent = false\n\n if (cookies !== null && cookies.length > 0) {\n cookies.forEach(function (cookie) {\n Object.assign(\n cookie,\n cookieOptions(\n cookie['expires'],\n cookie['path'],\n cookie['domain'],\n cookie['secure'],\n cookie['httponly'],\n cookie['same_site']\n )\n )\n if (cookieIsAccepted(cookie)) {\n valid_cookies.push(cookie)\n is_cookies_consent = is_cookies_consent || cookie['name'] === is_cookies_consent\n }\n })\n } else if (callback) {\n callback()\n }\n\n if (valid_cookies.length > 0) {\n const params = { cookies: JSON.stringify(valid_cookies) }\n const body = Object.keys(params)\n .map(key => {\n return `${encodeURIComponent(key)}=${encodeURIComponent(params[key])}`\n })\n .join('&')\n return fetch('/cookies/', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',\n },\n body,\n }).then(() => {\n if (callback) {\n callback()\n }\n })\n }\n}\n\nexport function deleteCookies(cookie_names, callback) {\n const cookies = []\n cookie_names.forEach(name => {\n if (typeof readCookie(name) === 'undefined') {\n return\n }\n\n if (REMOVABLE_COOKIES.includes(name)) {\n cookies.push({ name, value: '-1', expires: '-1' })\n } else {\n cookies.push({ name, value: '-1', expires: '-1', domain: IB.cookieManager.getDomainForCookie(name) })\n }\n })\n setCookies(cookies, callback)\n}\n\nexport function hasUserAcceptedCookies() {\n return readCookie('cookies_consent') === 'true'\n}\n\nfunction isDebugPresent() {\n return document.documentElement.dataset.debug === 'true'\n}\n\nfunction isDebugConsolePresent() {\n return document.documentElement.dataset['debugConsole'] === 'true'\n}\n\nfunction cookieOptions(exdays, path = null, domain = null, secure = null, httponly = null, same_site = null) {\n const expires = exdays === null || exdays === undefined ? 365 : exdays\n return {\n expires,\n path,\n domain,\n secure,\n httponly,\n same_site,\n }\n}\n\nfunction getGroupOfCookie(cookie_name) {\n if (TECHNICAL_COOKIES.includes(cookie_name)) {\n return 'technical'\n }\n if (ANALYTICS_COOKIES.includes(cookie_name)) {\n return 'analytics'\n }\n if (PERSONALIZATION_COOKIES.includes(cookie_name)) {\n return 'personalization'\n }\n return 'unknown'\n}\n\nfunction groupIsAccepted(group) {\n let ret = false\n const state = typeof utag !== 'undefined' && typeof utag.gdpr !== 'undefined' ? utag.gdpr.getConsentState() : []\n\n //Permitimos siempre en local. Si no cambiar ese valor en application.html.erb\n if (isDebugPresent()) {\n return true\n }\n\n //Permitimos las técnicas. El resto hay que revisar el estado\n if (group === 'technical' || state === 1 || state === '1') {\n return true\n }\n\n if (state === -1 || state === '-1' || state.length === 0) {\n return true\n }\n\n if (state !== 0 && state !== '0') {\n state.forEach(s => {\n if (s['name'] === group && (s['ct'] === 1 || s['ct'] === '1')) {\n ret = true\n }\n })\n }\n\n return ret\n}\n\nlet blocked_cookies = []\n\nfunction manageBlockedCookie(cookie) {\n const index = blocked_cookies.findIndex(c => c['name'] === cookie['name'])\n if (index === -1) {\n blocked_cookies.push(cookie)\n } else {\n blocked_cookies[index] = cookie\n }\n if (isDebugConsolePresent()) {\n console.log(`Blocked cookie: ${cookie['name']}`)\n }\n}\n\nfunction cookieIsAccepted(cookie) {\n const group = getGroupOfCookie(cookie['name'])\n\n //Permitimos siempre en local. Si no cambiar ese valor en application.html.erb\n if (isDebugPresent()) {\n return true\n }\n\n //Permitimos siempre borrar cookies. Para añadir comprobamos el grupo\n if (\n cookie['expires'].toString().includes('Jan 01 1970') ||\n cookie['expires'].toString() === '-1' ||\n groupIsAccepted(group)\n ) {\n return true\n }\n manageBlockedCookie(cookie)\n return false\n}\n\nfunction manageConsentChanged(call_ajax_utag = true, call_set_partner = true) {\n //Try to send the cookies that were stopped\n const current_blocked_cookies = blocked_cookies\n blocked_cookies = []\n setCookies(current_blocked_cookies, function () {\n //Try to load utag_data\n if (call_ajax_utag && typeof ajax_utag_callback !== 'undefined') {\n ajax_utag_callback()\n }\n\n //Try to load partner\n if (call_set_partner && typeof IB.partner !== 'undefined') {\n IB.partner.showPartnerLogo()\n }\n })\n}\n\nfunction getDomainForCookie() {\n return `.${document.domain.split('.').slice(-2).join('.')}`\n}\n\nwindow.tealiumSetCookiesConsent = () => {\n let call_ajax_utag = true\n let call_set_partner = true\n //Check if we have to delete cookies\n let state = typeof utag !== 'undefined' && typeof utag.gdpr !== 'undefined' ? utag.gdpr.getConsentState() : []\n\n //Permitimos siempre en local. Si no cambiar ese valor en application.html.erb\n if (isDebugPresent()) {\n state = 1\n }\n const cookies_to_delete = []\n if (state === 0 || state === '0') {\n if (isDebugConsolePresent()) {\n console.log('Deleting analytics & personalization cookies...')\n }\n ANALYTICS_COOKIES.forEach(s => {\n cookies_to_delete.push(s)\n })\n PERSONALIZATION_COOKIES.forEach(s => {\n cookies_to_delete.push(s)\n })\n //Delete utag\n call_ajax_utag = false\n sessionStorage.setItem('utag_user', '')\n //Delete partner\n call_set_partner = false\n if (typeof IB.partner !== 'undefined' && readCookie('cp_promotional') !== 'false') {\n IB.partner.hidePartnerLogo()\n }\n } else if (state !== 1 && state !== '1') {\n state.forEach(s => {\n if (s['name'] === 'analytics' && (s['ct'] === 0 || s['ct'] === '0')) {\n if (isDebugConsolePresent()) {\n console.log('Deleting analytics cookies...')\n }\n ANALYTICS_COOKIES.forEach(s => {\n cookies_to_delete.push(s)\n })\n call_ajax_utag = false\n sessionStorage.setItem('utag_user', '')\n } else if (s['name'] === 'personalization' && (s['ct'] === '0' || s['ct'] === 0)) {\n if (isDebugConsolePresent()) {\n console.log('Deleting personalization cookies...')\n }\n PERSONALIZATION_COOKIES.forEach(s => {\n cookies_to_delete.push(s)\n })\n //Delete partner\n call_set_partner = false\n if (typeof IB.partner !== 'undefined' && readCookie('cp_promotional') !== 'false') {\n IB.partner.hidePartnerLogo()\n }\n }\n })\n }\n deleteCookies(cookies_to_delete)\n manageConsentChanged(call_ajax_utag, call_set_partner)\n}\n\nfunction initCookieManager() {\n const check_utag = setInterval(checkUtagDefined, 1000)\n\n function checkUtagDefined() {\n if (typeof utag !== 'undefined' && typeof utag.gdpr !== 'undefined') {\n clearInterval(check_utag)\n // manageConsentChanged();\n // manageConsentChanged won't delete cookies if they were created in CRS\n tealiumSetCookiesConsent()\n }\n }\n}\n\ninitCookieManager()\n;(function () {\n if (typeof IB === 'undefined') {\n window.IB = {}\n }\n\n IB.cookieManager = {\n blocked_cookies, // TODO: Potential removal. Not used outside this file.\n groupIsAccepted,\n cookieIsAccepted, // TODO: Potential removal. Not used outside this file.\n manageConsentChanged, // TODO: Potential removal. Not used outside this file.\n setCookies,\n deleteCookies,\n getDomainForCookie, // TODO: Potential removal. Not used outside this file.\n }\n})()\n","/* eslint-disable no-console */\n/**\n * Get Lazy Data\n *\n * Promise (using fetch polyfilled) that allows\n * a callback to be executed.\n *\n * The callback will receive the resolved data\n * from the last Promise.\n *\n * @params\n * - A url for the resource.\n * - Type of the data being requested (html or json, the former by default).\n * - The callback (optional)\n * - opts (optional: https://developer.mozilla.org/es/docs/Web/API/Fetch_API/Utilizando_Fetch)\n */\n\nconst TYPE_FUNCS = {\n html: 'text',\n json: 'json',\n}\n\nfunction checkTypeValue(type) {\n return TYPE_FUNCS[type] || TYPE_FUNCS['html']\n}\n\nexport async function getLazyData(url, callback, dataType = 'html', opts = { method: 'GET' }) {\n const dataTypeChecked = checkTypeValue(dataType)\n\n const response = await fetch(url, opts)\n const data = await response[dataTypeChecked]()\n\n !response.ok && console.trace(`Fetch failed. Response status: ${response.status}`)\n callback && callback(data, response.ok, response)\n}\n"],"names":["AKAMAI_DEVICE_TYPES","desktop","tablet","mobile","REGEX_LIB","onlyNumbers","RegExp","phoneNumber","emailFormat","noSpaces","deviceType","document","getElementsByTagName","dataset","isTouchDevice","window","navigator","maxTouchPoints","msMaxTouchPoints","isDesktop","currentDevice","type","isLikeDesktop","outerWidth","isLikeMobile","isTouchDesktop","isTablet","isMobile","openedModalIds","defaultConfig","disableFocus","DATA_MODAL_PLACEHOLDER","originalShow","MicroModal","show","modalId","internalConfig","arguments","length","undefined","config","console","warn","modal","querySelector","parentNode","body","parent","placeholder","createElement","setAttribute","appendChild","moveToBody","originalOnShow","onShow","originalOnClose","onClose","Object","keys","nextModal","slice","setTimeout","remove","returnToPlaceholder","originalClose","close","targetModal","closeAll","forEach","init","initConfig","openTrigger","modalTriggers","querySelectorAll","trigger","getAttribute","addEventListener","showHtml","html","modalClass","Date","getTime","modalTemplate","modalTemplateHtml","innerHTML","replaceAll","insertAdjacentHTML","showIframe","iframe","titleIframe","randomId","Math","round","random","Modal","TECHNICAL_COOKIES","ANALYTICS_COOKIES","PERSONALIZATION_COOKIES","REMOVABLE_COOKIES","readCookie","name","found","cookie","split","find","c","trim","setCookie","c_name","value","exdays","callback","cookieOptions","setCookies","Array","cookies","valid_cookies","is_cookies_consent","assign","cookieIsAccepted","push","params","JSON","stringify","map","key","encodeURIComponent","join","fetch","method","headers","then","deleteCookies","cookie_names","includes","expires","domain","IB","cookieManager","getDomainForCookie","hasUserAcceptedCookies","isDebugPresent","documentElement","debug","isDebugConsolePresent","path","secure","httponly","same_site","groupIsAccepted","group","ret","state","utag","gdpr","getConsentState","s","blocked_cookies","cookie_name","toString","index","findIndex","log","manageBlockedCookie","manageConsentChanged","call_ajax_utag","call_set_partner","current_blocked_cookies","ajax_utag_callback","partner","showPartnerLogo","tealiumSetCookiesConsent","cookies_to_delete","sessionStorage","setItem","hidePartnerLogo","check_utag","setInterval","clearInterval","initCookieManager","TYPE_FUNCS","json","async","getLazyData","url","opts","dataTypeChecked","response","data","ok","trace","status"],"sourceRoot":""}