{"version":3,"sources":["webpack:///./Scripts/Pearson/main.ts","webpack:///./Scripts/Pearson/global/current-year.ts","webpack:///./Scripts/Pearson/global/main-navigation.ts","webpack:///./Scripts/Pearson/utilities/setTabIndexes.ts","webpack:///./Scripts/Pearson/global/skip-link.ts","webpack:///./Scripts/Pearson/waittime-table/index.tsx","webpack:///./Scripts/Pearson/waittime-table/components/waittime-table.tsx","webpack:///./Scripts/Pearson/common/services/get-waittime-service.ts","webpack:///./Scripts/Pearson/sitewide-offers/drawer.ts","webpack:///./Scripts/Pearson/wifi-personalization/zone-locator.ts","webpack:///./Scripts/Pearson/wifi-personalization/zone-personalizer.ts","webpack:///./Scripts/Pearson/wifi-personalization/get-cookie.ts","webpack:///./Scripts/Pearson/chatbot/chatbot.ts","webpack:///./Scripts/Pearson/utilities/loadScript.ts","webpack:///./Scripts/Pearson/utilities/debounce.ts","webpack:///./Scripts/Pearson/utilities/openYoutubeVideo.ts","webpack:///./Scripts/Pearson/utilities/getEventTarget.ts","webpack:///./Scripts/Pearson/utilities/toArray.ts","webpack:///./Scripts/Pearson/utilities/embedded-video.ts","webpack:///./Scripts/Pearson/utilities/getPropsFromAttributes.ts","webpack:///./Scripts/Pearson/common/presentation/loading-component.tsx","webpack:///./Scripts/Pearson/utilities/getDictionaryEntry.ts","webpack:///./Scripts/Pearson/global/form-label.ts","webpack:///./Scripts/Pearson/wifi-personalization/constants.ts","webpack:///D:/a/11/s/node_modules/tabbable/dist/index.esm.js","webpack:///D:/a/11/s/node_modules/focus-trap/dist/focus-trap.esm.js","webpack:///./Scripts/Pearson/wifi-personalization/get-location.ts","webpack:///./Scripts/Pearson/wifi-personalization/set-wait-period.ts"],"names":["_smartquotes","_interopRequireDefault","__webpack_require__","default","document","querySelector","Promise","all","e","then","t","bind","_forEach","elements","querySelectorAll","currentYear","Date","getFullYear","element","innerHTML","toString","_getAssociatedControl","_setTabIndexes","SELECTOR","onMobileNavigationButtonClick","buttons","button","currentTarget","HTMLElement","ariaExpanded_1","getAttribute","_button","setAttribute","control_1","modals","classList","toggle","ariaHidden","mainNavigation","modal","html","addEventListener","main","focusArea","tabbable","selector","focusableElements","focusableElement","hasAttribute","removeAttribute","onSkipLinkClick","preventDefault","link","HTMLAnchorElement","hash","substring","id","getElementById","scrollIntoView","focus","console","log","skipLink","React","_interopRequireWildcard","ReactDOM","_waittimeTable","_getPropsFromAttributes","props","render","createElement","__assign","_getWaittimeService","_loadingComponent","_super","PPCOWaitTimeComponent","_this","call","this","state","waitTimes","isApiAvailable","isLoading","isLoaded","setInterval","__awaiter","loadSchedules","_a","sent","updateInterval","__extends","prototype","componentDidMount","shouldComponentUpdate","nextProps","nextState","className","length","branchLabel","waittimeLabel","map","waittime","i","key","getTerminalName","nameEn","roundToNearest","Math","ceil","waitTimeInSecond","width","height","xmlns","d","fill","fillRule","errorMessage","numToRound","numToRoundTo","mins","airportterminal","phrase","terminal","filter","undefined","_typeof","setState","getPPCOWaitTimes","apiUrl","result","Component","ApiUrl","url","_fetch","get","json","checkpoints","getData","_delegatedEvents","_focusTrap","_carousel","_dataLayerPush","_getDictionaryEntry","trap","CAROUSEL_OPTIONS","perPage","1280","768","480","1","initializedCarousel","closeDrawerOnOutsideClick","target","closest","closeDrawer","drawerContent","drawer","event","add","body","remove","closeButton","deactivate","onDrawerButtonClick","stopPropagation","isExpanded","createFocusTrap","allowOutsideClick","activate","carouselContainer","initCarousel","toggleDrawerVisibility","text","anchor","href","parentElement","insertBefore","generateSkipOffersLink","on","_getLocation","_setWaitPeriod","_constants","locationSearcher","checkLocationInterval","parseInt","_b","locationEndpointTimeout","_d","_c","endpoint","returnUrl","timeout","getLocation","location","cookie","ZONE_COOKIE_NAME","window","hostname","includes","setTimeout","checkLocations","setWaitPeriod","_getCookie","newLocation","updatedPauseInterval","notNowPauseInterval","NOT_FOUND_KEY","SESSION_STORAGE_NOT_NOW_KEY","_f","_e","_h","_g","_j","onLocationSelect","_k","onUpdateSelectButtonClick","_l","onUpdateLocationClick","_m","onNotNowClick","locationBar","enableLocationCheck","select","HTMLSelectElement","setLocation","value","click","notNowPresses","sessionStorage","getItem","notNowPauseIntervalSeconds","pow","setItem","hidden","time","SESSION_STORAGE_WAIT_UNTIL_KEY","isInWaitPeriod","info","currentLocation","getCookie","newLocationKey","newLocationName","newLocationLabel","replace","setLocationLabel","reload","name","keyValue","split","find","c","_loadScript","_debounce","IS_ACTIVE_SESSION_STORAGE_KEY","TOKEN_SESSION_STORAGE_KEY","hasLoadedScript","setToken","token","getIsChatActive","onChatWindowResize","isMobile","toggleChatbot","container","chatboxElement","toBeHidden","setIsChatActive","webchatContainer","chatbot","webchatJavaScriptSource","loadWebchatJs","WebChat","refreshTokenService","fetch","method","headers","Authorization","result_1","tokenService","getToken","directLine","createDirectLine","renderWebChat","locale","defaultLanguage","lang","getLanguage","styleOptions","backgroundColor","accent","fontSizeSmall","primaryFont","avatarSize","bubbleBackground","bubbleBorder","bubbleBorderRadius","bubbleTextColor","bubbleFromUserBackground","bubbleFromUserBorder","bubbleFromUserBorderRadius","bubbleFromUserTextColor","rootHeight","hideSendBox","hideUploadButton","sendBoxBackground","sendBoxButtonColor","sendBoxButtonColorOnDisabled","sendBoxButtonColorOnFocus","sendBoxButtonColorOnHover","sendBoxHeight","sendBoxMaxHeight","sendBoxTextColor","sendBoxBorderBottom","sendBoxBorderLeft","sendBoxBorderRight","sendBoxBorderTop","sendBoxPlaceholderColor","sendBoxTextWrap","suggestedActionBackground","suggestedActionBorder","suggestedActionBorderRadius","suggestedActionTextColor","suggestedActionHeight","timestampColor","showSpokenText","userAvatarInitials","userAvatarImage","botAvatarInitials","botAvatarImage","userID","Tokens","ContactId","err_1","initializeChatbot","innerWidth","onResize","src","resolve","reject","tag","type","onload","onerror","getElementsByTagName","appendChild","debounce","func","wait","immediate","args","arguments","callNow","clearTimeout","apply","debouncedFunc","_getEventTarget","modalCls","links","embedQueryStr","HTML_SELECTOR","IFRAME_OPEN_CLASSNAME","htmlElement","contains","hideMainContent","modalEl_1","showInfo","controls","autoPlay","rel","closeBtnClass","modalHtml","atob","modalEl","CLOSE_BUTTON_SELECTOR","closeButtonFunction","scrollPosition_1","pageYOffset","parentNode","removeChild","style","overflow","scrollTo","selectorStr","_toArray","locationEl","pop","obj","Array","slice","EMBEDDED_VIDEO_PLAY_BUTTON","EMBEDDED_VIDEO_POSTER_HIDDEN_CLASSNAME","attachEventListeners","hidePoster","videoIframe","videoIframeSrc","playVideo","onClickFunction","playButtons","playButton","isJson","JSON","parse","isFloat","Number","dataset","attribute","indexOf","charAt","toLowerCase","isNaN","isError","classes","descriptionText","headingText","children","data-loading-component","defaultValue","Dictionary","_lodash","INPUT_SELECTOR","LABEL_SELECTOR","setFormLabelPadding","inputContainers","inputContainer","label","labelHeight","getBoundingClientRect","paddingTop","activeFocusDelay","candidateSelectors","candidateSelector","join","matches","Element","msMatchesSelector","webkitMatchesSelector","getCandidates","el","includeContainer","candidates","unshift","getTabindex","node","tabindexAttr","contentEditable","isContentEditable","nodeName","tabIndex","sortOrderedTabbables","a","b","documentOrder","isInput","tagName","isNonTabbableRadio","isRadio","radioSet","radioScope","form","ownerDocument","queryRadios","CSS","escape","err","error","message","checked","nodes","getCheckedRadio","isTabbableRadio","isNodeMatchingSelectorFocusable","options","disabled","isHiddenInput","displayCheck","getComputedStyle","visibility","nodeUnderDetails","_node$getBoundingClie","display","isHidden","some","child","isDetailsWithSummary","isNodeMatchingSelectorTabbable","focusableCandidateSelector","concat","_defineProperty","Object","defineProperty","enumerable","configurable","writable","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","push","__webpack_exports__","focus_trap_esm_createFocusTrap","activeFocusTraps","trapQueue","activateTrap","activeTrap","pause","trapIndex","splice","deactivateTrap","unpause","delay","fn","findIndex","arr","idx","every","valueOrHandler","_len","params","_key","userOptions","doc","config","source","forEach","getOwnPropertyDescriptors","defineProperties","_objectSpread2","returnFocusOnDeactivate","escapeDeactivates","delayInitialFocus","containers","tabbableGroups","nodeFocusedBeforeActivation","mostRecentlyFocusedNode","active","paused","containersContain","getNodeForOption","optionName","optionValue","Error","getInitialFocusNode","activeElement","firstTabbableGroup","firstTabbableNode","updateTabbableNodes","tabbableNodes","regularTabbables","orderedTabbables","candidate","candidateTabindex","sort","lastTabbableNode","group","tryFocus","preventScroll","isSelectableInput","checkPointerDown","clickOutsideDeactivates","returnFocus","isFocusable","checkFocusIn","targetContained","Document","stopImmediatePropagation","checkKey","keyCode","isEscapeEvent","isTabEvent","destinationNode","containerIndex","_ref","shiftKey","startOfGroupIndex","_ref2","destinationGroupIndex","lastOfGroupIndex","_ref3","_destinationGroupIndex","checkTab","checkClick","addListeners","capture","passive","removeListeners","removeEventListener","activateOptions","onActivate","deactivateOptions","onDeactivate","previousActiveElement","getReturnFocusNode","updateContainerElements","containerElements","elementsAsArray","Boolean","timeoutInSeconds","controller_1","AbortController","timeoutId","abort","NOT_FOUND","signal","response","status","zoneName","positionEntity","seconds","_i","totalSeconds","s","reduce","acc","waitUntilDate","setSeconds","getSeconds","getTime"],"mappings":"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","file":"main.19a96622ee77aeb98010.chunk.gen.js","sourcesContent":["/**\r\n * @fileOverview The main script file to be outputed before the end `` tag.\r\n */\r\n\r\nimport smartquotes from 'smartquotes';\r\nsmartquotes();\r\n\r\nimport 'lazysizes';\r\nimport 'lazysizes/plugins/attrchange/ls.attrchange';\r\n\r\nimport './global/analytics';\r\nimport './global/choices';\r\nimport './global/current-year';\r\nimport './global/form-label';\r\nimport './global/header';\r\nimport './global/main-navigation';\r\nimport './global/object-fit-images';\r\nimport './global/rellax';\r\nimport './global/search';\r\nimport './global/skip-link';\r\nimport './waittime-table';\r\nimport './accordion/accordion-content';\r\nimport './sitewide-offers/drawer';\r\nimport './wifi-personalization/zone-locator';\r\nimport './wifi-personalization/zone-personalizer';\r\n\r\nimport './chatbot/chatbot';\r\n\r\nimport './modals/modal';\r\n\r\nimport './tab-switcher/tab-switcher';\r\n\r\nimport './utilities/openYoutubeVideo';\r\nimport './utilities/embedded-video';\r\n\r\nif (document.querySelector('[data-carousel-curator]')) {\r\n\timport(/* webpackChunkName: \"carousel-curator-explorer\" */ './carousels/carousel-curator-explorer');\r\n}\r\n\r\nif (document.querySelector('[data-carousel-dual-panel]')) {\r\n\timport(/* webpackChunkName: \"carousel-dual-panel\" */ './carousels/carousel-dual-panel');\r\n}\r\n\r\nif (document.querySelector('[data-carousel-media-objects]')) {\r\n\timport(/* webpackChunkName: \"carousel-media-objects\" */ './carousels/carousel-media-objects');\r\n}\r\n\r\nif (document.querySelector('[data-carousel-hero-campaign-panel]')) {\r\n\timport(/* webpackChunkName: \"carousel-carousel-hero-campaign-panel\" */ './carousels/carousel-hero-campaign-panel');\r\n}\r\n\r\nif (document.querySelector('.tooltip')) {\r\n\timport(/* webpackChunkName: \"tippy\" */ './global/tippy');\r\n}\r\n\r\nif (document.querySelector('[data-points-of-interest-menu]')) {\r\n\timport(/* webpackChunkName: \"points-of-interest-menu\" */ './points-of-interest-menu');\r\n}\r\n\r\nif (document.querySelector('[data-header-search-box-form]')) {\r\n\timport(/* webpackChunkName: \"taxi-and-limo-search-box\" */ './taxi-and-limo/taxi-and-limo-search-box');\r\n}\r\n\r\nif (document.querySelector('[data-carousel-product-explorer]')) {\r\n\timport(/* webpackChunkName: \"carousel-product-explorer\" */ './carousels/carousel-product-explorer');\r\n}\r\n\r\nif (document.querySelector('[data-carousel-store-promotions]')) {\r\n\timport(/* webpackChunkName: \"carousel-store-promotions\" */ './carousels/carousel-store-promotions');\r\n}\r\n\r\n// Forms\r\nif (document.querySelector('[data-book-lounge-form]')) {\r\n\timport(/* webpackChunkName: \"book-lounge-form\" */ './forms/book-lounge');\r\n}\r\n\r\nif (document.querySelector('[data-payment-form]')) {\r\n\timport(/* webpackChunkName: \"payment-form\" */ './forms/payment-form');\r\n}\r\n\r\nif (document.querySelector('[data-book-parking-form]')) {\r\n\timport(/* webpackChunkName: \"book-parking-form\" */ './forms/book-parking');\r\n}\r\n\r\nif (document.querySelector('[data-book-taxi-limo]')) {\r\n\timport(/* webpackChunkName: \"book-taxi-limo\" */ './forms/book-taxi-limo');\r\n}\r\n\r\nif (document.querySelector('[data-check-in-newsletter-form]')) {\r\n\timport(/* webpackChunkName: \"checking-in-newsletter\" */ './forms/checking-in-newsletter');\r\n}\r\n\r\nif (document.querySelector('[data-parking-newsletter-form]')) {\r\n\timport(/* webpackChunkName: \"parking-newsletter-form\" */ './forms/parking-newsletter');\r\n}\r\n\r\nif (document.querySelector('[data-transit-advocacy-newsletter-form]')) {\r\n\timport(/* webpackChunkName: \"transit-advocacy-newsletter\" */ './forms/transit-advocacy-newsletter');\r\n}\r\n\r\nif (document.querySelector('[data-find-my-vehicle-form]')) {\r\n\timport(/* webpackChunkName: \"find-my-vehicle-form\" */ './forms/find-my-vehicle-form');\r\n}\r\n\r\nif (document.querySelector('[data-offers-and-promotions-form]')) {\r\n\timport(/* webpackChunkName: \"offers-and-promotions-form\" */ './forms/offers-and-promotions');\r\n}\r\n\r\n\r\n/* React components */\r\n\r\nif (document.querySelector('[data-react-component=\"GTAA-chatbot\"]')) {\r\n\timport(/* webpackChunkName: \"GTAA-chatbot\" */ './GTAA-chatbot/index');\r\n}\r\n\r\nif (document.querySelector('[data-react-component=\"RealTimeData\"]')) {\r\n\timport(/* webpackChunkName: \"real-time-data\" */ './real-time-data/index');\r\n}\r\n\r\nif (document.querySelector('[data-react-component=\"LiveWaitTimes\"]')) {\r\n\timport(/* webpackChunkName: \"live-wait-times\" */ './live-wait-times/index');\r\n}\r\n\r\nif (document.querySelector('[data-react-component=\"FindFlight\"]')) {\r\n\timport(/* webpackChunkName: \"find-flight\" */ './find-flight/index');\r\n}\r\n\r\nif (document.querySelector('[data-react-component=\"LiveCustomsWaitTime\"]')) {\r\n\timport(/* webpackChunkName: \"live-customs-wait-time\" */ './live-customs-wait-time/index');\r\n}\r\n\r\nif (document.querySelector('[data-react-component=\"LiveCustomsAndSecurityWaitTime\"]')) {\r\n\timport(/* webpackChunkName: \"live-customs-and-security-wait-time\" */ './live-customs-and-security-wait-times/index');\r\n}\r\n\r\nif (document.querySelector('[data-react-component=\"LiveSecurityWaitTime\"]')) {\r\n\timport(/* webpackChunkName: \"live-security-wait-time\" */ './live-security-wait-time/index');\r\n}\r\n\r\nif (document.querySelector('[data-react-component=\"LiveSecurityAndCustomsCard\"]')) {\r\n\timport(/* webpackChunkName: \"live-security-and-customs-card\" */ './live-security-and-customs-card/index');\r\n}\r\n\r\nif (document.querySelector('[data-react-component=\"LiveCheckInCard\"]')) {\r\n\timport(/* webpackChunkName: \"live-check-in-card\" */ './live-check-in-card/index');\r\n}\r\nif (document.querySelector('[data-react-component=\"LiveCustomsCard\"]')) {\r\n\timport(/* webpackChunkName: \"live-customs-card\" */ './live-customs-card/index');\r\n}\r\n\r\nif (document.querySelector('[data-react-component=\"LiveSecurityAndCustomsCard\"]')) {\r\n\timport(/* webpackChunkName: \"live-security-card\" */ './live-security-and-customs-card/index');\r\n}\r\n\r\nif (document.querySelector('[data-react-component=\"LiveSecurityCard\"]')) {\r\n\timport(/* webpackChunkName: \"live-security-card\" */ './live-security-card/index');\r\n}\r\n\r\nif (document.querySelector('[data-react-component=\"LiveBaggageCard\"]')) {\r\n\timport(/* webpackChunkName: \"live-baggage-card\" */ './live-baggage-card/index');\r\n}\r\n\r\nif (document.querySelector('[data-react-component=\"RailScheduleTable\"]')) {\r\n\timport(/* webpackChunkName: \"rail-schedule-table\" */ './rail-schedule-table/index');\r\n}\r\n\r\nif (document.querySelector('[data-react-component=\"FlightListing\"]')) {\r\n\timport(/* webpackChunkName: \"flight-listing\" */ './flight-listing');\r\n}\r\n\r\nif (document.querySelector('[data-react-component=\"FlightSearch\"]')) {\r\n\timport(/* webpackChunkName: \"flight-search\" */ './flight-search');\r\n}\r\n\r\nif (document.querySelector('[data-react-component=\"BusSchedule\"]')) {\r\n\timport(/* webpackChunkName: \"bus-schedule\" */ './bus-schedule');\r\n}\r\n\r\nif (document.querySelector('[data-react-component=\"BusScheduleTable\"]')) {\r\n\timport(/* webpackChunkName: \"bus-schedule-table\" */ './bus-schedule-table');\r\n}\r\n\r\nif (document.querySelector('[data-react-component=\"TransportationCards\"]')) {\r\n\timport(/* webpackChunkName: \"transportation-cards\" */ './transportation-cards');\r\n}\r\n\r\nif (document.querySelector('[data-react-component=\"FlightGuideFilter\"]')) {\r\n\timport(/* webpackChunkName: \"flight-guide-filter\" */ './flight-guide-filter');\r\n}\r\n\r\nif (document.querySelector('[data-react-component=\"PointsOfInterest\"]')) {\r\n\timport(/* webpackChunkName: \"points-of-interest\" */ './points-of-interest/index');\r\n}\r\n\r\nif (document.querySelector('[data-react-component=\"FlightSubscription\"]')) {\r\n\timport(/* webpackChunkName: \"flight-subscription\" */ './flight-subscription/index');\r\n}\r\n\r\nif (document.querySelector('[data-react-component=\"TransportationProvidersList\"]')) {\r\n\timport(/* webpackChunkName: \"transportation-providers-list\" */ './transportation-providers-list/index');\r\n}\r\n\r\nif (document.querySelector('[data-react-component=\"RailScheduleTable\"]')) {\r\n\timport(/* webpackChunkName: \"rail-schedule-table\" */ './rail-schedule-table/index');\r\n}\r\n\r\nif (document.querySelector('[data-react-component=\"Connections\"]')) {\r\n\timport(/* webpackChunkName: \"connections\" */ './connections/index');\r\n}\r\n\r\nif (document.querySelector('[data-react-component=\"BlogListing\"]')) {\r\n\timport(/* webpackChunkName: \"points-of-interest\" */ './blog-listing/index');\r\n}\r\n\r\nif (document.querySelector('[data-react-component=\"giftcardcartmultiselect\"]')) {\r\n\timport(/* webpackChunkName: \"giftcard-purchase\" */ './giftcard-purchase/index');\r\n}\r\n\r\nif (document.querySelector('[data-react-component=\"giftcardcartmultiselectv2\"]')) {\r\n\timport(/* webpackChunkName: \"giftcard-purchase\" */ './giftcard-purchase-v2/index');\r\n}\r\n\r\nif (document.querySelector(`[data-react-component=\"WaitTimeDashboard\"i]`)) {\r\n\timport(/* webpackChunkName: \"wait-time-dashboard\" */ './wait-time-dashboard/index');\r\n}\r\n","import forEach from '../utilities/forEach';\r\n\r\nconst elements = document.querySelectorAll('.current-year');\r\nconst currentYear = new Date().getFullYear();\r\n\r\nforEach(elements, (element) => {\r\n\telement.innerHTML = currentYear.toString();\r\n});\r\n","import getControl from '../utilities/getAssociatedControl';\nimport forEach from '../utilities/forEach';\nimport setTabIndexes from '../utilities/setTabIndexes';\r\n\r\nconst SELECTOR = '[data-mobile-navigation-button]';\r\n\nfunction main() {\n\tconst buttons = document.querySelectorAll(SELECTOR);\n\n\tforEach(buttons, (button) => button.addEventListener('click', onMobileNavigationButtonClick));\n}\n\nfunction onMobileNavigationButtonClick(e: MouseEvent) {\r\n\tconst buttons = document.querySelectorAll(SELECTOR);\n\tconst button = e.currentTarget;\n\n\tif (button instanceof HTMLElement) {\n\t\tconst ariaExpanded = button.getAttribute('aria-expanded') === 'true' ? 'false' : 'true';\r\n\r\n\t\tforEach(buttons, _button => {\r\n\t\t\t_button.setAttribute('aria-expanded', ariaExpanded);\n\t\t})\n\n\t\tconst control = getControl(button);\r\n\t\tconst modals = document.querySelectorAll('.overlay-modal');\n\n\t\tif (control instanceof HTMLElement) {\n\t\t\tcontrol.classList.toggle('mobile-navigation--expanded');\r\n\n\t\t\tconst ariaHidden = control.getAttribute('aria-hidden') === 'true' ? 'false' : 'true';\r\n\n\t\t\tcontrol.setAttribute('aria-hidden', ariaHidden);\r\n\r\n\t\t\tconst mainNavigation = document.querySelector('.main-navigation');\r\n\r\n\t\t\tif (mainNavigation) {\r\n\t\t\t\tsetTabIndexes(mainNavigation, (control.getAttribute('aria-hidden') === 'true'));\r\n\t\t\t}\r\n\r\n\t\t\tforEach(modals, modal => {\r\n\t\t\t\tsetTabIndexes(modal, (control.getAttribute('aria-hidden') === 'true'));\r\n\t\t\t})\n\t\t}\n\n\t\tconst html = document.querySelector('html');\n\n\t\tif (html) {\n\t\t\thtml.classList.toggle('html--enable-mobile-nav');\n\t\t}\n\t}\n}\n\nmain();\n","import forEach from '../utilities/forEach';\r\n\r\nexport default function setTabIndexes(focusArea: Node, tabbable = true, selector = 'a, button, input, select, textfield, [tabindex]') {\r\n\tif (!(focusArea instanceof HTMLElement)) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tconst focusableElements = focusArea.querySelectorAll(selector);\r\n\r\n\tforEach(focusableElements, (focusableElement) => {\r\n\t\tif (tabbable) {\r\n\t\t\t// Make the element foncusable.\r\n\r\n\t\t\t// If the element had a tabindex before, restore the old tabindex.\r\n\t\t\tif (focusableElement.hasAttribute('data-tabindex')) {\r\n\t\t\t\tfocusableElement.setAttribute('tabindex', focusableElement.getAttribute('data-tabindex')!);\r\n\r\n\t\t\t\t// Remove the reference to the old tab index.\r\n\t\t\t\tfocusableElement.removeAttribute('data-tabindex');\r\n\t\t\t} else {\r\n\t\t\t\tfocusableElement.setAttribute('tabindex', '0');\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t// Make element not focusable.\r\n\r\n\t\t\t// If the element had a tabindex before, save the old tabindex, unless it previously had a old taxindex.\r\n\t\t\tif (focusableElement.hasAttribute('tabindex') && !focusableElement.hasAttribute('data-tabindex')) {\r\n\t\t\t\tfocusableElement.setAttribute('data-tabindex', focusableElement.getAttribute('tabindex')!);\r\n\t\t\t} else {\r\n\t\t\t\t// If there was no tabindex, assume zero.\r\n\t\t\t\tfocusableElement.setAttribute('data-tabindex', '0');\r\n\t\t\t}\r\n\r\n\t\t\t// Set the element as non-focusable.\r\n\t\t\tfocusableElement.setAttribute('tabindex', '-1');\r\n\t\t}\r\n\t});\r\n}\r\n","function main() {\r\n\tconst coveoSearchInterface = document.querySelector('.CoveoSearchInterface');\r\n\r\n\tif (!coveoSearchInterface) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tconst skipLink = document.querySelector('a.skip-link');\r\n\r\n\tif (!skipLink) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tskipLink.addEventListener('click', onSkipLinkClick);\r\n}\r\n\r\nfunction onSkipLinkClick(e: MouseEvent) {\r\n\te.preventDefault();\r\n\r\n\tconst link = e.currentTarget;\r\n\r\n\tif (!(link instanceof HTMLAnchorElement)) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tconst hash = link.hash.substring(1);\r\n\tconst id = document.getElementById(hash);\r\n\r\n\tif (!id) {\r\n\t\treturn;\r\n\t}\r\n\r\n\ttry {\r\n\t\tid.scrollIntoView();\r\n\r\n\t\tid.setAttribute('tabindex', '0');\r\n\t\tid.focus();\r\n\t\tid.removeAttribute('tabindex');\r\n\t} catch (e) {\r\n\t\tconsole.log('Error trying to skip to main content.');\r\n\t}\r\n}\r\n\r\nmain();\r\n","import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\n\nimport PPCOWaitTimeComponent, { IPPCOWaitTimesComponentProps } from './components/waittime-table';\nimport forEach from '../utilities/forEach';\nimport getPropsFromAttributes from '../utilities/getPropsFromAttributes';\n\nconst SELECTOR = '[data-react-component=\"WaittimeTable\"]';\n\nfunction main() {\n\tconst elements = document.querySelectorAll(SELECTOR);\n\n\tforEach(elements, (element) => {\n\t\tconst props = getPropsFromAttributes(element) as IPPCOWaitTimesComponentProps;\n\t\tReactDOM.render(, element);\n\t});\n}\n\nmain();\n","import * as React from 'react';\r\nimport { getLanguage } from '../../utilities/language';\r\nimport { IPPCOWaitTime, IPPCOWaitTimeServiceResult, ITerminal } from '../../common/interfaces/waittime';\r\nimport { getPPCOWaitTimes } from '../../common/services/get-waittime-service';\r\nimport LoadingComponent from '../../common/presentation/loading-component';\r\nimport { formatTime } from '../../utilities/formatTime';\r\n\r\nexport interface IPPCOWaitTimesComponentProps {\r\n apiUrl: string;\r\n updateInterval: number;\r\n errorMessage?: string;\r\n branchLabel: string;\r\n waittimeLabel: string;\r\n terminal: Array;\r\n}\r\n\r\ninterface IPPCOWaitTimesTableComponentState {\r\n waitTimes: Array;\r\n isApiAvailable: boolean;\r\n isLoading: boolean;\r\n isLoaded: boolean;\r\n errorMessage?: string;\r\n}\r\n\r\nexport default class PPCOWaitTimeComponent extends React.Component {\r\n constructor(props: IPPCOWaitTimesComponentProps) {\r\n super(props);\r\n\r\n this.state = {\r\n waitTimes: [],\r\n isApiAvailable: true,\r\n isLoading: false,\r\n isLoaded: false\r\n };\r\n\r\n setInterval(async () => {\r\n await this.loadSchedules();\r\n }, 1000 * this.props.updateInterval);\r\n }\r\n\r\n public async componentDidMount() {\r\n await this.loadSchedules();\r\n }\r\n\r\n public shouldComponentUpdate(nextProps: IPPCOWaitTimesComponentProps, nextState: IPPCOWaitTimesTableComponentState) {\r\n return (\r\n this.state.isLoaded !== nextState.isLoaded ||\r\n this.state.isLoading !== nextState.isLoading ||\r\n this.state.waitTimes !== nextState.waitTimes ||\r\n this.state.isApiAvailable !== nextState.isApiAvailable \r\n );\r\n }\r\n\r\n public render() {\r\n return (\r\n
\r\n {this.state.isApiAvailable ? (\r\n \r\n
\r\n
\r\n {this.state.waitTimes && this.state.waitTimes.length > 0 ? (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.state.waitTimes.map((waittime, i) => (\r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n
{this.props.branchLabel}{this.props.waittimeLabel}
{this.getTerminalName(waittime.nameEn)}{this.roundToNearest(Math.ceil(waittime.waitTimeInSecond / 60),5)}
\r\n ) : (
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n {this.props.errorMessage}\r\n \r\n
\r\n
\r\n )}\r\n
\r\n
\r\n
\r\n ) : (\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n {this.props.errorMessage}\r\n \r\n
\r\n
\r\n )}\r\n
\r\n );\r\n }\r\n\r\n private roundToNearest(numToRound, numToRoundTo) {\r\n var mins = Math.ceil(numToRound / numToRoundTo) * numToRoundTo;\r\n if (mins > numToRoundTo) {\r\n return `${(mins - numToRoundTo) + 1} - ${mins} mins`;\r\n }\r\n else {\r\n return `0 - 5 mins`;\r\n }\r\n }\r\n private getTerminalName(airportterminal: string) {\r\n var phrase = this.props.terminal.filter((t) => t.key === airportterminal);\r\n if (typeof phrase != undefined && phrase && phrase.length > 0) {\r\n return phrase[0].phrase;\r\n }\r\n else {\r\n return airportterminal;\r\n }\r\n }\r\n private async loadSchedules() {\r\n this.setState({ isLoading: true });\r\n try {\r\n const result = (await getPPCOWaitTimes(this.props.apiUrl)) as IPPCOWaitTime[];\r\n\r\n if (result) {\r\n if (result.length==0) {\r\n this.setState({\r\n isLoading: false,\r\n isLoaded: true,\r\n isApiAvailable: true,\r\n errorMessage: this.props.errorMessage,\r\n waitTimes: result\r\n });\r\n } else {\r\n this.setState({\r\n isLoading: false,\r\n isLoaded: true,\r\n isApiAvailable: true,\r\n waitTimes: result\r\n });\r\n }\r\n } else {\r\n this.setState({\r\n isLoading: false,\r\n isApiAvailable: false\r\n });\r\n }\r\n } catch (e) {\r\n this.setState({\r\n isLoading: false,\r\n isApiAvailable: false\r\n });\r\n }\r\n }\r\n}\r\n","import { get } from '../../utilities/fetch';\r\nimport { IPPCOWaitTime, IPPCOWaitTimeServiceResult } from '../interfaces/waittime';\r\n\r\n\r\nexport async function getPPCOWaitTimes(ApiUrl: string) {\r\n\r\n\tif (ApiUrl !== '') {\r\n\t\treturn await getData(ApiUrl);\r\n\t}\r\n\r\n\treturn [];\r\n}\r\n\r\nasync function getData(url: string): Promise {\r\n\tconst response = await get(url);\r\n\tconst jsonResponse = await response.json();\r\n\treturn jsonResponse.checkpoints as IPPCOWaitTime[];\r\n}\r\n","import { on } from 'delegated-events';\r\nimport { createFocusTrap, FocusTrap } from 'focus-trap';\r\n\r\nimport { initCarousel } from '../carousels/carousel';\r\nimport dataLayerPush from '../utilities/dataLayerPush';\r\nimport getAssociatedControl from '../utilities/getAssociatedControl';\r\nimport getDictionaryEntry from '../utilities/getDictionaryEntry';\r\n\r\nconst CAROUSEL_OPTIONS = {\r\n\tperPage: {\r\n\t\t1280: 4,\r\n\t\t768: 3,\r\n\t\t480: 2,\r\n\t\t1: 1\r\n\t}\r\n};\r\n\r\nlet initializedCarousel = false;\r\nlet trap: FocusTrap;\r\n\r\nfunction main() {\r\n\tgenerateSkipOffersLink();\r\n\r\n\tdocument.addEventListener('click', closeDrawerOnOutsideClick);\r\n\r\n\ton('click', '[data-drawer-button]', onDrawerButtonClick);\r\n\ton('click', '[data-drawer-close-button]', () => closeDrawer());\r\n}\r\n\r\n/**\r\n * Generate a new skip link.\r\n */\r\nfunction generateSkipOffersLink() {\r\n\tconst text = getDictionaryEntry('SkipToOffersLink', 'Skip to offers');\r\n\r\n\tconst skipLink = document.querySelector('.skip-link');\r\n\r\n\tif (!skipLink) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tconst anchor = document.createElement('a');\r\n\tanchor.classList.add('skip-link');\r\n\tanchor.href = '#offers';\r\n\tanchor.innerHTML = text;\r\n\r\n\tif (skipLink.parentElement) {\r\n\t\tskipLink.parentElement.insertBefore(anchor, skipLink);\r\n\t}\r\n}\r\n\r\nfunction closeDrawerOnOutsideClick(e: MouseEvent) {\r\n\tif (e.target && (e.target as Element).closest('.drawer')) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tcloseDrawer();\r\n}\r\n\r\nfunction closeDrawer() {\r\n\tconst drawerContent = document.querySelector('.drawer__content');\r\n\r\n\tif (!drawerContent) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tconst drawer = drawerContent.closest('.drawer');\r\n\r\n\tif (!drawer) {\r\n\t\treturn;\r\n\t}\r\n\r\n\r\n\tconst button = document.querySelector('[data-drawer-button]');\r\n\r\n\tif (button?.getAttribute('aria-expanded') === 'true') {\r\n\t\tbutton.setAttribute('aria-expanded', 'false');\r\n\r\n\t\tdataLayerPush({\r\n\t\t\tevent: 'drawerDismiss'\r\n\t\t});\r\n\t}\r\n\r\n\t// Hide the drawer\r\n\tdrawerContent.setAttribute('aria-hidden', 'true');\r\n\tdrawerContent.setAttribute('hidden', '');\r\n\tdrawerContent.setAttribute('tabindex', '-1');\r\n\tdrawer.classList.add('drawer--hidden');\r\n\r\n\t// Hide the overlay\r\n\tdocument.body.classList.remove('overlay');\r\n\r\n\t// Hide close button\r\n\tconst closeButton = document.querySelector('[data-drawer-close-button]');\r\n\r\n\tif (closeButton) {\r\n\t\tcloseButton.setAttribute('aria-hidden', 'true');\r\n\t}\r\n\r\n\t// Deactivate focus trap if it currently exists\r\n\tif (trap) {\r\n\t\ttrap.deactivate();\r\n\t}\r\n}\r\n\r\nfunction onDrawerButtonClick(e: MouseEvent) {\r\n\te.stopPropagation();\r\n\r\n\tif (e.currentTarget) {\r\n\t\ttoggleDrawerVisibility(e.currentTarget as HTMLButtonElement);\r\n\t}\r\n}\r\n\r\nfunction toggleDrawerVisibility(button: HTMLButtonElement) {\r\n\tconst isExpanded = button.getAttribute('aria-expanded') === 'true';\r\n\tconst drawerContent = getAssociatedControl(button);\r\n\r\n\tif (!drawerContent) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tconst drawer = drawerContent.closest('.drawer');\r\n\r\n\tif (!drawer) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tif (isExpanded) {\r\n\t\tdataLayerPush({\r\n\t\t\tevent: 'drawerDismiss'\r\n\t\t});\r\n\t} else {\r\n\t\tdataLayerPush({\r\n\t\t\tevent: 'drawerReveal'\r\n\t\t});\r\n\t}\r\n\r\n\tbutton.setAttribute('aria-expanded', isExpanded ? 'false' : 'true');\r\n\r\n\t// Show the drawer\r\n\tdrawerContent.setAttribute('aria-hidden', isExpanded ? 'true' : 'false');\r\n\tif (isExpanded) { drawerContent.setAttribute('hidden', ''); } else { drawerContent.removeAttribute('hidden'); }\r\n\tdrawerContent.setAttribute('tabindex', isExpanded ? '-1':'0');\r\n\t\r\n\tdrawer.classList.toggle('drawer--hidden');\r\n\r\n\t// Show the overlay\r\n\tdocument.body.classList.toggle('overlay');\r\n\r\n\t// Toggle close button\r\n\tconst closeButton = document.querySelector('[data-drawer-close-button]');\r\n\r\n\tif (closeButton) {\r\n\t\tcloseButton.setAttribute('aria-hidden', isExpanded ? 'true' : 'false');\r\n\t}\r\n\r\n\tif (!trap) {\r\n\t\ttrap = createFocusTrap(drawer as HTMLElement, { allowOutsideClick: true });\r\n\t}\r\n\r\n\tif (isExpanded) {\r\n\t\ttrap.deactivate()\r\n\t} else {\r\n\t\ttrap.activate()\r\n\t}\r\n\r\n\tconst carouselContainer = drawerContent.querySelector('[data-carousel-curator]');\r\n\r\n\tif (!carouselContainer) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tif (!initializedCarousel) {\r\n\t\tinitCarousel(carouselContainer, CAROUSEL_OPTIONS);\r\n\t\tinitializedCarousel = true;\r\n\t}\r\n}\r\n\r\nmain();\r\n","import { getLocation } from './get-location';\r\nimport { setWaitPeriod } from './set-wait-period';\r\nimport { ZONE_COOKIE_NAME } from './constants';\r\n\r\nexport function main() {\r\n\tconst locationSearcher = document.querySelector('.zone-locator[data-location-endpoint][data-return-url]');\r\n\tconst checkLocationInterval = parseInt(document.querySelector('.zone-locator[data-check-location-interval]')?.getAttribute('data-check-location-interval') ?? '60');\r\n\tconst locationEndpointTimeout = parseInt(document.querySelector('.zone-locator[data-location-endpoint-timeout]')?.getAttribute('data-location-endpoint-timeout') ?? '10');\r\n\r\n\tif (!locationSearcher) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tconst endpoint = locationSearcher.getAttribute('data-location-endpoint');\r\n\r\n\tif (!endpoint) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tconst returnUrl = locationSearcher.getAttribute('data-return-url');\r\n\r\n\tif (!returnUrl) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tconst enableLocationCheck = locationSearcher.getAttribute('data-enable-location-check') === 'true';\r\n\r\n\tif (enableLocationCheck) {\r\n\t\tcheckLocations(endpoint, locationEndpointTimeout, returnUrl);\r\n\t\tsetWaitPeriod(checkLocationInterval);\r\n\t} else {\r\n\t\t// If enableLocationCheck is false, just go to the redirect page immediately.\r\n\t\twindow.location.href = returnUrl;\r\n\t}\r\n}\r\n\r\n/**\r\n * Checks what zone the current user is in. Redirects to the page requiring Wi-Fi personalization.\r\n */\r\nasync function checkLocations(endpoint: string, timeout: number, returnUrl: string) {\r\n\tconst location = await getLocation(endpoint, timeout);\r\n\r\n\t// Ensure cookie is path independent (it has the same value for /en and /fr)\r\n\tdocument.cookie = `${ZONE_COOKIE_NAME}=${location}; path=/`;\r\n\r\n\tif (window.location.hostname.includes('local')) {\r\n\t\tsetTimeout(() => {\r\n\t\t\twindow.location.href = returnUrl;\r\n\t\t}, 10000);\r\n\t} else {\r\n\t\twindow.location.href = returnUrl;\r\n\t}\r\n}\r\n\r\nmain();\r\n","import getDictionaryEntry from '../utilities/getDictionaryEntry';\r\nimport { getCookie } from './get-cookie';\r\nimport { getLocation } from './get-location';\r\nimport { setWaitPeriod } from './set-wait-period';\r\nimport { SESSION_STORAGE_WAIT_UNTIL_KEY, ZONE_COOKIE_NAME } from './constants';\r\n\r\nconst NOT_FOUND_KEY = 'NotFound';\r\nconst SESSION_STORAGE_NOT_NOW_KEY = 'Pearson.Wifi.NotNow';\r\n\r\nlet newLocation: string;\r\nlet checkLocationInterval: number;\r\nlet updatedPauseInterval: number;\r\nlet notNowPauseInterval: number;\r\nlet locationEndpointTimeout: number;\r\n\r\nexport function main() {\r\n\tif (!shouldRun()) {\r\n\t\treturn;\r\n\t}\r\n\r\n\t// Get configuration values\r\n\tcheckLocationInterval = parseInt(document.querySelector('.zone-personalizer')?.getAttribute('data-check-location-interval') ?? '60');\r\n\tupdatedPauseInterval = parseInt(document.querySelector('.zone-personalizer')?.getAttribute('data-updated-pause-interval') ?? '120');\r\n\tnotNowPauseInterval = parseInt(document.querySelector('.zone-personalizer')?.getAttribute('data-not-now-pause-interval') ?? '120');\r\n\tlocationEndpointTimeout = parseInt(document.querySelector('.zone-personalizer')?.getAttribute('data-location-endpoint-timeout') ?? '10');\r\n\r\n\t// Attach event listeners\r\n\tdocument.querySelector('#zone-personalizer-dropdown')?.addEventListener('change', onLocationSelect);\r\n\tdocument.querySelector('[data-zone-personalizer-update-select-button]')?.addEventListener('click', onUpdateSelectButtonClick);\r\n\tdocument.querySelector('[data-zone-personalizer-update-location-button]')?.addEventListener('click', onUpdateLocationClick);\r\n\tdocument.querySelector('[data-zone-personalizer-update-not-now-button]')?.addEventListener('click', onNotNowClick);\r\n\r\n\t// Check location\r\n\tconst locationBar = document.querySelector('.zone-personalizer')!;\r\n\r\n\tconst endpoint = locationBar.getAttribute('data-location-endpoint');\r\n\tconst enableLocationCheck = locationBar.getAttribute('data-enable-location-check') === 'true';\r\n\r\n\tif (!endpoint || !enableLocationCheck) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tsetWaitPeriod(checkLocationInterval);\r\n\r\n\t// Check for locations immediately and then re-check every five seconds.\r\n\tcheckLocations(endpoint);\r\n\tsetInterval(() => checkLocations(endpoint), 5000);\r\n}\r\n\r\n/**\r\n * Check to see if the location bar is even on the page before running anything.\r\n * @returns\r\n */\r\nfunction shouldRun() {\r\n\treturn !!document.querySelector('.zone-personalizer');\r\n}\r\n\r\n/**\r\n * When the user selects from the dropdown, set their location.\r\n */\r\nfunction onLocationSelect(e: Event) {\r\n\tconst select = e.currentTarget;\r\n\r\n\tif (!(select instanceof HTMLSelectElement)) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tsetLocation(select.value);\r\n}\r\n\r\n/**\r\n * When the select location button is clicked, simulate a click on the dropdown\r\n * to force it to open. Attempting to use the `Choice` method does not work\r\n * correctly.\r\n */\r\nfunction onUpdateSelectButtonClick() {\r\n\tdocument.querySelector('#zone-personalizer-dropdown')?.click();\r\n}\r\n\r\n/**\r\n * When a user clicks on the update location button, set their location to be\r\n * the last retrieved location.\r\n */\r\nfunction onUpdateLocationClick() {\r\n\tif (!newLocation) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tsetLocation(newLocation);\r\n}\r\n\r\n/**\r\n * When a user clicks not now, hide the update area for now.\r\n */\r\nfunction onNotNowClick() {\r\n\tconst notNowPresses = parseInt(sessionStorage.getItem(SESSION_STORAGE_NOT_NOW_KEY) ?? '0');\r\n\r\n\t// Double the wait time for each previous not now click.\r\n\tconst notNowPauseIntervalSeconds = notNowPauseInterval * Math.pow(2, notNowPresses);\r\n\r\n\tsetWaitPeriod(notNowPauseIntervalSeconds);\r\n\r\n\tsessionStorage.setItem(SESSION_STORAGE_NOT_NOW_KEY, (notNowPresses + 1).toString());\r\n\r\n\tdocument.querySelector('.zone-personalizer-update')!.hidden = true;\r\n}\r\n\r\n/**\r\n * Checks what zone the current user is in. Updates the text within the update\r\n * component.\r\n * @returns The new zone location name.\r\n */\r\nasync function checkLocations(endpoint: string) {\r\n\tif (isInWaitPeriod()) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tconsole.info(`[zone-personalizer] Checking if user has moved to a different zone within the airport.`);\r\n\r\n\tsetWaitPeriod(checkLocationInterval);\r\n\r\n\tconst currentLocation = getCookie(ZONE_COOKIE_NAME);\r\n\tnewLocation = await getLocation(endpoint, locationEndpointTimeout);\r\n\r\n\tconst element = document.querySelector('[data-zone-personalizer-updated-location]');\r\n\r\n\tif (!(element instanceof HTMLElement)) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tif (newLocation === NOT_FOUND_KEY) {\r\n\t\telement.hidden = true;\r\n\r\n\t\treturn;\r\n\t}\r\n\r\n\telement.hidden = currentLocation === newLocation;\r\n\r\n\tsetLocationLabel(newLocation);\r\n}\r\n\r\n/**\r\n * Set the location cookie and refresh the page.\r\n * @param newLocationKey\r\n */\r\nfunction setLocation(newLocationKey: string) {\r\n\tsetWaitPeriod(updatedPauseInterval);\r\n\r\n\t// Reset not now presses to zero\r\n\tsessionStorage.setItem(SESSION_STORAGE_NOT_NOW_KEY, '0');\r\n\r\n\t// Ensure cookie is path independent (it has the same value for /en and /fr)\r\n\tdocument.cookie = `${ZONE_COOKIE_NAME}=${newLocationKey}; path=/`;\r\n\r\n\twindow.location.reload();\r\n}\r\n\r\n/**\r\n * Update the update content area with the new location name.\r\n * @param {string} newLocationKey\r\n */\r\nfunction setLocationLabel(newLocationKey: string) {\r\n\tconst newLocationName = getDictionaryEntry(`Zone.${newLocationKey}`, newLocationKey);\r\n\tconst newLocationLabel = document.querySelector('[data-zone-personalizer-updated-location] .zone-personalizer-update__label');\r\n\r\n\tif (!newLocationLabel) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tnewLocationLabel.innerHTML = newLocationLabel.innerHTML.replace(/.+<\\/b>/g, `${newLocationName}`);\r\n}\r\n\r\n/**\r\n * Return whether we should be waiting and not checking a location.\r\n */\r\nfunction isInWaitPeriod() {\r\n\tconst time = sessionStorage.getItem(SESSION_STORAGE_WAIT_UNTIL_KEY);\r\n\r\n\tif (!time) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\treturn new Date() < new Date(parseInt(time, 10));\r\n}\r\n\r\nmain();\r\n","export function getCookie(name) {\r\n\tconst keyValue = document.cookie.split('; ').find((c) => c.includes(`${name}=`));\r\n\r\n\tif (!keyValue) {\r\n\t\treturn undefined;\r\n\t}\r\n\r\n\treturn keyValue.split('=')[1];\r\n}\r\n","import loadScript from '../utilities/loadScript';\r\nimport getAssociatedControl from '../utilities/getAssociatedControl';\r\nimport dataLayerPush from '../utilities/dataLayerPush';\r\nimport { onResize } from '../utilities/debounce';\r\n\r\nconst IS_ACTIVE_SESSION_STORAGE_KEY = 'ChatbotIsChatActive';\r\nconst TOKEN_SESSION_STORAGE_KEY = 'ChatbotToken';\r\n\r\ninterface ITokenResult {\r\n\tconversationId: string;\r\n\texpires_in: number;\r\n\ttoken: string;\r\n}\r\n\r\nlet hasLoadedScript = false;\r\n\r\n\r\nfunction main() {\r\n\taddEventListener();\r\n\r\n\tonResize(onChatWindowResize);\r\n}\r\n\r\n\r\n/**\r\n * Get a token for the web chat. If no token exists, get a new token.\r\n * Otherwise, save the token to session storage.\r\n */\r\nasync function getToken() {\r\n\tlet token: string | null = null;\r\n\r\n\tconst chatbot = document.querySelector('.chatbot[data-token-service]');\r\n\r\n\tif (!chatbot) {\r\n\t\treturn;\r\n\t}\r\n\r\n\ttry {\r\n\t\ttoken = sessionStorage.getItem(TOKEN_SESSION_STORAGE_KEY);\r\n\t} catch (e) { }\r\n\r\n\tif (token) {\r\n\t\t// Try to refresh the token.\r\n\t\tconst refreshTokenService = chatbot.getAttribute('data-refresh-token-service');\r\n\r\n\t\tif (refreshTokenService) {\r\n\t\t\ttry {\r\n\t\t\t\tconst response = await fetch(refreshTokenService, { method: 'POST', headers: { Authorization: `Bearer ${token}` } });\r\n\t\t\t\tconst result = await response.json() as ITokenResult;\r\n\t\t\t\ttoken = result.token;\r\n\r\n\t\t\t\tsetToken(token);\r\n\r\n\t\t\t\treturn token;\r\n\t\t\t} catch (e) {\r\n\t\t\t\tconsole.log('Error trying to refresh chat bot direct line token.');\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tconst tokenService = chatbot.getAttribute('data-token-service');\r\n\r\n\tif (!tokenService) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tconst response = await fetch(tokenService, { method: 'POST' });\r\n\tconst result = await response.json() as ITokenResult;\r\n\ttoken = result.token;\r\n\r\n\tsetToken(token);\r\n\r\n\treturn token;\r\n}\r\n\r\n\r\n/**\r\n * Save the token to session storage.\r\n * @param token\r\n */\r\nfunction setToken(token: string) {\r\n\ttry {\r\n\t\tsessionStorage.setItem(TOKEN_SESSION_STORAGE_KEY, token);\r\n\t} catch (e) {\r\n\t\tconsole.log('Cannot save the chatbot token to session storage.');\r\n\t}\r\n}\r\n\r\n\r\n/**\r\n * Check if the chat window was previously activated.\r\n */\r\nfunction getIsChatActive() {\r\n\ttry {\r\n\t\treturn sessionStorage.getItem(IS_ACTIVE_SESSION_STORAGE_KEY) === 'true' ? true : false;\r\n\t} catch (e) {\r\n\t\treturn false;\r\n\t}\r\n}\r\n\r\n\r\n/**\r\n * Save the current state of the chat window.\r\n * @param value\r\n */\r\nfunction setIsChatActive(value: boolean) {\r\n\ttry {\r\n\t\tsessionStorage.setItem(IS_ACTIVE_SESSION_STORAGE_KEY, value ? 'true' : 'false');\r\n\t} catch (e) {\r\n\t\tconsole.log('Cannot save the chatbot active state to session storage.');\r\n\t}\r\n}\r\n\r\n\r\n/**\r\n * Add a click event listener to the button toggle.\r\n */\r\nfunction addEventListener() {\r\n\tconst button = document.querySelector('.chatbot__expand-button');\r\n\r\n\tif (!button) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tbutton.addEventListener('click', toggleChatbot);\r\n\r\n\tif (getIsChatActive()) {\r\n\t\tbutton.click();\r\n\t}\r\n}\r\n\r\n\r\nfunction onChatWindowResize() {\r\n\tif (getIsChatActive() && isMobile()) {\r\n\t\tdocument.body.classList.add('html--enable-mobile-nav');\r\n\t}\r\n\r\n\tif (getIsChatActive() && !isMobile()) {\r\n\t\tdocument.body.classList.remove('html--enable-mobile-nav');\r\n\t}\r\n}\r\n\r\n\r\n/**\r\n * Toggle the web chat window.\r\n * @param e\r\n */\r\nasync function toggleChatbot(e: Event) {\r\n\tconst button = e.target;\r\n\r\n\tif (!(button instanceof HTMLElement)) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tconst container = getAssociatedControl(button);\r\n\tconst chatboxElement = button.closest('.chatbot');\r\n\r\n\tif (!container || !chatboxElement) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tconst toBeHidden = button.getAttribute('aria-expanded') === 'true';\r\n\r\n\tcontainer.setAttribute('aria-hidden', toBeHidden ? 'true' : 'false');\r\n\tbutton.setAttribute('aria-expanded', toBeHidden ? 'false' : 'true');\r\n\tsetIsChatActive(!toBeHidden);\r\n\r\n\tif (toBeHidden) {\r\n\t\tdataLayerPush({\r\n\t\t\tevent: 'Webchat button toggle close'\r\n\t\t});\r\n\r\n\t\tbutton.classList.remove('chatbot__expand-button--expanded');\r\n\t\tchatboxElement.classList.remove('chatbot--active');\r\n\r\n\t\tdocument.body.classList.remove('html--enable-mobile-nav');\r\n\t} else {\r\n\t\tdataLayerPush({\r\n\t\t\tevent: 'Webchat button toggle open'\r\n\t\t});\r\n\r\n\t\tbutton.classList.add('chatbot__expand-button--expanded');\r\n\t\tchatboxElement.classList.add('chatbot--active');\r\n\r\n\t\tif (isMobile()) {\r\n\t\t\tdocument.body.classList.add('html--enable-mobile-nav');\r\n\t\t}\r\n\r\n\t\tif (!hasLoadedScript) {\r\n\t\t\tawait initializeChatbot();\r\n\t\t}\r\n\r\n\t\tdocument.querySelector('#webchat > *')!.focus();\r\n\t}\r\n}\r\n\r\n\r\n/**\r\n * Initialize the chatbot.\r\n */\r\nasync function initializeChatbot() {\r\n\tconst webchatContainer = document.getElementById('webchat');\r\n\r\n\tif (!webchatContainer) {\r\n\t\treturn;\r\n\t}\r\n\r\n\ttry {\r\n\t\tawait loadWebchatJs();\r\n\r\n\t\tconst WebChat = (window as any).WebChat;\r\n\t\tconst token = await getToken();\r\n\t\tconst directLine = WebChat.createDirectLine({ token: token });\r\n\r\n\t\tWebChat.renderWebChat({\r\n\t\t\tdirectLine,\r\n\t\t\tlocale: getLanguage(),\r\n\t\t\tstyleOptions: getStyleOptions(),\r\n\t\t\tuserID: window.Tokens.ContactId\r\n\t\t}, webchatContainer);\r\n\t} catch (err) {\r\n\t\tconsole.log(err);\r\n\t}\r\n}\r\n\r\n\r\n/**\r\n * Load the WebChat.js script.\r\n */\r\nasync function loadWebchatJs() {\r\n\tif (hasLoadedScript) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tconst chatbot = document.querySelector('.chatbot[data-webchat-js]');\r\n\r\n\tif (!chatbot) {\r\n\t\tconsole.log('Cannot find `.chatbot` element to get WebChat.js source URL.');\r\n\r\n\t\treturn;\r\n\t}\r\n\r\n\tconst webchatJavaScriptSource = chatbot.getAttribute('data-webchat-js');\r\n\r\n\tif (!webchatJavaScriptSource) {\r\n\t\tconsole.log('`.chatbot` element does not have `[data-webchat-js]` attribute for WebChat.js source URL.');\r\n\r\n\t\treturn;\r\n\t}\r\n\r\n\thasLoadedScript = true;\r\n\r\n\tawait loadScript(webchatJavaScriptSource);\r\n}\r\n\r\n\r\n/**\r\n * Create the style options for the WebChat\r\n * @see https://github.com/microsoft/BotFramework-WebChat/blob/master/packages/component/src/Styles/defaultStyleOptions.js\r\n */\r\nfunction getStyleOptions() {\r\n\treturn {\r\n\t\tbackgroundColor: '#f4f4f4',\r\n\t\taccent: '#002663',\r\n\r\n\t\tfontSizeSmall: '12px',\r\n\t\tprimaryFont: 'Source Sans Pro',\r\n\r\n\t\tavatarSize: 0,\r\n\r\n\t\tbubbleBackground: '#fff',\r\n\t\tbubbleBorder: '0',\r\n\t\tbubbleBorderRadius: 4,\r\n\t\tbubbleTextColor: '#111',\r\n\r\n\t\tbubbleFromUserBackground: '#002663',\r\n\t\tbubbleFromUserBorder: '0',\r\n\t\tbubbleFromUserBorderRadius: 4,\r\n\t\tbubbleFromUserTextColor: '#fff',\r\n\r\n\t\trootHeight: '100%',\r\n\r\n\t\thideSendBox: false,\r\n\t\thideUploadButton: true,\r\n\t\tsendBoxBackground: '#fff',\r\n\t\tsendBoxButtonColor: '#002663',\r\n\t\tsendBoxButtonColorOnDisabled: '#CCC',\r\n\t\tsendBoxButtonColorOnFocus: '#f3af32',\r\n\t\tsendBoxButtonColorOnHover: '#f3af32',\r\n\t\tsendBoxHeight: 40,\r\n\t\tsendBoxMaxHeight: 200,\r\n\t\tsendBoxTextColor: '#111',\r\n\t\tsendBoxBorderBottom: '',\r\n\t\tsendBoxBorderLeft: '',\r\n\t\tsendBoxBorderRight: '',\r\n\t\tsendBoxBorderTop: 'solid 1px #DDDDDD',\r\n\t\tsendBoxPlaceholderColor: '#6A6A6A',\r\n\t\tsendBoxTextWrap: false,\r\n\r\n\t\tsuggestedActionBackground: '#fff',\r\n\t\tsuggestedActionBorder: '1px solid #002663',\r\n\t\tsuggestedActionBorderRadius: '40px',\r\n\t\tsuggestedActionTextColor: '#002663',\r\n\t\tsuggestedActionHeight: 32,\r\n\r\n\t\ttimestampColor: '#111',\r\n\r\n\t\tshowSpokenText: true,\r\n\t\tuserAvatarInitials: 'You',\r\n\t\tuserAvatarImage: '',\r\n\t\tbotAvatarInitials: 'Pearson',\r\n\t\tbotAvatarImage: ''\r\n\t};\r\n}\r\n\r\nfunction getLanguage(defaultLanguage = 'en-CA') {\r\n\tconst html = document.querySelector('html');\r\n\r\n\tif (!html) {\r\n\t\treturn defaultLanguage;\r\n\t}\r\n\r\n\tconst lang = html.getAttribute('lang');\r\n\r\n\tif (lang) {\r\n\t\treturn lang;\r\n\t}\r\n\r\n\treturn defaultLanguage;\r\n}\r\n\r\n\r\n/**\r\n * Determine if page is tall enough for the desktop sized web chat window.\r\n */\r\nfunction isMobile() {\r\n\treturn window.innerWidth < 576;\r\n}\r\n\r\n\r\nmain();\r\n","export default function loadScript(src: string) {\r\n\treturn new Promise<{} | void>((resolve, reject) => {\r\n\t\tconst tag = document.createElement('script');\r\n\t\ttag.type = 'text/javascript';\r\n\t\ttag.src = src;\r\n\r\n\t\ttag.onload = () => {\r\n\t\t\tresolve();\r\n\t\t};\r\n\r\n\t\ttag.onerror = () => {\r\n\t\t\treject();\r\n\t\t};\r\n\r\n\t\tdocument.getElementsByTagName('head')[0].appendChild(tag);\r\n\t});\r\n}\r\n","export function debounce(func: Function, wait = 100, immediate = false) {\r\n\t//let timeout: number | null; @TODO: Fix this\r\n\tlet timeout: any;\r\n\r\n\treturn function() {\r\n\t\tconst args = arguments;\r\n\r\n\t\tconst later = function() {\r\n\t\t\ttimeout = null;\r\n\r\n\t\t\tif (!immediate) {\r\n\t\t\t\tfunc.apply(this, args);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tconst callNow = immediate && !timeout;\r\n\r\n\t\tif (timeout) {\r\n\t\t\tclearTimeout(timeout);\r\n\t\t}\r\n\r\n\t\ttimeout = setTimeout(later.bind(this), wait);\r\n\r\n\t\tif (callNow) {\r\n\t\t\tfunc.apply(this, args);\r\n\t\t}\r\n\t};\r\n}\r\n\r\n/**\r\n * Debounce any resize callback on the window.\r\n * @param func\r\n * @param wait\r\n * @param immediate\r\n */\r\nexport function onResize(func: Function, wait = 10, immediate = false) {\r\n\tconst debouncedFunc = debounce(func, wait, immediate);\r\n\r\n\twindow.addEventListener('resize', debouncedFunc);\r\n}\r\n\r\n/**\r\n * Debounce any scroll callback on the window.\r\n * @param func\r\n * @param wait\r\n * @param immediate\r\n */\r\nexport function onScroll(func: Function, wait = 10, immediate = false) {\r\n\tconst debouncedFunc = debounce(func, wait, immediate);\r\n\r\n\twindow.addEventListener('scroll', debouncedFunc);\r\n}\r\n","import { on } from 'delegated-events';\r\nimport getEventTarget from './getEventTarget';\r\nimport forEach from './forEach';\r\n\r\nfunction main(selector = '[data-youtube-link]', modalCls = 'overlay-modal') {\r\n\tconst links = document.querySelectorAll(selector);\r\n\r\n\tforEach(links, (link) => {\r\n\t\tlink.addEventListener('click', (e: MouseEvent) => {\r\n\t\t\te.preventDefault();\r\n\r\n\t\t\tconst target = getEventTarget(e, selector)!;\r\n\t\t\tconst embedQueryStr = target.getAttribute(`data-embed`);\r\n\r\n\t\t\tif (embedQueryStr) {\r\n\t\t\t\thideMainContent();\r\n\t\t\t\tconst modalEl = document.createElement(`div`);\r\n\r\n\t\t\t\tmodalEl.id = 'video-modal';\r\n\t\t\t\tmodalEl.classList.add(modalCls);\r\n\t\t\t\tmodalEl.classList.add('overlay-modal--video');\r\n\r\n\t\t\t\tconst showInfo = target.getAttribute(`data-show-actions`) ? target.getAttribute(`data-show-actions`) : 1;\r\n\t\t\t\tconst controls = target.getAttribute(`data-show-controls`) ? target.getAttribute(`data-show-controls`) : 1;\r\n\t\t\t\tconst autoPlay = target.getAttribute(`data-autoplay`) ? target.getAttribute(`data-autoplay`) : 1;\r\n\t\t\t\tconst rel = target.getAttribute(`data-show-suggested`) ? target.getAttribute(`data-show-suggested`) : 0;\r\n\r\n\t\t\t\tconst embedCode = ``;\r\n\r\n\t\t\t\tconst closeBtnClass = `${modalCls}__close-button`;\r\n\r\n\t\t\t\tconst modalHtml = `\r\n\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t${embedCode}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t${\r\n\t\t\t\t\t\t\ttarget.getAttribute(`data-description`)\r\n\t\t\t\t\t\t\t\t? `
\r\n\t\t\t\t\t\t\t\t${atob(target.getAttribute(`data-description`)!)}\r\n\t\t\t\t\t\t\t
`\r\n\t\t\t\t\t\t\t\t: ``\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t
\r\n\t\t\t\t`;\r\n\r\n\t\t\t\tmodalEl.innerHTML = modalHtml;\r\n\r\n\t\t\t\tdocument.body.appendChild(modalEl);\r\n\r\n\t\t\t\tcloseButtonFunction(modalEl);\r\n\r\n\t\t\t\t// using pageYOffset for IE compatibility, .scrollY doesn't work\r\n\t\t\t\tconst scrollPosition = window.pageYOffset;\r\n\r\n\t\t\t\ton('click', `#video-modal .${closeBtnClass}`, () => {\r\n\t\t\t\t\tif (modalEl.parentNode) {\r\n\t\t\t\t\t\tmodalEl.parentNode!.removeChild(modalEl);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tdocument.body.style.height = ``;\r\n\t\t\t\t\tdocument.body.style.overflow = ``;\r\n\t\t\t\t\twindow.scrollTo(0, scrollPosition);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n}\r\n\r\nfunction hideMainContent(HTML_SELECTOR = 'html', IFRAME_OPEN_CLASSNAME = 'u-iframe-open') {\r\n\tconst htmlElement = document.querySelector(HTML_SELECTOR);\r\n\r\n\tif (htmlElement) {\r\n\t\tif (htmlElement.classList.contains(IFRAME_OPEN_CLASSNAME)) {\r\n\t\t\thtmlElement.classList.remove(IFRAME_OPEN_CLASSNAME);\r\n\t\t} else {\r\n\t\t\thtmlElement.classList.add(IFRAME_OPEN_CLASSNAME);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction closeButtonFunction(\r\n\tmodalEl: Element,\r\n\tCLOSE_BUTTON_SELECTOR = '.overlay-modal__close-button',\r\n\tHTML_SELECTOR = 'html',\r\n\tIFRAME_OPEN_CLASSNAME = 'u-iframe-open'\r\n) {\r\n\tconst closeButton = modalEl.querySelector(CLOSE_BUTTON_SELECTOR);\r\n\tconst htmlElement = document.querySelector(HTML_SELECTOR);\r\n\r\n\tif (htmlElement && closeButton) {\r\n\t\tcloseButton.addEventListener('click', () => {\r\n\t\t\thtmlElement.classList.remove(IFRAME_OPEN_CLASSNAME);\r\n\t\t});\r\n\t}\r\n}\r\n\r\nmain();\r\n","import toArray from './toArray';\r\n\r\nexport default function getEventTarget(e: Event, selectorStr: string) {\r\n\tconst target = e.target as HTMLElement;\r\n\tconst elements = toArray(document.querySelectorAll(selectorStr));\r\n\tconst clickedElement = elements.filter((locationEl) => locationEl.contains(target)).pop();\r\n\r\n\treturn clickedElement;\r\n}\r\n","/**\r\n * Converts any array-like object into an array\r\n * @param obj Array-like object\r\n * @returns Object converted into array\r\n */\r\nexport default function toArray(obj: NodeListOf): T[] {\r\n\treturn Array.prototype.slice.call(obj);\r\n}\r\n","import forEach from '../utilities/forEach';\r\n\r\nconst EMBEDDED_VIDEO_PLAY_BUTTON = '[data-play-embedded-video]';\r\nconst EMBEDDED_VIDEO_POSTER_HIDDEN_CLASSNAME = 'video-poster--hidden';\r\n\r\nfunction main(onClickFunction = attachEventListeners) {\r\n\tconst playButtons = document.querySelectorAll(EMBEDDED_VIDEO_PLAY_BUTTON);\r\n\r\n\tforEach(playButtons, (playButton) => {\r\n\t\tplayButton.addEventListener('click', onClickFunction);\r\n\t});\r\n}\r\n\r\nfunction attachEventListeners(e: Event) {\r\n\tconst button = e.currentTarget;\r\n\r\n\tif (button instanceof HTMLElement) {\r\n\t\thidePoster(button);\r\n\t\tplayVideo(button);\r\n\t}\r\n}\r\n\r\nfunction hidePoster(button: HTMLElement) {\r\n\tif (button.classList.contains(EMBEDDED_VIDEO_POSTER_HIDDEN_CLASSNAME)) {\r\n\t\tbutton.classList.remove(EMBEDDED_VIDEO_POSTER_HIDDEN_CLASSNAME);\r\n\t} else {\r\n\t\tbutton.classList.add(EMBEDDED_VIDEO_POSTER_HIDDEN_CLASSNAME);\r\n\t}\r\n}\r\n\r\nfunction playVideo(button: HTMLElement) {\r\n\tconst videoIframe = button.parentElement!.querySelector('iframe');\r\n\r\n\tif (videoIframe) {\r\n\t\tconst videoIframeSrc = videoIframe.getAttribute('data-src');\r\n\r\n\t\tif (videoIframeSrc) {\r\n\t\t\tvideoIframe.setAttribute('src', videoIframeSrc);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nmain();\r\n","/**\r\n * Loop through all data attributes on the root element and use data-prop-* as props.\r\n */\r\nexport default (element: Element) => {\r\n\tconst props = {};\r\n\r\n\tif (element instanceof HTMLElement) {\r\n\t\tconst dataset = element.dataset;\r\n\r\n\t\tfor (const attribute in dataset) {\r\n\t\t\tif (attribute.indexOf('prop') === 0) {\r\n\t\t\t\tlet key = attribute.replace(/^prop/, '');\r\n\t\t\t\tkey = key.charAt(0).toLowerCase() + key.slice(1);\r\n\r\n\t\t\t\tconst value = dataset[attribute];\r\n\r\n\t\t\t\tif (value && !isNaN(Number(value)) && !isFloat(value)) {\r\n\t\t\t\t\t// If prop is a number\r\n\t\t\t\t\tprops[key] = parseInt(value, 10);\r\n\t\t\t\t} else if (value && value.toLowerCase() === 'true') {\r\n\t\t\t\t\tprops[key] = true;\r\n\t\t\t\t} else if (value && value.toLowerCase() === 'false') {\r\n\t\t\t\t\tprops[key] = false;\r\n\t\t\t\t} else if (value && isJson(value)) {\r\n\t\t\t\t\t// Prop is an object\r\n\t\t\t\t\tprops[key] = JSON.parse(value);\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// Prop is a string\r\n\t\t\t\t\tprops[key] = value;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn props;\r\n};\r\n\r\nfunction isJson(value: string) {\r\n\ttry {\r\n\t\tJSON.parse(value);\r\n\t} catch (e) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\treturn true;\r\n}\r\n\r\nfunction isFloat(value: string) {\r\n\treturn Number(value) % 1 !== 0;\r\n}\r\n","import * as React from 'react';\r\nimport getDictionaryEntry from '../../utilities/getDictionaryEntry';\r\n\r\ninterface ILoadingProps {\r\n\tchildren?: React.ReactNode;\r\n\tclasses?: string;\r\n\tdescriptionText?: string;\r\n\theadingText?: string;\r\n\tisLoading: boolean;\r\n\tisError?: boolean;\r\n\ttext?: string;\r\n}\r\n\r\nconst LOADING_DEFAULT_STRING = 'Loading...';\r\n\r\nexport default ({ isLoading = false, isError = false, classes, descriptionText, headingText, text, children }: ILoadingProps) => {\r\n\tif (isError) {\r\n\t\treturn (\r\n\t\t\t
\r\n\t\t\t\t

{headingText}

\r\n\t\t\t\t

{descriptionText}

\r\n\t\t\t
\r\n\t\t);\r\n\t}\r\n\r\n\tif (isLoading) {\r\n\t\treturn
{getDictionaryEntry('Loading label', text || LOADING_DEFAULT_STRING)}
;\r\n\t}\r\n\r\n\treturn
{children}
;\r\n};\r\n","declare global {\n\t// tslint:disable-next-line\n\tinterface Window {\n\t\tDictionary: { key: string; value: string };\n\t}\n}\n\n/**\n * Look at the global scope to see if there is a dictionary entry with a specified key.\n */\nexport default (key: string, defaultValue: string) => {\n\tif (window && window.Dictionary && window.Dictionary[key]) {\n\t\treturn window.Dictionary[key];\n\t}\n\n\treturn defaultValue;\n};\n","import forEach from '../utilities/forEach';\r\nimport { debounce } from 'lodash';\r\n\r\nconst INPUT_SELECTOR = '[data-input-container]';\r\nconst LABEL_SELECTOR = '.form__group-heading';\r\n\r\nfunction main() {\r\n\tsetFormLabelPadding();\r\n\r\n\twindow.addEventListener('resize', debounce(setFormLabelPadding, 200));\r\n}\r\n\r\nexport function setFormLabelPadding() {\r\n\tconst inputContainers = document.querySelectorAll(INPUT_SELECTOR);\r\n\r\n\tforEach(inputContainers, inputContainer => {\r\n\t\tconst label = inputContainer.querySelector(LABEL_SELECTOR);\r\n\r\n\t\tif (!label) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// If label is within a tooltip, \r\n\t\tconst labelHeight = label.closest('.tooltip') ? label.closest('.tooltip')!.getBoundingClientRect().height : label.getBoundingClientRect().height;\r\n\r\n\t\tinputContainer.style.paddingTop = `${labelHeight}px`;\r\n\t})\r\n}\r\n\r\nmain();\r\n","export const SESSION_STORAGE_WAIT_UNTIL_KEY = 'Pearson.Wifi.WaitUntil';\r\nexport const ZONE_COOKIE_NAME = 'Pearson.Wifi.Zone';\r\n","/*!\n* tabbable 5.2.0\n* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE\n*/\nvar candidateSelectors = ['input', 'select', 'textarea', 'a[href]', 'button', '[tabindex]', 'audio[controls]', 'video[controls]', '[contenteditable]:not([contenteditable=\"false\"])', 'details>summary:first-of-type', 'details'];\nvar candidateSelector = /* #__PURE__ */candidateSelectors.join(',');\nvar matches = typeof Element === 'undefined' ? function () {} : Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\n\nvar getCandidates = function getCandidates(el, includeContainer, filter) {\n var candidates = Array.prototype.slice.apply(el.querySelectorAll(candidateSelector));\n\n if (includeContainer && matches.call(el, candidateSelector)) {\n candidates.unshift(el);\n }\n\n candidates = candidates.filter(filter);\n return candidates;\n};\n\nvar isContentEditable = function isContentEditable(node) {\n return node.contentEditable === 'true';\n};\n\nvar getTabindex = function getTabindex(node) {\n var tabindexAttr = parseInt(node.getAttribute('tabindex'), 10);\n\n if (!isNaN(tabindexAttr)) {\n return tabindexAttr;\n } // Browsers do not return `tabIndex` correctly for contentEditable nodes;\n // so if they don't have a tabindex attribute specifically set, assume it's 0.\n\n\n if (isContentEditable(node)) {\n return 0;\n } // in Chrome,
,