{"version":3,"sources":["webpack:///./src/js/helpers/index.js","webpack:///./src/js/modules/Lounge.js","webpack:///./src/js/modules/LoungesList.js","webpack:///./src/js/templates/lounge.html","webpack:///./src/js/templates/fast-track.html"],"names":["getParameterByName","name","url","window","location","href","replace","results","RegExp","exec","decodeURIComponent","_core","__webpack_require__","Lounge","el","_classCallCheck","this","_possibleConstructorReturn","__proto__","Object","getPrototypeOf","call","Component","dom","$slidingContent","$el","find","$slidingContentPanel","$slidingTrigger","$gallery","$gallerySlider","$galleryTrigger","$loungeAmenitiesInfo","$loungeFoodInfo","$loungeFacilitiesInfo","$loungeEntertainmentInfo","$slidingContentChevron","$galleryCloseBtn","initSlider","on","toggleContent","bind","showGallery","hideGallery","length","swiper","Swiper","pagination","type","renderFraction","currentClass","totalClass","navigation","nextEl","prevEl","e","stopPropagation","preventDefault","addClass","removeClass","slideToggle","toggleClass","hasClass","text","data","$infoPanel","availableOptionsArr","forEach","option","show","_constants","_helpers","_oneworld","LoungesList","$searchLounges","$","$searchLoungesForm","$placeholder","$noResultsMsg","$spinner","$fastTrackPlaceholder","$fastTrack","$fastTrackTooltip","loungesUrl","attr","findLounges","FindLounges","onFind","displayLounges","setLocation","label","title","document","querySelector","metaTitle","body","dataset","pageTitleOverride","innerHTML","setAttribute","fastTrackData","html","_template3","default","fastTrackTemplate","scroll","slideUp","click","slideDown","hover","stop","qsString","param","airportCode","toUpperCase","pathname","history","pushState","hide","fadeIn","getAirports","airportsUrl","airports","airport","item","Code","searchAirportFastTrack","catch","console","log","processedLoungeData","processLoungedata","renderLounges","renderFastTrack","airportName","Name","loungesCount","terminalMapImage","hasFastTrack","fastTrackTerminals","viewTerminalLabel","terminalLabel","viewTerminalUrl","terminalUrl","viewTerminalTarget","terminalTarget","overrideTitle","map","originalLounge","processedLounge","Title","Subtitle","AirportCode","AirportName","Terminal","Tiers","TIERSMAP","AccessTier","AccessClass","ACCESS_CLASS_MAP","AccessConditions","AccessNotes","Airlines","airline","Images","imageObj","JSON","parse","Pointer","Original","Amenities","AMENITIES_ARRAY","reduce","acc","amenity","push","OpenHours","DisplayOpenHours","OpenHoursNotes","EntertainmentNotes","openHours","filter","openHour","OpeningHour","OpenAllDay","CloseAllDay","Days","ScheduleNotes","Location","Concourse","Near","LocationSecurity","element","join","FoodOptions","FOOD_BEVERAGE_ARRAY","foodOption","Facilites","FACILITIES_ARRAY","facility","Entertainment","ENTERTAINMENT_COMMS_ARRAY","commOption","WiFi","loungesHTML","each","index","loungeData","sort","loungeTemplate","initLounges","_this2","$lounges","Lounges","lounge","newLounge","displayInfo","loungeObj","relatedDataObj","renderAvailableInfo","module","exports"],"mappings":"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","file":"26.e46153ba38bcd481d695.bundle.js","sourcesContent":["export const getParameterByName = (name, url) => {\n if (!url) url = window.location.href;\n name = name.replace(/[\\[\\]]/g, '\\\\$&');\n const regex = new RegExp(`[?&]${ name }(=([^&#]*)|&|#|$)`)\n const results = regex.exec(url);\n if (!results) return null;\n if (!results[2]) return '';\n return decodeURIComponent(results[2].replace(/\\+/g, ' '));\n}\n","import { Component } from '@verndale/core';\nimport Swiper from 'swiper';\n\nclass Lounge extends Component {\n constructor(el) {\n super(el);\n }\n\n setupDefaults() {\n this.dom = {\n $slidingContent: this.$el.find('.lounge__additional'),\n $slidingContentPanel: this.$el.find('.lounge-additional__content'),\n $slidingTrigger: this.$el.find('.lounge-additional__title'),\n $gallery: this.$el.find('.lounge__gallery'),\n $gallerySlider: this.$el.find('.swiper-container'),\n $galleryTrigger: this.$el.find('.lounge__gallery-trigger'),\n $loungeAmenitiesInfo: this.$el.find('.lounge-details__amenities'),\n $loungeFoodInfo: this.$el.find('.lounge__food'),\n $loungeFacilitiesInfo: this.$el.find('.lounge__facilities'),\n $loungeEntertainmentInfo: this.$el.find('.lounge__entertainment')\n };\n\n this.dom.$slidingContentChevron = this.dom.$slidingTrigger.find('.chevron');\n this.dom.$galleryCloseBtn = this.dom.$gallery.find('.btn-close');\n this.initSlider();\n }\n\n addListeners() {\n this.dom.$slidingTrigger.on('click touchstart', ::this.toggleContent);\n this.dom.$galleryTrigger.on('click touchstart', ::this.showGallery);\n this.dom.$galleryCloseBtn.on('click touchstart', ::this.hideGallery);\n }\n\n initSlider() {\n if (this.dom.$gallerySlider.length > 0) {\n this.swiper = new Swiper(this.dom.$gallerySlider, {\n pagination: {\n el: '.swiper-pagination',\n type: 'fraction',\n renderFraction: (currentClass, totalClass) => {\n return (\n `` +\n ' of ' +\n ``\n );\n }\n },\n navigation: {\n nextEl: '.swiper-button-next',\n prevEl: '.swiper-button-prev'\n }\n });\n }\n }\n\n showGallery(e) {\n e.stopPropagation();\n e.preventDefault();\n this.dom.$gallery.addClass('is-active');\n }\n\n hideGallery(e) {\n e.stopPropagation();\n e.preventDefault();\n this.dom.$gallery.removeClass('is-active');\n }\n\n toggleContent(e) {\n e.stopPropagation();\n e.preventDefault();\n\n this.dom.$slidingContentPanel.slideToggle();\n this.dom.$slidingContent.toggleClass('is-open');\n\n if (this.dom.$slidingContent.hasClass('is-open')) {\n //Update chveron\n this.dom.$slidingContentChevron.removeClass('bottom').addClass('top');\n //Update trigger text\n this.dom.$slidingTrigger\n .find('a')\n .text(this.dom.$slidingTrigger.data('textClose'));\n } else {\n //Update chveron\n this.dom.$slidingContentChevron.removeClass('top').addClass('bottom');\n //Update trigger text\n this.dom.$slidingTrigger\n .find('a')\n .text(this.dom.$slidingTrigger.data('textOpen'));\n }\n }\n\n renderAvailableInfo($infoPanel, availableOptionsArr) {\n if (availableOptionsArr.length > 0) {\n availableOptionsArr.forEach(option => {\n $infoPanel.find(`[data-name=\"${option}\"]`).show();\n });\n }\n }\n}\nexport default Lounge;\n","import { Component } from '@verndale/core';\nimport {\n TIERSMAP,\n ACCESS_CLASS_MAP,\n AMENITIES_ARRAY,\n FOOD_BEVERAGE_ARRAY,\n FACILITIES_ARRAY,\n ENTERTAINMENT_COMMS_ARRAY\n} from '../constants';\nimport { getParameterByName } from '../helpers';\nimport FindLounges from './FindLounges';\nimport _template from 'lodash/template';\nimport loungeTemplate from '../templates/lounge.html';\nimport Lounge from '../modules/Lounge';\nimport fastTrackTemplate from '../templates/fast-track.html';\nimport {\n findLounges,\n getAirports,\n searchAirportFastTrack\n} from '../service/oneworld';\n\nclass LoungesList extends Component {\n constructor(el) {\n super(el);\n }\n\n setupDefaults() {\n this.dom = {\n $searchLounges: $('.search-lounges'),\n $searchLoungesForm: $('.search-lounges__form'),\n $placeholder: this.$el.find('.lounges-list__placeholder'),\n $noResultsMsg: this.$el.find('.lounges-list__no-results'),\n $spinner: this.$el.find('.spinner'),\n $fastTrackPlaceholder: $('.fast-track__placeholder'),\n $fastTrack: $('.fast-track'),\n $fastTrackTooltip: $('.fast-track__availableTerminals__title span')\n };\n\n this.loungesUrl = this.dom.$searchLoungesForm.attr('action');\n\n this.findLounges = new FindLounges(this.dom.$searchLounges, {\n onFind: ::this.displayLounges\n });\n\n const location = getParameterByName('location');\n\n if (location && !this.dom.$searchLoungesForm.data('redirect-when-location-params')) {\n this.findLounges.setLocation(location);\n this.displayLounges({ location });\n }\n }\n\n overrideTitle(label) {\n const title = document.querySelector('title');\n const metaTitle = document.querySelector('meta[property=\"og:title\"]');\n const body = document.querySelector('body');\n if (body && body.dataset.pageTitleOverride && body.dataset.pageTitleOverride !== '' && title) {\n title.innerHTML = body.dataset.pageTitleOverride.replace('{airport}', label);\n if (metaTitle) {\n metaTitle.setAttribute('content', body.dataset.pageTitleOverride.replace('{airport}', label));\n }\n }\n }\n\n renderFastTrack(fastTrackData) {\n const html = _template(fastTrackTemplate)({ fastTrackData });\n $(this.dom.$fastTrack).addClass('fast-track--active');\n this.dom.$fastTrackPlaceholder.html(html);\n $(window).scroll(() => $('.fast-track___tooltipInfo').slideUp());\n $(window).on('touchstart', () => $('.fast-track___tooltipInfo').slideUp());\n $('.fast-track__tooltipTrigger').click(e => {\n e.stopPropagation();\n $('.fast-track___tooltipInfo').slideDown('medium');\n });\n $('.fast-track__tooltipTrigger').hover(\n () => $('.fast-track___tooltipInfo').stop(true, true).slideDown('medium'),\n () => $('.fast-track___tooltipInfo').stop(true, true).slideUp('medium')\n );\n }\n\n async displayLounges(data) {\n const qsString = $.param(data);\n const airportCode = data.location.toUpperCase();\n let url = location.pathname;\n\n if (qsString) {\n url = `${url}?${qsString}`;\n }\n\n window.history.pushState({}, null, url);\n\n if (typeof airportCode !== 'undefined' && airportCode !== '') {\n //Reset state\n this.dom.$noResultsMsg.hide();\n this.dom.$placeholder.html('');\n this.dom.$fastTrackPlaceholder.html('');\n //show busy state\n this.dom.$spinner.addClass('is-active').fadeIn();\n //get data\n const airports = await getAirports({ url: this.airportsUrl });\n const airport = airports.find(item => item.Code === airportCode);\n // get fasttrack data\n const fastTrackData = await searchAirportFastTrack(airportCode);\n const data = await findLounges({\n airport: airportCode,\n url: this.loungesUrl\n }).catch(e => {\n console.log('error: ');\n console.log(e);\n });\n\n //remove busy state\n this.dom.$spinner.hide().removeClass('is-active');\n\n //process data\n if (typeof data !== 'undefined' && data.length > 0) {\n const processedLoungeData = this.processLoungedata(data);\n //render lounges\n this.renderLounges(processedLoungeData);\n this.renderFastTrack({\n airportName: `${airport.Name}`,\n loungesCount: `${data.length} Lounge${data.length > 1 ? 's' : ''}`,\n terminalMapImage:\n (fastTrackData && fastTrackData.terminalMapImage) || false,\n hasFastTrack: (fastTrackData && fastTrackData.hasFastTrack) || false,\n fastTrackTerminals:\n (fastTrackData && fastTrackData.fastTrackTerminals) || false,\n viewTerminalLabel: fastTrackData.terminalLabel,\n viewTerminalUrl: fastTrackData.terminalUrl,\n viewTerminalTarget: fastTrackData.terminalTarget\n });\n this.overrideTitle(airport.Name);\n } else {\n //display no results\n this.dom.$noResultsMsg.show();\n }\n }\n }\n\n processLoungedata(data) {\n this.processedLoungeData = data.map(originalLounge => {\n const processedLounge = {};\n\n //Title\n processedLounge.Title = originalLounge.Name;\n\n //Subtitle\n processedLounge.Subtitle = `(${originalLounge.AirportCode}) ${originalLounge.AirportName} ${originalLounge.Terminal}`;\n\n //Tiers and Classes\n processedLounge.Tiers = TIERSMAP[originalLounge.AccessTier];\n processedLounge.AccessClass =\n ACCESS_CLASS_MAP[originalLounge.AccessClass];\n processedLounge.AccessConditions = originalLounge.AccessConditions;\n processedLounge.AccessNotes = originalLounge.AccessNotes;\n\n //Airlines\n processedLounge.Airlines = originalLounge.Airlines.map(airline => {\n return airline.Name;\n });\n\n //Gallery Images\n processedLounge.Images = originalLounge.Images.map(imageObj => {\n const imageInfo = JSON.parse(imageObj.Pointer);\n return imageInfo.Original;\n });\n\n //Amenities\n processedLounge.Amenities = AMENITIES_ARRAY.reduce((acc, amenity) => {\n if (originalLounge[amenity]) {\n acc.push(`Amenities-${amenity}`);\n }\n return acc;\n }, []);\n\n //Open Hours\n processedLounge.OpenHours = originalLounge.OpenHours;\n processedLounge.DisplayOpenHours = false;\n processedLounge.OpenHoursNotes = originalLounge.EntertainmentNotes;\n\n if (processedLounge.OpenHours && processedLounge.OpenHours.length > 0) {\n const openHours = processedLounge.OpenHours.filter(\n openHour =>\n openHour.OpeningHour || openHour.OpenAllDay || openHour.CloseAllDay\n );\n processedLounge.DisplayOpenHours = openHours.length > 0;\n processedLounge.Days = [\n 'Sunday',\n 'Monday',\n 'Tuesday',\n 'Wednesday',\n 'Thursday',\n 'Friday',\n 'Saturday'\n ];\n }\n\n if (originalLounge.ScheduleNotes === '') {\n processedLounge.ScheduleNotes = null;\n } else {\n processedLounge.ScheduleNotes = originalLounge.ScheduleNotes;\n }\n //Location\n processedLounge.Location = [];\n processedLounge.Location.push(originalLounge.Terminal);\n processedLounge.Location.push(originalLounge.Concourse);\n processedLounge.Location.push(originalLounge.Near);\n processedLounge.Location.push(\n originalLounge.LocationSecurity.replace(/([a-z])([A-Z])/g, '$1 $2')\n );\n processedLounge.Location = processedLounge.Location.filter(\n element => element !== ''\n );\n processedLounge.Location = processedLounge.Location.join(', ');\n\n //Complementary Food\n processedLounge.FoodOptions = FOOD_BEVERAGE_ARRAY.reduce(\n (acc, foodOption) => {\n if (originalLounge[foodOption]) acc.push(`FoodOptions-${foodOption}`);\n return acc;\n },\n []\n );\n\n //Facilities\n processedLounge.Facilites = FACILITIES_ARRAY.reduce((acc, facility) => {\n if (originalLounge[facility]) acc.push(`Facilities-${facility}`);\n return acc;\n }, []);\n\n //Entertainment and Communications\n processedLounge.Entertainment = ENTERTAINMENT_COMMS_ARRAY.reduce(\n (acc, commOption) => {\n if (originalLounge[commOption])\n acc.push(`Entertainment-${commOption}`);\n return acc;\n },\n []\n );\n\n //Free Wifi is not boolean\n if (originalLounge.WiFi === 'Free') {\n processedLounge.Entertainment.push('Entertainment-FreeWifi');\n }\n return processedLounge;\n });\n return this.processedLoungeData;\n }\n\n renderLounges(data) {\n let loungesHTML = '';\n $(data).each((index, loungeData) => {\n loungeData.Airlines.sort();\n loungesHTML += _template(loungeTemplate)({\n loungeData\n });\n });\n this.dom.$placeholder.html(loungesHTML);\n //Show corresponding Amenities, etc sections\n this.initLounges();\n }\n\n initLounges() {\n const $lounges = this.$el.find('.lounge', this.dom.$placeholder);\n this.Lounges = [];\n $lounges.each((index, lounge) => {\n const newLounge = new Lounge($(lounge));\n this.Lounges.push(newLounge);\n this.displayInfo(newLounge, this.processedLoungeData[index]);\n });\n }\n\n displayInfo(loungeObj, relatedDataObj) {\n //Amenities\n if (relatedDataObj.Amenities.length > 0) {\n loungeObj.renderAvailableInfo(\n loungeObj.dom.$loungeAmenitiesInfo,\n relatedDataObj.Amenities\n );\n }\n //Entertainment\n if (relatedDataObj.Entertainment.length > 0) {\n loungeObj.renderAvailableInfo(\n loungeObj.dom.$loungeEntertainmentInfo,\n relatedDataObj.Entertainment\n );\n }\n //Facilities\n if (relatedDataObj.Facilites.length > 0) {\n loungeObj.renderAvailableInfo(\n loungeObj.dom.$loungeFacilitiesInfo,\n relatedDataObj.Facilites\n );\n }\n //Food\n if (relatedDataObj.FoodOptions.length > 0) {\n loungeObj.renderAvailableInfo(\n loungeObj.dom.$loungeFoodInfo,\n relatedDataObj.FoodOptions\n );\n }\n }\n}\n\nexport default LoungesList;\n","module.exports = \"
<% if(loungeData.Images.length > 0){%>
<% } else { %>
<% } %>

<%=loungeData.Title%>

<%=loungeData.Subtitle%>

<% if(loungeData.Tiers){%> <% loungeData.Tiers.forEach(function(tier) {\\n tier = tier.toLowerCase();\\n %>
\\\"> <%=tier%>
<%});%> <%};%>
<% if(loungeData.Images.length > 0){%> View Image Gallery <%}%>

Access

    <% if(loungeData.AccessClass){%> <%loungeData.AccessClass.forEach(function(accessClass){%>
  • <%=accessClass%> Class
  • <%});%> <%};%> <% if(loungeData.Tiers){%> <%loungeData.Tiers.forEach(function(tier){%>
  • <%=tier%> Tier
  • <%});%> <%};%> <% if(loungeData.AccessNotes){%>
  • <%=loungeData.AccessNotes%>
  • <%};%>

Airlines

    <%loungeData.Airlines.forEach(function(airline){%>
  • <%=airline%>
  • <%});%> <% if(loungeData.AccessConditions){%>
  • <%=loungeData.AccessConditions%>
  • <%}%>
<%if(loungeData.Amenities.length > 0) {%>

Amenities

  • Business Facilities
  • Entertainment Facilities
  • complimentary food and beverage
  • phone
  • pre-flight dinner options
  • quiet/relaxation area
  • shower
  • spa
  • wheelchair access
  • wifi
<%}%>

Exceptions may apply. Eligibility subject to the oneworld Lounge Access Policy.

<% if (loungeData.DisplayOpenHours || loungeData.ScheduleNotes !== null){%> <% if (loungeData.DisplayOpenHours){%>

Opening Hours

<%}%> <% if (!loungeData.DisplayOpenHours){%>

Information on Hours

<%}%> <% if (loungeData.DisplayOpenHours){%>
<% loungeData.OpenHours.forEach(function(openHour, index) { %> <% if (openHour.OpeningHour){%>

<%=loungeData.Days[index]%>

<%=openHour.OpeningHour%> - <%=openHour.ClosingHour%>
<% if (openHour.OpeningHour2 !== null){%>
<%=openHour.OpeningHour2%> - <%=openHour.ClosingHour2%>
<%}%> <% if (openHour.OpeningHour3 !== null){%>
<%=openHour.OpeningHour3%> - <%=openHour.ClosingHour3%>
<%}%> <% if (openHour.OpeningHour4 !== null){%>
<%=openHour.OpeningHour4%> - <%=openHour.ClosingHour4%>
<%}%>
<%} else if (openHour.OpenAllDay && !openHour.CloseAllDay) {%>

<%=loungeData.Days[index]%>

24 hours
<%} else if (!openHour.OpenAllDay && openHour.CloseAllDay) {%>

<%=loungeData.Days[index]%>

Closed all day
<% } %> <% }); %>
<%}%> <% if (loungeData.ScheduleNotes !== null){%>

<%=loungeData.ScheduleNotes%>

<%}%> <%} else {%>

Information on Hours

<%=loungeData.OpenHoursNotes%>

<%}%>

Location

<%=loungeData.Location%>

<% if(loungeData.FoodOptions.length > 0) {%>

Complimentary Food / Beverage

  • Snacks
  • Buffet
  • Hot Food
  • A la Carte
  • Vegetarian Options
  • Waiter Service
  • Pre-flight Dining
  • Specialty Coffee
  • Alcoholic Beverages
  • Champagne
<%}%> <% if(loungeData.Facilites.length > 0) {%>

Facilities

  • Business Center
  • Buffet
  • Wheelchair Access
  • Shower
  • Air Conditioning
  • Restroom
  • Runway Views
  • Flight information Screens
<%}%> <% if(loungeData.Entertainment.length > 0) {%>

Entertainment / Communication

  • Free Wifi
  • Ethernet Connection
  • Phone
  • TV
  • Charging Facilities
  • Reading Materials
<%}%>
\";","module.exports = \"

<%=fastTrackData.airportName%>

<% if(fastTrackData.hasFastTrack){%>
<%};%> <% if(!fastTrackData.hasFastTrack){%>
<% if(fastTrackData.hasFastTrack){%>

Fast track

Fast Track

emerald

oneworld Emerald frequent flyers receive access to fast track at select security lanes. Depending on the airport and the terminal, these fast track lanes may be branded differently.

 is available in <%=fastTrackData.fastTrackTerminals%>

<%};%>
\";"],"sourceRoot":""}