{"version":3,"file":"js/acco-eb42d3ab.f10fc784.js","mappings":"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","sources":["webpack://@sunwebgroup/design-system/webpack/runtime/chunk loaded","webpack://@sunwebgroup/design-system/./shared/modules/widgets/login-status/event-types.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/main-menu/event-types.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/preference-questionnaire/event-types.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/product-map/event-types.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/product-map/product-card.template.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/product-map/main.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/product-map/product-card-slider.template.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/profile-data/event-types.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/promoted-price/event-types.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/promoted-price/w-promoted-price-fallback.template.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/promoted-price/w-promoted-price.template.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/promoted-price/w-promoted-price-sticky.template.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/promoted-price/data-processor.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/promoted-price/main.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/refund/event-types.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/reviews-list/event-types.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/reviews-teaser/event-types.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/room-dropdown/w-room-dropdown.template.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/room-dropdown/main.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/room-list/w-room-list-item.props.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/room-list/w-room-list-item.template.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/room-list/w-room-list.template.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/room-list/main.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/room-selector/w-room-selector.template.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/room-selector/w-room-selector__message.template.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/room-selector/w-room-selector__age-profiles-message.template.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/room-occupancy/w-room-occupancy.props.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/room-occupancy/w-room-occupancy.template.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/room-occupancy/main.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/room-selector/currency-symbol-position.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/room-selector/main.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/room-selector/w-room-selector__list.template.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/search/event-types.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/selected-state/selected-state-data-model.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/selected-state/w-selected-state.template.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/selected-state/main.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/static-content-data/event-types.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/subscribe-form/main.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/tabs-filter/main.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/voucher-redeemer/event-types.js","webpack://@sunwebgroup/design-system/webpack/bootstrap","webpack://@sunwebgroup/design-system/webpack/runtime/amd options","webpack://@sunwebgroup/design-system/webpack/runtime/compat get default export","webpack://@sunwebgroup/design-system/webpack/runtime/define property getters","webpack://@sunwebgroup/design-system/webpack/runtime/global","webpack://@sunwebgroup/design-system/webpack/runtime/hasOwnProperty shorthand","webpack://@sunwebgroup/design-system/webpack/runtime/make namespace object","webpack://@sunwebgroup/design-system/webpack/runtime/node module decorator","webpack://@sunwebgroup/design-system/webpack/runtime/jsonp chunk loading","webpack://@sunwebgroup/design-system/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","export const loginStatus = {\n LOADED: 'loginStatus.loaded'\n}\n","export const mainMenu = {\n MAIN_MENU_ITEM_CLICKED: 'mainMenu.itemClicked'\n}\n","/**\n * List of events used by personal details edit widget\n *\n */\nexport const preferenceQuestionnaire = {\n PREFERENCE_QUESTIONNAIRE_START: 'preferenceQuestionnaire.start',\n PREFERENCE_QUESTIONNAIRE_SEND: 'preferenceQuestionnaire.send',\n PREFERENCE_QUESTIONNAIRE_EDIT: 'preferenceQuestionnaire.edit'\n}\n","/**\n * List of events used by product map widget\n *\n */\nexport const productMap = {\n PRODUCT_MAP_OPENED: 'productMapOpened',\n PRODUCT_MAP_CLOSED: 'productMapClosed',\n ACCOMMODATION_MARKER_CLICKED: 'accommodationMarkerClicked'\n}\n","import { ImgTemplate } from '../../components/img/c-img.template'\n\n/**\n * The BoxData contains all data needed to hydrate a Box view\n *\n * @typedef {Object} BoxData\n *\n * @property {String} [variant] - Box's variant\n * @property {String} [extraClasses] - Extra classes for the button\n * @property {Object} [attributes] - Attributes for the button\n *\n */\nexport const defaultBoxData = {\n image: {},\n titleAttributes: {},\n titleText: '',\n infoCtaText: '',\n titleUrl: '',\n breadcrumbs: {},\n grade: '',\n rating: '',\n price: '',\n priceLegend: '',\n hidePrice: true,\n extraClasses: ''\n}\n\nexport const ProductCardTemplate = (d) => {\n d = { ...defaultBoxData, ...d }\n\n return `\n
\n
\n ${ImgTemplate(d.image)}\n
\n
\n ${d.grade\n ? `
\n
\n ${d.grade}\n
\n
`\n : ''}\n \n
\n

\n ${d.titleText}\n

\n
\n
\n
    \n ${d.breadcrumbs.map((location, index) => {\n return `\n
  1. \n \n ${location.text}\n \n \n
  2. \n `\n }).join('')}\n
\n
\n
\n ${d.price && !d.hidePrice\n ? `
\n ${d.priceLegend} ${d.price}\n
`\n : ''}\n ${d.infoCtaText}\n ${d.infoCtaText}\n
\n
\n
\n `\n}\n","import Component from '../../../js/core/component/component'\nimport { registerWidget } from '../../../js/core/widget/widget-directory'\nimport { getData } from '../../../js/document/html-helper'\nimport { ProductCardTemplate } from './product-card.template'\nimport { ProductCardSliderTemplate } from './product-card-slider.template'\nimport { promotedPriceEvents, productMapEvents } from '../../../js/document/event-types'\nimport registeredEvents from '../../../js/helpers/registered-events'\nimport { getUrlFromString } from '../../../js/document/url'\nimport { fetchJsonData } from '../../../js/helpers/json-fetch'\nconst EventEmitter = require('eventemitter3')\n\nrequire('../../components/map-interactive/main')\n\nconst widgetApi = 'w-product-map'\nconst promotedPriceWidgetApi = 'w-promoted-price'\nconst mapApi = 'c-map-interactive'\n\nconst widgetQueries = {\n promotedPriceWidgetsSelector: `[data-js-widget=\"${promotedPriceWidgetApi}\"]`,\n trackAttr: 'data-track'\n}\n\nexport default class ProductMap {\n /**\n * Creates a new Map\n *\n * @constructor\n *\n * @param {HTMLElement} element - The HTML component element.\n * @param {AutocompleteOptions} [options={}] - Options object\n *\n */\n constructor (element, options = {}) {\n this.element = element\n this.events = new EventEmitter()\n\n registeredEvents.registerWidgetEvents(widgetApi, this.events, {\n ...this.element.hasAttribute(widgetQueries.trackAttr) && { track: this.element.attributes[widgetQueries.trackAttr].value }\n })\n\n this.modal = element.querySelector('.c-modal')\n this.map = element.querySelector('.c-map-interactive')\n\n this.settings = { ...getData(this.element), ...options }\n this.settings.productBreadcrumbs = this._getProductBreadcrumbs() || []\n this.modal['c-modal'].events.on('opened', this._showMap, this)\n this.modal['c-modal'].events.on('open', this._prepareMap, this)\n this.modal['c-modal'].events.on('close', this._handleMapClosed, this)\n this.nearbyApiUrl = this.settings.nearbyApiUrl\n this.accoDetailsApiUrl = this.settings.accoDetailsApiUrl\n this.initialized = false\n this.centerMarkerInfoWindowData = []\n\n if (!this.settings.infoHidePrice) {\n const promotedPriceWidget = document.querySelector(widgetQueries.promotedPriceWidgetsSelector)\n if (promotedPriceWidget) {\n const promotedPriceApi = promotedPriceWidget[promotedPriceWidgetApi]\n if (promotedPriceApi && promotedPriceApi.events) {\n promotedPriceApi.events.once(promotedPriceEvents.PROMOTED_PRICE_DATA_LOADED, (response) => {\n this._addPriceData(response)\n })\n }\n }\n }\n }\n\n /**\n * Fetches the nearby products\n *\n * @returns {Object|undefined}\n */\n async _fetchProducts () {\n const url = getUrlFromString(this.nearbyApiUrl)\n const result = await fetchJsonData(url)\n\n return result\n }\n\n async _fetchAccommodationData (accommodationIds) {\n const params = accommodationIds.reduce((result, id, index) => {\n const idObj = {}\n idObj['accommodationId[' + index + ']'] = id\n return { ...result, ...idObj }\n }, {})\n\n const url = getUrlFromString(this.accoDetailsApiUrl, params)\n const result = await fetchJsonData(url)\n\n return result\n }\n\n _addNearbyMarkers (data) {\n data.accommodations.forEach((accommodation, index) => {\n const latitude = parseFloat(accommodation.latitude)\n const longitude = parseFloat(accommodation.longitude)\n const markerId = index + 1\n const icons = {\n default: data.marker,\n active: (data.markerActive) ? data.markerActive : false\n }\n\n const accommodationIds = [accommodation.accommodationId]\n accommodation.sameLocationAccommodations.forEach((item) => { accommodationIds.push(item.accommodationId) })\n\n this.map[mapApi].addMarker(\n markerId,\n latitude,\n longitude,\n icons,\n 'nearby',\n true,\n [{ type: 'click', callBack: this._loadInfoWindow.bind(this, 'nearby', accommodationIds) }]\n )\n })\n\n this.map[mapApi].createClusterMarkers()\n\n if (this.settings.zoomToMarkers) {\n this.map[mapApi].zoomToMarkers()\n }\n }\n\n _getCenterMarkerInitialData () {\n return {\n image: {\n sync: this.settings.infoImageSync,\n placeholderSrc: this.settings.infoImagePlaceholdersrc,\n resolvedSrc: this.settings.infoImageResolvedsrc,\n description: this.settings.infoImageDescription,\n ratio: this.settings.infoImageRatio,\n dynamicRatios: this._getImageDynamicRatios() || {},\n resolve: this.settings.infoImageResolve\n },\n titleUrl: this.settings.infoTitleUrl,\n titleText: this.settings.infoTitleText,\n grade: this.settings.infoGrade,\n rating: this.settings.infoRating,\n infoCtaText: this.settings.infoCtaText,\n priceLegend: this.settings.infoPriceLegend,\n breadcrumbs: this.settings.productBreadcrumbs || this._getProductBreadcrumbs() || [],\n hidePrice: this.settings.infoHidePrice,\n price: this.price\n }\n }\n\n _groupMarkersWithSameLocation (markerData) {\n const groupedAccommodations = []\n const centerMarkerData = []\n\n markerData.accommodations.forEach((accommodation) => {\n if (parseFloat(this.settings.latitude) === accommodation.latitude && parseFloat(this.settings.longitude) === accommodation.longitude) {\n centerMarkerData.push({ ...accommodation })\n } else {\n const markerDataItem = groupedAccommodations.find(({ latitude, longitude, accommodationId }) => (\n latitude === accommodation.latitude &&\n longitude === accommodation.longitude &&\n accommodationId !== accommodation.accommodationId\n ))\n if (!markerDataItem) {\n groupedAccommodations.push({ ...accommodation, sameLocationAccommodations: [] })\n } else {\n markerDataItem.sameLocationAccommodations.push({ ...accommodation })\n }\n }\n })\n\n const nearbyMarkersData = { ...markerData, accommodations: [...groupedAccommodations] }\n\n return { nearbyMarkersData, centerMarkerData }\n }\n\n _loadInfoWindow (markerType, accommodationIds) {\n this._fetchAccommodationData(accommodationIds).then(response => {\n const { infoCtaText, priceLegend, hidePrice } = this.settings\n const responseArray = (Array.isArray(response)) ? response : [response]\n const infoWindowData = responseArray.map((data) => ({ ...data, infoCtaText, priceLegend, hidePrice }))\n this._populateAndShowInfoWindow(markerType, infoWindowData)\n }).catch(error => {\n console.error(error)\n })\n }\n\n _populateAndShowInfoWindow (markerType, infoWindowData) {\n const infoWindowSingleData = (Array.isArray(infoWindowData)) ? infoWindowData[0] : infoWindowData\n this.events.emit(productMapEvents.ACCOMMODATION_MARKER_CLICKED, { ...infoWindowSingleData, markerType })\n\n if (infoWindowData.length > 1) {\n const sliderItems = infoWindowData.map(item => (\n ProductCardTemplate({ ...item, extraClasses: 'slider-item' }))\n )\n const infoWindowContent = ProductCardSliderTemplate({ sliderItems })\n this.map[mapApi].showInfoWindow(infoWindowContent)\n Component.initDocumentComponentsFromAPI(this.modal)\n } else {\n const infoWindowContent = ProductCardTemplate({ ...infoWindowSingleData })\n this.map[mapApi].showInfoWindow(infoWindowContent)\n }\n }\n\n _prepareMap () {\n if (this.initialized) {\n this.map[mapApi].clearMarkers()\n }\n }\n\n _showMap () {\n this.settings.mapOpenDate = new Date()\n this.events.emit(productMapEvents.PRODUCT_MAP_OPENED, { ...this.settings })\n this.map[mapApi].showMap()\n\n this._fetchProducts().then(async (response) => {\n const { nearbyMarkersData, centerMarkerData } = this._groupMarkersWithSameLocation(response)\n this._addNearbyMarkers(nearbyMarkersData)\n\n if (this.settings.showCenterMarker) {\n let centerMarkerSameLocationsData = []\n const centerMarkerInitialData = this._getCenterMarkerInitialData()\n\n if (centerMarkerData.length > 0) {\n const accommodationIds = centerMarkerData.map(marker => marker.accommodationId)\n const response = await this._fetchAccommodationData(accommodationIds)\n const { infoCtaText, priceLegend, hidePrice } = this.settings\n const responseArray = (Array.isArray(response)) ? response : [response]\n centerMarkerSameLocationsData = responseArray.map((data) => ({ ...data, infoCtaText, priceLegend, hidePrice }))\n }\n\n this._addCenterMarker([centerMarkerInitialData, ...centerMarkerSameLocationsData])\n }\n }).catch(error => {\n console.error(error)\n })\n\n this.initialized = true\n }\n\n _handleMapClosed () {\n this.settings.mapClosedDate = new Date()\n this.events.emit(productMapEvents.PRODUCT_MAP_CLOSED, { ...this.settings })\n this._clearMap()\n }\n\n _clearMap () {\n this.map[mapApi].clearInfoWindow()\n }\n\n _addCenterMarker (centerMarkerInfoWindowData) {\n const latitude = parseFloat(this.settings.latitude)\n const longitude = parseFloat(this.settings.longitude)\n const markerId = 0\n const icons = {\n default: this.settings.markerIcon,\n active: (this.settings.markerIconActive) ? this.settings.markerIconActive : false\n }\n\n this.map[mapApi].addMarker(\n markerId,\n latitude,\n longitude,\n icons,\n 'center',\n false,\n [{ type: 'click', callBack: this._populateAndShowInfoWindow.bind(this, 'center', centerMarkerInfoWindowData) }]\n )\n this._populateAndShowInfoWindow('center', centerMarkerInfoWindowData)\n }\n\n _addPriceData (price) {\n this.price = price\n if (this.initialized) {\n if (this.settings.showCenterMarker) {\n this.map[mapApi].clearMarkers()\n this._addCenterMarker()\n }\n }\n }\n\n _getProductBreadcrumbs () {\n const breadcrumbsElement = document.querySelector(`[data-type=\"i18n\"][data-uid=\"${this.element.id}__breadcrumbs\"]`)\n let breadcrumbsData = null\n try {\n breadcrumbsData = JSON.parse(breadcrumbsElement.textContent)\n } catch (err) { }\n\n return breadcrumbsData\n }\n\n _getImageDynamicRatios () {\n const dynamicRatiosElement = document.querySelector(`[data-type=\"i18n\"][data-uid=\"${this.element.id}__dynamicRatios\"]`)\n let dynamicRatiosData = null\n try {\n dynamicRatiosData = JSON.parse(dynamicRatiosElement.textContent)\n } catch (err) { }\n\n return dynamicRatiosData\n }\n}\n\nregisterWidget(ProductMap, widgetApi)\n","import { SliderTemplate } from '../../components/slider/c-slider.template'\n\nexport const ProductCardSliderTemplate = (d) => {\n const sliderAttributes = {\n 'data-loop': false,\n 'data-responsive': 'xs:1',\n 'data-gutter': '32',\n 'data-edge-padding': '16'\n }\n\n return SliderTemplate({\n id: 'product-map__product-card-slider',\n items: d.sliderItems,\n attributes: sliderAttributes,\n barNavigation: false,\n outerNavigation: false,\n withGradient: false,\n extraClasses: 'w-product-map__product-card-slider'\n })\n}\n","/**\n * List of events used by profile-data\n *\n */\nexport const profileData = {\n NAME_CHANGED: 'profileData.nameChanged',\n DATA_OPENED: 'profileData.dataOpened',\n DATA_EDITED: 'profileData.dataEdited'\n}\n","/**\n * List of events used by promoted price widget\n *\n */\nexport const promotedPrice = {\n PROMOTED_PRICE_DATA_LOADED: 'promotedPriceLoaded'\n}\n","import { BtnTemplate } from '../../components/btn/c-btn.template'\n\n/**\n * The PromotedPriceData contains all data needed to hydrate a PromotedPrice view\n *\n * @typedef {Object} PromotedPriceFallbackData\n *\n * @property {String} title - Promoted price title\n * @property {String} description - Promoted price description\n * @property {String} buttonText - Promoted price text button\n * @property {Boolean} [hasUiTest] - Flag to indicate if this component is subjected to a UI test.\n */\nexport const defaultPromotedPriceFallbackData = {\n title: '',\n description: '',\n buttonText: '',\n hasUiTest: false\n}\n\nexport const PromotedPriceFallbackTemplate = (d) => {\n return promotedPriceFallbackTemplate({ ...d, isSticky: false })\n}\nexport const PromotedPriceStickyFallbackTemplate = (d) => {\n return promotedPriceFallbackTemplate({ ...d, isSticky: true })\n}\n\nconst promotedPriceFallbackTemplate = (d) => {\n d = { ...defaultPromotedPriceFallbackData, ...d }\n\n const className = d.isSticky ? 'w-promoted-price__sticky' : 'w-promoted-price__main'\n\n return `\n
\n ${d.title ? `
${d.title}
` : ''}\n ${d.description ? `
${d.description}
` : ''}\n ${BtnTemplate({\n variant: 'flow',\n block: true,\n text: d.buttonText,\n extraClasses: `w-promoted-price__btn ${d.hasUiTest ? 'qa-promoted-price-click-trigger' : ''}`\n })}\n
\n `\n}\n","import { defaultPackageBlockData, PackageBlockTemplate } from '../../components/package-block/c-package-block.template'\nimport { defaultPriceData, PriceTemplate, getACMPriceLabel } from '../../components/price/c-price.template'\nimport { BtnTemplate } from '../../components/btn/c-btn.template'\n\n/**\n * The PromotedPriceData contains all data needed to hydrate a PromotedPrice view\n *\n * @typedef {Object} PromotedPriceResultData\n *\n * @property {PriceData} price - Price data\n * @property {String} skiPassPublicPriceText - Ski pass public price text\n * @property {String} buttonText - Promoted price text button\n * @property {PackageBlockData} packageBlock - package data\n * @property {String} [acmUrl] - ACM url where to request info to be displayed\n * @property {String} [acmModalId] - Modal ID where the ACM info will be shown at\n * @property {Boolean} [acmHideInfoIcon] - Hide the ACM info icon (an 'i' in an circle).\n * @property {Object} [yieldCampaignLogo] - Yield campaign logo\n * @property {String} [yieldCampaignLogo.src] - Yield campaign logo > src\n * @property {Boolean} [hasUiTest] - Flag to indicate if this component is subjected to a UI test.\n * @property {String} [rawDepartureDate] - The package departure date, expressed as machine readable string.\n * @property {String} [mandatoryExtraCostsText] - The mandatory extra costs text, to be shown with the price.\n * @property {String} [staticText] - Some optional static text to be shown along the price.\n */\nexport const defaultPromotedPriceResultData = {\n price: {},\n skiPassPublicPriceText: '',\n buttonText: '',\n packageBlock: {},\n acmUrl: '',\n acmModalId: '',\n acmHideInfoIcon: true,\n yieldCampaignLogo: {},\n hasUiTest: false,\n rawDepartureDate: '',\n mandatoryExtraCostsText: '',\n staticText: ''\n}\n\nexport const PromotedPriceTemplate = (d) => {\n d = { ...defaultPromotedPriceResultData, ...d }\n\n return `\n
\n
\n ${d.yieldCampaignLogo?.src ? `` : ''}\n ${PackageBlockTemplate({\n ...defaultPackageBlockData,\n ...d.packageBlock,\n rawDepartureDate: d.rawDepartureDate,\n outboundDepartureAirportName: d.outboundDepartureAirportName\n })}\n
\n ${PriceTemplate({\n ...defaultPriceData,\n ...d.price,\n publicPriceDetail: d.skiPassPublicPriceText,\n hasUiTest: d.hasUiTest,\n acmHideInfoIcon: !!d.mandatoryExtraCostsText,\n label: d.scratchPriceDescription,\n label2: d.mandatoryExtraCostsText && d.price.acmUrl && d.price.acmModalId\n ? getACMPriceLabel({ ...d, text: d.mandatoryExtraCostsText, staticText: d.staticText, acmUrl: d.price.acmUrl, modalId: d.price.acmModalId })\n : d.staticText,\n labelGrayed: true\n })}\n ${BtnTemplate({\n variant: 'flow',\n block: true,\n text: d.buttonText,\n extraClasses: `w-promoted-price__btn ${d.hasUiTest ? 'qa-promoted-price-click-trigger' : ''}`\n })}\n
\n `\n}\n","import { defaultPriceData, PriceTemplate, getACMPriceLabel } from '../../components/price/c-price.template'\nimport { BtnTemplate } from '../../components/btn/c-btn.template'\n\n/**\n * The PromotedPriceData contains all data needed to hydrate a PromotedPrice view\n *\n * @typedef {Object} PromotedPriceStickyResultData\n *\n * @property {PriceData} price - Price data\n * @property {String} buttonText - Promoted price text button\n * @property {String} [acmUrl] - ACM url where to request info to be displayed\n * @property {String} [acmModalId] - Modal ID where the ACM info will be shown at\n * @property {Boolean} [acmHideInfoIcon] - Hide the ACM info icon (an 'i' in an circle).\n * @property {String} [mandatoryExtraCostsText] - The mandatory extra costs text, to be shown with the price.\n * @property {String} [staticText] - Some optional static text to be shown along the price.\n */\nexport const defaultPromotedPriceStickyResultData = {\n price: {},\n buttonText: '',\n acmUrl: '',\n acmModalId: '',\n acmHideInfoIcon: true,\n mandatoryExtraCostsText: '',\n staticText: '',\n fallbackTitle: '',\n fallbackDescription: ''\n}\n\nexport const PromotedPriceStickyTemplate = (d) => {\n d = { ...defaultPromotedPriceStickyResultData, ...d }\n\n return `\n
\n ${PriceTemplate({\n ...defaultPriceData,\n ...d.price,\n publicPriceDetail: d.skiPassPublicPriceText,\n hasUiTest: d.hasUiTest,\n acmHideInfoIcon: !!d.mandatoryExtraCostsText,\n label: d.scratchPriceDescription,\n label2: d.mandatoryExtraCostsText && d.price.acmUrl && d.price.acmModalId\n ? getACMPriceLabel({ ...d, text: d.mandatoryExtraCostsText, staticText: d.staticText, acmUrl: d.price.acmUrl, modalId: d.price.acmModalId })\n : d.staticText,\n labelGrayed: true\n })}\n ${BtnTemplate({\n variant: 'flow',\n block: true,\n text: d.buttonText,\n extraClasses: `w-promoted-price__btn ${d.hasUiTest ? 'qa-promoted-price-click-trigger' : ''}`\n })}\n
\n `\n}\n","/**\n * ---------------\n * README\n * ---------------\n * ⚠ About this ⚠\n *\n * The reason to have this file here, is because the differences on data models in between\n * Sitecore and Design System components. The responsibility of this file is, given an API\n * model, obtain a ready to render model.\n *\n */\n\nconst DEFAULT_PRICE_DATA_MODEL = {\n extraClasses: 'w-promoted-price__price',\n size: 'large'\n}\n\nconst DEFAULT_PACKAGE_BLOCK_DATA_MODEL = {\n extraClasses: 'w-promoted-price__package-block'\n}\n\n/**\n * Builds a PriceData model from raw API data\n *\n * @param {Object} data - The orginal data retrieved from API\n *\n * @returns {PriceData}\n */\nexport function getPriceData (data, staticTexts, acmModalId, contextItemId) {\n let publicPriceWithCurrencySymbol\n\n if (data.price.publicValue !== undefined) {\n const symbol = data.price.currencySettings.symbol\n publicPriceWithCurrencySymbol = data.price.currencySettings.symbolPosition === 'BeforeAmount' ? `${symbol} ${data.price.publicValue}` : `${data.price.publicValue} ${symbol}`\n }\n\n let acmUrl\n\n if (data.acmInformation && data.acmInformation.acmUrl) {\n acmUrl = data.acmInformation.acmUrl.replace(/contextItemId=[\\w-]*&/ig, '')\n acmUrl = acmUrl + '&contextItemId=' + contextItemId\n }\n\n return {\n ...DEFAULT_PRICE_DATA_MODEL,\n value: data.price.value,\n currency: data.price.currencySettings.symbol,\n currencyPosition: data.price.currencySettings.symbolPosition === 'BeforeAmount' ? 'before' : 'after',\n saleText: data.price.discountPercentage\n ? `-${data.price.discountPercentage}%`\n : data.price.publicValue && data.price.discountPercentagePublicPrice ? `-${data.price.discountPercentagePublicPrice}%` : undefined,\n oldPrice: data.price.originalValue ? data.price.originalValue : undefined,\n acmUrl,\n acmModalId: data.acmInformation && data.acmInformation.acmUrl ? acmModalId : undefined,\n legend: staticTexts.priceLegend,\n publicPrice: publicPriceWithCurrencySymbol ? staticTexts.publicPrice + ' ' + publicPriceWithCurrencySymbol : undefined\n }\n}\n\n/**\n * Builds a PackageBlockData model from raw API data\n *\n * @param {Object} data - The orginal data retrieved from API\n *\n * @returns {PackageBlockData}\n */\nexport function getPackageBlockData (data) {\n return {\n ...DEFAULT_PACKAGE_BLOCK_DATA_MODEL,\n includedServices: data.includedServices,\n filters: data.featuredFilters,\n departureDate: data.departureDate.humanized\n }\n}\n\n/**\n * Returns the ski pass public price text\n *\n * @param {Object} data - The orginal data retrieved from API\n */\nexport function getSkiPassPublicPriceText (data) {\n return data.skiPassPublicPriceText\n}\n","import domEventsHelper from '../../../js/document/dom-events-helper'\nimport {\n PromotedPriceFallbackTemplate,\n PromotedPriceStickyFallbackTemplate\n} from './w-promoted-price-fallback.template'\nimport { PromotedPriceTemplate } from './w-promoted-price.template'\nimport { PromotedPriceStickyTemplate } from './w-promoted-price-sticky.template'\nimport { fetchJsonDataAndStatusInfo } from '../../../js/helpers/json-fetch'\nimport { registerWidget } from '../../../js/core/widget/widget-directory'\nimport { getPriceData, getPackageBlockData, getSkiPassPublicPriceText } from './data-processor'\nimport { arrayifyObject } from '../../../js/helpers/arrayify-object'\nimport { getUrlFromString, getSearchParamsFromUrl } from '../../../js/document/url'\nimport { register } from '../../../js/document/namespace'\nimport { language } from '../../../js/user/locale-settings'\nimport { elementFromString } from '../../../js/document/html-helper'\nimport { forceRepaint } from '../../../js/document/css'\nimport registeredEvents from '../../../js/helpers/registered-events'\nimport Component from '../../../js/core/component/component'\nimport { promotedPriceEvents } from '../../../js/document/event-types'\nimport { GET_PASSTHROUGH_PARAMS } from '../../../js/helpers/pass-through-params'\n\nconst COMPONENT_LOCALES = register(`window.sundio.i18n.${language}.promotedPrice`)\n\nconst EventEmitter = require('eventemitter3')\nconst widgetApi = 'w-promoted-price'\n\nconst widgetQueries = {\n urlAttr: `data-${widgetApi}__api-url`,\n mainContainer: `.${widgetApi}__main`,\n stickyContainer: `.${widgetApi}__sticky`,\n stickyEnabled: `data-${widgetApi}__sticky-enabled`,\n extraParams: 'input[type=\"hidden\"]',\n button: `.${widgetApi}__btn`,\n modalId: `data-${widgetApi}__modal-id`,\n dataSource: `[data-${widgetApi}__data-source]`,\n hasUiTest: `data-${widgetApi}__has-ui-test`,\n trackAttr: 'data-track'\n}\n\n/**\n * PromotedPrice content\n *\n */\nexport default class PromotedPrice {\n /**\n * Creates a new PromotedPrice behaviour, exposes an API to the element.\n *\n * @constructor\n * @param {HTMLElement} element - The HTML element.\n * @param {Object} [options={}] - Options object\n * @param {String} [options.url] - API url\n * @param {String} [options.modalId] - Modal ID (used by ACM)\n * @param {Object} [options.dataSource] - Optional static JSON data to render on experience editor\n */\n constructor (element, options = {}) {\n this.element = element\n this.elements = this._runElementQueries()\n this.extraParams = this._getExtraParamsFromDom()\n this.apiUrl = options.url || this.element.getAttribute(widgetQueries.urlAttr)\n this.stickyEnabled = options.stickyEnabled || this.element.hasAttribute(widgetQueries.stickyEnabled) || false\n this.modalId = options.modalId || this.element.getAttribute(widgetQueries.modalId)\n this.dataSource = options.dataSource || this._getDataSourceFromDom()\n this.hasUiTest = options.hasUiTest || this.element.hasAttribute(widgetQueries.hasUiTest) || false\n this.isOpened = this.element.classList.contains('in')\n this.isPricesTab = false\n\n this.passThroughParams = GET_PASSTHROUGH_PARAMS(getSearchParamsFromUrl(document.location))\n\n this.events = new EventEmitter()\n\n this.locales = this._getLocales()\n\n this.element[widgetApi] = {\n refresh: this.refresh.bind(this),\n showFallback: this.showFallback.bind(this),\n open: this.open.bind(this),\n close: this.close.bind(this),\n showStickyPromotedPrice: this._showStickyPromotedPrice.bind(this),\n events: this.events,\n getOriginalDepartureDate: this._getOriginalDepartureDate.bind(this)\n }\n\n registeredEvents.registerWidgetEvents(widgetApi, this.events, {\n ...(this.element.hasAttribute(widgetQueries.trackAttr) && {\n track: this.element.attributes[widgetQueries.trackAttr].value\n })\n })\n\n this._buildEvents()\n domEventsHelper.attachEvents(this._domEvents, widgetApi)\n\n if (this.dataSource) {\n this.refresh(\n {},\n {\n dataSource: this.dataSource,\n hasUiTest: this.hasUiTest\n }\n )\n }\n\n this.events.on(promotedPriceEvents.PROMOTED_PRICE_DATA_LOADED, d => {\n this.addBannerifDiscount(d, this.locales)\n })\n }\n\n /*\n * -----------------------------------------------------\n * INITIALIZATION RELATED METHODS\n * -----------------------------------------------------\n * */\n\n /**\n * Runs element queries\n *\n * @returns {Object}\n */\n _runElementQueries () {\n return {\n mainContainer: this.element.querySelector(widgetQueries.mainContainer)\n }\n }\n\n /**\n * Fetch promoted price data from API\n *\n * @param {Object} parameters - Parameters to be sent on calling API\n * @param {Object} [options={}]\n * @param {Object} [options.dataSource] - If provided will skip to call API\n *\n * @returns {Promise} raw data from API\n */\n async fetch (parameters, options = {}) {\n if (options.dataSource) {\n return {\n rawData: options.dataSource,\n data: this._getPromotedPriceData(options.dataSource)\n }\n }\n\n if (!this.apiUrl) return undefined\n\n const promotedPriceUrl = getUrlFromString(\n this.apiUrl,\n arrayifyObject({ ...this.extraParams, ...parameters, ...this.passThroughParams })\n )\n const promotedPriceResponseAndStatus = await fetchJsonDataAndStatusInfo(promotedPriceUrl, {\n fullReferrerOnCrossOrigin: true\n })\n if (!promotedPriceResponseAndStatus.ok || promotedPriceResponseAndStatus.statusCode === 204) {\n return null\n }\n const promotedPriceResponse = promotedPriceResponseAndStatus.jsonData\n return {\n rawData: promotedPriceResponse,\n data: this._getPromotedPriceData(promotedPriceResponse)\n }\n }\n\n /**\n * Recreates HTML content\n *\n * @param {object} parameters to fetch promoted price API\n * @param {Object} [options={}]\n * @param {Object} [options.dataSource] - If provided will skip to call API\n */\n async refresh (parameters, options = {}) {\n domEventsHelper.detachEvents(this._domEvents, widgetApi)\n\n const actionsQueue = await Promise.all([this.fetch(parameters, options), this.close()])\n\n this.promotedPriceData = actionsQueue[0]\n if (!this.promotedPriceData) {\n this.showFallback()\n return\n }\n\n const promotedPriceData = { ...this.promotedPriceData.data, hasUiTest: this.hasUiTest }\n promotedPriceData.rawDepartureDate = this.promotedPriceData.rawData.departureDate.raw // Required for the UI tests.\n promotedPriceData.mandatoryExtraCostsText = this.promotedPriceData.rawData.price.mandatoryExtraCostsText\n promotedPriceData.staticText = this.promotedPriceData.rawData.price.staticText\n promotedPriceData.scratchPriceDescription = this.promotedPriceData.rawData.price.scratchPriceDescription\n promotedPriceData.outboundDepartureAirportName = this.promotedPriceData.rawData.outboundDepartureAirportName\n this.originalDepartureDate = this.originalDepartureDate\n ? this.originalDepartureDate\n : promotedPriceData.rawDepartureDate\n\n const newMainContent = elementFromString(PromotedPriceTemplate(promotedPriceData))\n if (this.elements.mainContainer) this.elements.mainContainer.replaceWith(newMainContent)\n this.elements.mainContainer = newMainContent\n Component.initComponentActionElements(newMainContent)\n\n if (this.stickyEnabled) {\n this.elements.stickyContainer = document.body.querySelector(widgetQueries.stickyContainer)\n const mustAppendElement = !this.elements.stickyContainer\n\n const newStickyContent = elementFromString(PromotedPriceStickyTemplate(promotedPriceData))\n if (this.elements.stickyContainer) this.elements.stickyContainer.replaceWith(newStickyContent)\n this.elements.stickyContainer = newStickyContent\n this._showStickyPromotedPrice({ isPricesTab: this.isPricesTab })\n Component.initComponentActionElements(newStickyContent)\n\n if (mustAppendElement) {\n document.body.appendChild(newStickyContent)\n\n const buttonSticky = this.elements.stickyContainer.querySelector(widgetQueries.button)\n buttonSticky.addEventListener('click', ev => this._handlePromotedPriceButtonClick(ev))\n }\n }\n\n this._buildEvents()\n domEventsHelper.attachEvents(this._domEvents, widgetApi)\n\n this.events.emit(promotedPriceEvents.PROMOTED_PRICE_DATA_LOADED, {\n ...this.promotedPriceData.rawData,\n participants: parameters.Participants[0]\n })\n\n return this.open()\n }\n\n showFallback () {\n const accosWithTabs = this.element.closest('.l-site-main__content--accommodation-no-tabs') === null\n if (accosWithTabs) {\n // Fallback shouldn't be shown when acco is configured WITH tabs because user can click on Prices tab by themselves.\n return\n }\n\n domEventsHelper.detachEvents(this._domEvents, widgetApi)\n\n const promotedPriceData = {\n rawData: undefined,\n title: this.locales.fallbackTitle,\n description: this.locales.fallbackDescription,\n buttonText: this.locales.fallbackButtonText ?? this.locales.textButton,\n hasUiTest: this.hasUiTest\n }\n\n const newMainContent = elementFromString(PromotedPriceFallbackTemplate(promotedPriceData))\n if (this.elements.mainContainer) this.elements.mainContainer.replaceWith(newMainContent)\n this.elements.mainContainer = newMainContent\n Component.initComponentActionElements(newMainContent)\n\n if (this.stickyEnabled) {\n this.elements.stickyContainer = document.body.querySelector(widgetQueries.stickyContainer)\n const mustAppendElement = !this.elements.stickyContainer\n\n const newStickyContent = elementFromString(PromotedPriceStickyFallbackTemplate(promotedPriceData))\n if (this.elements.stickyContainer) this.elements.stickyContainer.replaceWith(newStickyContent)\n this.elements.stickyContainer = newStickyContent\n this._showStickyPromotedPrice({ isPricesTab: this.isPricesTab })\n Component.initComponentActionElements(newStickyContent)\n\n if (mustAppendElement) {\n document.body.appendChild(newStickyContent)\n\n const buttonSticky = this.elements.stickyContainer.querySelector(widgetQueries.button)\n buttonSticky.addEventListener('click', ev => this._handlePromotedPriceButtonClick(ev))\n }\n }\n\n this._buildEvents()\n domEventsHelper.attachEvents(this._domEvents, widgetApi)\n\n // emit event for FALLBACK LOADED ?? Do we want to track fallbacks in Google Analytics??\n // this.events.emit(promotedPriceEvents.PROMOTED_PRICE_DATA_LOADED, { ...this.promotedPriceData.rawData, participants: parameters.Participants[0] })\n\n return this.open()\n }\n\n /**\n * Opening animation to show promoted price\n */\n open () {\n return new Promise(resolve => {\n if (this.isOpened) return resolve()\n this.isOpened = true\n this.element.classList.add('is-opening')\n forceRepaint(this.element)\n this.element.classList.add('in')\n const opened = () => {\n this.element.classList.remove('is-opening')\n resolve()\n this.element.removeEventListener('transitionend', opened, false)\n }\n this.element.addEventListener('transitionend', opened, false)\n })\n }\n\n /**\n * Closing animation to hide promoted price\n */\n close () {\n return new Promise(resolve => {\n if (!this.isOpened) return resolve()\n this.isOpened = false\n this.element.classList.add('is-closing')\n forceRepaint(this.element)\n this.element.classList.remove('in')\n const closed = () => {\n this.element.classList.remove('is-closing')\n resolve()\n this.element.removeEventListener('transitionend', closed, false)\n }\n this.element.addEventListener('transitionend', closed, false)\n })\n }\n\n /**\n * Builds a PackageBlockData model from raw API data\n *\n * @param {Object} promotedPriceResponse - The original data retrieved from api\n *\n * @returns {PromotedPriceData}\n */\n _getPromotedPriceData (promotedPriceResponse) {\n return {\n price: getPriceData(promotedPriceResponse, this.locales, this.modalId, this.extraParams.contextitemid),\n packageBlock: getPackageBlockData(promotedPriceResponse),\n skiPassPublicPriceText: getSkiPassPublicPriceText(promotedPriceResponse),\n buttonText: this.locales.textButton,\n yieldCampaignLogo:\n promotedPriceResponse.yieldCampaignLogo && promotedPriceResponse.yieldCampaignLogo.src\n ? { src: promotedPriceResponse.yieldCampaignLogo.src }\n : undefined\n }\n }\n\n /**\n * Gets extra params through hidden inputs on DOM\n *\n * @returns {Object|undefined}\n */\n _getExtraParamsFromDom () {\n const extraParamsElements = this.element.querySelectorAll(widgetQueries.extraParams)\n const extraParams = Object.values(extraParamsElements)\n return extraParams\n ? extraParams.reduce((obj, el) => {\n obj[el.name] = el.value\n return obj\n }, {})\n : undefined\n }\n\n /**\n * Gets dataSource through DOM element if any\n *\n * @returns {Object|undefined}\n */\n _getDataSourceFromDom () {\n const dataSourceElement = this.element.querySelector(widgetQueries.dataSource)\n if (!dataSourceElement) return undefined\n try {\n return JSON.parse(dataSourceElement.innerHTML)\n } catch (e) {\n return undefined\n }\n }\n\n _buildEvents () {\n this._domEvents = [\n [this.element.querySelector(widgetQueries.button), { click: ev => this._handlePromotedPriceButtonClick(ev) }]\n ]\n }\n\n _handlePromotedPriceButtonClick (ev) {\n this.events.emit('promotedPriceClicked', this.promotedPriceData?.rawData)\n }\n\n /**\n * Return a locale strings object\n */\n _getLocales () {\n const customLocaleElement = document.querySelector(`[data-type=\"i18n\"][data-uid=\"${this.element.id}\"]`)\n if (!customLocaleElement) return COMPONENT_LOCALES\n\n let customLocaleData = null\n try {\n customLocaleData = JSON.parse(customLocaleElement.textContent)\n } catch (err) {}\n\n return {\n ...COMPONENT_LOCALES,\n ...customLocaleData\n }\n }\n\n _getOriginalDepartureDate () {\n return this.originalDepartureDate\n }\n\n _showStickyPromotedPrice (context) {\n this.isPricesTab = context.isPricesTab\n\n if (this.isPricesTab) {\n this.elements.stickyContainer?.classList?.add('is-hidden')\n } else {\n this.elements.stickyContainer?.classList?.remove('is-hidden')\n }\n }\n\n addBannerifDiscount (d, locales) {\n const element = document.querySelector('.discount-banner')\n if ((d.price?.discountPercentage || d.yieldCampaignCode) && locales.discountBannerMessage) {\n if (element) return\n const banner = elementFromString(`
${locales.discountBannerMessage}
`)\n const container = document.querySelector('.t-accommodation__main-top-b')\n const carrouselElement = container?.querySelector('.fr-acco-carousel')\n if (carrouselElement) {\n container.insertBefore(banner, carrouselElement.nextSibling)\n } else {\n // If there is no carousel, we need to check if there is a react gallery\n const galleryReactElement = container?.querySelector('.accommodation-carousel')\n banner.classList.add('discount-banner--react-compatible')\n if (galleryReactElement) {\n container.insertBefore(banner, galleryReactElement.nextSibling)\n }\n }\n } else {\n if (element) {\n element.remove()\n }\n }\n }\n}\n\nregisterWidget(PromotedPrice, widgetApi)\n","export const refund = {\n REFUND_REQUESTED: 'refundRequested',\n REFUND_REQUEST_CLICKED: 'click'\n}\n","/**\n * List of events used by reviews list widget\n *\n */\nexport const reviewsList = {\n REVIEWS_LIST_DATA_LOADED: 'reviewsListLoaded',\n REVIEWS_LIST_REVIEW_TRANSLATED: 'reviewsListReviewTranslated',\n REVIEWS_LIST_LANGUAGE_SWITCH: 'reviewsListLanguageSwitch',\n REVIEWS_LIST_PAGINATION: 'reviewsListPagination'\n}\n","/**\n * List of events used by reviews teaser widget\n *\n */\nexport const reviewsTeaser = {\n REVIEWS_TEASER_LOADED: 'loaded',\n REVIEWS_TEASER_MODAL_OPENED: 'reviewsModalOpened'\n}\n","import { FloatingBoxTemplate } from '../../components/floating-box/c-floating-box.template'\nimport { TextboxTemplate } from '../../components/textbox/c-textbox.template'\nimport { FloatingBoxHeaderTemplate } from '../../components/floating-box/c-floating-box__header.template'\nimport { FloatingBoxBodyTemplate } from '../../components/floating-box/c-floating-box__body.template'\nimport { FloatingBoxFooterTemplate } from '../../components/floating-box/c-floating-box__footer.template'\nimport { BtnTemplate } from '../../components/btn/c-btn.template'\nimport { ActionableListTemplate } from '../../components/actionable-list/c-actionable-list.template'\n\n/**\n * The RoomDropdownTemplate contains all the data needed to hydrate a RoomDropdownTemplate component.\n *\n * @typedef {Object} RoomDropdownTemplate\n *\n * @property {String} id - The element id\n * @property {String} placeholder - The dropdown placeholder\n * @property {Object[]} rooms - The rooms to be appended as actionableList\n * @property {Number} roomStockThresholdToShowLowAvailability - The stock threshold to show warning labels\n * @property {String} roomsLeftAvailable - The pattern to warn how many rooms are left, if necessary\n * @property {String} lastRoomAvailable - The pattern to warn about last room available\n * @property {String} onRequestLabel - The text to show when a room is \"on request\"\n * @property {PriceData} priceConfig - The price config\n * @property {String} cancel - The cancel button text\n *\n */\n\nexport const defaultRoomDropdownTemplateData = {\n id: '',\n placeholder: '',\n rooms: [],\n roomStockThresholdToShowLowAvailability: 5,\n roomsLeftAvailable: '',\n lastRoomAvailable: '',\n onRequestLabel: '',\n priceConfig: {},\n cancel: ''\n}\n\nexport const RoomDropdownTemplate = (d) => {\n d = { ...defaultRoomDropdownTemplateData, ...d }\n\n return `
\n ${TextboxTemplate({\n id: `${d.id}__textbox`,\n readonly: true,\n attributes: { 'data-w-room-dropdown__textbox': '' },\n icon: 'chevron-down',\n iconPosition: 'right',\n placeholder: d.placeholder\n })}\n ${FloatingBoxTemplate({\n gradient: true,\n extraClasses: 'w-room-dropdown__floating-box',\n attributes: { 'data-w-room-dropdown__floating-box': '' }\n },\n FloatingBoxHeaderTemplate({}, '') +\n FloatingBoxBodyTemplate({},\n `${d.rooms\n ? `
\n ${ActionableListTemplate({\n attributes: { 'data-w-room-dropdown__rooms-list': '' },\n jsApi: true,\n config: {\n itemType: 'room',\n priceDefaults: d.priceConfig,\n roomStockThresholdToShowLowAvailability: d.roomStockThresholdToShowLowAvailability,\n roomsLeftAvailable: d.roomsLeftAvailable,\n lastRoomAvailable: d.lastRoomAvailable,\n onRequestLabel: d.onRequestLabel\n },\n items: d.rooms\n })}
`\n : ''}`) +\n FloatingBoxFooterTemplate({},\n BtnTemplate({\n variant: 'flat-neutral',\n attributes: { 'data-w-room-dropdown__action': 'cancel' },\n text: d.cancel\n }))\n )}\n
\n`\n}\n","// TODO This widget is not used anymore from room selector, so it can be deleted.\n// We keep the widget live until we can ensure that everything works fine.\nimport domEventsHelper from '../../../js/document/dom-events-helper'\nimport { RoomDropdownTemplate } from './w-room-dropdown.template'\nimport { elementFromString, moveChildrenFrom } from '../../../js/document/html-helper'\nimport Component from '../../../js/core/component/component'\nimport EventEmitter from 'eventemitter3'\nimport { ActionableListTemplate } from '../../components/actionable-list/c-actionable-list.template'\nimport { language } from '../../../js/user/locale-settings'\nimport { register } from '../../../js/document/namespace'\nimport { getStyle } from '../../../js/document/css'\nimport { smooth } from '../../../js/document/scroll'\n\nrequire('../../components/floating-box/main')\n\nconst GLOBAL_LOCALES = register(`window.sundio.i18n.${language}.global`)\nconst COMPONENT_LOCALES = register(`window.sundio.i18n.${language}.roomDropdown`)\n\nconst WIDGET_API = 'w-room-dropdown'\n\nconst WIDGET_QUERIES = {\n url: `data-${WIDGET_API}__url`,\n floatingBox: `[data-${WIDGET_API}__floating-box]`,\n textBox: `[data-${WIDGET_API}__textbox]`,\n cancel: `[data-${WIDGET_API}__action=\"cancel\"]`,\n roomsList: `[data-${WIDGET_API}__rooms-list]`,\n actionableListApi: 'c-actionable-list',\n roomsContainer: '[data-w-room-dropdown__rooms-container]'\n}\n\nconst DEFAULT_OPTIONS = {\n locales: {},\n data: {\n id: '',\n priceConfig: {},\n rooms: []\n }\n}\n\nexport default class RoomDropdown {\n /**\n * Creates a new RoomDropdown\n *\n * @constructor\n *\n * @param {HTMLElement} element - The main HTML element\n * @param {Object} [options={}] - Options object\n * @param {Object} [options.locales] - Localized texts\n * @param {Object} [options.data] - Data to be used\n * @param {String} [options.data.id] - Element ID to be used\n * @param {PriceData} [options.data.priceConfig] - Price config object\n * @param {Object[]} [options.data.rooms] - Rooms to be rendered\n */\n constructor (element, options = {}) {\n this.element = element\n this.options = {\n ...DEFAULT_OPTIONS,\n ...options\n }\n this.events = new EventEmitter()\n\n this.locales = {\n ...GLOBAL_LOCALES,\n ...COMPONENT_LOCALES,\n ...options.locales\n }\n\n this._createHtml()\n this._getHtmlElements()\n this._bindEvents()\n }\n\n /**\n * Updates the room list with given rooms\n *\n * @param {Object[]} rooms - Rooms to be rendered\n * @param {Object} [options={}] - Options object\n * @param {PriceData} [options.priceConfig] - Price config object\n */\n updateRooms (rooms, options = {}) {\n this.options.data.rooms = rooms || []\n if (options.priceConfig) this.options.data.priceConfig = options.priceConfig\n\n this.roomsContainer.innerHTML = ActionableListTemplate({\n attributes: { 'data-w-room-dropdown__rooms-list': '' },\n jsApi: true,\n config: {\n itemType: 'room',\n priceDefaults: this.options.data.priceConfig,\n roomStockThresholdToShowLowAvailability: this.locales.roomStockThresholdToShowLowAvailability,\n roomsLeftAvailable: this.locales.roomsLeftAvailable,\n lastRoomAvailable: this.locales.lastRoomAvailable,\n onRequestLabel: this.locales.onRequestLabel\n },\n items: this.options.data.rooms\n })\n Component.initDocumentComponentsFromAPI(this.roomsContainer)\n this.roomsList = this.element.querySelector(WIDGET_QUERIES.roomsList)\n this._bindRoomsEvents()\n }\n\n _createHtml (data = this.options.data) {\n const roomDropdownHtml = elementFromString(RoomDropdownTemplate(\n {\n ...this.locales,\n ...this.options.data\n }\n ))\n moveChildrenFrom(roomDropdownHtml, this.element, { flush: true, attributes: true })\n Component.initDocumentComponentsFromAPI(this.element)\n }\n\n _getHtmlElements () {\n this.floatingBox = this.element.querySelector(WIDGET_QUERIES.floatingBox)\n this.textBox = this.element.querySelector(WIDGET_QUERIES.textBox)\n this.textBoxInput = this.textBox.querySelector('input')\n this.roomsList = this.element.querySelector(WIDGET_QUERIES.roomsList)\n this.cancel = this.element.querySelector(WIDGET_QUERIES.cancel)\n this.textBoxApi = this.textBox['c-textbox']\n this.floatingBoxApi = this.floatingBox['c-floating-box']\n this.roomsContainer = this.element.querySelector(WIDGET_QUERIES.roomsContainer)\n }\n\n _bindRoomsEvents () {\n this.roomsListApi = this.roomsList[WIDGET_QUERIES.actionableListApi]\n this.roomsListApi.events.on('selectItem', this._selectRoomItem.bind(this))\n }\n\n _bindEvents () {\n this._bindRoomsEvents()\n this.textBoxApi.events.on('focus', this._onFocus, this)\n this._domEvents = [\n [this.cancel, { click: () => this._onCancel() }]\n ]\n domEventsHelper.attachEvents(this._domEvents, WIDGET_API)\n }\n\n _selectRoomItem (ev) {\n this.events.emit('selected', ev)\n this._closeFloatingBox()\n }\n\n _onFocus () {\n this._openFloatingBox()\n }\n\n _openFloatingBox () {\n this.textBoxInput.classList.add('is-focused')\n this.floatingBoxApi.setProp('opened', true)\n this._floatingBoxEvents = [\n [document, { mousedown: (ev) => this._onCancel(ev) }]\n ]\n this._useScrollEffect()\n domEventsHelper.attachEvents(this._floatingBoxEvents, WIDGET_API)\n }\n\n _closeFloatingBox () {\n if (this.floatingBoxApi.getProp('opened')) {\n this.tempSelection = null\n domEventsHelper.detachEvents(this._floatingBoxEvents, WIDGET_API)\n this.floatingBoxApi.setProp('opened', false).then(() => {\n this.textBoxInput.classList.remove('is-focused')\n })\n }\n }\n\n _onCancel (ev) {\n const delegateTarget = ev && ev.target && ev.target.closest(`.${WIDGET_API}`)\n if (!delegateTarget || this.element !== delegateTarget) { this._closeFloatingBox() }\n }\n\n _getSafeDocumentYCoordinate (rootElement) {\n // Calc the viewport free vertical space\n const floatingBoxHeight = this.floatingBox.offsetHeight\n const viewportHeight = rootElement.clientHeight\n const viewportFree = viewportHeight - floatingBoxHeight\n // Calc the distance from documentTop to dropdown including safe margin\n const dropdownOffsetTop = this.element.getBoundingClientRect().top + rootElement.scrollTop\n const dropdownHeight = this.element.offsetHeight\n const dropdownMargin = 20\n const dropdownTargetYCoordinate = dropdownOffsetTop + dropdownHeight + dropdownMargin\n // Return the perfect coordinate to ensure visibility\n return dropdownTargetYCoordinate - viewportFree\n }\n\n _useScrollEffect () {\n const isFloatingBoxFixed = getStyle(this.floatingBox, 'position') === 'fixed'\n const isOpened = getStyle(this.floatingBox, 'display') !== 'none'\n if (isOpened && isFloatingBoxFixed) {\n const documentScrollingElement = document.scrollingElement || document.documentElement\n const safeDocumentYCoordinate = this._getSafeDocumentYCoordinate(documentScrollingElement)\n smooth(documentScrollingElement,\n documentScrollingElement.scrollLeft,\n safeDocumentYCoordinate)\n }\n }\n\n forceQuickClose () {\n this.floatingBoxApi.forceClosedCallback()\n }\n}\n","import { string } from 'prop-types'\n\nexport const propTypes = {\n\n id: string.isRequired,\n\n title: string.isRequired,\n\n description: string,\n\n price: string.isRequired,\n\n stockWarningMessage: string,\n\n characteristicsContentLayout: string\n}\n\nexport const defaultProps = {\n title: '',\n price: '',\n isSelectable: true,\n characteristicsContentLayout: 'default'\n}\n","import { propTypes, defaultProps } from './w-room-list-item.props'\nimport { checkPropTypes } from 'prop-types'\nimport { PriceTemplate } from '../../components/price/c-price.template'\nimport { BtnTemplate } from '../../components/btn/c-btn.template'\nimport { LabelTemplate } from '../../components/label/c-label.template'\nimport { CollapseTemplate, defaultCollapseData } from '../../components/collapse/c-collapse.template'\nimport { PhotoGalleryTemplate } from '../../components/photo-gallery/c-photo-gallery.template'\nimport { getTokenClass } from '../../../js/helpers/tokens'\nimport { accommodationRoomtypesType as events } from '../data-layer/types'\n\n// Import room occupancy tokens\nconst tokensShared = require('./data/w-room-list__tokens.json')['w-room-list']\nconst tokensBrand = (() => {\n try {\n return require(`../../../../brands/${WEBPACK_BRAND}/modules/widgets/room-list/data/w-room-list__tokens.json`)['w-room-list'] // eslint-disable-line\n } catch (error) {\n return {}\n }\n})()\nconst tokens = { ...tokensShared, ...tokensBrand }\n\nexport const dataRoomtypeCollapseListener = events.ROOMTYPES_SELECTOR_TOGGLED\n\nexport const RoomListItemTemplate = (props) => {\n const d = { ...defaultProps, ...props }\n checkPropTypes(propTypes, d, 'prop', 'RoomListItemTemplate')\n\n const classNameLastRoom = d.stockWarningMessageIsLastRoom ? 'w-room-list-item__availability-lastroom' : ''\n\n return `\n
\n
\n
\n ${d.onRequest && d.locales.onRequestLabel && d.isSelectable\n ? LabelTemplate({\n text: d.locales.onRequestLabel,\n variant: 'sale',\n extraClasses: 'w-room-list-item__onrequest'\n })\n : ''}\n ${d.stockWarningMessage && d.isSelectable\n ? LabelTemplate({\n text: d.stockWarningMessage,\n variant: 'sale',\n extraClasses: `w-room-list-item__availability ${classNameLastRoom}`\n })\n : ''}\n
\n ${d.title}\n ${d.description\n ? `${d.description}`\n : ''}\n
\n
\n
\n ${PriceTemplate({\n ...d.priceConfig,\n value: d.price\n })}\n
\n
\n ${d.isSelectable\n ? `
\n
\n ${d.characteristics && d.locales.roomTypeDescriptionTitle\n ? `
\n \n
`\n : ''\n }\n
\n ${d.locales && d.locales.selectRoomButtonText\n ? BtnTemplate({\n extraClasses: 'w-room-list-item__room-selection--button',\n variant: 'trust',\n jsApi: true,\n text: d.locales.selectRoomButtonText,\n attributes: {\n 'data-room-contract-id': d.contractId,\n 'data-room-id': d.id,\n 'data-occupancy-id': d.occupancyId,\n 'data-package-id': d.packageId\n }\n })\n : ''}\n
\n
\n ${d.characteristics\n ? `${CollapseTemplate({\n ...defaultCollapseData,\n ...{\n id: `${d.id}-${d.roomNumber}`,\n track: dataRoomtypeCollapseListener,\n attributes: {\n 'data-roomtype-title': d.title\n },\n html: GetRoomCharacteristicsHtml(d)\n }\n })}`\n : ''\n }\n
`\n : ''}\n
\n `\n}\n\nconst GetRoomCharacteristicsHtml = (d) => {\n let html = ''\n if (d.images) {\n html = PhotoGalleryTemplate({ popupTitle: d.title, elements: d.images })\n }\n return `${html}\n
\n \n
\n`\n}\n","import { RoomListItemTemplate } from './w-room-list-item.template'\nimport { NumberStepperTemplate } from '../../components/number-stepper/c-number-stepper.template'\n\n/**\n * The RoomData contains the information for each room that will be printed as a item for the list.\n *\n * @typedef {Object} RoomData\n *\n * @property {String} id - The identifier of the room\n * @property {Boolean} onRequest - A boolean that indicates if the room is on request or not\n * @property {String} stockWarningMessage - The text to show when as a warning on the stock\n * @property {String} title - Name of the room\n * @property {String} description - Occupancy description of the room\n * @property {Decimal} price - The price value\n * @property {Array} characteristics - Array of texts enumerating the characteristics of the room\n * @property {Object[]} images - Array of objects representing the images of the room\n *\n */\n\n/**\n * The LocalesData contains the locales used for this template.\n *\n * @typedef {Object} LocalesData\n *\n * @property {String} onRequestLabel - The text to show when a room is \"on request\"\n * @property {String} roomTypeDescriptionTitle - The text to show as collapse header of the room characteristics\n * @property {String} selectRoomButtonText - The text to show in the button to select a room\n * @property {String} emptyFilteredRooms - The message to show to the user when the filtered rooms are empty\n * @property {String} roomsNotMatchingOccupancyHeader - The message to show in the header of filtered out rooms (rooms that doesn't match the occupancy filter)\n * @property {String} priceFromWord - The text 'from' to show next to the price when the room will cost that price or greater\n *\n */\n\n/**\n * The OccupancySelectorData contains the information needed for each number stepper to be rendered.\n *\n * @typedef {Object} OccupancySelectorData\n *\n * @property {String} ageProfileId - The age profile identifier (tipically adults, children or babies)\n * @property {Number} current - The current value for the number stepper\n * @property {Number} max - The maximum number that can be inserted in number stepper\n * @property {String} name - The primary label text to name to shown in the number stepper\n * @property {String} description - The secondary label text (less prominent) to show below the primary text\n *\n */\n\n/**\n * The RoomListTemplate contains all the data needed to hydrate a RoomList component.\n *\n * @typedef {Object} RoomListTemplate\n *\n * @property {String} id - The element id\n * @property {String} roomWord - The word to say 'room'\n * @property {String} roomNumber - The room number to numerate the rooms\n * @property {String} roomOccupancy - The room occupancy description to be shown next to the title\n * @property {Boolean} showEmtpyFilteredRoomsMessage - A boolean that indicates if the message about empty rows must be shown\n * @property {String} roomsNotMatchingOccupancyHeader - The message to show when filter results in no rooms available, and all of them are on the grayed zone\n * @property {RoomData[]} rooms - The rooms to be appended as actionableList\n * @property {PriceData} priceConfig - The price config\n * @property {LocalesData} locales - The locales texts\n * @property {OccupancySelectorData[]} occupancySelectors - The rooms to be appended as actionableList\n *\n */\nexport const defaultRoomListTemplateData = {\n id: '',\n roomWord: '',\n roomNumber: 0,\n showEmtpyFilteredRoomsMessage: false,\n roomsNotMatchingOccupancyHeader: '',\n rooms: [],\n roomsNotMatchingOccupancy: [],\n occupancySelectors: []\n}\n\nexport const RoomListTemplate = (d) => {\n d = { ...defaultRoomListTemplateData, ...d }\n\n return `\n
\n
\n
\n
\n \n

${d.roomWord} ${d.roomNumber ? d.roomNumber : ''}

\n ${d.roomOccupancy ? `${d.roomOccupancy}` : ''}\n
\n ${d.occupancySelectors && d.occupancySelectors.length > 0\n ? `\n
\n ${d.occupancySelectors.map(occupancySelector => NumberStepperTemplate(getNumberStepperData(d.id, occupancySelector))).join(' ')}\n
\n `\n : ''}\n
\n
\n
\n
\n
\n `\n}\n\nexport const RoomListItemsTemplate = (d) => {\n return `\n
\n ${d.rooms.map(item => `\n ${RoomListItemTemplate({\n ...item,\n roomNumber: d.roomNumber,\n locales: d.locales,\n isSelectable: true,\n priceConfig: {\n ...d.priceConfig,\n legend: d.showFromTextInRooms\n ? d.locales.priceFromWord\n : ''\n }\n })}\n `).join('')}\n\n ${d.showEmtpyFilteredRoomsMessage\n ? `
\n ${d.locales.emptyFilteredRooms}\n
`\n : ''}\n\n ${d.roomsNotMatchingOccupancy && d.roomsNotMatchingOccupancy.length > 0\n ? ` ${d.roomsNotMatchingOccupancyHeader\n ? `
\n ${d.roomsNotMatchingOccupancyHeader}\n
`\n : ''}\n\n
\n ${d.roomsNotMatchingOccupancy.map(item => `\n\n ${RoomListItemTemplate({\n ...item,\n locales: d.locales,\n priceConfig: {\n ...d.priceConfig,\n legend: d.locales.priceFromWord\n },\n extraClasses: 'w-room-list-item__filtered-out',\n isSelectable: false\n })}\n `).join('')}\n
\n `\n : ''}\n\n
\n `\n}\n\nexport const slpittedRoomListItemsTemplate = ({ d, selectedRoomTypeList, notSelectedRoomTypeList }) => {\n return `
\n
\n ${d.locales?.roomListSelectedTitle ? `
${d.locales.roomListSelectedTitle}
` : ''}\n ${RoomListItemsTemplate({ ...d, rooms: selectedRoomTypeList })}\n
\n ${\n notSelectedRoomTypeList?.length\n? `\n
\n
\n ${d.locales?.roomListOtherTitle ? `
${d.locales.roomListOtherTitle}
` : ''}\n ${RoomListItemsTemplate({ ...d, rooms: notSelectedRoomTypeList })}\n
`\n: ''\n }\n\n
\n `\n}\nfunction getNumberStepperData (roomId, occupancySelector) {\n return {\n id: roomId + `_${occupancySelector.ageProfileId}`,\n value: occupancySelector.current || 0,\n minValue: 0,\n maxValue: occupancySelector.max,\n step: 1,\n label: occupancySelector.name,\n labelDescription: occupancySelector.description,\n extraClasses: 'w-room-list__number-stepper',\n attributes: { 'data-age-profile': occupancySelector.ageProfileId }\n }\n}\n","import { RoomListTemplate, RoomListItemsTemplate, slpittedRoomListItemsTemplate } from './w-room-list.template'\nimport { elementFromString, moveChildrenFrom } from '../../../js/document/html-helper'\nimport Component from '../../../js/core/component/component'\nimport EventEmitter from 'eventemitter3'\nimport { language } from '../../../js/user/locale-settings'\nimport { register } from '../../../js/document/namespace'\nimport SortRoomsBy from '../../../js/data/room-selector/sort-rooms-by'\n\nrequire('../../components/floating-box/main')\n\nconst COMPONENT_LOCALES = register(`window.sundio.i18n.${language}.roomList`)\n\nconst WIDGET_API = 'w-room-list'\nconst NUMBER_STEPPER_API = 'c-number-stepper'\n\nconst WIDGET_QUERIES = {\n url: `data-${WIDGET_API}__url`,\n roomsListSelectRoomButtons: `.${WIDGET_API}-item__room-selection--button`,\n roomListNumberSteppers: `.${WIDGET_API}__number-stepper`,\n roomsListContainerElement: `[data-${WIDGET_API}__rooms-list]`\n}\n\nconst DEFAULT_OPTIONS = {\n locales: {},\n sortRoomsBy: SortRoomsBy.PriceAndName,\n data: {\n id: '',\n priceConfig: {},\n rooms: []\n }\n}\n\nexport default class RoomList {\n /**\n * Creates a new RoomList\n *\n * @constructor\n *\n * @param {HTMLElement} element - The main HTML element\n * @param {Object} [options={}] - Options object\n * @param {Object} [options.locales] - Localized texts\n * @param {Object} [options.data] - Data to be used\n * @param {String} [options.data.id] - Element ID to be used\n * @param {PriceData} [options.data.priceConfig] - Price config object\n * @param {Object[]} [options.data.rooms] - Rooms to be rendered\n */\n constructor (element, options = {}) {\n this.element = element\n this.options = {\n ...DEFAULT_OPTIONS,\n ...options\n }\n this.events = new EventEmitter()\n\n this.locales = {\n ...COMPONENT_LOCALES,\n ...options.locales\n }\n\n this._initOccupancyFilter()\n this._createHtml()\n this._getHtmlElements()\n this._bindEvents()\n this._refreshRooms()\n }\n\n _createHtml (data = this.options.data) {\n const roomListHtml = elementFromString(RoomListTemplate(\n {\n ...data,\n locales: this.locales,\n priceConfig: this.options.data.priceConfig,\n rooms: []\n }\n ))\n\n Component.initDocumentComponentsFromAPI(roomListHtml)\n moveChildrenFrom(roomListHtml, this.element, { flush: true, attributes: true })\n Component.initComponentActionElements(roomListHtml)\n }\n\n _getHtmlElements () {\n this.numberSteppers = [...this.element.querySelectorAll(WIDGET_QUERIES.roomListNumberSteppers)]\n this.numberSteppersApi = this.numberSteppers.map(stepper => stepper[NUMBER_STEPPER_API])\n this.roomsContainer = this.element.querySelector(WIDGET_QUERIES.roomsListContainerElement)\n this._getHtmlElementsInItems()\n }\n\n _getHtmlElementsInItems () {\n this.roomsListSelectRoomButtons = this.element.querySelectorAll(WIDGET_QUERIES.roomsListSelectRoomButtons)\n }\n\n _bindEvents () {\n this.numberSteppersApi.forEach(numberStepperApi => {\n numberStepperApi.events.on('change', this._numberStepperChanged, this)\n })\n this._bindEventsItems()\n }\n\n _bindEventsItems () {\n this.roomsListSelectRoomButtons.forEach(selectRoomButton => {\n selectRoomButton['c-btn'].events.on('clickButton', this._selectRoomItem, this)\n })\n }\n\n _initRoomsContainerEvents () {\n Component.initComponentActionElements(this.roomsContainer)\n }\n\n _selectRoomItem (button, ev) {\n const isOccupationEmptyOrNotSet = this.options.roomSelectorService.occupancies.isOccupationEmptyOrNotSet(this.occupancyFilter)\n\n const eventArgs = {\n roomContractId: ev.attr.roomContractId,\n roomId: ev.attr.roomId,\n occupancyId: ev.attr.occupancyId,\n packageId: isOccupationEmptyOrNotSet ? undefined : ev.attr.packageId,\n occupancy: isOccupationEmptyOrNotSet ? undefined : this.occupancyFilter\n }\n this.events.emit('selected', eventArgs)\n }\n\n _numberStepperChanged () {\n const occupancyFilter = this._getOccupancyFilterFromNumberSteppers()\n this._updateOccupancyFilter(occupancyFilter)\n }\n\n _updateOccupancyFilter (occupancyFilter, options = { silent: false }) {\n this.occupancyFilter = occupancyFilter\n if (!options.silent) {\n this._refreshRooms()\n this._initRoomsContainerEvents()\n }\n }\n\n _initOccupancyFilter () {\n if (this.options.data.occupancySelectors) {\n const occupancyFilter = this.options.data.occupancySelectors.reduce((occupancy, occupancySelector) => {\n const current = occupancySelector.current || 0\n\n occupancy[occupancySelector.ageProfileId] = current\n occupancy.total = (occupancy.total || 0) + current\n return occupancy\n }, {})\n\n this._updateOccupancyFilter(occupancyFilter, { silent: true })\n }\n }\n\n _getOccupancyFilterFromNumberSteppers () {\n return this.numberSteppersApi.reduce((occupancy, stepper) => {\n const ageProfile = stepper.element.attributes['data-age-profile'].value\n occupancy[ageProfile] = stepper.props.value\n occupancy.total = (occupancy.total || 0) + stepper.props.value\n return occupancy\n }, {})\n }\n\n _refreshRooms () {\n const filterResponse = this.options.roomSelectorService\n ? this.options.roomSelectorService.filterRooms(this.options.data.rooms, this.occupancyFilter, this.options.sortRoomsBy)\n : { rooms: this.options.data.rooms, roomsNotMatchingOccupancy: [] }\n\n const isOccupancyFilterDefined = this.numberSteppersApi && this.numberSteppersApi.length > 0\n const isOccupancyFilterEmpty = isOccupancyFilterDefined && this.options.roomSelectorService.occupancies.isOccupationEmptyOrNotSet(this.occupancyFilter)\n\n const selectedRoomTypeRooms = filterResponse.roomsMatchingOccupancy.filter(room => room.selected)\n const notSelectedRoomTypeRooms = filterResponse.roomsMatchingOccupancy.filter(room => !room.selected)\n\n let roomsHtml = null\n if (selectedRoomTypeRooms.length) {\n roomsHtml = elementFromString(slpittedRoomListItemsTemplate({\n d: {\n roomNumber: this.options.data.roomNumber,\n roomsNotMatchingOccupancy: filterResponse.roomsNotMatchingOccupancy,\n showEmtpyFilteredRoomsMessage: filterResponse.roomsMatchingOccupancy.length === 0,\n roomsNotMatchingOccupancyHeader: this._getHeaderTextForRoomsNotMatchingOccupancy(filterResponse.roomsNotMatchingOccupancy),\n showFromTextInRooms: isOccupancyFilterDefined && isOccupancyFilterEmpty,\n locales: this.locales,\n priceConfig: this.options.data.priceConfig\n },\n selectedRoomTypeList: selectedRoomTypeRooms,\n notSelectedRoomTypeList: notSelectedRoomTypeRooms\n }))\n } else {\n roomsHtml = elementFromString(RoomListItemsTemplate({\n roomNumber: this.options.data.roomNumber,\n rooms: filterResponse.roomsMatchingOccupancy,\n roomsNotMatchingOccupancy: filterResponse.roomsNotMatchingOccupancy,\n showEmtpyFilteredRoomsMessage: filterResponse.roomsMatchingOccupancy.length === 0,\n roomsNotMatchingOccupancyHeader: this._getHeaderTextForRoomsNotMatchingOccupancy(filterResponse.roomsNotMatchingOccupancy),\n showFromTextInRooms: isOccupancyFilterDefined && isOccupancyFilterEmpty,\n locales: this.locales,\n priceConfig: this.options.data.priceConfig\n }))\n }\n\n Component.initDocumentComponentsFromAPI(roomsHtml)\n moveChildrenFrom(roomsHtml, this.roomsContainer, { flush: true, attributes: false })\n this._getHtmlElementsInItems()\n this._bindEventsItems()\n }\n\n _getHeaderTextForRoomsNotMatchingOccupancy (roomsNotMatchingOccupancy) {\n let message = ''\n if (roomsNotMatchingOccupancy && roomsNotMatchingOccupancy.length > 0) {\n message = (this.locales.roomsNotMatchingOccupancyHeader || '').replace('{n}', roomsNotMatchingOccupancy.length)\n }\n return message\n }\n}\n","/**\n * The RoomSelectorTemplateData contains all data needed to hydrate a RoomSelector view\n *\n * @typedef {Object} RoomSelectorTemplateData\n *\n * @property {String} [headerText]\n */\n\nexport const defaultRoomSelectorData = {\n headerText: '[Select your rooms]'\n}\n\nexport const RoomSelectorTemplate = (d) => {\n d = { ...defaultRoomSelectorData, ...d }\n\n return `\n

${d.headerText}

\n
\n
\n`\n}\n","import { BoxTemplate } from '../../components/box/c-box.template'\n\n/**\n * The RoomSelectorDropdownTemplateData contains all data needed to hydrate a RoomSelector view\n *\n * @typedef {Object} RoomSelectorDropdownTemplateData\n *\n * @property {Boolean} [showMessage] - Indicates if the message must be shown\n * @property {String} [state] - State of the message which sets one color or another\n * @property {String[]} [messagesText] - List of texts to show\n * @property {String} [token] - Token name to be used in the title so each brand can use a different style in the title\n * @property {String} [extraClasses] - Extra classes to be injected in the main
of the rendered html\n * @property {String} [showArrow] - Indicates if an arrow must be shown in the box of the message\n * @property {String} [arrowPosition] - [top|bottom|left|right] Indicates the position of the arrow\n */\nexport const defaultRoomSelectorMessageData = {\n showMessage: true,\n state: 'info',\n messagesText: [],\n showArrow: false,\n arrowPosition: 'top',\n token: '',\n extraClasses: ''\n}\n\nexport const RoomSelectorMessageTemplate = (d) => {\n d = { ...defaultRoomSelectorMessageData, ...d }\n\n const messages = d.messagesText && d.messagesText.filter(msg => msg && msg.length !== '')\n const showMessageBox = d.showMessage && messages.length > 0\n const extraClassArrowPosition = d.showArrow && d.arrowPosition ? `c-box--arrow-${d.arrowPosition}` : ''\n\n const result = showMessageBox\n ? `
\n ${BoxTemplate({\n variant: d.showArrow ? 'arrow' : '',\n html: `
\n ${messages.map(message => `

${message}

`).join('')}\n
`,\n extraClasses: `${extraClassArrowPosition} w-room-selector__message-box cs-state-${d.state} cs-state-${d.state}--light`\n })}\n
`\n : ''\n return result\n}\n\nexport const RoomSelectorWarningTemplate = (d) => {\n const messages = d.messagesText && d.messagesText.filter(msg => msg && msg.length !== '')\n return `\n
\n ${messages.map(message => `

${message}

`).join('')}\n
\n `\n}\n","import { BoxTemplate } from '../../components/box/c-box.template'\n\n/**\n * The ProfileData contains the information needed for each age profile to be rendered.\n *\n * @typedef {Object} AgeProfileData\n *\n * @property {String} title - Title of the profile (example: 'adults', 'children' or 'babies')\n * @property {String} text - Text to describe the profile\n *\n */\n\n/**\n * The RoomSelectorDropdownTemplateData contains all data needed to hydrate a RoomSelector view\n *\n * @typedef {Object} RoomSelectorAgeProfilesMessageData\n *\n * @property {String} [headerTitle] - Title text that will be shown always\n * @property {String} [headerToggleText] - Text to show in the link to expand the content of the message\n * @property {String} [contentTitle] - Title text to show on the header of the content part that can be collapsed.\n * @property {String} [collapseId] - Identifier for the collapsible\n * @property {AgeProfileData[]} [profiles] - Array of profiles that will be rendered as part of the content\n */\nexport const defaultRoomSelectorAgeProfilesMessageData = {\n headerTitle: '',\n headerToggleText: '',\n contentTitle: '',\n collapseId: '',\n profiles: []\n}\n\nexport const RoomSelectorAgeProfilesMessageTemplate = (d) => {\n d = { ...defaultRoomSelectorAgeProfilesMessageData, ...d }\n\n const result = `
\n ${BoxTemplate({\n html: `\n
\n ${d.headerTitle}\n \n
\n
\n
\n
${d.contentTitle}
\n \n ${d.profiles\n ? `${d.profiles.map(profile => `\n \n \n \n \n `).join('')}`\n : ''}\n
${profile.title}${profile.text}
\n
\n
`,\n extraClasses: 'w-room-selector__age-profile-message-box cs-default cs-default--light'\n })}\n
`\n return result\n}\n","import { arrayOf, bool, number, objectOf, oneOfType, shape, string } from 'prop-types'\n\nexport const propTypes = {\n\n id: string.isRequired,\n\n roomWord: string.isRequired,\n\n roomNumber: number.isRequired,\n\n roomName: string.isRequired,\n\n roomDescription: string,\n\n price: shape({\n value: string,\n currencyPosition: string,\n currency: string,\n legend: string,\n priceSuffix: string\n }).isRequired,\n\n infoMessage: string,\n\n errorMessage: string,\n\n stockWarningMessage: string,\n\n onRequest: bool,\n\n onRequestLabel: string,\n\n removable: bool,\n\n isFlexibleAllocation: bool,\n\n characteristicsContentLayout: string,\n\n occupancySelectors: arrayOf(\n shape({\n id: string,\n current: number,\n min: number,\n max: number,\n name: string,\n description: string\n })\n ),\n\n /** Extra class names to be appended on root element */\n extraClasses: string,\n\n /** Extra attributes to be appended on root element */\n attributes: objectOf(\n oneOfType([\n bool,\n string\n ])\n )\n}\n\nexport const defaultProps = {\n id: '',\n roomWord: '',\n roomNumber: 0,\n roomName: '',\n price: {\n value: '',\n currencyPosition: '',\n currency: '',\n legend: ''\n },\n removable: false,\n isFlexibleAllocation: false,\n characteristicsContentLayout: 'default'\n}\n","import { propTypes, defaultProps } from './w-room-occupancy.props'\nimport { checkPropTypes } from 'prop-types'\nimport { NumberStepperTemplate } from '../../components/number-stepper/c-number-stepper.template'\nimport { PriceTemplate } from '../../components/price/c-price.template'\nimport { BtnTemplate } from '../../components/btn/c-btn.template'\nimport { LabelTemplate } from '../../components/label/c-label.template'\nimport { encodeAttributes } from '../../../js/helpers/string'\nimport { CollapseTemplate, defaultCollapseData } from '../../components/collapse/c-collapse.template'\nimport { PhotoGalleryTemplate } from '../../components/photo-gallery/c-photo-gallery.template'\nimport { getTokenClass } from '../../../js/helpers/tokens'\n\n// Import room occupancy tokens\nconst tokensShared = require('./data/w-room-occupancy__tokens.json')['w-room-occupancy']\nconst tokensBrand = (() => {\n try {\n return require(`../../../../brands/${WEBPACK_BRAND}/modules/widgets/room-occupancy/data/w-room-occupancy__tokens.json`)['w-room-occupancy'] // eslint-disable-line\n } catch (error) {\n return {}\n }\n})()\nconst tokens = { ...tokensShared, ...tokensBrand }\n\n/**\n * The RoomOccupancyTemplate contains all the data needed to hydrate a RoomOccupancy component.\n *\n * @typedef {Object} RoomOccupancyTemplate\n *\n * @property {String} id - The identifier of the room\n * @property {String} extraClasses - The extra styles that will be applied\n * @property {String} attributes - Attributes to add to the root element of the widget\n * @property {String} roomWord - The word to say 'room'\n * @property {String} roomNumber - The room number to numerate the rooms\n * @property {String} errorMessage - The error message to show when the occupancy of the room is wrong\n * @property {Boolean} onRequest - A boolean that indicates if the room is on request or not\n * @property {String} onRequestLabel - The text to show when a room is \"on request\"\n * @property {String} stockWarningMessage - The text to show when as a warning on the stock\n * @property {String} roomName - Name of the room\n * @property {String} roomDescription - Occupancy description of the room\n * @property {Decimal} price - The price value\n * @property {Array} characteristics - Array of texts enumerating the characteristics of the room\n * @property {Object[]} images - Array of objects representing the images of the room\n * @property {String} roomTypeDescriptionTitle - The text to show as collapse header of the room characteristics\n * @property {Boolean} removable - Indicates if the room can be removed, so it will show an icon/button to remove the room\n * @property {Boolean} isFlexibleAllocation - Indicates if the allocation can be changed (flexible) or not\n * @property {String} characteristicsContentLayout - Defines the layout of the characteristics content\n * @property {Array} occupancySelectors - An Array of occupancy selectors {OccSelector} with the information for them\n * @property {String} OccupancySelector.id - identifier of the selector (ex: 'adults')\n * @property {String} OccupancySelector.current - value of the occupancy (ex: 2)\n * @property {String} OccupancySelector.min - min value (ex: 1)\n * @property {String} OccupancySelector.max - max value (ex: 4)\n * @property {String} OccupancySelector.name - name of the occupancy (ex: \"Volwassen\")\n * @property {String} OccupancySelector.description - description of the occupancy (ex: \"from 17 years\")\n *\n */\nexport const RoomOccupancyTemplate = (props) => {\n const d = { ...defaultProps, ...props }\n checkPropTypes(propTypes, d, 'prop', 'RoomOccupancyTemplate')\n\n return `\n
\n
\n \n

${d.roomWord} ${d.roomNumber ? d.roomNumber : ''}

\n
\n
\n
\n
\n
\n ${d.onRequest && d.onRequestLabel\n ? LabelTemplate({\n text: d.onRequestLabel,\n variant: 'sale',\n extraClasses: 'w-room-occupancy__onrequest'\n })\n : ''}\n ${d.stockWarningMessage\n ? LabelTemplate({\n text: d.stockWarningMessage,\n variant: 'sale',\n extraClasses: 'w-room-occupancy__availability'\n })\n : ''}\n
\n ${d.roomName}\n ${d.roomDescription\n ? `${d.roomDescription}`\n : ''}\n
\n
\n
\n ${PriceTemplate(d.price)}\n
\n
\n ${d.errorMessage\n ? `
\n ${d.errorMessage}\n
`\n : ''\n }\n ${d.isFlexibleAllocation && (d.occupancySelectors && d.occupancySelectors.length > 0)\n ? `
\n ${d.occupancySelectors.map(occupancySelector => NumberStepperTemplate(getNumberStepperData(d.id, occupancySelector))).join(' ')}\n
`\n : ''}\n\n ${d.characteristics\n ? `
\n
\n \n
\n ${CollapseTemplate({\n ...defaultCollapseData,\n ...{\n id: `${d.id}-${d.index}`,\n html: GetRoomCharacteristicsHtml(d)\n }\n })}\n
`\n : ''\n }\n
\n ${d.removable\n ? BtnTemplate({\n variant: 'icon-only',\n icon: 'bin',\n extraClasses: 'w-room-occupancy__remove-button',\n jsApi: true\n })\n : ''}\n
\n
`\n}\n\nfunction getNumberStepperData (id, d) {\n return {\n id: id + `_${d.id}`,\n value: d.current,\n minValue: d.min,\n maxValue: d.max,\n step: 1,\n label: d.name,\n labelDescription: d.description,\n extraClasses: 'w-room-occupancy__number-stepper',\n attributes: { 'data-age-profile': d.id }\n }\n}\n\nconst GetRoomCharacteristicsHtml = (d) => {\n let html = ''\n if (d.images) {\n html = PhotoGalleryTemplate({ popupTitle: d.title, elements: d.images })\n }\n return `${html}\n
\n \n
\n`\n}\n","import { registerWidget } from '../../../js/core/widget/widget-directory'\n\nconst EventEmitter = require('eventemitter3')\nconst WIDGET_API = 'w-room-occupancy'\nconst WIDGET_QUERIES = {\n numberSteppers: `.${WIDGET_API}__number-stepper`,\n removeRoomButton: `.${WIDGET_API}__remove-button`\n\n}\nconst NUMBER_STEPPER_API = 'c-number-stepper'\n\nexport default class RoomOccupancy {\n /**\n * Creates a new RoomOccupancy\n *\n * @constructor\n *\n * @param {HTMLElement} element - The HTML widget element.\n * @param {options} [options={}] - Options object\n *\n */\n constructor (element, options = {}) {\n this.element = element\n this.options = {\n ...options\n }\n\n this.elements = this.runElementQueries()\n\n this.events = new EventEmitter()\n this.NumberSteppersApi = []\n\n this._initNumberSteppersApi()\n this._bindElements()\n\n this.element[WIDGET_API] = {\n element: this.element,\n options: this.options,\n events: this.events\n }\n }\n\n runElementQueries () {\n return {\n numberSteppers: [...this.element.querySelectorAll(WIDGET_QUERIES.numberSteppers)],\n removeRoomButton: this.element.querySelector(WIDGET_QUERIES.removeRoomButton)\n }\n }\n\n /**\n * Make accessible elements Api of componets to this\n *\n * @returns {Object}\n */\n _initNumberSteppersApi () {\n this.numberSteppersApi = this.elements.numberSteppers.map(stepper => stepper[NUMBER_STEPPER_API])\n }\n\n /**\n * Bind events of the NumberSteppers and RemoveButton\n */\n _bindElements () {\n if (this.numberSteppersApi && this.numberSteppersApi.length > 0) {\n this.numberSteppersApi.forEach(api => {\n api.events.on('change', this._handleRoomOccupancyChanged, this)\n })\n }\n\n if (this.elements.removeRoomButton) {\n this.elements.removeRoomButton['c-btn'].events.on('clickButton', this._handleRemoveRoomButtonClicked, this)\n }\n }\n\n /**\n * Gets the room occupancy by ageProfile\n *\n * @returns {PartyComposition}\n */\n getOccupancy () {\n return this.numberSteppersApi.reduce((occupancy, stepper) => {\n const ageProfile = stepper.element.attributes['data-age-profile'].value\n occupancy[ageProfile] = stepper.props.value\n\n return occupancy\n }, {})\n }\n\n /**\n * Common code to handle event of number of occupancy changed\n */\n _handleRoomOccupancyChanged () {\n this.events.emit('roomOccupancyChanged', this.getOccupancy())\n }\n\n /**\n * handle event remove room clicked button\n */\n _handleRemoveRoomButtonClicked () {\n this.events.emit('removeRoom', this.element.id)\n }\n}\n\nregisterWidget(RoomOccupancy, WIDGET_API)\n","/**\n * Enumeration for the position of the currency symbol.\n */\nconst CurrencySymbolPosition = {\n /**\n * Currency not shown.\n */\n NotShown: 'NotShown',\n\n /**\n * The currency must be shown before the amount.\n */\n BeforeAmount: 'BeforeAmount',\n /**\n * The currency must be shown after the amount.\n */\n AfterAmount: 'AfterAmount',\n\n /**\n * Checks if a value is a member of the enumeration.\n */\n isValid: (enumValue) => {\n return Object.values(CurrencySymbolPosition).includes(enumValue)\n }\n}\n\nexport default CurrencySymbolPosition\n","import RoomList from '../room-list/main'\r\nimport Component from '../../../js/core/component/component'\r\nimport { language } from '../../../js/user/locale-settings'\r\nimport { register } from '../../../js/document/namespace'\r\nimport { registerWidget } from '../../../js/core/widget/widget-directory'\r\nimport { RoomSelectorTemplate } from './w-room-selector.template'\r\nimport { RoomSelectorListTemplate } from './w-room-selector__list.template'\r\nimport { RoomSelectorMessageTemplate, RoomSelectorWarningTemplate } from './w-room-selector__message.template'\r\nimport { RoomSelectorAgeProfilesMessageTemplate } from './w-room-selector__age-profiles-message.template'\r\nimport RoomSelectorService from '../../../js/data/room-selector/room-selector-service'\r\nimport { RoomOccupancyTemplate } from '../room-occupancy/w-room-occupancy.template'\r\nimport RoomOccupancy from '../room-occupancy/main'\r\nimport { elementFromString, flush } from '../../../js/document/html-helper'\r\nimport PriceTableType from '../booking-gate/price-table-type'\r\nimport CurrencySymbolPosition from './currency-symbol-position'\r\nimport { smooth } from '../../../js/document/scroll'\r\n\r\nconst EventEmitter = require('eventemitter3')\r\nconst globalLocales = register(`window.sundio.i18n.${language}.global`)\r\nconst componentLocales = register(`window.sundio.i18n.${language}.roomSelector`)\r\n\r\nconst DEFAULT_OPTIONS = {\r\n locales: {},\r\n hasFlexibleAllocation: true,\r\n allInSameRoom: false,\r\n priceTableType: PriceTableType.DepartureDateAndRoomType,\r\n roomCode: null,\r\n roomOccupancyId: null,\r\n occupation: null\r\n}\r\n\r\nconst WIDGET_API = 'w-room-selector'\r\nconst WIDGET_QUERIES = {\r\n mainContainerElement: `[data-${WIDGET_API}--main-container]`,\r\n roomSelectorItemList: `.${WIDGET_API}__items-list`,\r\n wrongAllocationMessageContentElement: `.${WIDGET_API}__wrong-allocation-message--content`\r\n}\r\n\r\nexport default class RoomSelector {\r\n constructor (element, participants, data, options = {}) {\r\n this.element = element\r\n this.participants = data.participants || participants\r\n this.data = data\r\n this.options = {\r\n ...DEFAULT_OPTIONS,\r\n ...options\r\n }\r\n this.locales = {\r\n ...globalLocales,\r\n ...componentLocales,\r\n ...this.options.locales\r\n }\r\n\r\n this.events = new EventEmitter()\r\n this.roomSelectorService = new RoomSelectorService(this.data)\r\n\r\n this._initState()\r\n this._buildHtml()\r\n this._updateUi()\r\n }\r\n\r\n getAllocatedPackages () {\r\n return this.allocatedPackages\r\n }\r\n\r\n getUnallocatedOccupation () {\r\n return this.state.unallocatedOccupation\r\n }\r\n\r\n getTotalOccupation () {\r\n if (this.options.hasFlexibleAllocation) {\r\n return this.totalOccupation\r\n } else {\r\n // totalOccupation for DP it's empty\r\n return this.roomSelectorService.getOccupationFromBirthDates(this.participants)\r\n }\r\n }\r\n\r\n _initState () {\r\n this.allocatedPackages = null\r\n this.totalOccupation = this.options.hasFlexibleAllocation\r\n ? this.roomSelectorService.getOccupationFromBirthDates(this.participants)\r\n : this.roomSelectorService.getOccupationBaseObject()\r\n\r\n this.indexFirstPackage = -1\r\n let firstPackage = null\r\n\r\n if (this.options.priceTableType === PriceTableType.DepartureDateAndRoomType && this.options.roomCode) {\r\n const roomOccupancies = this.options.roomOccupancyId\r\n ? this.roomSelectorService.getOccupanciesByRoomIdAndRoomOccupancyId(this.options.roomCode, this.options.roomOccupancyId)\r\n : this.roomSelectorService.getOccupanciesByRoomId(this.options.roomCode)\r\n\r\n if (this.options.hasFlexibleAllocation) {\r\n const { occupancy: bestOccupancy, occupation: bestOccupation } = this.roomSelectorService.getBestOccupancyForOccupation(roomOccupancies, this.totalOccupation)\r\n const bestPackage = this.roomSelectorService.packages.getPackagesByRoomId(this.options.roomCode).find(pkg => pkg.occupancyId === bestOccupancy.id)\r\n\r\n firstPackage = {\r\n roomContractId: this.options.roomContractId,\r\n roomId: this.options.roomCode,\r\n packageId: bestPackage.id,\r\n occupation: bestOccupation\r\n }\r\n } else {\r\n const roomOccupancy = roomOccupancies.find(occupancy => this._findOccupation(this.options.occupation, occupancy.limits))\r\n\r\n if (roomOccupancy) {\r\n const selectedPackage = this.roomSelectorService.packages.getPackagesByRoomId(this.options.roomCode).find(pkg => pkg.occupancyId === roomOccupancy.id)\r\n\r\n firstPackage = {\r\n roomId: this.options.roomCode,\r\n roomContractId: this.options.roomContractId,\r\n packageId: selectedPackage.id,\r\n occupation: roomOccupancy\r\n }\r\n }\r\n }\r\n }\r\n\r\n const state = {\r\n packages: undefined,\r\n unallocatedOccupation: this.totalOccupation\r\n }\r\n\r\n if (this.options.hasFlexibleAllocation) {\r\n // Pre-packaging.\r\n state.packages = []\r\n\r\n if (firstPackage) {\r\n // Price table 1.0.\r\n this.indexFirstPackage = 0\r\n state.packages.push(firstPackage)\r\n state.unallocatedOccupation = this.roomSelectorService.getOccupationDifference(this.totalOccupation, firstPackage.occupation)\r\n }\r\n } else {\r\n // Dynamic packaging.\r\n if (firstPackage) {\r\n this.indexFirstPackage = this.participants.findIndex(participant => {\r\n const occupation = this.roomSelectorService.getOccupationFromBirthDates(participant)\r\n return this._findOccupation(occupation, firstPackage.occupation.limits)\r\n })\r\n }\r\n\r\n if (this.indexFirstPackage < 0 && firstPackage) {\r\n this.indexFirstPackage = this.participants.findIndex(participant => this.roomSelectorService.getOccupationFromBirthDates(participant).total === firstPackage.occupation.limits.total.max)\r\n }\r\n\r\n state.packages = this.participants.map((currentRoomParticipants, idx) => ({\r\n roomId: this.indexFirstPackage === idx ? firstPackage.roomId : undefined,\r\n roomContractId: this.indexFirstPackage === idx ? firstPackage.roomContractId : undefined,\r\n packageId: this.indexFirstPackage === idx ? firstPackage.packageId : undefined,\r\n occupation: this.roomSelectorService.getOccupationFromBirthDates(currentRoomParticipants)\r\n }))\r\n }\r\n\r\n this.state = state\r\n }\r\n\r\n _findOccupation (occupation, occupationLimits) {\r\n const match = occupation.adults === occupationLimits.adults.max &&\r\n occupation.children === occupationLimits.children.max &&\r\n occupation.babies === occupationLimits.babies.max\r\n\r\n return match\r\n }\r\n\r\n _updateState (newState, options = { silent: false }) {\r\n const unallocatedOccupation = this.options.hasFlexibleAllocation\r\n ? newState.packages.reduce((occ, pkg) => this.roomSelectorService.getOccupationDifference(occ, pkg.occupation), { ...this.totalOccupation })\r\n : this.state.unallocatedOccupation\r\n\r\n this.state = {\r\n ...newState,\r\n unallocatedOccupation\r\n }\r\n\r\n if (!options.silent) {\r\n this._updateUi()\r\n }\r\n }\r\n\r\n _buildHtml () {\r\n this.element.innerHTML = RoomSelectorTemplate(this.locales)\r\n this.elements = this._runElementQueries()\r\n }\r\n\r\n _runElementQueries () {\r\n return {\r\n mainContainerElement: this.element.querySelector(WIDGET_QUERIES.mainContainerElement)\r\n }\r\n }\r\n\r\n _addRoomsAllocated () {\r\n let statusOk = true\r\n\r\n this.state.packages.forEach((pkg, idx) => {\r\n if (!this.options.hasFlexibleAllocation && !pkg.roomId) {\r\n this._addRoomAllocatedNotSelected(pkg, idx)\r\n } else {\r\n const roomStatus = this._addRoomAllocatedAndSelected(pkg, idx)\r\n statusOk = statusOk && roomStatus\r\n }\r\n })\r\n\r\n return statusOk\r\n }\r\n\r\n _addRoomAllocatedNotSelected (pkg, idx) {\r\n const roomNumber = idx + 1\r\n const roomListElement = elementFromString(RoomSelectorListTemplate())\r\n const roomListApi = this._roomSelectorListHtml(roomListElement, pkg.occupation, roomNumber)\r\n roomListApi.events.on('selected', (ev) => this._handleAddRoomDynamic(idx, ev.roomId))\r\n\r\n this.elements.mainContainerElement.appendChild(roomListElement)\r\n Component.initComponentActionElements(roomListElement)\r\n }\r\n\r\n _addRoomListWithoutAllocation () {\r\n const roomNumber = this.state.packages.length + 1\r\n const roomListElement = elementFromString(RoomSelectorListTemplate())\r\n const roomListApi = this._roomSelectorListHtml(roomListElement, this.state.unallocatedOccupation, roomNumber)\r\n roomListApi.events.on('selected', (ev) => this._handleAddRoom(ev.roomId, ev.packageId, ev.occupancy))\r\n\r\n this.elements.mainContainerElement.appendChild(roomListElement)\r\n Component.initComponentActionElements(roomListElement)\r\n }\r\n\r\n _addSpecialAgeProfileMessage () {\r\n const showMessage = this.data.isSpecialAgeProfile\r\n\r\n if (showMessage) {\r\n const specialAgeProfileMessageData = {\r\n headerTitle: this.locales.specialAgeProfileHeaderTitle,\r\n headerToggleText: this.locales.specialAgeProfileHeaderToggleText,\r\n collapseId: 'room-selector-age-profiles',\r\n contentTitle: this.locales.specialAgeProfileContentTitle,\r\n profiles: this.roomSelectorService.ageProfiles.getValidProfiles()\r\n .map(ageProfile => ({\r\n title: this._getAgeProfileName(ageProfile.id),\r\n text: this._getAgeRangeDescription(ageProfile)\r\n }))\r\n }\r\n const specialAgeProfileMessageElement = elementFromString(RoomSelectorAgeProfilesMessageTemplate(specialAgeProfileMessageData))\r\n this.elements.mainContainerElement.appendChild(specialAgeProfileMessageElement)\r\n Component.initDocumentComponentsFromAPI(specialAgeProfileMessageElement)\r\n }\r\n }\r\n\r\n _addInfoMessageWithPendingAllocation () {\r\n const pendingAllocationMessageData = {\r\n messagesText: [this._getAllAgeProfilesPendingToAllocateMessages()],\r\n token: 'pending-allocation-message',\r\n extraClasses: 'pending-allocation-message'\r\n }\r\n const pendingAllocationMessageElement = elementFromString(RoomSelectorMessageTemplate(pendingAllocationMessageData))\r\n this.elements.mainContainerElement.appendChild(pendingAllocationMessageElement)\r\n }\r\n\r\n _addErrorMessageWrongAllocation () {\r\n const messagesText = [this.locales.wrongAllocationMessageToContinue]\r\n\r\n const errorWrongAllocationData = {\r\n messagesText,\r\n extraClasses: 'wrong-allocation-message'\r\n }\r\n const errorWrongAllocationElement = elementFromString(RoomSelectorWarningTemplate(errorWrongAllocationData))\r\n this.elements.mainContainerElement.appendChild(errorWrongAllocationElement)\r\n }\r\n\r\n _roomSelectorListHtml (roomSelectorElement, occupationToAllocate, roomNumber) {\r\n const roomSelectorListData = this.roomSelectorService.getListOfRoomsSelectableByOccupation(occupationToAllocate, this.options.hasFlexibleAllocation, roomNumber)\r\n const availableRoomsListData = this._getAvailableRoomsListData(roomSelectorListData)\r\n\r\n if (!availableRoomsListData || availableRoomsListData.length === 0) {\r\n const wrongAllocationMessageContentElements = roomSelectorElement.querySelectorAll(WIDGET_QUERIES.wrongAllocationMessageContentElement)\r\n\r\n // Set the message that there are no compatible rooms with the people pending to allocate (so the message\r\n // indicating the participants per age category pending to allocate will be overwritten).\r\n wrongAllocationMessageContentElements.forEach(element => {\r\n element.innerText = this.locales.noCompatibleRoomsForPeoplePendingToAllocateText\r\n })\r\n }\r\n\r\n const roomListApi = new RoomList(roomSelectorElement, {\r\n locales: this.locales,\r\n extraClasses: 'w-room-selector__item-wrapper',\r\n roomSelectorService: this.roomSelectorService,\r\n data: {\r\n id: `${this.element.id}__list-item`,\r\n roomWord: this.locales.roomWord,\r\n roomNumber,\r\n occupationToAllocate,\r\n roomOccupancy: this.options.hasFlexibleAllocation ? '' : this._getPartyCompostionAllocatedDescription(occupationToAllocate),\r\n occupancySelectors: this.options.hasFlexibleAllocation ? this._getOccupancySelectorsForRoomList(occupationToAllocate) : null,\r\n rooms: availableRoomsListData,\r\n priceConfig: this._getCurrencyConfig()\r\n }\r\n })\r\n\r\n return roomListApi\r\n }\r\n\r\n _getCurrencyConfig () {\r\n let currencyConfig\r\n\r\n if (this.data.currencySettings) {\r\n switch (this.data.currencySettings.symbolPosition) {\r\n case CurrencySymbolPosition.BeforeAmount:\r\n currencyConfig = {\r\n currencyPosition: 'before',\r\n currency: this.data.currencySettings.symbol\r\n }\r\n break\r\n case CurrencySymbolPosition.AfterAmount:\r\n currencyConfig = {\r\n currencyPosition: 'after',\r\n currency: this.data.currencySettings.symbol\r\n }\r\n break\r\n case CurrencySymbolPosition.NotShown:\r\n currencyConfig = {\r\n currencyPosition: '',\r\n currency: ''\r\n }\r\n break\r\n default:\r\n currencyConfig = undefined\r\n break\r\n }\r\n }\r\n\r\n return currencyConfig\r\n }\r\n\r\n _handleAddRoomDynamic (idx, roomId) {\r\n const roomOccupancies = this.roomSelectorService.getOccupanciesByRoomId(roomId)\r\n const { occupancy: bestOccupancy } = this.roomSelectorService.getBestOccupancyForOccupation(roomOccupancies, this.state.packages[idx].occupation)\r\n const bestPackage = this.roomSelectorService.packages.getPackagesByRoomId(roomId).find(pkg => pkg.occupancyId === bestOccupancy.id)\r\n\r\n const newStatePackages = [\r\n ...this.state.packages\r\n ]\r\n\r\n newStatePackages[idx].roomId = newStatePackages[idx].roomId || roomId\r\n newStatePackages[idx].packageId = newStatePackages[idx].packageId || bestPackage.id\r\n newStatePackages[idx].roomContractId = newStatePackages[idx].roomContractId || bestPackage.contractId\r\n\r\n const newState = {\r\n ...this.state,\r\n packages: newStatePackages\r\n }\r\n\r\n this._updateState(newState)\r\n }\r\n\r\n _handleAddRoom (roomId, packageId, occupancy) {\r\n let newPackage\r\n\r\n if (occupancy && packageId) {\r\n // filtered by an occupancy, so we know how many adults/children/baby we need to allocate\r\n const packageObj = this.roomSelectorService.packages.getPackageById(packageId)\r\n if (packageObj) {\r\n newPackage = {\r\n roomId,\r\n packageId,\r\n occupation: occupancy\r\n }\r\n }\r\n } else {\r\n // not filtered by an occupancy, so we need to find the best occupancy for that room\r\n const roomOccupancies = this.roomSelectorService.getOccupanciesByRoomId(roomId)\r\n const { occupancy: bestOccupancy, occupation: bestOccupation } = this.roomSelectorService.getBestOccupancyForOccupation(roomOccupancies, this.state.unallocatedOccupation)\r\n const bestPackage = this.roomSelectorService.packages.getPackagesByRoomId(roomId).find(pkg => pkg.occupancyId === bestOccupancy.id)\r\n if (bestPackage) {\r\n newPackage = {\r\n roomId,\r\n packageId: bestPackage.id,\r\n occupation: bestOccupation\r\n }\r\n }\r\n }\r\n\r\n if (newPackage) {\r\n const newState = {\r\n packages: [\r\n ...this.state.packages,\r\n newPackage\r\n ]\r\n }\r\n this._updateState(newState)\r\n this._scrollToLastRoomAdded()\r\n }\r\n }\r\n\r\n _scrollToLastRoomAdded () {\r\n const yOffset = -10\r\n const roomsAdded = this.elements.mainContainerElement.querySelectorAll('.w-room-occupancy')\r\n if (roomsAdded.length) {\r\n const documentScrollingElement = document.scrollingElement || document.documentElement\r\n const lastRoomAdded = roomsAdded[roomsAdded.length - 1]\r\n const lastRoomAddedY = lastRoomAdded.getBoundingClientRect().top + window.pageYOffset + yOffset\r\n smooth(documentScrollingElement, 0, lastRoomAddedY)\r\n }\r\n }\r\n\r\n _getAvailableRoomsListData (roomSelectorListData) {\r\n roomSelectorListData.forEach(room => {\r\n if (room.stock !== undefined) {\r\n const roomUsedStock = this.state.packages.filter(pkg => pkg.roomId === room.id && pkg.roomContractId === room.contractId).length\r\n\r\n room.stock = room.stock - roomUsedStock\r\n room.stockWarningMessage = this._getStockWarningMessage(room.stock)\r\n room.stockWarningMessageIsLastRoom = this._getStockWarningMessageIsLastRoom(room.stock)\r\n }\r\n })\r\n\r\n return roomSelectorListData.filter(room => room.stock === undefined || room.stock > 0)\r\n }\r\n\r\n _updateUi () {\r\n this.allocatedPackages = null\r\n flush(this.elements.mainContainerElement)\r\n\r\n let statusOk = true\r\n\r\n this._addSpecialAgeProfileMessage()\r\n\r\n if (this.state.packages.length > 0) {\r\n statusOk = this._addRoomsAllocated()\r\n }\r\n\r\n const isEverybodyAllocated = this._isEverybodyAllocated()\r\n const allPackagesAllocated = this._areAllPackagesAllocated()\r\n const showFlexibleAllocationSection = statusOk && this.options.hasFlexibleAllocation && !isEverybodyAllocated\r\n const showErrorWrongAllocation = !isEverybodyAllocated || !allPackagesAllocated\r\n\r\n if (showFlexibleAllocationSection) {\r\n this._addInfoMessageWithPendingAllocation()\r\n this._addRoomListWithoutAllocation()\r\n }\r\n\r\n if (showErrorWrongAllocation) {\r\n this._addErrorMessageWrongAllocation()\r\n }\r\n\r\n if (isEverybodyAllocated) {\r\n if (allPackagesAllocated) {\r\n let birthdates = this.participants.flat()\r\n\r\n this.allocatedPackages = this.state.packages.map((pkg, index) => {\r\n let participants\r\n if (this.options.hasFlexibleAllocation) {\r\n const result = this.roomSelectorService.pickBirthdatesByOccupation(birthdates, pkg.occupation)\r\n participants = result.picked\r\n birthdates = result.remaining\r\n } else {\r\n participants = this.participants[index]\r\n }\r\n\r\n return {\r\n ...pkg,\r\n roomOccupancyId: this.roomSelectorService.packages.getPackageById(pkg.packageId).roomOccupancyId,\r\n roomName: this.roomSelectorService.rooms.getRoomById(pkg.roomId).name,\r\n participants\r\n }\r\n })\r\n\r\n this.events.emit('participantsAllocated', this.allocatedPackages)\r\n } else {\r\n this.events.emit('participantsUnallocated')\r\n }\r\n } else {\r\n this.events.emit('participantsUnallocated')\r\n }\r\n }\r\n\r\n _isEverybodyAllocated () {\r\n return Object.values(this.state.unallocatedOccupation).reduce((accOccupation, amountPeople) => accOccupation + amountPeople, 0) === 0\r\n }\r\n\r\n _areAllPackagesAllocated () {\r\n return !this.state.packages.find(pkg => pkg.roomId === undefined)\r\n }\r\n\r\n _getRoomRowData (pkg, index) {\r\n const { packageId, occupation, roomId, roomContractId } = pkg\r\n\r\n // ----------------\r\n // TODO: Quick fix to mitigate incorrectly selected package due to duplicated package ID.\r\n const roomNumber = index + 1\r\n const packageData = packageId\r\n ? this.roomSelectorService.packages.data\r\n .filter(pkg => pkg.id === packageId)\r\n .filter(pkg => pkg.roomNumber === roomNumber)\r\n .find(pkg => this.roomSelectorService.occupancies.occupancyMatchesOccupation(pkg.occupancyId, occupation))\r\n : undefined\r\n // ----------------\r\n\r\n // Calculate how many rooms before the current one of the same type has been assigned by the custome, to calculate real stock per room\r\n const stockRoomsAssigned = index === 0 ? 0 : this.state.packages.slice(0, index).filter(pkg => pkg.roomId === roomId && pkg.roomContractId === roomContractId).length\r\n\r\n const roomData = this.roomSelectorService.rooms.getRoomById(roomId)\r\n const availableStock = roomData.stock === undefined\r\n ? undefined\r\n : roomData.stock - stockRoomsAssigned\r\n const roomOccupancy = this.roomSelectorService.getRoomOccupancyData(roomId)\r\n\r\n const packageOccupation = occupation\r\n const errorMessages = this._getPeopleAllocationInRoomErrorMessages(roomOccupancy, packageOccupation)\r\n\r\n const roomRowPackageData = packageId\r\n ? {\r\n id: packageId,\r\n price: {\r\n value: this.roomSelectorService.getRoundedPrice(packageData.price),\r\n legend: this._getPartyCompostionAllocatedDescription(packageOccupation),\r\n priceSuffix: this.locales.pricePerPersonAbbreviation,\r\n ...this._getCurrencyConfig()\r\n },\r\n onRequest: packageData.onRequest,\r\n onRequestLabel: packageData.onRequest ? this.locales.onRequestLabel : ''\r\n }\r\n : {}\r\n\r\n return {\r\n ...roomRowPackageData,\r\n // Only on price table 1.0 for the first row the customer must not be able to delete the room row. All others are removable.\r\n removable: this.options.priceTableType === PriceTableType.DepartureDateAndDuration || index !== this.indexFirstPackage,\r\n title: `${this.locales.roomWord} ${index + 1}`, // TODO Delete Only used by room-occupancy integrated title\r\n roomNumber,\r\n roomWord: this.locales.roomWord,\r\n roomName: roomData.name,\r\n roomDescription: roomData.subtitle,\r\n errorMessage: errorMessages.join(', '),\r\n stockWarningMessage: this._getStockWarningMessage(availableStock),\r\n isFlexibleAllocation: this.options.hasFlexibleAllocation,\r\n occupancySelectors: this._getOccupancySelectors(roomOccupancy, packageOccupation, index),\r\n roomTypeDescriptionTitle: this.locales.roomTypeDescriptionTitle,\r\n characteristics: roomData.characteristics,\r\n images: roomData.images,\r\n index\r\n }\r\n }\r\n\r\n _getStockWarningMessage (availableStock) {\r\n const warningMessage = ''\r\n\r\n if (availableStock !== undefined && availableStock <= this.locales.roomStockThresholdToShowLowAvailability) {\r\n if (availableStock === 1) {\r\n return this.locales.lastRoomAvailable || this.locales.roomsLeftAvailable.replace('{n}', 1)\r\n } else if (availableStock <= this.locales.roomStockThresholdToShowLowAvailability) {\r\n return this.locales.roomsLeftAvailable.replace('{n}', availableStock)\r\n }\r\n }\r\n\r\n return warningMessage\r\n }\r\n\r\n _getStockWarningMessageIsLastRoom (availableStock) {\r\n if (availableStock !== undefined && availableStock <= this.locales.roomStockThresholdToShowLowAvailability) {\r\n return (availableStock === 1)\r\n }\r\n\r\n return undefined\r\n }\r\n\r\n _getPartyCompostionAllocatedDescription (occupation) {\r\n const msgs = []\r\n\r\n if (occupation.adults) {\r\n const adultsWord = occupation.adults === 1 ? this.locales.adultWord : this.locales.adultsWord\r\n msgs.push(`${occupation.adults} ${adultsWord}`)\r\n }\r\n\r\n if (occupation.children) {\r\n const childrenWord = occupation.children === 1 ? this.locales.childWord : this.locales.childrenWord\r\n msgs.push(`${occupation.children} ${childrenWord}`)\r\n }\r\n\r\n if (occupation.babies) {\r\n const babiesWord = occupation.babies === 1 ? this.locales.babyWord : this.locales.babiesWord\r\n msgs.push(`${occupation.babies} ${babiesWord}`)\r\n }\r\n\r\n return msgs.join(', ')\r\n }\r\n\r\n _getPeopleAllocationInRoomErrorMessages (roomOccupancy, packageOccupation) {\r\n const msgs = []\r\n\r\n // Validate each age profile occupancy.\r\n Object.keys(this.totalOccupation).forEach(ageProfileId => {\r\n if (!this.totalOccupation[ageProfileId]) return\r\n\r\n let msg = null\r\n const peoplePendingCount = roomOccupancy[ageProfileId].min - packageOccupation[ageProfileId]\r\n const peopleInExcessCount = packageOccupation[ageProfileId] - roomOccupancy[ageProfileId].max\r\n\r\n if (peoplePendingCount > 0) {\r\n msg = this._getPeoplePendingToAllocateMessage(peoplePendingCount, this._getAgeProfileName(ageProfileId, peoplePendingCount))\r\n } else if (peopleInExcessCount > 0) {\r\n msg = this._getPeopleAllocatedInExcessMessage(peopleInExcessCount, this._getAgeProfileName(ageProfileId, peopleInExcessCount))\r\n }\r\n\r\n if (msg) msgs.push(msg)\r\n })\r\n\r\n return msgs\r\n }\r\n\r\n _getAgeProfileName (ageProfileId, peopleCount = 0) {\r\n let localeId = null\r\n\r\n switch (ageProfileId) {\r\n case 'adults':\r\n localeId = peopleCount === 1 ? 'adultWord' : 'adultsWord'\r\n break\r\n\r\n case 'children':\r\n localeId = peopleCount === 1 ? 'childWord' : 'childrenWord'\r\n break\r\n\r\n case 'babies':\r\n localeId = peopleCount === 1 ? 'babyWord' : 'babiesWord'\r\n break\r\n\r\n case 'total':\r\n localeId = peopleCount === 1 ? 'personWord' : 'peopleWord'\r\n break\r\n }\r\n\r\n return this.locales[localeId]\r\n }\r\n\r\n _getAllAgeProfilesPendingToAllocateMessages () {\r\n const pendingToAllocateMsgs = []\r\n\r\n this.roomSelectorService.ageProfiles.getIds().forEach(ageProfileId => {\r\n const pendingToAllocateNum = this.state.unallocatedOccupation[ageProfileId]\r\n\r\n if (pendingToAllocateNum > 0) {\r\n const ageProfileName = this._getAgeProfileName(ageProfileId, pendingToAllocateNum)\r\n const pendingToAllocateMsg = `${pendingToAllocateNum} ${ageProfileName}`\r\n pendingToAllocateMsgs.push(pendingToAllocateMsg)\r\n }\r\n })\r\n\r\n if (pendingToAllocateMsgs.length > 1) {\r\n const pendingToAllocateMsgsLastItem = pendingToAllocateMsgs.pop()\r\n return this._getPeoplePendingToAllocateMessage(`${pendingToAllocateMsgs.join(', ')} ${this.locales.separator} ${pendingToAllocateMsgsLastItem}`)\r\n } else {\r\n return this._getPeoplePendingToAllocateMessage(pendingToAllocateMsgs.join(''))\r\n }\r\n }\r\n\r\n _getPeoplePendingToAllocateMessage (pendingToAllocateMsg) {\r\n const template = this.locales.peoplePendingToAllocateText || 'There are still {pendingPeople} without room assigned. Please, allocate them'\r\n return template\r\n .replace(/{pendingPeople}/ig, pendingToAllocateMsg)\r\n }\r\n\r\n _getPeopleAllocatedInExcessMessage (participantsCount, ageProfileName) {\r\n if (participantsCount === 0) return null\r\n\r\n const template = this.locales.peopleAllocatedInExcess || 'There are {PARTICIPANTS_NUM} {AGE_PROFILE_NAME} that must be removed.'\r\n return template\r\n .replace(/{PARTICIPANTS_NUM}/ig, participantsCount)\r\n .replace(/{AGE_PROFILE_NAME}/ig, ageProfileName)\r\n }\r\n\r\n _getOccupancySelectors (roomOccupancy, packageOccupation, index) {\r\n const occupancySelectors = []\r\n const isPriceTableGroupedByDuration = this.options.priceTableType === PriceTableType.DepartureDateAndDuration\r\n const isNotFirstRoom = index > 0\r\n const usedAgeProfilesCount = this.roomSelectorService.ageProfiles.getIdsWithOccupation(this.totalOccupation).length\r\n\r\n // If people not in same room and on price table 1.0 for the first row the customer must not be able to change distribution.\r\n if (!this.options.allInSameRoom && (isPriceTableGroupedByDuration || isNotFirstRoom || usedAgeProfilesCount > 1)) {\r\n this.roomSelectorService.ageProfiles.data.forEach(ageProfile => {\r\n if (!this.totalOccupation[ageProfile.id]) return\r\n\r\n const currentOccupation = packageOccupation[ageProfile.id] || 0\r\n const minOccupants = usedAgeProfilesCount === 1\r\n ? Math.max(roomOccupancy[ageProfile.id].min, roomOccupancy.total.min)\r\n : 0\r\n const maxOccupants = this.state.unallocatedOccupation[ageProfile.id] === 0\r\n ? currentOccupation\r\n : Math.min(roomOccupancy[ageProfile.id].max, this.totalOccupation[ageProfile.id])\r\n const ageProfileName = this._getAgeProfileName(ageProfile.id, currentOccupation)\r\n\r\n occupancySelectors.push({\r\n id: ageProfile.id,\r\n current: currentOccupation,\r\n min: minOccupants,\r\n max: maxOccupants,\r\n name: ageProfileName,\r\n description: this._getAgeRangeDescription(ageProfile)\r\n })\r\n })\r\n }\r\n\r\n return occupancySelectors\r\n }\r\n\r\n _getAgeRangeDescription (ageProfile) {\r\n return (this.locales[`${ageProfile.id}AgeRangeNew`] || this.locales[`${ageProfile.id}AgeRange`])\r\n .replace(/{ageword}/ig, '') // TODO: remove ageword replace when not used in SC\r\n .replace(/{minage}/ig, ageProfile.minAge >= 0 ? ageProfile.minAge : '')\r\n .replace(/{maxage}/ig, ageProfile.maxAge >= 0 ? ageProfile.maxAge : '')\r\n }\r\n\r\n _getOccupancySelectorsForRoomList (occupationToAllocate) {\r\n const occupancySelectors = []\r\n\r\n const locales = this.locales\r\n\r\n this.roomSelectorService.ageProfiles.data.forEach(ageProfile => {\r\n const ageProfilePendingToAllocate = occupationToAllocate[ageProfile.id]\r\n if (ageProfilePendingToAllocate > 0) {\r\n const ageProfileName = this._getAgeProfileName(ageProfile.id, ageProfilePendingToAllocate)\r\n\r\n occupancySelectors.push({\r\n ageProfileId: ageProfile.id,\r\n max: ageProfilePendingToAllocate,\r\n name: ageProfileName,\r\n description: (locales[`${ageProfile.id}AgeRangeNew`] || locales[`${ageProfile.id}AgeRange`])\r\n .replace(/{ageword}/ig, ageProfileName)\r\n .replace(/{minage}/ig, ageProfile.minAge || ageProfile.minAge >= 0 ? ageProfile.minAge : '')\r\n .replace(/{maxage}/ig, ageProfile.maxAge || ageProfile.maxAge >= 0 ? ageProfile.maxAge : '')\r\n })\r\n }\r\n })\r\n return occupancySelectors\r\n }\r\n\r\n _addRoomAllocatedAndSelected (pkg, index) {\r\n const roomRowData = {\r\n ...this._getRoomRowData(pkg, index),\r\n extraClasses: 'w-room-selector__item-wrapper'\r\n }\r\n const roomRowElement = elementFromString(RoomOccupancyTemplate(roomRowData))\r\n this.elements.mainContainerElement.appendChild(roomRowElement)\r\n Component.initDocumentComponentsFromAPI(roomRowElement)\r\n const roomOccupancyApi = new RoomOccupancy(roomRowElement, {})\r\n roomOccupancyApi.events.on('roomOccupancyChanged', (newOccupancy) => this._handleRoomRowOccupancyChanged(index, newOccupancy))\r\n roomOccupancyApi.events.on('removeRoom', () => this._removeRoomRow(index))\r\n\r\n return roomRowData.errorMessage.length === 0\r\n }\r\n\r\n _removeRoomRow (idx) {\r\n const newState = {\r\n packages: this.options.hasFlexibleAllocation\r\n ? this.state.packages.filter((pkg, index) => index !== idx)\r\n : this.state.packages.map((pkg, index) => ({\r\n ...pkg,\r\n roomId: index === idx ? undefined : pkg.roomId,\r\n roomContractId: index === idx ? undefined : pkg.roomContractId,\r\n packageId: index === idx ? undefined : pkg.packageId\r\n })\r\n )\r\n }\r\n\r\n this._updateState(newState)\r\n }\r\n\r\n _handleRoomRowOccupancyChanged (idx, newOccupancy) {\r\n newOccupancy = this.roomSelectorService.getOccupancyExpandedWithTotal(newOccupancy)\r\n const newStatePackages = [\r\n ...this.state.packages\r\n ]\r\n\r\n newStatePackages[idx].occupation = {\r\n ...newStatePackages[idx].occupation,\r\n ...newOccupancy\r\n }\r\n\r\n const cheapestPackage = this.roomSelectorService.getCheapestPackageOfRoom(this.state.packages[idx].roomId, newOccupancy)\r\n newStatePackages[idx].packageId = cheapestPackage ? cheapestPackage.id : undefined\r\n\r\n const newState = {\r\n ...this.state,\r\n packages: newStatePackages\r\n }\r\n\r\n this._updateState(newState)\r\n }\r\n\r\n getAllocatedPackagesIfEverybodyIsAllocated () {\r\n return this.allocatedPackages\r\n }\r\n}\r\n\r\n/**\r\n * This facade is needed because RoomSelector constructor does not comply with the interface of a widget.\r\n *\r\n * Widget constructors must be of the shape constructor(el: HTMLElement, options: Object).\r\n */\r\nclass RoomSelectorRegisterFacade extends RoomSelector {\r\n constructor (element, options = {}) {\r\n super(element, undefined, undefined, options)\r\n }\r\n}\r\n\r\nregisterWidget(RoomSelectorRegisterFacade, WIDGET_API)\r\n","/**\n * The RoomSelectorListTemplateData contains all data needed to hydrate a RoomSelector view\n */\nexport const RoomSelectorListTemplate = () => {\n return `\n
\n
\n `\n}\n","/**\n * List of events used by search widget\n *\n */\nexport const search = {\n SEARCH_FILTERS_APPLIED: 'Search.FiltersApplied',\n SEARCH_RESULTS: 'Search.Results',\n SEARCH_ERROR: 'Search.Error',\n SEARCH_REMOVE_SINGLE_CHIP_FILTER: 'Search.RemoveSingleChipFilter',\n SEARCH_RESULT_CLICK: 'Search.ResultClick',\n SEARCH_MODIFIER_CHANGE: 'Search.ModifierChanged',\n SEARCH_SORT_CHANGE: 'Search.SortingChanged',\n SEARCH_PAGINATION_CHANGE: 'Search.PaginationChanged',\n SEARCH_MAP_OPENED: 'Search.MapOpened'\n}\n","/**\n * The TripSummaryData identifies the trip summary info\n *\n * @typedef {Object} TripSummaryData\n *\n * @property {String} icon - Trip summary item's icon\n * @property {Object[]} lines - Trip summary item's lines\n * @property {String} lines.text\n * @property {Boolean} lines.isBold - If true, text line is bold\n */\n\n/**\n * The SelectedStateApiDataModel contains all data as received from API\n *\n * @typedef {Object} SelectedStateApiDataModel\n *\n * @property {Object} routePricePerPerson - Price per person\n * @property {String} routePricePerPerson.formatted - Price per person humanized text\n * @property {Object} routeTotalPrice - Overall price\n * @property {String} routeTotalPrice.formatted - Overall price humanized text\n * @property {Object} priceBreakdown\n * @property {Object[]} priceBreakdown.rooms - Room breakdown info\n * @property {String} priceBreakdown.rooms.text - Room item's text\n * @property {String} priceBreakdown.rooms.value - Room item's value\n * @property {Object[]} priceBreakdown.services - Services breakdown info\n * @property {String} priceBreakdown.services.text - Services item's text\n * @property {String} priceBreakdown.services.value - Services item's value\n * @property {Object} priceBreakdown.bookMessage - Conditional/alert message\n * @property {String} priceBreakdown.bookMessage.level - Type of alert\n * @property {String} priceBreakdown.bookMessage.text - Conditional message's text\n * @property {TripSummaryData[]} tripSummary - Global trip summary\n * @property {TripSummaryData[]} selectorTripSummary - Transport specific trip summary\n * @property {String} campaignCode - Campaign code\n * @property {String[]} contentUsps - Content USP's\n*/\n\nconst LOCAL_COSTS_CURRENCY_TAG = '{Currency}'\n\nconst selectedStateDataDefaults = {\n routePricePerPerson: {},\n routeTotalPrice: {},\n priceBreakdown: {\n rooms: [],\n services: [],\n bookMessage: {}\n },\n tripSummary: [],\n contentUsps: []\n}\n\n/**\n * A SelectedStateData model\n */\nexport default class SelectedStateDataModel {\n /**\n * Creates a new SelectedStateDataModel\n *\n * @constructor\n * @param {SelectedStateApiDataModel} data - The model data\n * @param {Object} options - Locales data\n * @param {String} [options.id] - Element id\n * @param {Object} [options.locales] - Locales data\n */\n constructor (data = {}, options = {}) {\n this.data = {\n ...selectedStateDataDefaults,\n ...data\n }\n this.locales = options.locales || {}\n this.elementId = options.id || ''\n }\n\n /**\n * Transfrom tripSummary data from API to template's desired format\n *\n * @param {TripSummaryData[]} tripSummaryData an array of TripSummaryData\n *\n * @returns {BulletListItemData[]} an array of BulletListItemData\n */\n static transformTripSummary (tripSummaryData = []) {\n return tripSummaryData.map(({ icon, lines }) => [\n { icon, ...lines[0] },\n ...lines.slice(1).filter(({ text }) => !!text).map((line) => ({ isIconHidden: true, ...line }))\n ]).reduce((obj, items) => ([...obj, ...items]), [])\n }\n\n /**\n * Gets the selected state object the template will use\n *\n * @returns {SelectedStateTemplateData} the SelectedStateTemplateData\n */\n _getSelectedStateTemplateData () {\n // Map optionalServices to BulletListItemData scheme\n const optionalServices = this.data.optionalServices && this.data.optionalServices.optionalServices\n ? this.data.optionalServices.optionalServices.map(service => ({\n icon: service.icon,\n text: service.name\n }))\n : []\n\n return {\n id: this.elementId,\n mainTitleText: this.locales.tripSummary && this.locales.tripSummary.headerText,\n headerMessageText: this.data.priceBreakdown && this.data.priceBreakdown.bookMessage && this.data.priceBreakdown.bookMessage.text,\n headerMessageLevel: this.data.priceBreakdown && this.data.priceBreakdown.bookMessage && this.data.priceBreakdown.bookMessage.level\n ? this.data.priceBreakdown.bookMessage.level\n : 'info',\n accommodation: this.locales.accommodation,\n tripDetails: [\n ...SelectedStateDataModel.transformTripSummary(this.data.detailedTripSummary),\n ...SelectedStateDataModel.transformTripSummary(this.data.tripSummary)\n ],\n optionalServices: {\n label: this.locales.optionalServices.label,\n tagLine: this.locales.optionalServices.tagLine,\n items: optionalServices\n },\n priceBreakdown: {\n items: this._getBreakdownTableTemplateData(),\n itemsLocalCosts: this._getBreakdownTableTemplateDataLocalCosts(),\n itemsLocalCostsWithouPrices: this.data.priceBreakdown?.localCostsWithoutPrice,\n itemsTotal: this._getBreakdownTableTemplateDataTotal(),\n extraInfo: this.locales.priceBreakdown.extraInfo,\n extraInfoIcon: this.locales.priceBreakdown.extraInfoIcon,\n openJawMessage: this.data.isOpenJaw ? this.locales.priceBreakdown.openJawMessage : '',\n headerText: this.locales.priceBreakdown.headerText,\n headerTextLocalCosts: this.locales.priceBreakdown.headerTextLocalCosts,\n headerDescriptionLocalCosts: this._getLocalCostsCurrencyDescription()\n },\n mandatoryCosts: {\n title: this.locales.priceBreakdown.mandatoryCostsTitle,\n content: this.locales.priceBreakdown.mandatoryCostsContent\n },\n submitButtonText: this._getSubmitButtonText(),\n packageUsps: this.data.priceBreakdown.usps,\n contentUsps: this.data.contentUsps\n }\n }\n\n _getSubmitButtonText () {\n const genericText = this.locales.priceBreakdown.bookButton\n const tranportType = (this.data.transportType || '').toLowerCase()\n\n let buttonTextPerTransport\n if (tranportType === 'flight') {\n buttonTextPerTransport = this.locales.priceBreakdown.bookButtonFlightSelector\n } else if (tranportType === 'bus') {\n buttonTextPerTransport = this.locales.priceBreakdown.bookButtonBusSelector\n } else {\n buttonTextPerTransport = this.locales.priceBreakdown.bookButtonSelfDriveSelector\n }\n return buttonTextPerTransport || genericText || ''\n }\n\n /**\n * Builds BreakdownTableItemData from current data\n *\n * @returns {BreakdownTableItemData[]}\n */\n _getBreakdownTableTemplateData () {\n const rooms = this.data.priceBreakdown.rooms.map((room, index) => ({ title: index + 1, items: room }))\n const services = { items: this.data.priceBreakdown.services }\n\n return [\n ...rooms.map((room) => ({\n concept: this.locales.priceBreakdown.roomText + ' ' + room.title,\n subitems: room.items.map((item) => ({ concept: item.text, value: item.value })),\n total: room.total ? room.total : false,\n value: room.value,\n topItemsExtraClasses: 'w-selected-state__price-overview__row-title',\n preItemsExtraClasses: 'w-selected-state__price-overview__row-title'\n })),\n ...services.items.map((service) => ({\n concept: service.text,\n value: service.value,\n isDiscount: service.isDiscount ? service.isDiscount : false,\n topItemsExtraClasses: `${service.rawAmount === 0 ? 'w-selected-state__price-overview__row-services--inclusive' : ''} w-selected-state__price-overview__row-services`\n })),\n ...this._getSubTotalRowTemplateData(this.data?.priceBreakdown?.subTotalPayAtReservation?.formatted)\n ]\n }\n\n _getSubTotalRowTemplateData (value) {\n return value\n ? [{\n concept: this.locales.priceBreakdown.subTotalText,\n value,\n topItemsExtraClasses: 'w-selected-state__price-subtotal'\n }]\n : []\n }\n\n _getBreakdownTableTemplateDataLocalCosts () {\n const localCosts = this.data.priceBreakdown?.localCostsWithPrice || []\n return [\n ...localCosts.map((localCost) => ({\n concept: localCost.name,\n subitems: [{ concept: localCost.description }],\n value: localCost.price.formatted\n })),\n ...this._getSubTotalRowTemplateData(this.data?.priceBreakdown?.subTotalPayAtDestination?.formatted)\n ]\n }\n\n _getBreakdownTableTemplateDataTotal () {\n const showGrossPrice = this.data.priceBreakdown.totalPrice &&\n this.data.priceBreakdown.totalGrossPrice &&\n this.data.priceBreakdown.totalPrice.raw !== this.data.priceBreakdown.totalGrossPrice.raw\n const totalPriceSubItems = [{\n concept: this.locales.priceBreakdown.pricePerPersonText,\n value: this.data.routePricePerPerson.formatted\n }]\n if (this.data?.priceBreakdown?.subTotalPayAtReservation) {\n totalPriceSubItems.push({\n concept: this.locales.priceBreakdown.headerText,\n value: this.data.priceBreakdown.subTotalPayAtReservation.formatted,\n extraClass: 'w-selected-state__price-overview__total-subitem w-selected-state__price-overview__total-subitem-first'\n })\n }\n if (this.data?.priceBreakdown?.subTotalPayAtDestination) {\n totalPriceSubItems.push({\n concept: this.locales.priceBreakdown.headerTextLocalCosts,\n value: this.data.priceBreakdown.subTotalPayAtDestination.formatted,\n extraClass: 'w-selected-state__price-overview__total-subitem'\n })\n }\n\n return [\n {\n preitem: (showGrossPrice)\n ? {\n value: this.data.priceBreakdown.totalGrossPrice.formatted,\n preItemsExtraClasses: 'w-selected-state__price-overview__grossprice'\n }\n : '',\n concept: this.locales.priceBreakdown.totalText,\n value: this.data.routeTotalPrice.formatted,\n total: true,\n topItemsExtraClasses: 'w-selected-state__price-overview__item--highlighted',\n subitems: totalPriceSubItems\n }\n ]\n }\n\n _getLocalCostsCurrencyDescription () {\n return this.data.priceBreakdown.localCostsCurrencyCode\n ? this.locales.priceBreakdown.headerDescriptionLocalCosts.replace(LOCAL_COSTS_CURRENCY_TAG, `${this.data.priceBreakdown.localCostsCurrencyCode}`)\n : ''\n }\n}\n","/**\n *\n * @typedef {Object} PackageUspData\n *\n * @property {String} kind\n * @property {String} title\n * @property {String} subtitle\n */\n\n/**\n * The SelectedStateTemplateData contains all data needed to hydrate a Selected State view\n *\n * @typedef {Object} SelectedStateTemplateData\n *\n * @property {String} id - SelectedState's id\n * @property {String} [mainTitleText]\n * @property {String} [headerMessageText]\n * @property {String} [headerMessageLevel]\n\n * @property {Object} [accommodation]\n * @property {String} [accommodation.name]\n * @property {Number} [accommodation.category]\n * @property {String} [accommodation.image]\n * @property {String} [accommodation.imagePlaceholder]\n * @property {String} [accommodation.imageUnresolved]\n * @property {String[]} [accommodation.usps]\n *\n * @property {BulletListItemData[]} [tripDetails]\n *\n * @property {Object} [optionalServices]\n * @property {String} [optionalServices.label]\n * @property {String} [optionalServices.tagLine]\n * @property {BulletListItemData[]} [optionalServices.items]\n *\n * @property {Object} [priceBreakdown]\n * @property {BreakdownTableItemData[]} [priceBreakdown.items]\n * @property {String} [priceBreakdown.extraInfo]\n * @property {String} [priceBreakdown.openJawMessage]\n *\n * @property {Object} [mandatoryCosts]\n * @property {String} [mandatoryCosts.title]\n * @property {String[]} [mandatoryCosts.content]\n *\n * @property {String} [submitButtonText]\n *\n * @property {PackageUspData[]} [packageUsps]\n * @property {String[]} [contentUsps]\n *\n */\n\nimport { BulletListTemplate } from '../../components/bullet-list/c-bullet-list.template'\nimport { CollapseTemplate } from '../../components/collapse/c-collapse.template'\nimport { BtnTemplate } from '../../components/btn/c-btn.template'\nimport { BreakdownTableTemplate } from '../../components/breakdown-table/c-breakdown-table.template'\nimport { LabelTemplate } from '../../components/label/c-label.template'\nimport { getTokenClass } from '../../../js/helpers/tokens'\nimport { AbsoluteDialogTemplate } from '../../components/absolute-dialog/c-absolute-dialog.template'\nconst tokens = require('./data/w-selected-state__tokens.json')['w-selected-state']\n\nexport const defaultSelectedStateData = {\n id: '',\n mainTitleText: '',\n headerMessageText: '',\n headerMessageLevel: 'info',\n accommodation: {\n name: '[Hotel Name]',\n category: 4,\n image: '',\n imagePlaceholder: '',\n imageUnresolved: '',\n usps: []\n },\n tripDetails: [],\n optionalServices: {\n label: '',\n tagLine: '',\n items: []\n },\n priceBreakdown: {\n items: [],\n extraInfo: '',\n openJawMessage: ''\n },\n mandatoryCosts: {\n title: '',\n content: []\n },\n submitButtonText: '[Book now]',\n packageUsps: [],\n contentUsps: []\n}\n\nexport const SelectedStateTemplate = (d, options) => {\n d = { ...defaultSelectedStateData, ...d, ...options }\n\n if (d.isEmpty) return `
`\n\n // ⚠️ Build BulletListItemData for accommodation USPs\n const accommodationUSPs = d.contentUsps ? d.contentUsps.map(usp => ({ text: usp })) : null\n\n // ⚠️ Flight Icons are hardcoded from API, fix here till they're not\n const tripDetailsItems = d.tripDetails.map(item => {\n if (item.icon === 'icon-flight-outbound') item.icon = 'airplane-departure'\n if (item.icon === 'icon-flight-inbound') item.icon = 'airplane-return'\n return item\n })\n\n // ⚠️ Image is fixed to be sync and same size\n d.accommodation.image = d.accommodation.image && d.accommodation.imageUnresolved\n ? d.accommodation.imageUnresolved\n .replace('{W}', '640')\n .replace('{H}', '320')\n .concat('&scale=both&mode=crop')\n : null\n\n return `\n
\n

${d.mainTitleText}

\n ${d.headerMessageText\n ? `
\n

${d.headerMessageText}

\n
`\n : ''\n }\n
\n
\n
\n ${d.accommodation.image\n ? `
`\n : ''\n }\n ${BulletListTemplate({\n items: tripDetailsItems,\n extraClasses: 'w-selected-state__lists'\n })}\n
\n ${OptionalServicesItemTemplate(d.optionalServices)}\n
\n
\n
\n ${TitleSectionTemplate(d.priceBreakdown?.headerText)}\n ${BreakdownTableTemplate({ items: d.priceBreakdown.items })}\n\n ${d.priceBreakdown.itemsLocalCosts?.length > 0 || d.priceBreakdown.itemsLocalCostsWithouPrices?.length > 0\n ? `${TitleSectionTemplate(d.priceBreakdown?.headerTextLocalCosts, true)}\n ${BreakdownTableTemplate({ items: d.priceBreakdown.itemsLocalCosts, extraClasses: 'w-selected-state__price-overview-localcosts-table' })}\n ${MandatoryCostsWithoutPricesTemplate(d.priceBreakdown.itemsLocalCostsWithouPrices)}\n ${LocalCostsDescriptionTemplate(d.priceBreakdown?.headerDescriptionLocalCosts)}`\n : ''\n }\n\n ${BreakdownTableTemplate({ items: d.priceBreakdown.itemsTotal })}\n\n
\n ${MandatoryCostsTemplate(d.mandatoryCosts, d.id, d.mandatoryCostsCollapsed)}\n
\n ${BtnTemplate({\n text: d.submitButtonText,\n variant: 'flow',\n jsApi: true,\n extraClasses: 'w-selected-state__footer-button'\n })}\n
\n ${d.priceBreakdown.openJawMessage\n ? `
\n ${AbsoluteDialogTemplate({\n body: d.priceBreakdown.openJawMessage,\n alertType: 'warning',\n closable: false\n })}\n
`\n : ''\n }\n ${d.priceBreakdown.extraInfo\n ? `
\n ${AbsoluteDialogTemplate({\n body: `${d.priceBreakdown.extraInfoIcon ? `` : ''} ${d.priceBreakdown.extraInfo}`,\n alertType: 'info',\n closable: false\n })}\n
`\n : ''\n }\n ${PackageUspsTemplate(d.packageUsps)}\n
\n
\n
\n
\n${accommodationUSPs\n ? `
\n ${BulletListTemplate({\n items: accommodationUSPs,\n icon: 'checkmark',\n variant: 'inline',\n extraClasses: 'w-bullet-list__usps'\n })}\n
`\n : ''}\n\n
`\n}\n\nconst TitleSectionTemplate = (title, useMarginTop = false) => {\n return `\n
\n ${title ? `

${title}

` : ''}\n
\n `\n}\n\nconst LocalCostsDescriptionTemplate = (description) => {\n return `${description ? `
${description}
` : ''}`\n}\n\nconst OptionalServicesItemTemplate = (optionalServices) => {\n // Skip render if there's no items\n if (!optionalServices.items || !optionalServices.items.length) return ''\n\n return `
\n${optionalServices.label\n ? LabelTemplate({\n text: optionalServices.label.toUpperCase(),\n extraClasses: 'w-overview__optional-service-promotion-label'\n })\n : ''\n }\n${optionalServices.tagLine\n ? ``\n : ''\n }\n
\n ${BulletListTemplate({ items: optionalServices.items })}\n
\n
`\n}\n\nconst MandatoryCostsTemplate = (mandatoryCosts, id, mandatoryCostsCollapsed) => {\n // Skip render if there's no content\n if (!mandatoryCosts.content || !mandatoryCosts.content.length) return ''\n\n return `
\n

\n ${mandatoryCosts.title}\n \n

\n${CollapseTemplate({\n id: `${id}__collapse`,\n extraClasses: 'w-selected-state__collapse-wrapper',\n html: mandatoryCosts.content.map((contentItem) => `

${contentItem}

`).join(''),\n opened: !mandatoryCostsCollapsed\n })}\n
`\n}\n\nconst MandatoryCostsWithoutPricesTemplate = (localCosts) => {\n localCosts = localCosts || []\n if (localCosts.length === 0) {\n return ''\n }\n\n // Skip render if there's no content\n return `
\n ${localCosts.map(localCost => localCost.name || localCost.description\n ? `
\n ${localCost.name ? `
${localCost.name}
` : ''}\n ${localCost.description ? `
${localCost.description}
` : ''}\n
`\n : ''\n ).join('')}\n
`\n}\n\nconst PackageUspsTemplate = (usps) => {\n // Skip render if there's no content\n if (!usps || !usps.length) return ''\n\n return `
\n${usps.slice(0, 3).map((usp) => PackageUspsItemTemplate(usp)).join('')}\n
`\n}\n\nconst PackageUspsItemTemplate = (usp) => {\n return `\n
\n \n
\n
\n \n ${usp.title}\n \n
\n ${usp.subtitle}\n
\n
`\n}\n","import Component from '../../../js/core/component/component'\nimport SelectedStateDataModel from './selected-state-data-model'\nimport { elementFromString, moveChildrenFrom } from '../../../js/document/html-helper'\nimport { SelectedStateTemplate } from './w-selected-state.template'\nimport Img from '../../components/img/main'\n\nconst EventEmitter = require('eventemitter3')\n\nconst widgetAPI = 'w-selected-state'\n\nconst defaults = {\n data: {},\n locales: {}\n}\n\n/**\n * SelectedState content\n *\n */\nexport default class SelectedState {\n /**\n * Creates a new SelectedState behaviour, exposes an API to the element.\n *\n * @constructor\n * @param {HTMLElement} element - The HTML element.\n * @param {Object} [options] - Options object\n * @param {SelectedStateApiDataModel} [options.data] - Selected state info\n * @param {Object} [options.locales] - Selected locales data\n */\n constructor (element, options = {}) {\n this.element = element\n this.options = {\n ...defaults,\n ...options\n }\n this.events = new EventEmitter()\n\n // Expose component public API\n this.element[widgetAPI] = {\n refresh: this.refresh.bind(this),\n setLoadingState: this.setLoadingState.bind(this),\n events: this.events\n }\n\n this.initSelectedStateDataModel()\n this.createHtml()\n this.bindEvents()\n\n this.element[widgetAPI].selectedStateDataModel = this.selectedStateDataModel\n }\n\n initSelectedStateDataModel () {\n if (this.selectedStateDataModel) delete this.selectedStateDataModel\n if (this.options.data && Object.keys(this.options.data).length > 0) {\n this.selectedStateDataModel = new SelectedStateDataModel(\n this.options.data,\n {\n id: this.element.id,\n locales: this.options.locales\n }\n )\n }\n }\n\n createHtml () {\n const selectedStateElement = elementFromString(\n SelectedStateTemplate(\n this.selectedStateDataModel\n ? this.selectedStateDataModel._getSelectedStateTemplateData()\n : { id: this.element.id, isEmpty: true },\n {\n mandatoryCostsCollapsed: this.options.mandatoryCostsCollapsed\n }\n )\n )\n moveChildrenFrom(selectedStateElement, this.element, {\n flush: true,\n attributes: true\n })\n\n this.submitButton = this.element.querySelector('.w-selected-state__footer-button')\n Img.createInstancesOnDocument(this.element)\n Component.initDocumentComponentsFromAPI(this.element)\n }\n\n bindEvents () {\n this.handleSubmitButtonClick = this.handleSubmitButtonClick || this._handleSubmitButtonClick.bind(this)\n if (this.submitButton) this.submitButton.addEventListener('click', this.handleSubmitButtonClick)\n }\n\n unBindEvents () {\n if (this.submitButton) this.submitButton.removeEventListener('click', this.handleSubmitButtonClick)\n }\n\n setLoadingState (currentLoadingState = false) {\n if (this.submitButton && this.submitButton['c-btn']) this.submitButton['c-btn'].setProp('loading', currentLoadingState)\n }\n\n /**\n * Handle submit button click\n */\n _handleSubmitButtonClick () {\n this.events.emit('submit', this.options.data)\n }\n\n /**\n * Refreshes selectedState with new data\n *\n * @param {Object} data\n */\n refresh (data) {\n this.options.data = data\n this.unBindEvents()\n this.initSelectedStateDataModel()\n this.createHtml()\n this.bindEvents()\n this.events.emit('refresh')\n }\n}\n","/**\n * List of events used by static content data widget\n *\n */\nexport const staticContentData = {\n STATIC_CONTENT_DATA_READY: 'staticContentData.InfoReady'\n}\n","import { apiCaller } from '../../../js/helpers/api-caller'\nimport { registerWidget } from '../../../js/core/widget/widget-directory'\nimport registeredEvents from '../../../js/helpers/registered-events'\nimport { bookingGateEvents } from '../../../js/document/event-types'\n\nconst WIDGET_API = 'w-subscribe-form'\n\nconst WIDGET_QUERIES = {\n form: '[data-js-component=\"c-form\"]',\n saveButtons: `[data-${WIDGET_API}--save-button]`,\n emailInput: `[data-${WIDGET_API}--email-input]`,\n successToggle: `[data-${WIDGET_API}--success-toggle]`\n}\n\nconst ATTRIBUTES = {\n componentId: 'wSubscribeFormComponentId',\n datasourceId: 'wSubscribeFormDatasourceId',\n classes: {\n isSuccess: 'w-subscribe-form__is-success',\n isError: 'w-subscribe-form__is-error'\n }\n}\n\nrequire('../../components/form/main')\nrequire('../../components/textbox/main')\nconst EventEmitter = require('eventemitter3')\n\nexport default class SubscribeForm {\n /**\n * Creates a new Subscribe form widget\n *\n * @constructor\n *\n * @param {HTMLElement} element - The HTML element\n */\n constructor (element) {\n if (!element) { return }\n this.element = element\n this.events = new EventEmitter()\n this.componentId = this.element.dataset[ATTRIBUTES.componentId]\n this.datasourceId = this.element.dataset[ATTRIBUTES.datasourceId]\n\n // Expose component public API\n this.element[WIDGET_API] = {\n element: this.element\n }\n\n this._attachEvents()\n\n registeredEvents.registerWidgetEvents(WIDGET_API, this.events, { track: WIDGET_API })\n }\n\n _attachEvents () {\n this.form = this.element.querySelector(WIDGET_QUERIES.form)\n\n if (this.form) {\n this.formApi = this.form['c-form']\n }\n\n this.emailInput = this.element.querySelector(WIDGET_QUERIES.emailInput)\n\n if (this.emailInput) {\n this.emailInputApi = this.emailInput['c-textbox']\n }\n\n this.successToggleElement = this.element.querySelector(WIDGET_QUERIES.successToggle)\n this.saveButtons = [...this.element.querySelectorAll(WIDGET_QUERIES.saveButtons)]\n\n if (this.saveButtons) {\n this.saveButtons.forEach(button => {\n button.addEventListener('click', (ev) => this._clickSaveButton(ev))\n })\n }\n }\n\n async _clickSaveButton (ev) {\n ev.preventDefault()\n\n try {\n this._enableForm(false)\n this.successToggleElement.classList.remove(ATTRIBUTES.classes.isError)\n\n if (this._getEmailToSubscribe() && this.formApi.validate()) {\n await this._saveEmailAndGetDataChangeData()\n }\n } catch (ex) {\n console.error(ex)\n this._enableForm(true)\n }\n }\n\n async _saveEmailAndGetDataChangeData () {\n const eventArgs = {\n method: this.formApi.method,\n url: this.formApi.action\n }\n\n if (this.formApi.method !== 'GET') {\n eventArgs.body = {\n email: this._getEmailToSubscribe(),\n itemId: this.componentId,\n datasourceId: this.datasourceId\n }\n }\n\n if (eventArgs.url) {\n this.callApi(eventArgs.method, eventArgs.url, eventArgs.body)\n }\n }\n\n /**\n * Calls backend to retrieve data, and pings all registred items\n *\n * @param {string} method - GET|POST|PATCH\n * @param {string} uri - Full url to execute the action\n * @param {object} body - (Optional) The payload for the POST or PATCH operations\n */\n async callApi (method, url, body) {\n try {\n const result = await apiCaller(url, {\n method,\n body\n })\n\n if (result.success) {\n this.apiData = result.response\n\n if (this.apiData) {\n this._showSubscribeFormSuccess()\n }\n\n this.events.emit(bookingGateEvents.BOOKING_GATE_SUBSCRIBE_FORM_SUCCESS, {})\n } else {\n this._showSubscribeFormError()\n }\n } finally {\n this._enableForm(true)\n }\n }\n\n _enableForm (enableStatus) {\n Array.from(this.form).forEach(elem => { elem.disabled = !enableStatus })\n\n this.saveButtons.forEach(btn => btn['c-btn'].setLoading(!enableStatus))\n }\n\n _getEmailToSubscribe () {\n return this.emailInputApi.getProp('value').trim()\n }\n\n _showSubscribeFormSuccess () {\n this.successToggleElement.classList.remove(ATTRIBUTES.classes.isError)\n this.successToggleElement.classList.add(ATTRIBUTES.classes.isSuccess)\n }\n\n _showSubscribeFormError () {\n this.successToggleElement.classList.remove(ATTRIBUTES.classes.isSuccess)\n this.successToggleElement.classList.add(ATTRIBUTES.classes.isError)\n }\n}\n\nregisterWidget(SubscribeForm, WIDGET_API)\n","import { TabsNavTemplate } from '../../components/tabs/c-tabs__nav.template'\nimport domEventsHelper from '../../../js/document/dom-events-helper'\nimport Swipe from '../../objects/swipe/main'\nimport registeredEvents from '../../../js/helpers/registered-events'\nconst EventEmitter = require('eventemitter3')\n\nconst widgetApi = 'w-tabs-filter'\nconst widgetQueries = {\n track: 'data-track'\n}\n\nexport default class TabsFilter {\n /**\n * Creates a new TabsFilter\n *\n * @constructor\n *\n * @param {HTMLElement} element - The element where to attach TabsFilter\n * @param {FilterModel} filterModel - The associated FilterModel\n */\n constructor (element, filterModel) {\n this.element = element\n this.events = new EventEmitter()\n\n this.defaultTabsData = {\n id: `${this.element.id}__tabs`,\n items: [],\n variant: 'secondary',\n extraClasses: ''\n }\n\n this.setFilterModel(filterModel)\n\n this.domEvents = [\n [this.element, { click: (ev) => this._onMouseClick(ev) }]\n ]\n domEventsHelper.attachEvents(this.domEvents, widgetApi)\n\n registeredEvents.registerWidgetEvents(widgetApi, this.events, {\n ...this.element.hasAttribute(widgetQueries.track) && { track: this.element.attributes[widgetQueries.track].value }\n })\n }\n\n /**\n * Set the current filterModel\n * - Set given filterModel to filterModel self property\n * - Set options on tabs\n * - Bind filter model events\n *\n * @param {FilterModel} filterModel - The associated FilterModel\n *\n * @returns {TabsFilter} self instance\n */\n setFilterModel (filterModel) {\n this.filterModel = filterModel\n // Setting options silently so that value prop changed is not triggered in case it changes when changing options\n this.renderTabs()\n\n this.filterModel.events.on('change', () => this.renderTabs())\n\n return this\n }\n\n /**\n * Set the current Tabs selectedValues to filter\n *\n * @returns {TabsFilter} self instance\n */\n _setTabsOptionsToFilter (value) {\n this.filterModel\n .clearSelection({ silent: true })\n .setSelectedValues([value])\n return this\n }\n\n /**\n * Get the current Tabs options from filter\n *\n * @returns {TabsSingleOptionData[]} The parsed filter to Tabs options\n */\n _getTabsOptionsFromFilter () {\n return {\n ...this.defaultTabsData,\n items: this.filterModel.values.models.map(model => ({\n text: model.getAttribute('caption'),\n isOpen: model.getAttribute('isSelected'),\n attributes: {\n 'data-value': model.getAttribute('value')\n }\n }))\n }\n }\n\n /**\n * Render the tabs from the current filter data.\n */\n renderTabs () {\n this.element.innerHTML = TabsNavTemplate(this._getTabsOptionsFromFilter())\n const swipeElement = this.element.querySelector('[data-js-swipe]')\n if (swipeElement) Swipe.CreateInstanceOnElement(swipeElement, { activeClass: 'is-open' })\n }\n\n /**\n * Handle the mouse click.\n *\n * @param {MouseEvent} ev - The mouse event.\n */\n _onMouseClick (ev) {\n const tabItemCandidate = this._findTabItemByMouseEvent(ev)\n if (!tabItemCandidate) return\n\n const value = tabItemCandidate.getAttribute('data-value')\n this._setTabsOptionsToFilter(value)\n this.events.emit('tabChanged', value)\n }\n\n /**\n * Small utility to find a tabItemElement candidate from mouse event, traversing the DOM\n *\n * @param {MouseEvent} ev - The mouse event.\n * @returns {(HTMLElement|null)} - The tabItemElement if found\n */\n _findTabItemByMouseEvent (ev) {\n const closestResult = (el, lastParentToCheck) => {\n do {\n if (el === lastParentToCheck) return null\n if (el.matches('button[data-value]')) return el\n el = el.parentElement || el.parentNode\n } while (el !== null && el !== lastParentToCheck && el.nodeType === 1)\n return null\n }\n return closestResult(ev.target, this.element)\n }\n}\n","/**\n * List of events used by voucher-redeemer\n *\n */\nexport const voucherRedeemer = {\n VOUCHER_REDEEMER_SERVER_VALIDATION_ERROR: 'VoucherRedeemer.ServerValidationError',\n VOUCHER_REDEEMER_SERVER_ERROR: 'VoucherRedeemer.ServerError'\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t3270: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunk_sunwebgroup_design_system\"] = self[\"webpackChunk_sunwebgroup_design_system\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [3200,3456,7186,2511,5569,2145,9316,6153,9438,9497,4675,8444,5861,7826,8636,2435,1919,2322,2255], () => (__webpack_require__(74667)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","loginStatus","LOADED","mainMenu","MAIN_MENU_ITEM_CLICKED","preferenceQuestionnaire","PREFERENCE_QUESTIONNAIRE_START","PREFERENCE_QUESTIONNAIRE_SEND","PREFERENCE_QUESTIONNAIRE_EDIT","productMap","PRODUCT_MAP_OPENED","PRODUCT_MAP_CLOSED","ACCOMMODATION_MARKER_CLICKED","defaultBoxData","image","titleAttributes","titleText","infoCtaText","titleUrl","breadcrumbs","grade","rating","price","priceLegend","hidePrice","extraClasses","ProductCardTemplate","d","_objectSpread","concat","ImgTemplate","map","location","index","url","text","join","_regeneratorRuntime","e","t","r","Object","prototype","n","hasOwnProperty","o","defineProperty","value","i","Symbol","a","iterator","c","asyncIterator","u","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","type","arg","call","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","_typeof","resolve","__await","then","callInvokeWithMethodAndArg","Error","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","return","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","length","displayName","isGeneratorFunction","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","catch","delegateYield","asyncGeneratorStep","gen","reject","_next","_throw","key","info","error","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","ownKeys","getOwnPropertySymbols","filter","getOwnPropertyDescriptor","obj","_toPropertyKey","getOwnPropertyDescriptors","defineProperties","_defineProperties","target","props","descriptor","input","hint","prim","toPrimitive","res","String","_toPrimitive","EventEmitter","require","widgetApi","promotedPriceWidgetApi","mapApi","widgetQueries","promotedPriceWidgetsSelector","trackAttr","ProductMap","_fetchProducts2","_fetchAccommodationData2","element","_this","options","instance","Constructor","_classCallCheck","this","events","registeredEvents","registerWidgetEvents","hasAttribute","track","attributes","modal","querySelector","settings","getData","productBreadcrumbs","_getProductBreadcrumbs","on","_showMap","_prepareMap","_handleMapClosed","nearbyApiUrl","accoDetailsApiUrl","initialized","centerMarkerInfoWindowData","infoHidePrice","promotedPriceWidget","document","promotedPriceApi","once","promotedPriceEvents","PROMOTED_PRICE_DATA_LOADED","response","_addPriceData","protoProps","_callee","result","_context","getUrlFromString","fetchJsonData","_x","_callee2","accommodationIds","params","_context2","reduce","id","idObj","data","_this2","accommodations","accommodation","latitude","parseFloat","longitude","markerId","icons","default","marker","active","markerActive","accommodationId","sameLocationAccommodations","item","addMarker","callBack","_loadInfoWindow","bind","createClusterMarkers","zoomToMarkers","sync","infoImageSync","placeholderSrc","infoImagePlaceholdersrc","resolvedSrc","infoImageResolvedsrc","description","infoImageDescription","ratio","infoImageRatio","dynamicRatios","_getImageDynamicRatios","infoImageResolve","infoTitleUrl","infoTitleText","infoGrade","infoRating","infoPriceLegend","markerData","_this3","groupedAccommodations","centerMarkerData","markerDataItem","find","_ref","nearbyMarkersData","markerType","_this4","_fetchAccommodationData","_this4$settings","infoWindowData","Array","isArray","_populateAndShowInfoWindow","console","infoWindowSingleData","emit","productMapEvents","infoWindowContent","sliderItems","SliderTemplate","items","barNavigation","outerNavigation","withGradient","showInfoWindow","Component","initDocumentComponentsFromAPI","clearMarkers","_ref2","_this5","mapOpenDate","Date","showMap","_fetchProducts","_x2","_callee3","_this5$_groupMarkersW","centerMarkerSameLocationsData","centerMarkerInitialData","_response","_this5$settings","responseArray","_context3","_groupMarkersWithSameLocation","_addNearbyMarkers","showCenterMarker","_getCenterMarkerInitialData","_addCenterMarker","mapClosedDate","_clearMap","clearInfoWindow","markerIcon","markerIconActive","breadcrumbsElement","breadcrumbsData","JSON","parse","textContent","dynamicRatiosElement","dynamicRatiosData","registerWidget","profileData","NAME_CHANGED","DATA_OPENED","DATA_EDITED","promotedPrice","defaultPromotedPriceFallbackData","title","buttonText","hasUiTest","promotedPriceFallbackTemplate","className","isSticky","BtnTemplate","variant","block","defaultPromotedPriceResultData","skiPassPublicPriceText","packageBlock","acmUrl","acmModalId","acmHideInfoIcon","yieldCampaignLogo","rawDepartureDate","mandatoryExtraCostsText","staticText","defaultPromotedPriceStickyResultData","fallbackTitle","fallbackDescription","PromotedPriceStickyTemplate","PriceTemplate","defaultPriceData","publicPriceDetail","label","scratchPriceDescription","label2","getACMPriceLabel","modalId","labelGrayed","DEFAULT_PRICE_DATA_MODEL","size","DEFAULT_PACKAGE_BLOCK_DATA_MODEL","getPriceData","staticTexts","contextItemId","publicPriceWithCurrencySymbol","publicValue","symbol","currencySettings","symbolPosition","acmInformation","replace","currency","currencyPosition","saleText","discountPercentage","discountPercentagePublicPrice","oldPrice","originalValue","legend","publicPrice","getSkiPassPublicPriceText","COMPONENT_LOCALES","register","language","urlAttr","mainContainer","stickyContainer","stickyEnabled","extraParams","button","dataSource","PromotedPrice","_fetch","_refresh","elements","_runElementQueries","_getExtraParamsFromDom","apiUrl","getAttribute","_getDataSourceFromDom","isOpened","classList","contains","isPricesTab","passThroughParams","GET_PASSTHROUGH_PARAMS","getSearchParamsFromUrl","locales","_getLocales","refresh","showFallback","open","close","showStickyPromotedPrice","_showStickyPromotedPrice","getOriginalDepartureDate","_getOriginalDepartureDate","_buildEvents","domEventsHelper","attachEvents","_domEvents","addBannerifDiscount","parameters","promotedPriceUrl","promotedPriceResponseAndStatus","promotedPriceResponse","_args","rawData","_getPromotedPriceData","arrayifyObject","fetchJsonDataAndStatusInfo","fullReferrerOnCrossOrigin","ok","statusCode","jsonData","actionsQueue","promotedPriceData","newMainContent","mustAppendElement","newStickyContent","_args2","detachEvents","all","fetch","departureDate","raw","outboundDepartureAirportName","originalDepartureDate","elementFromString","_d$yieldCampaignLogo","src","PackageBlockTemplate","defaultPackageBlockData","replaceWith","initComponentActionElements","body","appendChild","addEventListener","ev","_handlePromotedPriceButtonClick","participants","Participants","_this$locales$fallbac","closest","fallbackButtonText","textButton","add","forceRepaint","opened","remove","removeEventListener","closed","contextitemid","includedServices","filters","featuredFilters","humanized","extraParamsElements","querySelectorAll","el","dataSourceElement","innerHTML","_this6","click","_this$promotedPriceDa","customLocaleElement","customLocaleData","context","_this$elements$sticky","_this$elements$sticky2","_d$price","yieldCampaignCode","discountBannerMessage","banner","container","carrouselElement","insertBefore","nextSibling","galleryReactElement","refund","REFUND_REQUESTED","REFUND_REQUEST_CLICKED","reviewsList","REVIEWS_LIST_DATA_LOADED","REVIEWS_LIST_REVIEW_TRANSLATED","REVIEWS_LIST_LANGUAGE_SWITCH","REVIEWS_LIST_PAGINATION","reviewsTeaser","REVIEWS_TEASER_LOADED","REVIEWS_TEASER_MODAL_OPENED","defaultRoomDropdownTemplateData","placeholder","rooms","roomStockThresholdToShowLowAvailability","roomsLeftAvailable","lastRoomAvailable","onRequestLabel","priceConfig","cancel","GLOBAL_LOCALES","WIDGET_API","WIDGET_QUERIES","floatingBox","textBox","roomsList","actionableListApi","roomsContainer","DEFAULT_OPTIONS","RoomDropdown","_createHtml","_getHtmlElements","_bindEvents","ActionableListTemplate","jsApi","config","itemType","priceDefaults","_bindRoomsEvents","roomDropdownHtml","TextboxTemplate","readonly","icon","iconPosition","FloatingBoxTemplate","gradient","FloatingBoxHeaderTemplate","FloatingBoxBodyTemplate","FloatingBoxFooterTemplate","moveChildrenFrom","flush","textBoxInput","textBoxApi","floatingBoxApi","roomsListApi","_selectRoomItem","_onFocus","_onCancel","_closeFloatingBox","_openFloatingBox","setProp","_floatingBoxEvents","mousedown","_useScrollEffect","getProp","tempSelection","delegateTarget","rootElement","floatingBoxHeight","offsetHeight","viewportFree","clientHeight","getBoundingClientRect","top","scrollTop","isFloatingBoxFixed","getStyle","documentScrollingElement","scrollingElement","documentElement","safeDocumentYCoordinate","_getSafeDocumentYCoordinate","smooth","scrollLeft","forceClosedCallback","propTypes","string","isRequired","stockWarningMessage","characteristicsContentLayout","defaultProps","isSelectable","tokensShared","tokensBrand","tokens","dataRoomtypeCollapseListener","ROOMTYPES_SELECTOR_TOGGLED","RoomListItemTemplate","checkPropTypes","classNameLastRoom","stockWarningMessageIsLastRoom","onRequest","LabelTemplate","characteristics","roomTypeDescriptionTitle","roomNumber","selectRoomButtonText","contractId","occupancyId","packageId","CollapseTemplate","defaultCollapseData","html","GetRoomCharacteristicsHtml","images","PhotoGalleryTemplate","popupTitle","getTokenClass","defaultRoomListTemplateData","roomWord","showEmtpyFilteredRoomsMessage","roomsNotMatchingOccupancyHeader","roomsNotMatchingOccupancy","occupancySelectors","RoomListItemsTemplate","showFromTextInRooms","priceFromWord","emptyFilteredRooms","roomsListSelectRoomButtons","roomListNumberSteppers","roomsListContainerElement","sortRoomsBy","SortRoomsBy","PriceAndName","RoomList","_initOccupancyFilter","_refreshRooms","roomListHtml","roomOccupancy","occupancySelector","NumberStepperTemplate","roomId","ageProfileId","current","minValue","maxValue","max","step","labelDescription","getNumberStepperData","numberSteppers","numberSteppersApi","stepper","_getHtmlElementsInItems","numberStepperApi","_numberStepperChanged","_bindEventsItems","selectRoomButton","isOccupationEmptyOrNotSet","roomSelectorService","occupancies","occupancyFilter","eventArgs","roomContractId","attr","occupancy","_getOccupancyFilterFromNumberSteppers","_updateOccupancyFilter","silent","_initRoomsContainerEvents","total","_d$locales","_d$locales2","selectedRoomTypeList","notSelectedRoomTypeList","roomsHtml","filterResponse","filterRooms","isOccupancyFilterDefined","isOccupancyFilterEmpty","selectedRoomTypeRooms","roomsMatchingOccupancy","room","selected","notSelectedRoomTypeRooms","_getHeaderTextForRoomsNotMatchingOccupancy","roomListSelectedTitle","roomListOtherTitle","message","defaultRoomSelectorData","headerText","defaultRoomSelectorMessageData","showMessage","state","messagesText","showArrow","arrowPosition","token","defaultRoomSelectorAgeProfilesMessageData","headerTitle","headerToggleText","contentTitle","collapseId","profiles","number","roomName","roomDescription","shape","priceSuffix","infoMessage","errorMessage","bool","removable","isFlexibleAllocation","arrayOf","min","objectOf","oneOfType","removeRoomButton","RoomOccupancy","runElementQueries","NumberSteppersApi","_initNumberSteppersApi","_bindElements","api","_handleRoomOccupancyChanged","_handleRemoveRoomButtonClicked","getOccupancy","CurrencySymbolPosition","NotShown","BeforeAmount","AfterAmount","isValid","enumValue","includes","globalLocales","componentLocales","hasFlexibleAllocation","allInSameRoom","priceTableType","PriceTableType","DepartureDateAndRoomType","roomCode","roomOccupancyId","occupation","mainContainerElement","roomSelectorItemList","wrongAllocationMessageContentElement","RoomSelector","RoomSelectorService","_initState","_buildHtml","_updateUi","_createClass","allocatedPackages","unallocatedOccupation","totalOccupation","getOccupationFromBirthDates","getOccupationBaseObject","indexFirstPackage","firstPackage","roomOccupancies","getOccupanciesByRoomIdAndRoomOccupancyId","getOccupanciesByRoomId","_this$roomSelectorSer","getBestOccupancyForOccupation","bestOccupancy","bestOccupation","bestPackage","packages","getPackagesByRoomId","pkg","_findOccupation","limits","selectedPackage","getOccupationDifference","findIndex","participant","currentRoomParticipants","idx","occupationLimits","adults","children","babies","newState","occ","statusOk","roomStatus","_addRoomAllocatedAndSelected","_addRoomAllocatedNotSelected","roomListElement","_roomSelectorListHtml","_handleAddRoomDynamic","_handleAddRoom","isSpecialAgeProfile","specialAgeProfileMessageData","specialAgeProfileHeaderTitle","specialAgeProfileHeaderToggleText","specialAgeProfileContentTitle","ageProfiles","getValidProfiles","ageProfile","_getAgeProfileName","_getAgeRangeDescription","specialAgeProfileMessageElement","BoxTemplate","profile","messages","showMessageBox","extraClassArrowPosition","pendingAllocationMessageData","_getAllAgeProfilesPendingToAllocateMessages","pendingAllocationMessageElement","msg","errorWrongAllocationData","wrongAllocationMessageToContinue","errorWrongAllocationElement","roomSelectorElement","occupationToAllocate","_this7","roomSelectorListData","getListOfRoomsSelectableByOccupation","availableRoomsListData","_getAvailableRoomsListData","innerText","noCompatibleRoomsForPeoplePendingToAllocateText","_getPartyCompostionAllocatedDescription","_getOccupancySelectorsForRoomList","_getCurrencyConfig","currencyConfig","newStatePackages","_toConsumableArray","_updateState","newPackage","getPackageById","_this$roomSelectorSer3","_scrollToLastRoomAdded","roomsAdded","lastRoomAddedY","window","pageYOffset","_this8","stock","roomUsedStock","_getStockWarningMessage","_getStockWarningMessageIsLastRoom","_this9","_addSpecialAgeProfileMessage","_addRoomsAllocated","isEverybodyAllocated","_isEverybodyAllocated","allPackagesAllocated","_areAllPackagesAllocated","showErrorWrongAllocation","_addInfoMessageWithPendingAllocation","_addRoomListWithoutAllocation","_addErrorMessageWrongAllocation","birthdates","flat","pickBirthdatesByOccupation","picked","remaining","getRoomById","accOccupation","amountPeople","_this10","packageData","occupancyMatchesOccupation","stockRoomsAssigned","roomData","availableStock","getRoomOccupancyData","packageOccupation","errorMessages","_getPeopleAllocationInRoomErrorMessages","roomRowPackageData","getRoundedPrice","pricePerPersonAbbreviation","DepartureDateAndDuration","subtitle","_getOccupancySelectors","msgs","adultsWord","adultWord","childrenWord","childWord","babiesWord","babyWord","_this11","peoplePendingCount","peopleInExcessCount","_getPeoplePendingToAllocateMessage","_getPeopleAllocatedInExcessMessage","peopleCount","localeId","_this12","pendingToAllocateMsgs","getIds","pendingToAllocateNum","ageProfileName","pendingToAllocateMsg","pendingToAllocateMsgsLastItem","separator","peoplePendingToAllocateText","participantsCount","peopleAllocatedInExcess","_this13","isPriceTableGroupedByDuration","isNotFirstRoom","usedAgeProfilesCount","getIdsWithOccupation","currentOccupation","minOccupants","Math","maxOccupants","minAge","maxAge","_this14","ageProfilePendingToAllocate","_this15","roomRowData","_getRoomRowData","roomRowElement","encodeAttributes","roomOccupancyApi","newOccupancy","_handleRoomRowOccupancyChanged","_removeRoomRow","getOccupancyExpandedWithTotal","cheapestPackage","getCheapestPackageOfRoom","RoomSelectorRegisterFacade","_RoomSelector","_inherits","_super","search","SEARCH_FILTERS_APPLIED","SEARCH_RESULTS","SEARCH_ERROR","SEARCH_REMOVE_SINGLE_CHIP_FILTER","SEARCH_RESULT_CLICK","SEARCH_MODIFIER_CHANGE","SEARCH_SORT_CHANGE","SEARCH_PAGINATION_CHANGE","SEARCH_MAP_OPENED","selectedStateDataDefaults","routePricePerPerson","routeTotalPrice","priceBreakdown","services","bookMessage","tripSummary","contentUsps","SelectedStateDataModel","elementId","lines","line","isIconHidden","_this$data$priceBreak","optionalServices","service","mainTitleText","headerMessageText","headerMessageLevel","level","tripDetails","transformTripSummary","detailedTripSummary","tagLine","_getBreakdownTableTemplateData","itemsLocalCosts","_getBreakdownTableTemplateDataLocalCosts","itemsLocalCostsWithouPrices","localCostsWithoutPrice","itemsTotal","_getBreakdownTableTemplateDataTotal","extraInfo","extraInfoIcon","openJawMessage","isOpenJaw","headerTextLocalCosts","headerDescriptionLocalCosts","_getLocalCostsCurrencyDescription","mandatoryCosts","mandatoryCostsTitle","content","mandatoryCostsContent","submitButtonText","_getSubmitButtonText","packageUsps","usps","genericText","bookButton","tranportType","transportType","toLowerCase","bookButtonFlightSelector","bookButtonBusSelector","bookButtonSelfDriveSelector","_this$data","concept","roomText","subitems","topItemsExtraClasses","preItemsExtraClasses","isDiscount","rawAmount","_getSubTotalRowTemplateData","subTotalPayAtReservation","formatted","subTotalText","_this$data$priceBreak2","_this$data2","localCosts","localCostsWithPrice","localCost","subTotalPayAtDestination","_this$data3","_this$data4","showGrossPrice","totalPrice","totalGrossPrice","totalPriceSubItems","pricePerPersonText","extraClass","preitem","totalText","localCostsCurrencyCode","defaultSelectedStateData","category","imagePlaceholder","imageUnresolved","TitleSectionTemplate","PackageUspsItemTemplate","usp","kind","widgetAPI","defaults","SelectedState","setLoadingState","initSelectedStateDataModel","createHtml","bindEvents","selectedStateDataModel","selectedStateElement","_d$priceBreakdown","_d$priceBreakdown$ite","_d$priceBreakdown$ite2","_d$priceBreakdown2","_d$priceBreakdown3","isEmpty","mandatoryCostsCollapsed","accommodationUSPs","tripDetailsItems","BulletListTemplate","toUpperCase","BreakdownTableTemplate","contentItem","AbsoluteDialogTemplate","alertType","closable","SelectedStateTemplate","_getSelectedStateTemplateData","submitButton","Img","createInstancesOnDocument","handleSubmitButtonClick","_handleSubmitButtonClick","currentLoadingState","unBindEvents","staticContentData","STATIC_CONTENT_DATA_READY","_arrayLikeToArray","arr","len","arr2","form","saveButtons","emailInput","successToggle","ATTRIBUTES","SubscribeForm","_clickSaveButton2","_saveEmailAndGetDataChangeData2","_callApi","componentId","dataset","datasourceId","_attachEvents","formApi","emailInputApi","successToggleElement","_arrayWithoutHoles","iter","from","_iterableToArray","minLen","toString","test","_unsupportedIterableToArray","_nonIterableSpread","_clickSaveButton","preventDefault","_enableForm","_getEmailToSubscribe","validate","_saveEmailAndGetDataChangeData","t0","action","email","itemId","callApi","_x3","_x4","apiCaller","success","apiData","_showSubscribeFormSuccess","bookingGateEvents","BOOKING_GATE_SUBSCRIBE_FORM_SUCCESS","_showSubscribeFormError","enableStatus","elem","disabled","btn","setLoading","trim","TabsFilter","filterModel","defaultTabsData","setFilterModel","domEvents","_onMouseClick","renderTabs","clearSelection","setSelectedValues","models","model","isOpen","TabsNavTemplate","_getTabsOptionsFromFilter","swipeElement","Swipe","CreateInstanceOnElement","activeClass","tabItemCandidate","_findTabItemByMouseEvent","_setTabsOptionsToFilter","lastParentToCheck","matches","parentElement","parentNode","nodeType","closestResult","voucherRedeemer","VOUCHER_REDEEMER_SERVER_VALIDATION_ERROR","VOUCHER_REDEEMER_SERVER_ERROR","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","loaded","__webpack_modules__","m","amdO","O","chunkIds","priority","notFulfilled","Infinity","fulfilled","j","every","splice","getter","__esModule","definition","get","globalThis","Function","prop","nmd","paths","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}