{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/lazysizes/plugins/attrchange/ls.attrchange.js","webpack:///./src/critical/triage.ts","webpack:///./src/critical/chart-config.ts","webpack:///./src/critical/chart.ts","webpack:///./src/critical/sticky-top-nav.ts","webpack:///./src/critical/provider-logo.ts","webpack:///./src/critical/sticky-nav.ts","webpack:///./src/critical/pill.ts","webpack:///./src/critical/carousel.ts","webpack:///./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","webpack:///./src/utils/get-window.ts","webpack:///./node_modules/lite-youtube-embed/src/lite-yt-embed.js","webpack:///./src/critical/accordion.ts","webpack:///./src/utils/get-chart.ts","webpack:///./node_modules/@babel/runtime/helpers/nonIterableSpread.js","webpack:///./src/critical/top-picks.ts","webpack:///./node_modules/@babel/runtime/helpers/iterableToArray.js","webpack:///./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","webpack:///./node_modules/@babel/runtime/helpers/slicedToArray.js","webpack:///./src/components/platinum-modules/travel-money-calculator/mappings.ts","webpack:///./src/utils/guid.ts","webpack:///./src/critical/button-atom.ts","webpack:///./src/utils/debounce.ts","webpack:///./node_modules/@babel/runtime/helpers/objectWithoutProperties.js","webpack:///./src/utils/formatter.ts","webpack:///./node_modules/@babel/runtime/helpers/toConsumableArray.js","webpack:///./src/critical/tabs-selector.ts","webpack:///./src/utils/cookies.ts","webpack:///./node_modules/@babel/runtime/helpers/createClass.js","webpack:///./node_modules/@babel/runtime/helpers/arrayLikeToArray.js","webpack:///./src/critical/tracking.ts","webpack:///./src/critical/sticky-banner.ts","webpack:///./src/utils/yield-to-main.ts","webpack:///./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","webpack:///./src/components/platinum-modules/travel-money-calculator/calculation.ts","webpack:///./node_modules/@babel/runtime/helpers/typeof.js","webpack:///./src/utils/data-layer.ts","webpack:///./src/utils/tracking.ts","webpack:///./src/critical/superscript.ts","webpack:///./node_modules/@babel/runtime/helpers/regeneratorRuntime.js","webpack:///./src/critical/tab.ts","webpack:///./src/critical/platinum-tooltip.ts","webpack:///./src/critical/experiment-tracking.ts","webpack:///./src/components/helpers/consent/config.ts","webpack:///./src/components/helpers/consent/utils/use-fetch.ts","webpack:///./src/components/helpers/consent/update-consents.ts","webpack:///./src/components/helpers/consent/utils/cookies.ts","webpack:///./src/components/helpers/consent/set-config.ts","webpack:///./src/components/helpers/consent/get-consent-text.ts","webpack:///./src/components/helpers/consent/get-existing-consent.ts","webpack:///./node_modules/@babel/runtime/helpers/defineProperty.js","webpack:///./node_modules/@babel/runtime/helpers/classCallCheck.js","webpack:///./node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","webpack:///./src/critical/calculator.ts","webpack:///./src/critical/view-tracking.ts","webpack:///./src/critical/eevee-carousel.ts","webpack:///./src/critical/travel-money-input.ts","webpack:///./src/critical/email-capture.ts","webpack:///./src/critical/calculator-helper.ts","webpack:///./src/critical/loan-repayment-calculator.ts","webpack:///./src/critical.ts","webpack:///./node_modules/@babel/runtime/regenerator/index.js","webpack:///./node_modules/lazysizes/lazysizes.js","webpack:///./src/critical/click-tracking.ts","webpack:///./node_modules/@babel/runtime/helpers/arrayWithHoles.js","webpack:///./node_modules/@babel/runtime/helpers/nonIterableRest.js","webpack:///./node_modules/@babel/runtime/helpers/asyncToGenerator.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","window","factory","document","lazySizes","addObserver","connect","disconnect","observer","connected","lsCfg","cfg","attributes","regClassTest","loadedClass","docElem","documentElement","setClass","target","rAF","rC","unloadedClass","aC","lazyClass","style","display","parentNode","setTimeout","loader","unveil","onMutation","mutations","len","mutation","length","getAttribute","attributeName","localName","querySelector","test","className","loadingClass","RegExp","srcAttr","srcsetAttr","MutationObserver","observe","subtree","attributeFilter","keys","addEventListener","runs","modifications","callMutations","e","attrName","newValue","push","removeEventListener","triages","querySelectorAll","addQuestion","nextq","componentId","contentfulName","mainElement","section","createElement","classList","add","opacity","dataset","triage","triageIdValue","String","id","description","title","textContent","question","answerList","answers","forEach","a","item","button","triageNextq","JSON","stringify","nextQuestion","triageAction","action","onAnswerClick","triageQid","additionalProps","answer","text","componentData","component_category","component_id","component_name","contentful_name","contentful_variant","trackComponent","appendChild","append","qid","parseInt","parse","questions","clicked","Array","from","find","q","remove","nextSibling","parentElement","removeChild","resetQuestions","listItem","hasChildNodes","childNodes","node","isEqualNode","unpickAnswers","links","linkSection","ctaLink","href","link_path","ctaButton","addActionLinks","b","getChart","ChartJS","Chart","CategoryScale","LinearScale","BarElement","Title","Tooltip","Legend","register","colors","money","uswitch","ThreePlusColors","axisFormatter","labelType","charts","axis","graphType","config","labels","type","label","deviceType","innerWidth","swapIndexAxis","dataSetObjects","map","set","data","slice","parseFloat","backgroundColor","__BRAND__","borderColor","indexAxis","pointRadius","maxBarThickness","configuration","displayXAxisTick","displayYAxisTick","labelFormatter","context","parsed","Intl","NumberFormat","currency","format","xAxisTickFormatter","undefined","yAxisTickFormatter","ctx","getContext","chartConfig","datasets","options","animation","aspectRatio","maintainAspectRatio","scales","x","grid","offset","ticks","maxRotation","autoSkip","callback","font","size","family","y","precision","responsive","plugins","legend","position","align","usePointStyle","pointStyle","textAlign","padding","generateLabels","chart","fillStyle","tooltip","callbacks","elements","line","borderJoinStyle","borderCapStyle","getChartConfig","split","brand","nav","isSticky","navScroll","windowWidth","width","navHeight","getBoundingClientRect","height","scrollY","getElementById","paddingTop","paddingLeft","paddingRight","marginTop","ProviderLogoPlatinum","providerLogoPlatinum","this","$providerLogoPlatinum","$providerLogoPlatinumPhotobanner","$providerLogoImageRepeatList","handleScroll","debounce","isOverflown","image","providerLogoPlatinumPhotobanner","clientWidth","scrollWidth","providerLogoPlatinumWrapper","sections","stickyNavTitle","stickyNavWrapper","stickyNavHeader","subContainerContent","leftIconButton","rightIconButton","scrollTabs","event","distance","arrLeft","getElementsByTagName","arrRight","setAttribute","scrollBy","left","offsetWidth","behavior","preventDefault","pageYOffset","getElementsByClassName","scrollIntoView","current","sectionHeight","offsetHeight","sectionTop","element","rect","scrollTop","top","getOffsetTop","sectionId","navHighlighter","visibility","ele","pill","list","dropdown","panels","buttons","select","activatePill","index","panel","removeAttribute","innerText","selectedValue","selectedIndex","findIndex","init","carousel","carouselContainer","carouselCards","carouselButtons","leftArrow","rightArrow","leftArrowIcon","rightArrowIcon","scrollCounter","cardLength","scrollCards","useLeft","useRight","cardWidth","updateButtons","newIndex","lastIndexOf","activeCard","trackingProps","carouselPosition","trackScroll","activeIndex","vanillaCarouselNavButtonActive","carousels","run","source","excluded","sourceKeys","indexOf","defaultWindow","LiteYTEmbed","HTMLElement","videoId","playBtnEl","playLabel","trim","backgroundImage","posterUrl","addPrefetch","playBtnLabelEl","warmConnections","once","addIframe","kind","url","as","linkEl","rel","head","preconnected","params","URLSearchParams","iframeEl","allow","allowFullscreen","src","encodeURIComponent","toString","focus","customElements","define","accordion","sparkHydrated","sparkAccordionButton","open","sparkAccordionOpen","content","icon","openIcon","closeIcon","overflow","transform","getWindow","TypeError","showDetailsCTA","showDetailsCTATarget","addons","chevronIconDown","chevronIconUp","iter","iterator","arrayLikeToArray","arr","isArray","arrayWithHoles","iterableToArrayLimit","unsupportedIterableToArray","nonIterableRest","currencyMappings","code","symbol","gbpCurrency","currencyPairOptions","currencyTypeMappings","buttonText","flagMappings","GBP","EUR","USD","TRY","AUD","BDT","BBD","BRL","BGN","CAD","CNY","CRC","CZK","DKK","XCD","EGP","HKD","ISK","JPY","MYR","MUR","MXN","NZD","NOK","PLN","ZAR","SEK","CHF","TWD","THB","AED","replace","Math","random","buttonAction","history","back","func","timer","timeout","args","clearTimeout","apply","objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","currencyFormat","v","noCurrency","minDigits","maxDigits","formatted","minimumFractionDigits","maximumFractionDigits","percentageFormat","formatThousands","int","dec","intFormatted","arrayWithoutHoles","iterableToArray","nonIterableSpread","selector","radioButtons","tabsSelectorContent","radioButton","yieldToMain","rb","tabsSelectorRadio","tabsSelector","doc","CONSENT_COOKIE","parseCookie","str","reduce","acc","decodeURIComponent","readCookie","cookies","cookie","readCookieRaw","createCookie","days","expires","ms","date","Date","setTime","getTime","toGMTString","createCookieExpiry","daysToMilliseconds","updateConsentCookie","consentCookie","updatedCookie","assign","Sentry","captureException","Error","_defineProperties","props","descriptor","configurable","writable","Constructor","protoProps","staticProps","arr2","isDev","__APP_ENV__","eventGrouping","eventName","eventData","additionalTrackProps","event_name","console","warn","event_data","log","Promise","resolve","nerdalytics","track","stickyBannerData","stickyBannerText","link","stickyBannerLink","ctaText","stickyBannerCtatext","appBody","stickybanner","CTAWrapper","CTA","CTAdiv","useElement","createElementNS","svgClose","svgWrapper","prepend","requestAnimationFrame","minLen","constructor","getBestRate","gbpAmount","otherAmount","otherCurrency","collection","filteredRates","getRate","filter","delivery","every","error","sort","maxOrder","amountReceived","rateData","_source","definition","standard_rates","currency_iso_code","pounds","err","lowestRate","standard_rate_tiers","highestRate","tier_exchange_rate_numeric","tier_minimum_amount_pounds_numeric","minimum_online_order_pounds_numeric","subtitle","tier_maximum_amount_pounds_numeric","maximum_online_order_pounds_numeric","order_online_for_in_store_collection","order_online_for_home_delivery","minimum_online_order_for_delivery_pounds_numeric","rate","deliveryRate","logo","provider","display_name","eligibleRates","deliveryFee","delivery_charges","maximum_amount_pounds_numeric","minimum_amount_pounds_numeric","delivery_charge_pounds_numeric","_typeof","obj","datalayerPush","dataLayer","nonInteractive","category","appName","gaEventCategory","gaEventAction","gaEventLabel","gaEventValue","eventCallback","gaNonInteractive","trackEvent","trackingObject","tracking","gtmTrack","BRAND","includes","location","pathname","CTAs","randomId","uuidv4","widgetParams","cobrand","utm_source","utm_campaign","p_custid","puid","industry","body","hiddenElementForParams","qbParams","stopPropagation","QB","getLink","tagName","clickoutLink","URL","searchParams","fetch","script","createTextNode","_regeneratorRuntime","Op","hasOwn","desc","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","Context","makeInvokeMethod","tryCatch","fn","arg","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","defineIteratorMethods","method","_invoke","AsyncIterator","PromiseImpl","previousPromise","callInvokeWithMethodAndArg","reject","invoke","record","result","__await","then","unwrapped","state","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","done","info","resultName","next","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iterable","iteratorMethod","isNaN","displayName","isGeneratorFunction","genFun","ctor","mark","setPrototypeOf","__proto__","awrap","async","val","reverse","pop","skipTempReset","prev","charAt","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","tab","buttonClasses","class","disabled","activeClassName","disabledClassName","getComputedStyle","triggerElementId","tooltipPlatinumShow","toolTipMask","toolTipClose","experiences","__experiences__","flagId","experience","recording","flag","cohort","iteration","experiment_id","variation_id","iteration_id","trackExperimentAssigned","_apiPath","_clientVersion","_clientId","_brand","path","version","returnConfigObject","apiPath","clientVersion","clientId","request","headers","rest","fullUrl","ConfigSettings","requestHeaders","res","status","json","post","updateConsents","uuid","source_url","consentsMapped","consents","sourceUrl","ConfigSetting","email","credentials","triggerUpdated","response","usci","CustomEvent","detail","dispatchEvent","setConfig","setNewConfigValues","getConsentText","consentName","requestUsciFromEmail","requestExistingConsentFromUsci","existingConsent","some","consent","requestAllConsentsFromUsci","getExistingConsent","getAllConsents","instance","_i","_s","_e","_arr","_n","_d","calculator","calculatorValue","commaSeparated","join","calculateButton","urlParams","calculate","viewTrackingElements","threshold","intersectionObserver","IntersectionObserver","entries","isIntersecting","intersectionRatio","getComponentData","unobserve","dots","slides","activeDots","inView","getElementInview","elIndex","ad","rootMargin","slide","dot","currentImage","keyCode","block","inline","travelMoneyData","toCurrency","bestRate","collectionRadioButtons","travelInput","currencyInput","travelSelect","swapCurrency","bestRateLogo","children","conversionText","loadingSpinner","errorText","noResultText","bestRateResult","span_receivedLeft","span_receivedRight","amountError","showOtherResults","showResults","amount","currencyToUse","swapped","collectionType","parsedData","updateResultUrl","updateResult","toFixed","innerHTML","resultDisplay","updateReceivedAmount","newAmount","showLoading","otherResult","travelCollectionSelectorRadio","valueString","intAmount","newOption","platinumEmailCapture","errorId","platinumEmailCaptureFormButton","platinumEmailCaptureInput","validateForm","consentSource","form","success","submitForm","errorMessage","message","input","after","secondaryConsentInput","checked","secondaryConsentName","submitConsent","contains","submitButton","erroredInput","validateEmail","addOrRemoveError","toLowerCase","match","errId","inputElement","round","wholeNumber","twoDPNumber","formatNumber","loanRepaymentCalculator","fields","duration","apr","updateCells","monthlyPaymentCell","costOfCreditCell","aprCell","totalCell","principal","interest","payments","pow","monthly","Number","POSITIVE_INFINITY","NEGATIVE_INFINITY","monthlyPayment","total","totalInterest","calculateLoanRepayment","handleInputBlur","handleDecimalBlur","endsWith","handleDuplicateZerosChange","handleAmountInputChange","digitsValue","handleDurationInputChange","handleAprInputChange","singleDotValue","amountInput","durationInput","aprInput","runtime","regeneratorRuntime","accidentalStrictMode","globalThis","Function","lazysizes","lazySizesCfg","prop","lazySizesDefaults","preloadClass","errorClass","autosizesClass","fastLoadedClass","iframeLoadMode","sizesAttr","minSize","customMedia","expFactor","hFac","loadMode","loadHidden","ricTimeout","throttleDelay","lazySizesConfig","lazysizesConfig","noSupport","supportPicture","HTMLPictureElement","requestIdleCallback","regPicture","loadEvents","regClassCache","hasClass","cls","addClass","removeClass","reg","addRemoveLoadEvents","dom","evt","triggerEvent","elem","noBubbles","noCancelable","createEvent","initEvent","updatePolyfill","el","full","polyfill","picturefill","pf","reevaluate","getCSS","getWidth","parent","_lazysizesWidth","running","waiting","firstFns","secondFns","fns","runFns","shift","rafBatch","queue","arguments","hidden","_lsFlush","rAFIt","simple","that","timestamp","later","last","now","preloadElems","isCompleted","resetPreloadingTimer","started","eLvW","elvH","eLtop","eLleft","eLright","eLbottom","isBodyHidden","regImg","regIframe","supportScroll","navigator","userAgent","currentExpand","isLoading","lowRuns","resetPreloading","isVisible","isNestedVisible","elemExpand","outerRect","visible","offsetParent","right","bottom","checkElements","eLlen","autoLoadElem","loadedSomething","elemNegativeExpand","elemExpandVal","beforeExpandVal","defaultExpand","preloadExpand","lazyloadElems","_lazyRace","prematureUnveil","unveilElement","expand","clientHeight","_defEx","innerHeight","preloadAfterLoad","throttledCheckElements","lastTime","gDelay","rICTimeout","idleCallback","isPriority","delay","throttle","switchLoadingClass","_lazyCache","rafSwitchLoadingClass","rafedSwitchLoadingClass","handleSources","sourceSrcset","lazyUnveil","isAuto","sizes","isImg","srcset","isPicture","firesLoad","defaultPrevented","nodeName","contentWindow","changeIframeSrc","isLoaded","naturalWidth","loading","autoSizer","updateElem","afterScroll","altLoadmodeScrollListner","onload","_","persisted","loadingElements","img","childList","setInterval","readyState","checkElems","_aLSL","autosizesElems","sizeElement","sources","dataAttr","getSizeElement","debouncedUpdateElementsSizes","uP","hC","fire","gW","clickElements","accordionElements","selectElements","trackClickEvent","trackClickAccordionEvent","hasAttribute","trackSelectEvent","selected","selectedElement","selectEventName","selectedOption","selectedOptions","clickEventName","asyncGeneratorStep","gen","_next","_throw"],"mappings":"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","file":"static/js/criticalJs-money.bundle.01510ee7.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/fs-core-assets/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"mlE4\");\n","(function(window, factory) {\n\tif(!window) {return;}\n\tvar globalInstall = function(){\n\t\tfactory(window.lazySizes);\n\t\twindow.removeEventListener('lazyunveilread', globalInstall, true);\n\t};\n\n\tfactory = factory.bind(null, window, window.document);\n\n\tif(typeof module == 'object' && module.exports){\n\t\tfactory(require('lazysizes'));\n\t} else if (typeof define == 'function' && define.amd) {\n\t\tdefine(['lazysizes'], factory);\n\t} else if(window.lazySizes) {\n\t\tglobalInstall();\n\t} else {\n\t\twindow.addEventListener('lazyunveilread', globalInstall, true);\n\t}\n}(typeof window != 'undefined' ?\n\twindow : 0, function(window, document, lazySizes) {\n\t'use strict';\n\n\tvar addObserver = function(){\n\t\tvar connect, disconnect, observer, connected;\n\t\tvar lsCfg = lazySizes.cfg;\n\t\tvar attributes = {'data-bgset': 1, 'data-include': 1, 'data-poster': 1, 'data-bg': 1, 'data-script': 1};\n\t\tvar regClassTest = '(\\\\s|^)(' + lsCfg.loadedClass;\n\t\tvar docElem = document.documentElement;\n\n\t\tvar setClass = function(target){\n\t\t\tlazySizes.rAF(function(){\n\t\t\t\tlazySizes.rC(target, lsCfg.loadedClass);\n\t\t\t\tif(lsCfg.unloadedClass){\n\t\t\t\t\tlazySizes.rC(target, lsCfg.unloadedClass);\n\t\t\t\t}\n\t\t\t\tlazySizes.aC(target, lsCfg.lazyClass);\n\n\t\t\t\tif(target.style.display == 'none' || (target.parentNode && target.parentNode.style.display == 'none')){\n\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\tlazySizes.loader.unveil(target);\n\t\t\t\t\t}, 0);\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\n\t\tvar onMutation = function(mutations){\n\t\t\tvar i, len, mutation, target;\n\t\t\tfor(i = 0, len = mutations.length; i < len; i++){\n\t\t\t\tmutation = mutations[i];\n\t\t\t\ttarget = mutation.target;\n\n\t\t\t\tif(!target.getAttribute(mutation.attributeName)){continue;}\n\n\t\t\t\tif(target.localName == 'source' && target.parentNode){\n\t\t\t\t\ttarget = target.parentNode.querySelector('img');\n\t\t\t\t}\n\n\t\t\t\tif(target && regClassTest.test(target.className)){\n\t\t\t\t\tsetClass(target);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tif(lsCfg.unloadedClass){\n\t\t\tregClassTest += '|' + lsCfg.unloadedClass;\n\t\t}\n\n\t\tregClassTest += '|' + lsCfg.loadingClass + ')(\\\\s|$)';\n\n\t\tregClassTest = new RegExp(regClassTest);\n\n\t\tattributes[lsCfg.srcAttr] = 1;\n\t\tattributes[lsCfg.srcsetAttr] = 1;\n\n\t\tif(window.MutationObserver){\n\t\t\tobserver = new MutationObserver(onMutation);\n\n\t\t\tconnect = function(){\n\t\t\t\tif(!connected){\n\t\t\t\t\tconnected = true;\n\t\t\t\t\tobserver.observe( docElem, { subtree: true, attributes: true, attributeFilter: Object.keys(attributes)} );\n\t\t\t\t}\n\t\t\t};\n\t\t\tdisconnect = function(){\n\t\t\t\tif(connected){\n\t\t\t\t\tconnected = false;\n\t\t\t\t\tobserver.disconnect();\n\t\t\t\t}\n\t\t\t};\n\t\t} else {\n\t\t\tdocElem.addEventListener('DOMAttrModified', (function(){\n\t\t\t\tvar runs;\n\t\t\t\tvar modifications = [];\n\t\t\t\tvar callMutations = function(){\n\t\t\t\t\tonMutation(modifications);\n\t\t\t\t\tmodifications = [];\n\t\t\t\t\truns = false;\n\t\t\t\t};\n\t\t\t\treturn function(e){\n\t\t\t\t\tif(connected && attributes[e.attrName] && e.newValue){\n\t\t\t\t\t\tmodifications.push({target: e.target, attributeName: e.attrName});\n\t\t\t\t\t\tif(!runs){\n\t\t\t\t\t\t\tsetTimeout(callMutations);\n\t\t\t\t\t\t\truns = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t})(), true);\n\n\t\t\tconnect = function(){\n\t\t\t\tconnected = true;\n\t\t\t};\n\t\t\tdisconnect = function(){\n\t\t\t\tconnected = false;\n\t\t\t};\n\t\t}\n\n\t\taddEventListener('lazybeforeunveil', disconnect, true);\n\t\taddEventListener('lazybeforeunveil', connect);\n\n\t\taddEventListener('lazybeforesizes', disconnect, true);\n\t\taddEventListener('lazybeforesizes', connect);\n\t\tconnect();\n\n\t\tremoveEventListener('lazybeforeunveil', addObserver);\n\t};\n\n\n\taddEventListener('lazybeforeunveil', addObserver);\n}));\n","import { trackComponent } from 'critical/tracking'\n\ninterface Action {\n text: string\n description: string\n links: Array<{ text: string; href: string }>\n}\ninterface Answer {\n text: string\n nextQuestion?: Question\n action: Action\n}\n\ninterface Question {\n id: number\n question: string\n answers: Array\n description: string\n}\n\nconst triages = document.querySelectorAll(\"[data-triage='triage']\")\n\nconst addQuestion = (\n nextq: Question,\n componentId: string,\n contentfulName: string,\n mainElement: HTMLElement,\n) => {\n const section = document.createElement('section')\n section.classList.add('Triage__qa')\n section.style.opacity = '0'\n section.dataset.triage = 'question'\n section.dataset.triageIdValue = String(nextq.id)\n\n const title = document.createElement('h3')\n title.classList.add('Triage__qa__question')\n title.textContent = nextq.question\n\n let description\n if (nextq.description) {\n description = document.createElement('div')\n description.classList.add('Triage__qa__description')\n description.textContent = nextq.description\n }\n\n const answerList = document.createElement('ul')\n answerList.classList.add('Triage__qa__answers')\n\n const answers = nextq.answers || []\n\n answers.forEach((a) => {\n const item = document.createElement('li')\n item.classList.add('Triage__qa__answers__answer')\n const button = document.createElement('button')\n item.dataset.triageNextq = JSON.stringify(a.nextQuestion || null)\n item.dataset.triageAction = JSON.stringify(a.action || null)\n item.dataset.action = 'answer'\n item.addEventListener('click', () => {\n onAnswerClick(item, componentId, contentfulName, mainElement)\n })\n item.dataset.triageQid = String(nextq.id)\n button?.addEventListener('click', () => {\n /* eslint-disable camelcase */\n const additionalProps = { question: nextq.question, answer: a.text }\n const componentData = {\n component_category: 'platinum-component',\n component_id: componentId,\n component_name: 'Triage',\n contentful_name: contentfulName,\n contentful_variant: 'triage-module',\n }\n trackComponent('Dynamic Component Event', 'CTAButtonClicked', componentData, {\n ...additionalProps,\n })\n })\n\n button.classList.add(\n 'animated',\n 'button_atom',\n 'button_atom__secondary',\n 'button_atom__mdTriage',\n )\n button.textContent = a.text\n item.appendChild(button)\n\n answerList.appendChild(item)\n })\n\n section.appendChild(title)\n description && section.appendChild(description)\n section.appendChild(answerList)\n mainElement.append(section)\n}\n\nconst addActionLinks = (\n action: Action,\n componentId: string,\n contentfulName: string,\n mainElement: HTMLElement,\n) => {\n const section = document.createElement('section')\n section.classList.add('Triage__action')\n\n const title = document.createElement('h3')\n title.classList.add('Triage__qa__ctaText')\n title.textContent = action.text\n section.appendChild(title)\n\n if (action.description) {\n const description = document.createElement('div')\n description.classList.add('Triage__qa__description')\n description.textContent = action.description\n section.appendChild(description)\n }\n\n const links = action.links ?? []\n\n if (links.length > 0) {\n const linkSection = document.createElement('section')\n linkSection.classList.add('Triage__action__links')\n links.forEach((l) => {\n const ctaLink = document.createElement('a')\n ctaLink.classList.add('Triage__action__links__link')\n ctaLink.href = l.href\n ctaLink.target = '_blank'\n ctaLink?.addEventListener('click', () => {\n /* eslint-disable camelcase */\n const additionalProps = { href: l.href, text: l.text }\n const componentData = {\n component_category: 'platinum-component',\n component_id: componentId,\n component_name: 'Triage',\n contentful_name: contentfulName,\n contentful_variant: 'triage-module',\n link_path: l.href,\n }\n trackComponent('Dynamic Component Event', 'CTAButtonClicked', componentData, {\n ...additionalProps,\n })\n })\n\n const ctaButton = document.createElement('button')\n ctaButton.classList.add('button_atom', 'button_atom__primary', 'button_atom__mdTriage')\n ctaButton.textContent = l.text\n\n ctaLink.appendChild(ctaButton)\n linkSection.appendChild(ctaLink)\n })\n section.appendChild(linkSection)\n }\n\n mainElement.append(section)\n}\n\nconst unpickAnswers = (listItem: Node) => {\n const section = listItem?.parentElement\n\n if (section && section.hasChildNodes()) {\n const children = section.childNodes\n for (const node of children) {\n if (!node.isEqualNode(listItem)) {\n node.classList.add('unselected')\n }\n }\n }\n}\n\nconst resetQuestions = (qid: number, triage: HTMLElement) => {\n const questions = triage.querySelectorAll(\"[data-triage='question']\") as NodeListOf\n const clicked = Array.from(questions).find((q) => parseInt(q.dataset.triageIdValue) === qid)\n\n const answers = clicked.querySelectorAll('.Triage__qa__answers__answer')\n for (const answer of answers) {\n answer.classList.remove('unselected')\n }\n\n while (clicked.nextSibling) {\n clicked.parentElement.removeChild(clicked.nextSibling)\n }\n}\n\nconst onAnswerClick = (answer, componentId, contentfulName, triage) => {\n const qid = parseInt(answer.getAttribute('data-triage-qid'))\n const action = JSON.parse(answer.getAttribute('data-triage-action')!)\n const nextq = JSON.parse(answer.getAttribute('data-triage-nextq')!)\n resetQuestions(qid, triage)\n unpickAnswers(answer)\n if (action) {\n addActionLinks(action, componentId, contentfulName, triage)\n } else if (nextq) {\n addQuestion(nextq, componentId, contentfulName, triage)\n }\n}\n\ntriages.forEach((triage) => {\n const componentId = triage.getAttribute('data-triage-component-id')\n const contentfulName = triage.getAttribute('data-triage-contentful-name')\n const question = triage.querySelector(\"[data-triage='question']\") as HTMLElement\n\n const existingButtons = question.querySelectorAll('.Triage__qa__answers__answer > button')\n existingButtons.forEach((b) => b.classList.add('animated'))\n\n const answers = triage.querySelectorAll(\"[data-action='answer']\")\n\n answers?.forEach((answer) => {\n answer.addEventListener('click', () => {\n onAnswerClick(answer, componentId, contentfulName, triage)\n })\n })\n})\n","// @ts-strict-ignore\nimport { ChartConfiguration, ChartDataset } from '@types/chart.js'\n\nexport interface Configuration {\n indexAxis: 'x' | 'y'\n displayXAxisTick: boolean\n displayYAxisTick: boolean\n deviceType: 'desktop' | 'mobile'\n labelFormatter?: (context: any) => string\n xAxisTickFormatter?: (value: string | number, index: number, ticks: any) => string | number\n yAxisTickFormatter?: (value: string | number, index: number, ticks: any) => string | number\n}\n\nexport const getChartConfig = (\n type: 'line' | 'bar' | 'doughnut',\n labels: string[][],\n dataSetObjects: ChartDataset[],\n configuration: Configuration,\n): ChartConfiguration => {\n const {\n indexAxis,\n displayXAxisTick,\n displayYAxisTick,\n labelFormatter,\n xAxisTickFormatter,\n yAxisTickFormatter,\n deviceType,\n } = configuration\n return {\n type: type,\n\n data: {\n labels: labels,\n datasets: dataSetObjects,\n },\n options: {\n animation: false,\n aspectRatio: 2,\n maintainAspectRatio: false,\n indexAxis: indexAxis,\n scales: {\n x: {\n display: type !== 'doughnut',\n grid: {\n offset: false,\n display: type !== 'doughnut',\n },\n ticks: {\n display: displayXAxisTick,\n maxRotation: 30,\n autoSkip: type === 'line',\n // precision: 0,\n ...(xAxisTickFormatter && { callback: xAxisTickFormatter }),\n font: {\n size: 12,\n family:\n \"-apple-system, BlinkMacSystemFont, Roboto, 'Segoe UI', 'Segoe WP', Ubuntu, sans-serif\",\n },\n },\n },\n y: {\n display: type !== 'doughnut',\n ticks: {\n display: displayYAxisTick,\n precision: 0,\n ...(yAxisTickFormatter && { callback: yAxisTickFormatter }),\n font: {\n size: 14,\n family:\n \"-apple-system, BlinkMacSystemFont, Roboto, 'Segoe UI', 'Segoe WP', Ubuntu, sans-serif\",\n },\n },\n },\n },\n responsive: true,\n plugins: {\n legend: {\n position: type === 'doughnut' && deviceType === 'desktop' ? 'right' : 'bottom',\n align: type === 'doughnut' ? 'start' : 'center',\n labels: {\n usePointStyle: true,\n pointStyle: 'circle',\n textAlign: 'left',\n padding: 20,\n },\n ...(type === 'doughnut' && {\n generateLabels: (chart) => {\n const datasets = chart.data.datasets\n return datasets[0].data.map((data, i) => ({\n text: ` ${chart.data.labels[i]} ${data}`,\n fillStyle: datasets[0].backgroundColor[i],\n }))\n },\n }),\n },\n tooltip: {\n ...(labelFormatter && {\n callbacks: {\n label: labelFormatter,\n },\n }),\n },\n },\n elements: {\n line: {\n borderJoinStyle: 'round',\n borderCapStyle: 'round',\n },\n },\n },\n }\n}\n","// @ts-strict-ignore\nimport { Configuration, getChartConfig } from './chart-config'\nimport getChart from '../utils/get-chart'\n\nconst {\n Chart: ChartJS,\n CategoryScale,\n LinearScale,\n BarElement,\n Title,\n Tooltip,\n Legend,\n} = getChart()\n\nChartJS.register(CategoryScale, LinearScale, BarElement, Title, Tooltip, Legend)\n\nconst colors = {\n money: ['#DB4D75', '#924A8B', '#F4793B'],\n uswitch: ['#9EDDEF', '#FFB3EE', '#C8EC7F'],\n}\nconst ThreePlusColors = {\n money: [\n '#FEC340',\n '#FBAA3E',\n '#F7923D',\n '#F4793B',\n '#EC6A4E',\n '#E35C62',\n '#DB4D75',\n '#C34C7C',\n '#AA4B84',\n '#924A8B',\n '#734877',\n '#534762',\n '#34454E',\n ],\n uswitch: [\n '#F7F146',\n '#FFD555',\n '#FFAA55',\n '#FFB3EE',\n '#FF80DA',\n '#FFA7A2',\n '#FF7585',\n '#C1C0FF',\n '#AC96DE',\n '#9EDDEF',\n '#84A6FF',\n '#C8EC7F',\n '#C8EC7F',\n ],\n}\n\nconst labelFormatter =\n (labelType: 'currency' | 'percentage', axis: 'x' | 'y', graphType: 'bar' | 'doughnut' | 'line') =>\n (context: any) => {\n let label = graphType === 'doughnut' ? context.label[0] || '' : context.dataset.label || ''\n const value = graphType === 'doughnut' ? context.parsed : context.parsed[axis]\n\n if (label) {\n label += ': '\n }\n if (value !== null && labelType === 'currency') {\n label += new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: 'GBP',\n }).format(value)\n\n return label\n }\n\n if (value !== null && labelType === 'percentage') {\n label = label + `${value} %`\n\n return label\n }\n if (value !== null) {\n label = label + value\n\n return label\n }\n\n return label\n }\n\nconst axisFormatter = (labelType: 'currency' | 'percentage') => (value: string | number) => {\n return labelType === 'currency' ? '£' + value : labelType === 'percentage' ? value + '%' : value\n}\n\nconst charts = document.querySelectorAll('[data-chart]')\n\ncharts?.forEach((e) => {\n const config = JSON.parse(e.getAttribute('data-chart-config')!)\n const dataset = JSON.parse(e.getAttribute('data-chart-dataset')!)\n const labels = JSON.parse(e.getAttribute('data-chart-labels')!)\n\n const type: 'line' | 'bar' | 'doughnut' = config.type\n const label = config.label\n\n const deviceWidth = window.innerWidth\n\n const deviceType = deviceWidth > 768 ? 'desktop' : 'mobile'\n\n const swapIndexAxis = type === 'bar' && deviceType === 'desktop'\n\n const dataSetObjects = dataset?.map((set, i) => {\n return {\n label: set[0],\n data: set.slice(1).map((item: number | string) => parseFloat(item)),\n backgroundColor:\n type === 'doughnut' ? ThreePlusColors[window.__BRAND__] : colors[window.__BRAND__][i],\n borderColor:\n type === 'doughnut' ? ThreePlusColors[window.__BRAND__] : colors[window.__BRAND__][i],\n indexAxis: swapIndexAxis ? 'y' : 'x',\n pointRadius: 4,\n maxBarThickness: 100,\n }\n })\n\n const configuration: Configuration = {\n indexAxis: swapIndexAxis ? 'y' : 'x',\n displayXAxisTick: true,\n displayYAxisTick: true,\n labelFormatter: labelFormatter(label, swapIndexAxis ? 'x' : 'y', type),\n xAxisTickFormatter: swapIndexAxis ? axisFormatter(label) : undefined,\n yAxisTickFormatter: swapIndexAxis ? undefined : axisFormatter(label),\n deviceType,\n }\n const ctx = e.querySelector('[ data-chart-canvas]')?.getContext('2d')\n\n const chartConfig = getChartConfig(\n type,\n labels.map((l: string) => l.split('*')), // allows formatting of axis labels\n dataSetObjects,\n configuration,\n )\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const chart = new ChartJS(ctx, chartConfig)\n})\n","// @ts-ignore\nconst brand = window.__BRAND__\nconst nav = document.querySelector('[data-sticky-top-nav]') as HTMLElement\nconst isSticky = nav?.getAttribute('data-sticky-top-nav-is-sticky')\n\nconst navScroll = () => {\n const windowWidth = window.innerWidth\n const width = window.innerWidth - (brand === 'money' ? 1186 : 1168)\n\n const navHeight = nav.getBoundingClientRect().height\n if (windowWidth < 769) {\n if (window.scrollY > 0) {\n nav?.classList.add('PpcNav__sticky')\n document.getElementById('app')!.style.paddingTop = `${navHeight}px`\n\n nav.style.paddingLeft = `${width > 0 ? width / 2 : 16}px`\n nav.style.paddingRight = `${width > 0 ? width / 2 : 16}px`\n if (brand === 'money') {\n nav.style.width = '-webkit-fill-available'\n }\n } else {\n nav?.classList.remove('PpcNav__sticky')\n nav.style.paddingLeft = '0'\n nav.style.paddingRight = '0'\n document.getElementById('app')!.style.paddingTop = `0`\n }\n }\n}\n\nif (brand === 'confused') {\n document.getElementById('app')!.style.marginTop = `0`\n}\nif (nav && isSticky === 'true') {\n window.addEventListener('scroll', navScroll)\n} else {\n window.removeEventListener('scroll', navScroll)\n}\n","// @ts-nocheck\nimport { debounce } from '../utils/debounce'\n\nclass ProviderLogoPlatinum {\n constructor(providerLogoPlatinum: Element) {\n this.$providerLogoPlatinum = providerLogoPlatinum\n this.$providerLogoPlatinumPhotobanner = providerLogoPlatinum.querySelector(\n '.ProviderLogoPlatinum__photobanner',\n )\n this.$providerLogoImageRepeatList = providerLogoPlatinum.querySelectorAll(\n '.ProviderLogoPlatinum__image--desktop',\n )\n this.handleScroll = this.handleScroll.bind(this)\n\n this.handleScroll()\n\n window.addEventListener('resize', debounce(this.handleScroll, 100), false)\n window.addEventListener('orientationchange', debounce(this.handleScroll, 100), false)\n }\n\n handleScroll() {\n const isOverflown = this.isOverflown(\n this.$providerLogoPlatinum,\n this.$providerLogoPlatinumPhotobanner,\n )\n\n if (!isOverflown) {\n this.$providerLogoPlatinumPhotobanner.classList.add(\n 'ProviderLogoPlatinum__photobanner--fixed',\n )\n } else {\n this.$providerLogoPlatinumPhotobanner.classList.remove(\n 'ProviderLogoPlatinum__photobanner--fixed',\n )\n }\n\n Array.from(this.$providerLogoImageRepeatList).forEach((image) => {\n if (!isOverflown) {\n image.classList.add('ProviderLogoPlatinum__image--fixed')\n } else {\n image.classList.remove('ProviderLogoPlatinum__image--fixed')\n }\n })\n }\n\n isOverflown(providerLogoPlatinum, providerLogoPlatinumPhotobanner) {\n const { clientWidth: wrapperClientWidth } = providerLogoPlatinum\n const { scrollWidth: bannerScrollWidth } = providerLogoPlatinumPhotobanner\n return wrapperClientWidth < bannerScrollWidth\n }\n}\n\ndocument\n .querySelectorAll('.ProviderLogoPlatinum')\n ?.forEach((providerLogoPlatinumWrapper) => new ProviderLogoPlatinum(providerLogoPlatinumWrapper))\n","import { debounce } from '../utils/debounce'\n\nconst sections = document?.querySelector('#app')?.querySelectorAll('div[id],section[id]')\nconst stickyNavTitle = document.querySelector('#navigationTitle')\nconst stickyNavWrapper = document.querySelector('[data-sticky-nav-target=\"stickyNavWrapper\"]')\nconst stickyNavHeader = document.querySelector('#stickyNavHeader')\nconst subContainerContent = document.querySelector('[data-sticky-nav-target=\"subContainerContent\"]')\nconst leftIconButton = document.querySelector('[data-sticky-nav-target=\"leftIconButton\"]')\nconst rightIconButton = document.querySelector('[data-sticky-nav-target=\"rightIconButton\"]')\nconst brand = window.__BRAND__\n\nfunction getOffsetTop(element) {\n const rect = element.getBoundingClientRect()\n const scrollTop = window.pageYOffset || document.documentElement.scrollTop\n return rect.top + scrollTop\n}\n\nfunction scrollTabs(event, distance) {\n const arrLeft = leftIconButton.getElementsByTagName('use')\n const arrRight = rightIconButton.getElementsByTagName('use')\n\n if (distance > 0) {\n leftIconButton.classList.remove('disabledIcon')\n rightIconButton.classList.add('disabledIcon')\n\n arrLeft[0].setAttribute('href', `/fs-core-assets/icons/${brand}/arrow-left.svg?v=12#arrow-left`)\n arrRight[0].setAttribute(\n 'href',\n `/fs-core-assets/icons/${brand}/ButtonRightDisabled.svg?v=12#ButtonRightDisabled`,\n )\n } else {\n leftIconButton.classList.add('disabledIcon')\n rightIconButton.classList.remove('disabledIcon')\n\n arrLeft[0].setAttribute(\n 'href',\n `/fs-core-assets/icons/${brand}/ButtonLeftDisabled.svg?v=12#ButtonLeftDisabled`,\n )\n arrRight[0].setAttribute(\n 'href',\n `/fs-core-assets/icons/${brand}/arrow-right.svg?v=12#arrow-right`,\n )\n }\n\n subContainerContent.scrollBy({\n left: subContainerContent.offsetWidth * distance,\n behavior: 'smooth',\n })\n event.preventDefault()\n}\n\nfunction handleScroll() {\n const scrollY = window.pageYOffset\n if (document.getElementsByClassName('sticky')[0]) {\n document.getElementsByClassName('active')[0]?.scrollIntoView()\n }\n\n sections.forEach((current) => {\n const sectionHeight = current.offsetHeight + 96\n const sectionTop = getOffsetTop(current) - 200\n const sectionId = current?.getAttribute('id')\n\n if (scrollY > sectionTop && scrollY <= sectionTop + sectionHeight) {\n document\n .querySelector('.navigation a[data-ele*=data-' + sectionId + ']')\n ?.classList.add('active')\n } else {\n document\n .querySelector('.navigation a[data-ele*=data-' + sectionId + ']')\n ?.classList.remove('active')\n }\n })\n}\n\nfunction navHighlighter() {\n const scrollY = stickyNavWrapper.getBoundingClientRect().y\n\n if (scrollY < 0) {\n stickyNavHeader.classList.add('sticky')\n stickyNavTitle.classList.add('hide-title')\n\n leftIconButton.style.visibility = 'hidden'\n rightIconButton.style.visibility = 'hidden'\n } else {\n stickyNavHeader.classList.remove('sticky')\n stickyNavTitle.classList.remove('hide-title')\n\n leftIconButton.style.visibility = 'visible'\n rightIconButton.style.visibility = 'visible'\n }\n\n debounce(handleScroll, 750)()\n}\n\nsections.forEach((ele) => ele.classList.add('scroll-margin'))\n\nif (stickyNavHeader) {\n window.addEventListener('scroll', navHighlighter)\n} else {\n window.removeEventListener('scroll', navHighlighter)\n}\n\nif (leftIconButton) {\n leftIconButton.addEventListener('click', function (event) {\n scrollTabs(event, -1)\n })\n}\n\nif (rightIconButton) {\n rightIconButton.addEventListener('click', function (event) {\n scrollTabs(event, 1)\n })\n}\n","const pills = document.querySelectorAll('[data-pills]')\n\npills.forEach((pill: any) => {\n const list = pill.childNodes[0] // The pill buttons container\n const dropdown = pill.childNodes[1] // The dropdown container\n const panels = pill.childNodes[2] // The panels container\n const buttons = list.childNodes\n const select = dropdown.querySelector('select')\n\n const activatePill = (index: number) => {\n const panel = panels.childNodes[index]\n const button = buttons[index]\n\n button.setAttribute('disabled', '')\n button.classList.add('Pills__pill-active')\n\n panel.style.display = 'block'\n\n buttons.forEach((b: any, i: number) => {\n if (i !== index) {\n b.removeAttribute('disabled')\n b.classList.remove('disabled')\n b.classList.remove('Pills__pill-active')\n\n const otherPanel = panels.childNodes[i]\n otherPanel.style.display = 'none'\n }\n })\n }\n\n buttons.forEach((button: any, index: number) => {\n button.addEventListener('click', () => {\n activatePill(index)\n select.value = button.innerText\n })\n })\n\n select.addEventListener('change', (event: any) => {\n const selectedValue = event.target.value\n\n const selectedIndex = Array.from(buttons).findIndex(\n (button: any) => button.innerText === selectedValue,\n )\n\n if (selectedIndex !== -1) {\n activatePill(selectedIndex)\n }\n })\n})\n","import { debounce } from '../utils/debounce'\nimport { trackComponent } from './tracking'\n\nfunction init(carousel) {\n const carouselContainer = carousel.querySelector(\n '[data-platinum-carousel-target=\"carouselContainer\"]',\n )\n const carouselCards = carousel.querySelectorAll('[data-platinum-carousel-target=\"carouselCard\"]')\n const carouselButtons = carousel.querySelectorAll(\n '[data-platinum-carousel-target=\"carouselButtons\"]',\n )\n const leftArrow = carousel.querySelector('[data-action=\"leftArrowClick\"]')\n const rightArrow = carousel.querySelector('[data-action=\"rightArrowClick\"]')\n const leftArrowIcon = carousel.querySelector('[data-action=\"leftArrowIconClick\"]')\n const rightArrowIcon = carousel.querySelector('[data-action=\"rightArrowIconClick\"]')\n\n let scrollCounter = 0\n const cardLength = carouselCards.length\n const brand = window.__BRAND__\n\n const trackScroll = (newIndex: number) => {\n const activeCard = carouselCards[newIndex]\n const trackingProps =\n activeCard?.getAttribute('data-scroll-tracking') &&\n JSON.parse(activeCard.getAttribute('data-scroll-tracking')!)\n const componentData = {\n component_category: trackingProps?.component_category,\n component_id: trackingProps?.component_id,\n component_name: trackingProps?.component_name,\n contentful_name: trackingProps?.contentful_name,\n contentful_variant: trackingProps?.contentful_variant,\n }\n trackComponent('Dynamic Component Event', 'component_scrolled', componentData, {\n ...trackingProps?.additionalProps,\n carouselPosition: newIndex + 1,\n })\n }\n\n const scrollCards = (e, distance) => {\n e.preventDefault()\n const useLeft = leftArrowIcon.querySelector('use')\n const useRight = rightArrowIcon.querySelector('use')\n\n const cardWidth = carouselCards[0].offsetWidth + 16\n scrollCounter += distance\n carouselContainer.scrollBy({ left: cardWidth * distance })\n\n useLeft.setAttribute('href', `/fs-core-assets/icons/${brand}/arrow-left.svg?v=5#arrow-left`)\n useRight.setAttribute('href', `/fs-core-assets/icons/${brand}/arrow-right.svg?v=5#arrow-right`)\n if (scrollCounter === 0) {\n useLeft.setAttribute(\n 'href',\n `/fs-core-assets/icons/${brand}/ButtonLeftDisabled.svg?v=5#ButtonLeftDisabled`,\n )\n }\n if (scrollCounter === cardLength - 3) {\n useRight.setAttribute(\n 'href',\n `/fs-core-assets/icons/${brand}/ButtonRightDisabled.svg?v=5#ButtonRightDisabled`,\n )\n }\n }\n\n const updateButtons = debounce(() => {\n const newIndex = Array.from(carouselCards)\n .map(\n (ele) =>\n ele.getBoundingClientRect().left > 0 &&\n ele.getBoundingClientRect().left < window.innerWidth / 2,\n )\n .lastIndexOf(true)\n\n carouselButtons.forEach((button, i) => {\n if (i === newIndex) {\n button.setAttribute('data-vanilla-carousel-nav-button-active', 'true')\n trackScroll(newIndex)\n } else {\n button.setAttribute('data-vanilla-carousel-nav-button-active', 'false')\n }\n })\n }, 50)\n\n carouselContainer.addEventListener('scroll', updateButtons)\n\n carouselButtons.forEach((button, index) => {\n button.addEventListener('click', () => {\n const cardWidth = carouselCards[0].offsetWidth\n const activeIndex = Array.from(carouselButtons).findIndex((b) => {\n const dataset = b.dataset\n return dataset.vanillaCarouselNavButtonActive === 'true'\n })\n carouselContainer.scrollBy((index - activeIndex) * cardWidth, 0)\n })\n })\n\n if (leftArrow) {\n leftArrow.addEventListener('click', () => {\n const cardWidth = carouselCards[0].offsetWidth\n carouselContainer.scrollBy(-1 * (cardWidth / 2), 0)\n })\n }\n if (rightArrow) {\n rightArrow.addEventListener('click', () => {\n const cardWidth = carouselCards[0].offsetWidth\n carouselContainer.scrollBy(cardWidth / 2, 0)\n })\n }\n\n if (leftArrowIcon) {\n leftArrowIcon.addEventListener('click', (e) => {\n if (scrollCounter !== 0) {\n scrollCards(e, -1)\n }\n })\n }\n if (rightArrowIcon) {\n rightArrowIcon.addEventListener('click', (e) => {\n if (scrollCounter !== cardLength - 3) {\n scrollCards(e, 1)\n }\n })\n }\n}\n\nfunction run() {\n const carousels = document.querySelectorAll('[data-controller=\"platinum-carousel\"]')\n Array.from(carousels).forEach((carousel) => init(carousel))\n}\n\nrun()\n","function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nmodule.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","const defaultWindow = {}\n\nexport default () => (typeof window === 'undefined' ? defaultWindow : window)\n","/**\n * A lightweight youtube embed. Still should feel the same to the user, just MUCH faster to initialize and paint.\n *\n * Thx to these as the inspiration\n * https://storage.googleapis.com/amp-vs-non-amp/youtube-lazy.html\n * https://autoplay-youtube-player.glitch.me/\n *\n * Once built it, I also found these:\n * https://github.com/ampproject/amphtml/blob/master/extensions/amp-youtube (👍👍)\n * https://github.com/Daugilas/lazyYT\n * https://github.com/vb/lazyframe\n */\nclass LiteYTEmbed extends HTMLElement {\n connectedCallback() {\n this.videoId = this.getAttribute('videoid');\n\n let playBtnEl = this.querySelector('.lty-playbtn');\n // A label for the button takes priority over a [playlabel] attribute on the custom-element\n this.playLabel = (playBtnEl && playBtnEl.textContent.trim()) || this.getAttribute('playlabel') || 'Play';\n\n /**\n * Lo, the youtube placeholder image! (aka the thumbnail, poster image, etc)\n *\n * See https://github.com/paulirish/lite-youtube-embed/blob/master/youtube-thumbnail-urls.md\n *\n * TODO: Do the sddefault->hqdefault fallback\n * - When doing this, apply referrerpolicy (https://github.com/ampproject/amphtml/pull/3940)\n * TODO: Consider using webp if supported, falling back to jpg\n */\n if (!this.style.backgroundImage) {\n this.posterUrl = `https://i.ytimg.com/vi/${this.videoId}/hqdefault.jpg`;\n // Warm the connection for the poster image\n LiteYTEmbed.addPrefetch('preload', this.posterUrl, 'image');\n\n this.style.backgroundImage = `url(\"${this.posterUrl}\")`;\n }\n\n // Set up play button, and its visually hidden label\n if (!playBtnEl) {\n playBtnEl = document.createElement('button');\n playBtnEl.type = 'button';\n playBtnEl.classList.add('lty-playbtn');\n this.append(playBtnEl);\n }\n if (!playBtnEl.textContent) {\n const playBtnLabelEl = document.createElement('span');\n playBtnLabelEl.className = 'lyt-visually-hidden';\n playBtnLabelEl.textContent = this.playLabel;\n playBtnEl.append(playBtnLabelEl);\n }\n\n // On hover (or tap), warm up the TCP connections we're (likely) about to use.\n this.addEventListener('pointerover', LiteYTEmbed.warmConnections, {once: true});\n\n // Once the user clicks, add the real iframe and drop our play button\n // TODO: In the future we could be like amp-youtube and silently swap in the iframe during idle time\n // We'd want to only do this for in-viewport or near-viewport ones: https://github.com/ampproject/amphtml/pull/5003\n this.addEventListener('click', e => this.addIframe());\n }\n\n // // TODO: Support the the user changing the [videoid] attribute\n // attributeChangedCallback() {\n // }\n\n /**\n * Add a to the head\n */\n static addPrefetch(kind, url, as) {\n const linkEl = document.createElement('link');\n linkEl.rel = kind;\n linkEl.href = url;\n if (as) {\n linkEl.as = as;\n }\n document.head.append(linkEl);\n }\n\n /**\n * Begin pre-connecting to warm up the iframe load\n * Since the embed's network requests load within its iframe,\n * preload/prefetch'ing them outside the iframe will only cause double-downloads.\n * So, the best we can do is warm up a few connections to origins that are in the critical path.\n *\n * Maybe `` would work, but it's unsupported: http://crbug.com/593267\n * But TBH, I don't think it'll happen soon with Site Isolation and split caches adding serious complexity.\n */\n static warmConnections() {\n if (LiteYTEmbed.preconnected) return;\n\n // The iframe document and most of its subresources come right off youtube.com\n LiteYTEmbed.addPrefetch('preconnect', 'https://www.youtube-nocookie.com');\n // The botguard script is fetched off from google.com\n LiteYTEmbed.addPrefetch('preconnect', 'https://www.google.com');\n\n // Not certain if these ad related domains are in the critical path. Could verify with domain-specific throttling.\n LiteYTEmbed.addPrefetch('preconnect', 'https://googleads.g.doubleclick.net');\n LiteYTEmbed.addPrefetch('preconnect', 'https://static.doubleclick.net');\n\n LiteYTEmbed.preconnected = true;\n }\n\n addIframe() {\n const params = new URLSearchParams(this.getAttribute('params') || []);\n params.append('autoplay', '1');\n\n const iframeEl = document.createElement('iframe');\n iframeEl.width = 560;\n iframeEl.height = 315;\n // No encoding necessary as [title] is safe. https://cheatsheetseries.owasp.org/cheatsheets/Cross_Site_Scripting_Prevention_Cheat_Sheet.html#:~:text=Safe%20HTML%20Attributes%20include\n iframeEl.title = this.playLabel;\n iframeEl.allow = 'accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture';\n iframeEl.allowFullscreen = true;\n // AFAIK, the encoding here isn't necessary for XSS, but we'll do it only because this is a URL\n // https://stackoverflow.com/q/64959723/89484\n iframeEl.src = `https://www.youtube-nocookie.com/embed/${encodeURIComponent(this.videoId)}?${params.toString()}`;\n this.append(iframeEl);\n\n this.classList.add('lyt-activated');\n\n // Set focus for a11y\n this.querySelector('iframe').focus();\n }\n}\n// Register custom element\ncustomElements.define('lite-youtube', LiteYTEmbed);\n","const accordions = document.querySelectorAll('[data-spark-accordion]')\n\naccordions.forEach((accordion) => {\n accordion.addEventListener('click', (element) => {\n if (accordion.dataset.sparkHydrated === 'true') {\n return\n }\n\n let target = element.target\n\n if (element.target.parentNode?.dataset?.sparkAccordionButton) {\n target = element.target.parentNode\n }\n\n const { dataset } = target\n\n if (dataset.sparkAccordionButton) {\n const open = dataset.sparkAccordionOpen === 'true'\n const content = target.nextSibling\n\n // Money specific\n const icon = target.querySelector('[data-ev-accordion]')\n\n // Uswitch specific\n const openIcon = target.querySelector('[data-ev-accordion-open-icon')\n const closeIcon = target.querySelector('[data-ev-accordion-close-icon')\n\n target.setAttribute('data-spark-accordion-open', !open)\n\n if (open) {\n content.style.height = '0px'\n content.style.overflow = 'hidden'\n content.childNodes[0].style.display = 'none'\n content.childNodes[0].childNodes[0].style.opacity = 0\n content.childNodes[0].childNodes[0].style.visibility = 'hidden'\n if (icon) {\n icon.style.transform = 'rotate(0.5turn)'\n }\n\n if (openIcon && closeIcon) {\n openIcon.style.display = 'block'\n closeIcon.style.display = 'none'\n }\n } else {\n content.style.height = 'auto'\n content.style.overflow = 'visible'\n content.childNodes[0].style.display = 'block'\n content.childNodes[0].childNodes[0].style.opacity = 1\n content.childNodes[0].childNodes[0].style.visibility = 'visible'\n if (icon) {\n icon.style.transform = 'none'\n }\n\n if (openIcon && closeIcon) {\n openIcon.style.display = 'none'\n closeIcon.style.display = 'block'\n }\n }\n }\n })\n})\n","import getWindow from './get-window'\n\n// on the server side, we don't care for this working correctly\n// so when the window.Chart isn't defined, we just return a mock\n// object with an empty `register` function\nconst getChart = () => {\n return (\n getWindow().Chart || {\n Chart: { register: () => {} },\n }\n )\n}\n\nexport default getChart\n","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nmodule.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","const topPicks = document.querySelectorAll('[data-top-picks]')\n\ntopPicks.forEach((e) => {\n const showDetailsCTA = e.querySelector('[data-top-picks-details-cta]')\n\n const showDetailsCTATarget = e.querySelector(\n '[data-top-picks-show-details-cta-text]',\n ) as HTMLElement\n\n const addons = e.querySelectorAll('[data-top-picks-addons]')\n\n const chevronIconDown = e.querySelector('[data-top-picks-chevron-down]') as HTMLElement\n const chevronIconUp = e.querySelector('[data-top-picks-chevron-up]') as HTMLElement\n\n showDetailsCTA?.addEventListener('click', () => {\n if (showDetailsCTATarget?.innerText === 'Show Details') {\n Array.from(addons)?.map((t) => t.classList.remove('top-picks-card__details__addonsHide'))\n showDetailsCTATarget.textContent = 'Hide Details'\n chevronIconDown.style.display = 'none'\n chevronIconUp.style.display = 'block'\n } else {\n Array.from(addons)?.map((t) => t.classList.add('top-picks-card__details__addonsHide'))\n showDetailsCTATarget.textContent = 'Show Details'\n chevronIconDown.style.display = 'block'\n chevronIconUp.style.display = 'none'\n }\n })\n})\n","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nmodule.exports = _iterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\nmodule.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithHoles = require(\"./arrayWithHoles.js\");\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nvar nonIterableRest = require(\"./nonIterableRest.js\");\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\nmodule.exports = _slicedToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","export const currencyMappings = [\n { code: 'GBP', symbol: '£' },\n { code: 'EUR', symbol: '€' },\n { code: 'USD', symbol: '$' },\n { code: 'TRY', symbol: '₺' },\n { code: 'AUD', symbol: 'A$' },\n { code: 'BDT', symbol: '৳' },\n { code: 'BBD', symbol: 'Bds$' },\n { code: 'BRL', symbol: 'R$' },\n { code: 'BGN', symbol: 'Лв' },\n { code: 'CAD', symbol: 'CAD' },\n { code: 'CNY', symbol: '¥' },\n { code: 'CRC', symbol: '₡' },\n { code: 'CZK', symbol: 'Kč' },\n { code: 'DKK', symbol: 'Kr.' },\n { code: 'XCD', symbol: '$' },\n { code: 'EGP', symbol: 'E£' },\n { code: 'HKD', symbol: 'hk$' },\n { code: 'ISK', symbol: 'ikr' },\n { code: 'JPY', symbol: '¥' },\n { code: 'MYR', symbol: 'RM' },\n { code: 'MUR', symbol: 'rs' },\n { code: 'MXN', symbol: 'mex$' },\n { code: 'NZD', symbol: 'nz$' },\n { code: 'NOK', symbol: 'kr' },\n { code: 'PLN', symbol: 'zł' },\n { code: 'ZAR', symbol: 'R' },\n { code: 'SEK', symbol: 'kr' },\n { code: 'CHF', symbol: 'Fr.' },\n { code: 'TWD', symbol: 'nt$' },\n { code: 'THB', symbol: '฿' },\n { code: 'AED', symbol: 'د.إ' },\n]\n\nexport const gbpCurrency = [{ value: 'GBP', text: 'GBP' }]\n\nexport const currencyPairOptions = [\n {\n text: 'Euros (EUR)',\n value: 'EUR',\n },\n {\n text: 'Dollars (USD)',\n value: 'USD',\n },\n {\n text: 'Turkish Lira (TRY)',\n value: 'TRY',\n },\n {\n text: 'Australian Dollar (AUD)',\n value: 'AUD',\n },\n {\n text: 'Bangladeshi Taka (BDT)',\n value: 'BDT',\n },\n {\n text: 'Barbadian Dollars (BBD)',\n value: 'BBD',\n },\n {\n text: 'Brazillian Real (BRL)',\n value: 'BRL',\n },\n {\n text: 'Bulgarian Lev (BGN)',\n value: 'BGN',\n },\n {\n text: 'Canadian Dollars (CAD)',\n value: 'CAD',\n },\n {\n text: 'Chinese Yuan (CNY)',\n value: 'CNY',\n },\n {\n text: 'Costa Rican Colon (CRC)',\n value: 'CRC',\n },\n {\n text: 'Czech Koruna (CZK)',\n value: 'CZK',\n },\n {\n text: 'Danish Krone (DKK)',\n value: 'DKK',\n },\n {\n text: 'Eastern Caribbean dollar (XCD)',\n value: 'XCD',\n },\n {\n text: 'Egyptian Pound (EGP)',\n value: 'EGP',\n },\n {\n text: 'Hong Kong Dollar (HKD)',\n value: 'HKD',\n },\n {\n text: 'Icelandic Krona (ISK)',\n value: 'ISK',\n },\n {\n text: 'Japanese Yen (JPY)',\n value: 'JPY',\n },\n {\n text: 'Malaysian Ringgit (MYR)',\n value: 'MYR',\n },\n {\n text: 'Mauritian Rupee (MUR)',\n value: 'MUR',\n },\n {\n text: 'Mexican Peso (MXN)',\n value: 'MXN',\n },\n {\n text: 'New Zealand Dollar (NZD)',\n value: 'NZD',\n },\n {\n text: 'Norwegian Krone (NOK)',\n value: 'NOK',\n },\n {\n text: 'Polish Złoty (PLN)',\n value: 'PLN',\n },\n {\n text: 'South African Rand (ZAR)',\n value: 'ZAR',\n },\n {\n text: 'Swedish Krona (SEK)',\n value: 'SEK',\n },\n {\n text: 'Swiss Franc (CHF)',\n value: 'CHF',\n },\n {\n text: 'Taiwan Dollar (TWD)',\n value: 'TWD',\n },\n {\n text: 'Thai Baht (THB)',\n value: 'THB',\n },\n {\n text: 'UAE Dirham (AED)',\n value: 'AED',\n },\n]\n\nexport const currencyTypeMappings = {\n 'money-travel-card': {\n text: \"A convenient prepaid way for spending abroad that's safer and easier to track.\",\n buttonText: 'Show travel money cards',\n href: '/travel-money/travel-prepaid-cards/results',\n },\n 'travel-insurance': {\n text: 'Get cover to protect yourself from the cost of potential problems when travelling.',\n buttonText: 'Get a travel insurance quote',\n href: '/travel-insurance',\n },\n 'prepaid-card': {\n text: 'A prepaid card thats useful for travelling but can be used at home too',\n buttonText: 'Show prepaid cards',\n href: '/travel-money/prepaid-cards/results',\n },\n}\n\nexport const flagMappings = {\n GBP: 'UK',\n EUR: 'EU',\n USD: 'US',\n TRY: 'TR',\n AUD: 'AU',\n BDT: 'BD',\n BBD: 'BB',\n BRL: 'BR',\n BGN: 'BG',\n CAD: 'CA',\n CNY: 'CN',\n CRC: 'CR',\n CZK: 'ZK',\n DKK: 'DK',\n XCD: 'XCD',\n EGP: 'EG',\n HKD: 'HK',\n ISK: 'IS',\n JPY: 'JP',\n MYR: 'MY',\n MUR: 'MU',\n MXN: 'MX',\n NZD: 'NZ',\n NOK: 'NO',\n PLN: 'PL',\n ZAR: 'ZA',\n SEK: 'SE',\n CHF: 'CH',\n TWD: 'TW',\n THB: 'TH',\n AED: 'AE',\n}\n","export default () => {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16) | 0\n const v = c === 'x' ? r : (r & 0x3) | 0x8\n return v.toString(16)\n })\n}\n","const buttonActions: NodeListOf = document.querySelectorAll('[data-button-action]')\n\nbuttonActions.forEach((element: HTMLElement) => {\n const actiontype = element.dataset.buttonAction\n\n if (actiontype === 'change-bundle-cta') {\n element.addEventListener('click', () => {\n history?.back()\n })\n }\n})\n","// @ts-strict-ignore\nexport const debounce = (func: any, timeout = 300) => {\n let timer: NodeJS.Timeout\n return (...args: any) => {\n clearTimeout(timer)\n timer = setTimeout(() => {\n func.apply(this, args)\n }, timeout)\n }\n}\n","var objectWithoutPropertiesLoose = require(\"./objectWithoutPropertiesLoose.js\");\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nmodule.exports = _objectWithoutProperties, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// currencyFormat(100000) => £100,000\nexport const currencyFormat = (\n v: number,\n noCurrency = false,\n minDigits = 0,\n maxDigits = 0,\n): string => {\n const formatted = new Intl.NumberFormat('en-GB', {\n minimumFractionDigits: minDigits,\n maximumFractionDigits: maxDigits,\n }).format(v)\n\n return noCurrency ? formatted : `£${formatted}`\n}\n\n// percentageFormat(0.75) => 0.75%\nexport const percentageFormat = (v: number): string => `${v}%`\n\nexport const formatThousands = (n: number) => {\n const s = n.toString()\n const [int, dec] = s.split('.')\n const intFormatted = int.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',')\n return dec ? `${intFormatted}.${dec}` : intFormatted\n}\n","var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\nvar iterableToArray = require(\"./iterableToArray.js\");\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\nmodule.exports = _toConsumableArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","import yieldToMain from '../utils/yield-to-main'\n\ndocument.querySelectorAll('[data-tabs-selector]').forEach((selector) => {\n const radioButtons = selector.querySelectorAll('[data-tabs-selector-radio]')\n const tabsSelectorContent = selector.querySelectorAll('[data-tabs-selector-content]')\n\n function hideTabContent() {\n Array.from(tabsSelectorContent).forEach((tabsSelector) => {\n tabsSelector.style.display = 'none'\n })\n }\n\n Array.from(radioButtons).forEach((radioButton) => {\n radioButton.addEventListener('click', async (event) => {\n event.target.classList.add('radio-checked')\n await yieldToMain()\n Array.from(radioButtons).forEach((rb, i) => {\n const index = parseInt(radioButton.dataset.tabsSelectorRadio)\n if (i !== index) {\n rb.parentElement.classList.remove('radio-checked')\n }\n })\n hideTabContent()\n const index = radioButton.dataset.tabsSelectorRadio\n tabsSelectorContent[index].style.display = 'block'\n })\n })\n})\n","// @ts-strict-ignore\nimport getWindow from './get-window'\n\nconst doc = getWindow().document || {}\n\nconst daysToMilliseconds = (days) => days * 24 * 60 * 60 * 1000\n\nconst createCookieExpiry = (ms) => {\n const date = new Date()\n date.setTime(date.getTime() + ms)\n\n return ` expires=${date.toGMTString()};`\n}\n\n/**\n * @constant {string} CONSENT_COOKIE - The consent cookie name.\n */\nexport const CONSENT_COOKIE = 'cookie-preferences'\n\n/**\n * @constant {number} PREFERENCES_EXPIRY_DAYS - The number of days the preferences should expire on.\n */\nconst PREFERENCES_EXPIRY_DAYS = 1000\n\n/**\n * Parse an HTTP Cookie header string and return an object of all cookie name-value pairs.\n *\n * @see https://www.30secondsofcode.org/js/s/parse-cookie/\n * @param {string} str - The cookie string to parse\n * @returns {Object}\n */\nconst parseCookie = (str) =>\n str\n .split(';')\n .map((v) => v.split('='))\n .reduce((acc, [key, value]) => {\n if (!key) return acc\n acc[decodeURIComponent(key.trim())] = decodeURIComponent(value.trim())\n return acc\n }, {})\n\nexport const readCookie = (name) => {\n const cookies = parseCookie(doc.cookie || '')\n if ({}.hasOwnProperty.call(cookies, name)) {\n return JSON.parse(cookies[name])\n }\n\n return null\n}\n\nexport const readCookieRaw = (name) => {\n const cookies = parseCookie(doc.cookie || '')\n if ({}.hasOwnProperty.call(cookies, name)) {\n return cookies[name]\n }\n\n return null\n}\n\nconst createCookie = (name, value, days) => {\n const expires = days ? createCookieExpiry(daysToMilliseconds(days)) : ''\n\n const cookie = `${name}=${value};${expires} path=/`\n return (doc.cookie = cookie)\n}\n\nexport const updateConsentCookie = (key, value) => {\n const consentCookie = readCookie(CONSENT_COOKIE)\n if (!consentCookie) {\n if (getWindow().Sentry) {\n getWindow().Sentry.captureException(new Error('No consent cookie found'))\n }\n\n return\n }\n\n const updatedCookie = JSON.stringify(Object.assign({}, consentCookie, { [key]: value }))\n\n createCookie(CONSENT_COOKIE, updatedCookie, PREFERENCES_EXPIRY_DAYS)\n}\n","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n}\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/* eslint-disable camelcase */\ndeclare global {\n interface Window {\n nerdalytics: any\n }\n}\n\nconst isDev = window.__APP_ENV__ === 'development'\n\nfunction track(eventGrouping: string, eventData: object) {\n if (isDev) {\n // eslint-disable-next-line no-console\n console.log('[TRACKING] track: ', [eventGrouping, eventData])\n\n return Promise.resolve()\n } else {\n return new Promise((resolve) => {\n window.nerdalytics.track(eventGrouping, eventData, resolve)\n })\n }\n}\n\ninterface AdditionalTrackingProps {\n event_name: string\n event_data?: string\n}\n\ninterface ComponentData {\n component_category: string\n component_id: string\n component_name: string\n contentful_name: string\n contentful_variant: string\n}\n\nexport function trackComponent(\n eventGrouping: string,\n eventName: string,\n componentData: ComponentData,\n eventData: object,\n) {\n const additionalTrackProps: AdditionalTrackingProps = { ...componentData, event_name: eventName }\n\n if (eventData) {\n for (const key in eventData) {\n if (typeof eventData[key] === 'object') {\n // eslint-disable-next-line no-console\n console.warn('Please do not nest objects in eventData as it is difficult to parse')\n }\n }\n }\n\n additionalTrackProps.event_data = JSON.stringify(eventData)\n\n return track(eventGrouping, { ...additionalTrackProps })\n}\n","setTimeout(() => {\n const stickyBannerData = document.getElementById('stickyBannerElement')\n const brand = window.__BRAND__\n\n if (stickyBannerData) {\n const text = stickyBannerData.dataset.stickyBannerText\n const link = stickyBannerData.dataset.stickyBannerLink\n const ctaText = stickyBannerData.dataset.stickyBannerCtatext\n const appBody = document.getElementById('app')\n\n const stickybanner = document.createElement('div')\n\n stickybanner.classList.add('StickyBanner', 'StickyBanner__sticky')\n stickybanner.innerText = text\n\n const CTAWrapper = document.createElement('div')\n CTAWrapper.classList.add('StickyBanner__ctaWrapper')\n const CTA = document.createElement('a')\n CTA.href = link\n CTA.classList.add('button_link')\n const CTAdiv = document.createElement('div')\n CTAdiv.innerText = ctaText\n CTAdiv.classList.add(\n 'button_atom_link',\n 'button_atom',\n 'button_atom__secondary',\n 'button_atom__xs',\n )\n CTA.appendChild(CTAdiv)\n CTAWrapper.appendChild(CTA)\n stickybanner.appendChild(CTAWrapper)\n\n const useElement = document.createElementNS('http://www.w3.org/2000/svg', 'use')\n useElement.setAttribute('href', `/fs-core-assets/icons/${brand}/cross.svg?v=14#cross`)\n\n const svgClose = document.createElementNS('http://www.w3.org/2000/svg', 'svg')\n svgClose.classList.add('DynamicIcon__13', 'DynamicIcon__desktop__24')\n svgClose.setAttribute('role', 'presentation')\n svgClose.appendChild(useElement)\n\n const svgWrapper = document.createElement('div')\n svgWrapper.classList.add('StickyBanner__close')\n svgWrapper.appendChild(svgClose)\n\n stickybanner.appendChild(svgWrapper)\n\n appBody?.prepend(stickybanner)\n stickybanner.style.visibility = 'visible'\n stickybanner.style.opacity = '1'\n\n svgWrapper.addEventListener('click', () => {\n stickybanner.style.display = 'none'\n })\n }\n}, 1000)\n","export default () => {\n return new Promise((resolve): void => {\n requestAnimationFrame(() => {\n setTimeout(resolve, 0)\n })\n })\n}\n","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// @ts-strict-ignore\n/* eslint-disable camelcase */\nimport { Collection } from './'\nimport { formatThousands } from '../../../utils/formatter'\n\ninterface Delivery {\n delivery_charge_percent_numeric: number\n delivery_charge_pounds_numeric: number\n maximum_amount_pounds_numeric: number\n minimum_amount_pounds_numeric: number\n tier_name: string\n}\n\ninterface RateData {\n currency_iso_code: string\n currency_name: string\n standard_rate_tiers: StandardRateTier[]\n}\n\ninterface StandardRateTier {\n tier_exchange_rate_numeric: number\n tier_maximum_amount_pounds_numeric: number\n tier_minimum_amount_pounds_numeric: number\n tier_name: string\n}\n\nexport const getBestRate = (\n gbpAmount: number,\n otherAmount: number,\n currency: string,\n otherCurrency: string,\n collection: Collection,\n data: any,\n) => {\n const rates = data\n .map((d) => getRate(gbpAmount, otherAmount, currency, otherCurrency, collection, d))\n .filter((r) => r != null)\n const filteredRates = rates.filter(\n (r) =>\n (collection === 'collection' && !!r.collection) ||\n (collection === 'delivery' && !!r.delivery),\n )\n const noMatchingRate = filteredRates.every((r) => r.error)\n if (noMatchingRate) {\n return filteredRates.sort((a, b) => b.maxOrder - a.maxOrder)[0]\n }\n\n return filteredRates.sort((a, b) => b.amountReceived - a.amountReceived)[0]\n}\n\nconst getRate = (\n gbpAmount: number,\n otherAmount: number,\n currency: string,\n otherCurrency: string,\n collection: Collection,\n data: any,\n) => {\n const rateData: RateData | undefined = data._source.definition.standard_rates.find(\n (d: RateData) => d.currency_iso_code === otherCurrency,\n )\n\n if (rateData) {\n let pounds: number\n const lowestRate = rateData.standard_rate_tiers[0]\n const highestRate = rateData.standard_rate_tiers[rateData.standard_rate_tiers.length - 1]\n if (currency === 'GBP') {\n pounds = gbpAmount\n } else {\n pounds = otherAmount / lowestRate.tier_exchange_rate_numeric\n }\n\n let err\n\n if (pounds < lowestRate.tier_minimum_amount_pounds_numeric) {\n err = {\n title: `The minimum order amount is £${formatThousands(\n data._source.definition.minimum_online_order_pounds_numeric,\n )}`,\n subtitle: 'Please enter a higher amount.',\n }\n }\n\n if (pounds > highestRate.tier_maximum_amount_pounds_numeric) {\n err = {\n title: `You've exceeded the maximum order amount of £${formatThousands(\n data._source.definition.maximum_online_order_pounds_numeric,\n )}`,\n subtitle: 'Please enter a lower amount.',\n }\n }\n\n if (\n collection === 'collection' &&\n data._source.definition.order_online_for_in_store_collection === false\n ) {\n err = {\n title: `Unfortunately, collection is not available for this order`,\n subtitle: 'Please amend your order.',\n }\n }\n\n if (\n collection === 'delivery' &&\n data._source.definition.order_online_for_home_delivery === false\n ) {\n err = {\n title: `Unfortunately, delivery is not available for this order`,\n subtitle: 'Please amend your order.',\n }\n }\n\n if (\n collection === 'delivery' &&\n data._source.definition.minimum_online_order_for_delivery_pounds_numeric != null &&\n pounds < data._source.definition.minimum_online_order_for_delivery_pounds_numeric\n ) {\n err = {\n title: `Are you sure?`,\n subtitle:\n \"The amount you'll receive is less than the delivery fee for this order. Enter a higher amount, or choose collection instead.\",\n }\n }\n\n if (err) {\n return {\n rate: lowestRate.tier_exchange_rate_numeric,\n collection: data._source.definition.order_online_for_in_store_collection,\n delivery: data._source.definition.order_online_for_home_delivery,\n deliveryRate: 0,\n logo: data._source.definition.provider.logo.money,\n name: data._source.definition.display_name,\n amountReceived: currency === 'GBP' ? 0 : -99999999,\n error: err,\n maxOrder: highestRate.tier_maximum_amount_pounds_numeric,\n }\n }\n\n const eligibleRates: any[] = rateData.standard_rate_tiers.filter(\n (r) =>\n pounds <= r.tier_maximum_amount_pounds_numeric &&\n pounds >= r.tier_minimum_amount_pounds_numeric,\n )\n if (!eligibleRates) {\n return null\n }\n const bestRate = eligibleRates.reduce((acc, d) => {\n const rate = d.tier_exchange_rate_numeric\n if (rate > acc) {\n const deliveryFee =\n collection === 'delivery'\n ? data._source.definition.delivery_charges?.find(\n (delivery: Delivery) =>\n pounds <= delivery.maximum_amount_pounds_numeric &&\n pounds >= delivery.minimum_amount_pounds_numeric,\n )?.delivery_charge_pounds_numeric ?? 0\n : 0\n\n const amountReceived =\n currency === 'GBP'\n ? (pounds - deliveryFee) * rate\n : 0 - (otherAmount / rate + deliveryFee) // we are doing 0 - val to be able to sort for best amount\n acc = {\n rate,\n collection: data._source.definition.order_online_for_in_store_collection,\n delivery: data._source.definition.order_online_for_home_delivery,\n deliveryRate: deliveryFee,\n logo: data._source.definition.provider.logo.money,\n name: data._source.definition.display_name,\n amountReceived,\n maxOrder: highestRate.tier_maximum_amount_pounds_numeric,\n }\n return acc\n }\n return acc\n }, 0)\n\n return bestRate\n }\n\n return null\n}\n","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// @ts-strict-ignore\nexport default function datalayerPush(data) {\n const isProd = process.env.NODE_ENV === 'production'\n\n if (typeof window !== 'undefined' && window.dataLayer) {\n // eslint-disable-next-line no-console\n isProd ? window.dataLayer.push(data) : console.log(data)\n }\n}\n","// @ts-strict-ignore\n\nimport { appName } from '../../__config__/env.json'\nimport datalayerPush from './data-layer'\n\nexport const track = (action, label, value, callback, nonInteractive, category = appName) => {\n datalayerPush({\n event: 'gaTriggerEvent',\n gaEventCategory: category,\n gaEventAction: action,\n gaEventLabel: label,\n gaEventValue: value,\n eventCallback: callback,\n gaNonInteractive: nonInteractive || 0,\n })\n}\n\nconst EVENT_NAME = 'gaTriggerEvent'\n\nexport const trackEvent = (trackingObject) => {\n if (trackingObject?.tracking) {\n const {\n tracking: { category, action, label },\n } = trackingObject\n\n datalayerPush({\n event: EVENT_NAME,\n gaEventCategory: category.value,\n gaEventAction: action.value,\n gaEventLabel: label.value,\n })\n }\n}\n\nexport const gtmTrack = (action, category, label) =>\n trackEvent({\n tracking: {\n category: {\n value: category,\n },\n action: {\n value: action,\n },\n label: { value: label },\n },\n })\n","/* eslint-disable camelcase */\nimport { readCookieRaw } from '../utils/cookies'\nimport uuidv4 from '../utils/guid'\n\nconst pageMap = {\n money: [\n '/business-insurance/pm-1',\n '/business/business-insurance',\n '/business/business-insurance/contents-business-insurance',\n '/business/business-insurance/dog-walking-insurance',\n '/business/business-insurance/goods-in-transit-insurance',\n '/business/business-insurance/providers/superscript',\n '/business/business-insurance/public-liability-insurance',\n '/business/business-insurance/self-employed-insurance',\n '/business/business-insurance/shop-insurance',\n '/business/business-insurance/tool-insurance',\n '/business/business-insurance/tradesman',\n ],\n uswitch: [\n '/business-insurance',\n '/business-insurance/pm-1',\n '/business-insurance/professional-indemnity-insurance',\n '/business-insurance/professional-indemnity-insurance/pm-1',\n '/business-insurance/public-liability-insurance',\n '/business-insurance/public-liability-insurance/pm-1',\n '/business-insurance/rising-premium-costs',\n '/business-insurance/trades-insurance/pm-1',\n ],\n}\n\nconst UtmCampaign = {\n money: {\n '/business-insurance/pm-1': '',\n '/business/business-insurance': '',\n '/business/business-insurance/contents-business-insurance': '-business-contents',\n '/business/business-insurance/dog-walking-insurance': '-dog-walkers',\n '/business/business-insurance/goods-in-transit-insurance': '-goods-in-transit',\n '/business/business-insurance/providers/superscript': '',\n '/business/business-insurance/public-liability-insurance': '-pl',\n '/business/business-insurance/self-employed-insurance': '',\n '/business/business-insurance/shop-insurance': '-shops',\n '/business/business-insurance/tool-insurance': '-tools',\n '/business/business-insurance/tradesman': '-trades',\n },\n uswitch: {\n '/business-insurance': '',\n '/business-insurance/pm-1': '',\n '/business-insurance/professional-indemnity-insurance': '-pi',\n '/business-insurance/professional-indemnity-insurance/pm-1': '-pi',\n '/business-insurance/public-liability-insurance': '',\n '/business-insurance/public-liability-insurance/pm-1': '',\n '/business-insurance/rising-premium-costs': '',\n '/business-insurance/trades-insurance/pm-1': '-tradesman',\n },\n}\n\nconst BRAND = window.__BRAND__\nif (\n ['money', 'uswitch'].includes(BRAND) &&\n pageMap[BRAND].includes(window.location.pathname.replace(/\\/$/, ''))\n) {\n const CTAs = Array.from([\n ...document.querySelectorAll('a'),\n ...document.querySelectorAll('button'),\n ]).filter((b) => b.innerText.includes('Get') && b.innerText.includes('quote'))\n const getLink = (element) => {\n if (element) {\n if (element.tagName === 'A') {\n return element.href\n } else if (element.tagName === 'FORM') {\n return element.getAttribute('action')\n } else return getLink(element.parentElement)\n }\n return null\n }\n\n const randomId = uuidv4()\n const widgetParams = {\n cobrand: BRAND,\n utm_source: BRAND,\n utm_campaign: `partner_${BRAND}${\n UtmCampaign[BRAND][window.location.pathname.replace(/\\/$/, '')]\n }`,\n p_custid: readCookieRaw('uscd'),\n puid: randomId,\n ...(window.location.pathname.includes('/business/business-insurance/goods-in-transit-insurance')\n ? { industry: '1858613f-3f60-400a-b22f-5ffab914e785,9d3a37e3-b782-41f4-b719-8ca3c69fd9d2' }\n : {}),\n }\n const body = document.getElementsByTagName('body')[0]\n const hiddenElementForParams = document.createElement('div')\n hiddenElementForParams.style.display = 'none'\n\n const qbParams = new URLSearchParams(widgetParams).toString()\n hiddenElementForParams.classList.add('qb-launcher')\n hiddenElementForParams.setAttribute('data-qb-params', qbParams)\n\n body.appendChild(hiddenElementForParams)\n CTAs.forEach((b) => {\n b.addEventListener('click', (e) => {\n e.preventDefault()\n e.stopPropagation()\n window.QB('show')\n const link = getLink(b)\n if (link) {\n const clickoutLink = new URL(link)\n clickoutLink.searchParams.append('c', randomId)\n\n fetch(clickoutLink)\n } else {\n // eslint-disable-next-line no-console\n console.log('Clickout link not found')\n }\n })\n })\n\n const head = document.getElementsByTagName('head')[0]\n\n const script = document.createElement('script')\n script.type = 'text/javascript'\n script.src = 'https://online-quote.gosuperscript.com/launcher.js'\n\n const style = document.createElement('style')\n style.type = 'text/css'\n const css = '#qb { z-index: 300 !important; }'\n style.appendChild(document.createTextNode(css))\n\n head.appendChild(script)\n head.appendChild(style)\n}\n","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n return exports;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n var exports = {},\n Op = Object.prototype,\n hasOwn = Op.hasOwnProperty,\n defineProperty = Object.defineProperty || function (obj, key, desc) {\n obj[key] = desc.value;\n },\n $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n function define(obj, key, value) {\n return Object.defineProperty(obj, key, {\n value: value,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), obj[key];\n }\n try {\n define({}, \"\");\n } catch (err) {\n define = function define(obj, key, value) {\n return obj[key] = value;\n };\n }\n function wrap(innerFn, outerFn, self, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,\n generator = Object.create(protoGenerator.prototype),\n context = new Context(tryLocsList || []);\n return defineProperty(generator, \"_invoke\", {\n value: makeInvokeMethod(innerFn, self, context)\n }), generator;\n }\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n exports.wrap = wrap;\n var ContinueSentinel = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n var getProto = Object.getPrototypeOf,\n NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n define(prototype, method, function (arg) {\n return this._invoke(method, arg);\n });\n });\n }\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (\"throw\" !== record.type) {\n var result = record.arg,\n value = result.value;\n return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n }) : PromiseImpl.resolve(value).then(function (unwrapped) {\n result.value = unwrapped, resolve(result);\n }, function (error) {\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n reject(record.arg);\n }\n var previousPromise;\n defineProperty(this, \"_invoke\", {\n value: function value(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(innerFn, self, context) {\n var state = \"suspendedStart\";\n return function (method, arg) {\n if (\"executing\" === state) throw new Error(\"Generator is already running\");\n if (\"completed\" === state) {\n if (\"throw\" === method) throw arg;\n return doneResult();\n }\n for (context.method = method, context.arg = arg;;) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) {\n if (\"suspendedStart\" === state) throw state = \"completed\", context.arg;\n context.dispatchException(context.arg);\n } else \"return\" === context.method && context.abrupt(\"return\", context.arg);\n state = \"executing\";\n var record = tryCatch(innerFn, self, context);\n if (\"normal\" === record.type) {\n if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue;\n return {\n value: record.arg,\n done: context.done\n };\n }\n \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n }\n };\n }\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (undefined === method) {\n if (context.delegate = null, \"throw\" === context.method) {\n if (delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method)) return ContinueSentinel;\n context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a 'throw' method\");\n }\n return ContinueSentinel;\n }\n var record = tryCatch(method, delegate.iterator, context.arg);\n if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel;\n var info = record.arg;\n return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel);\n }\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);\n }\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\", delete record.arg, entry.completion = record;\n }\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) return iteratorMethod.call(iterable);\n if (\"function\" == typeof iterable.next) return iterable;\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n for (; ++i < iterable.length;) {\n if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n }\n return next.value = undefined, next.done = !0, next;\n };\n return next.next = next;\n }\n }\n return {\n next: doneResult\n };\n }\n function doneResult() {\n return {\n value: undefined,\n done: !0\n };\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), defineProperty(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) {\n var ctor = \"function\" == typeof genFun && genFun.constructor;\n return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name));\n }, exports.mark = function (genFun) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun;\n }, exports.awrap = function (arg) {\n return {\n __await: arg\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n void 0 === PromiseImpl && (PromiseImpl = Promise);\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () {\n return this;\n }), define(Gp, \"toString\", function () {\n return \"[object Generator]\";\n }), exports.keys = function (val) {\n var object = Object(val),\n keys = [];\n for (var key in object) {\n keys.push(key);\n }\n return keys.reverse(), function next() {\n for (; keys.length;) {\n var key = keys.pop();\n if (key in object) return next.value = key, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, exports.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(skipTempReset) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) {\n \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\n }\n },\n stop: function stop() {\n this.done = !0;\n var rootRecord = this.tryEntries[0].completion;\n if (\"throw\" === rootRecord.type) throw rootRecord.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(exception) {\n if (this.done) throw exception;\n var context = this;\n function handle(loc, caught) {\n return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught;\n }\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i],\n record = entry.completion;\n if (\"root\" === entry.tryLoc) return handle(\"end\");\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n hasFinally = hasOwn.call(entry, \"finallyLoc\");\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n } else {\n if (!hasFinally) throw new Error(\"try statement without catch or finally\");\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);\n var record = finallyEntry ? finallyEntry.completion : {};\n return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);\n },\n complete: function complete(record, afterLoc) {\n if (\"throw\" === record.type) throw record.arg;\n return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;\n },\n finish: function finish(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;\n }\n },\n \"catch\": function _catch(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (\"throw\" === record.type) {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n return this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel;\n }\n }, exports;\n}\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","const tabs = document.querySelectorAll('[data-spark-tabs]')\n\ntabs.forEach((tab: any) => {\n if (tab.dataset.sparkHydrated === 'true') {\n return\n }\n const list = tab.childNodes[0]\n const panels = tab.childNodes[1]\n const buttons = list.childNodes[0].childNodes\n const buttonClasses = Array.from(buttons).map((b: any) => ({\n class: b.getAttribute('class'),\n disabled: b.getAttribute('disabled') === '',\n }))\n const activeClassName = buttonClasses.find((obj) => !obj.disabled)?.class\n const disabledClassName = buttonClasses.find((obj) => obj.disabled)?.class\n\n buttons.forEach((button: any, index: number) => {\n button.addEventListener('click', () => {\n const panel = panels.childNodes[index]\n button.setAttribute('disabled', '')\n\n const display = window.getComputedStyle(panel, null).display\n if (display === 'none') {\n panel.style.display = 'block'\n button.setAttribute(\n 'class',\n button.getAttribute('class')?.replace(activeClassName, disabledClassName),\n )\n\n buttons.forEach((b: any, i: number) => {\n if (i !== index) {\n b.removeAttribute('disabled')\n b.setAttribute(\n 'class',\n b.getAttribute('class')?.replace(disabledClassName, activeClassName),\n )\n }\n })\n panels.childNodes.forEach((p: any, i: number) => {\n if (i !== index) {\n p.style.display = 'none'\n }\n })\n }\n })\n })\n})\n","const triggerElements = document.querySelectorAll('[data-trigger-element-id]')\n\ntriggerElements.forEach((e) => {\n const triggerElementId: any = e.getAttribute('data-trigger-element-id')\n const tooltipPlatinumShow: any = document.getElementById(triggerElementId)\n\n const toolTipMask = e.querySelector('[data-tooltip-mask]')\n const toolTipClose = e.querySelector('[data-tool-tip-close]')\n\n tooltipPlatinumShow.addEventListener('click', () => {\n toolTipMask?.classList.add('TooltipPlatinum__active')\n })\n\n toolTipMask?.addEventListener('click', () => {\n toolTipMask.classList.remove('TooltipPlatinum__active')\n })\n toolTipClose?.addEventListener('click', () => {\n toolTipMask?.classList.remove('TooltipPlatinum__active')\n })\n})\n","import getWindow from '../utils/get-window'\nimport { track } from '../utils/tracking'\n\ninterface Experience {\n flag: string\n cohort: string\n iteration?: string\n}\n\nconst trackExperimentAssigned = ({ flag, cohort, iteration }: Experience) => {\n track('Experience Bucket', `${flag}:${cohort}`, undefined, undefined, false, 'experiments')\n\n getWindow()?.nerdalytics.track('Experiment Loaded', {\n experiment_id: flag,\n variation_id: `${cohort}`,\n iteration_id: iteration,\n })\n}\n\nfunction run() {\n const experiences = (getWindow() as any).__experiences__ ?? {}\n\n Object.keys(experiences).forEach((flagId: string) => {\n const experience = experiences[flagId]\n\n if (experience.recording) {\n trackExperimentAssigned({\n flag: flagId,\n cohort: experience.cohort,\n iteration: experience.iteration,\n })\n }\n })\n}\n\nrun()\n","import { ConfigProps } from './set-config'\n\ninterface NewValueParams {\n path: string\n version?: string | number | null\n id?: string | null\n brand?: string | null\n}\n\nclass ConfigSettings {\n public _apiPath: string\n\n public _clientVersion: string | number\n\n public _clientId: string\n\n public _brand: string\n\n constructor() {\n this._apiPath = '/consent'\n this._clientVersion = '1'\n this._clientId = 'rvuconsent'\n this._brand = 'money'\n }\n\n get apiPath() {\n return this._apiPath\n }\n\n get clientVersion() {\n return this._clientVersion\n }\n\n get clientId() {\n return this._clientId\n }\n\n get brand() {\n return this._brand\n }\n\n set apiPath(path: string) {\n this._apiPath = path\n }\n\n set clientVersion(version: string | number) {\n this._clientVersion = version\n }\n\n set clientId(id: string) {\n this._clientId = id\n }\n\n set brand(brand: string) {\n this._brand = brand\n }\n\n /**\n * setNewConfigValues\n */\n public setNewConfigValues(params: NewValueParams) {\n const { path, version = null, id = null, brand = null } = params\n\n if (path) this._apiPath = path\n if (version) this._clientVersion = version\n if (id) this._clientId = id\n if (brand) this._brand = brand\n\n return this.returnConfigObject()\n }\n\n /**\n * returnConfigObject\n */\n public returnConfigObject(): ConfigProps {\n return {\n apiPath: this._apiPath,\n clientVersion: this._clientVersion,\n clientId: this._clientId,\n brand: this._brand,\n }\n }\n}\n\nexport default new ConfigSettings()\n","import ConfigSettings from '../config'\n\ninterface RequestParams {\n headers?: HeadersInit\n method?: 'GET' | 'POST'\n body?: string\n}\n\ninterface PostParams {\n headers?: HeadersInit\n body: object\n}\n\nconst request = (\n path: string,\n { headers = {}, ...rest }: RequestParams = {},\n): Promise> => {\n const fullUrl = `${ConfigSettings._apiPath}${path}`\n\n const requestHeaders: HeadersInit = {\n 'X-Client-Id': ConfigSettings._clientId,\n 'X-Client-Version': ConfigSettings._clientVersion.toString(),\n ...headers,\n }\n\n return fetch(fullUrl, {\n ...rest,\n headers: requestHeaders,\n }).then((res) => res.status < 300 && res.json())\n}\n\nexport const get = request\n\nexport const post = (\n path: string,\n { headers = {}, body = {}, ...rest }: PostParams,\n): Promise =>\n request(path, {\n ...rest,\n headers: {\n 'Content-Type': 'application/json',\n ...headers,\n },\n method: 'POST',\n body: JSON.stringify(body),\n })\n","import ConfigSetting from './config'\nimport { parseCookies } from './utils/cookies'\nimport { post } from './utils/use-fetch'\n\nconst UPDATE_EVENT_KEY = 'consent.updated'\n\nfunction hasWindow(): boolean {\n return typeof window !== 'undefined'\n}\n\ninterface Consent {\n brand?: string\n name: string\n status: boolean\n source: string\n sourceUrl: string\n 'source-url'?: string\n}\n\ninterface UpdateConsentParams {\n email?: string\n uuid?: string\n source?: string\n source_url?: string\n consents: Array\n}\n\ninterface ConsentUpdatedInfo {\n usci: string\n}\n\nexport const updateConsents = async (params: UpdateConsentParams): Promise => {\n const uuid: string = params.uuid || ''\n const source: string = params.source || ''\n const source_url: string = params.source_url || ''\n const consentsMapped = [...params.consents]\n\n const body: UpdateConsentParams = {\n consents: consentsMapped.map((item: Consent) => ({\n ...item,\n 'source-url': item.sourceUrl,\n brand: ConfigSetting._brand,\n })),\n }\n\n const call = params.email\n ? post('/api/customer_consent', {\n headers: {\n credentials: 'include',\n },\n body: {\n email: params.email,\n source,\n source_url,\n ...body,\n },\n })\n : post(`/api/customer/${uuid}/consent`, {\n body,\n })\n\n return call.then(triggerUpdated)\n}\n\nfunction triggerUpdated(response: any) {\n if (!hasWindow()) {\n return response\n }\n\n const { usci } = parseCookies()\n\n const event = new CustomEvent(UPDATE_EVENT_KEY, {\n detail: { usci },\n })\n\n dispatchEvent(event)\n\n return response\n}\n","export function parseCookies() {\n return window.document.cookie\n .split(';')\n .map((v) => v.split('='))\n .reduce>((acc, [key, val]) => {\n if (val) acc[decodeURIComponent(key.trim())] = decodeURIComponent(val.trim())\n return acc\n }, {})\n}\n","import ConfigSettings from './config'\n\nexport interface ConfigProps {\n apiPath: string\n clientVersion?: string | number\n clientId?: string\n brand?: string\n}\n\nexport const setConfig = (props: ConfigProps): ConfigProps => {\n const {\n apiPath = '/consent',\n clientVersion = 1,\n clientId = 'rvuconsent',\n brand = 'money',\n } = props\n\n return ConfigSettings.setNewConfigValues({\n path: apiPath,\n version: clientVersion,\n id: clientId,\n brand,\n })\n}\n","import { get } from './utils/use-fetch'\n\ninterface ConsentText {\n consentName: string\n consentType?: string\n}\n\ninterface ConsentTextResponse {\n id: string\n brand: string\n text: string\n name: string\n 'created-at': string\n 'permission-names': string\n}\n\nexport const getConsentText = async (params: ConsentText): Promise =>\n get(`/api/consent/${params.consentName}`)\n","import { get } from './utils/use-fetch'\n\ninterface ExistingConsentParams {\n email?: string\n usci?: string\n consentName: string\n consentType?: string\n}\n\ninterface AllExistingConsentParams {\n email?: string\n usci?: string\n}\n\nconst requestUsciFromEmail = async (email: string): Promise => {\n const path = `/api/email/${encodeURIComponent(email)}`\n\n const response = await get(path).then((data: any): string => data?.id || '')\n\n return response\n}\n\nconst requestExistingConsentFromUsci = async (\n usci: string,\n params: ExistingConsentParams,\n): Promise => {\n const path = `/api/customer/${usci}/consent`\n\n const response = await get(path).then(\n (existingConsent: false | Array>) =>\n existingConsent &&\n existingConsent.some((consent: { name: string }) => consent.name === params.consentName),\n )\n\n return response\n}\n\nconst requestAllConsentsFromUsci = async (usci: string): Promise => {\n const path = `/api/customer/${usci}/consent`\n\n const response = await get(path).then((existingConsent: any) => {\n return existingConsent\n })\n\n return response\n}\n\nexport const getExistingConsent = async (params: ExistingConsentParams): Promise => {\n let usci: string = params.usci || ''\n if (params.email) {\n usci = await requestUsciFromEmail(params.email)\n }\n\n return usci && requestExistingConsentFromUsci(usci, params)\n}\n\nexport const getAllConsents = async (params: AllExistingConsentParams): Promise => {\n let usci: string = params.usci || ''\n if (params.email) {\n usci = await requestUsciFromEmail(params.email)\n }\n\n return !!usci && requestAllConsentsFromUsci(usci)\n}\n","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _s, _e;\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n}\nmodule.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function calculate(calculator) {\n const url = calculator.getAttribute('data-calculator-url')\n const urlParams = Array.from(calculator.querySelectorAll('[data-calculator-value]'))\n .map((calculatorValue) => {\n const format = calculatorValue.getAttribute('data-format')\n const value =\n format === 'thousands' ? calculatorValue.value.replace(/,/g, '') : calculatorValue.value\n return `${calculatorValue.name}=${value}`\n })\n .join('&')\n\n window.location.href = `${url}?${urlParams}`\n}\n\nfunction run() {\n const calculator = document.querySelector('[data-calculator-url]')\n\n if (!calculator) {\n return\n }\n\n const calculatorValues = Array.from(calculator.querySelectorAll('[data-calculator-value]'))\n\n calculatorValues.forEach((calculatorValue) => {\n const format = calculatorValue.getAttribute('data-format')\n if (format === 'thousands') {\n calculatorValue.addEventListener('keyup', () => {\n const tempNumber = calculatorValue.value.replace(/,/g, '')\n const commaSeparated = tempNumber.split(/(?=(?:\\d{3})+$)/).join(',')\n calculatorValue.value = commaSeparated\n })\n }\n })\n\n const calculateButton = calculator.querySelector('[data-button-action=\"calculate\"]')\n if (!calculateButton) {\n return\n }\n\n calculateButton.addEventListener('click', (event) => {\n event.preventDefault()\n calculate(calculator)\n })\n}\n\nrun()\n","import { trackComponent } from './tracking'\n\nconst viewTrackingElements = document.querySelectorAll('[data-view-tracking]')\nconst options = { threshold: 0.5 }\n\nconst getComponentData = (trackingProps) => ({\n /* eslint-disable camelcase */\n component_category: trackingProps.component_category,\n component_id: trackingProps.component_id,\n component_name: trackingProps.component_name,\n contentful_name: trackingProps.contentful_name,\n contentful_variant: trackingProps.contentful_variant,\n})\n\nconst intersectionObserver = new IntersectionObserver((entries, observer) => {\n entries\n .filter((entry) => entry.isIntersecting && entry.intersectionRatio >= options.threshold)\n .forEach((entry) => {\n const trackingProps = JSON.parse(entry.target.getAttribute('data-view-tracking') ?? '{}')\n const componentData = getComponentData(trackingProps)\n const event = trackingProps.event ?? 'Dynamic Component Event'\n const event_name = trackingProps.event_name ?? 'Element Viewed'\n\n trackComponent(event, event_name, componentData, { ...trackingProps.additionalProps })\n observer.unobserve(entry.target)\n })\n}, options)\n\nviewTrackingElements.forEach((element: any) => {\n intersectionObserver.observe(element)\n})\n","const init = () => {\n const carousels = [...document.querySelectorAll('.eevee-carousel-wrapper')]\n\n carousels.forEach((carousel) => {\n const dots = [...carousel.querySelectorAll('.eevee-carousel-dot')]\n const slides = [...carousel.querySelectorAll('.eevee-carousel-slide')]\n const observer = new IntersectionObserver(\n (entries) => {\n const activeDots = [...carousel.querySelectorAll('.eevee-carousel-active-dot')]\n const [inView] = entries.filter(({ isIntersecting }) => isIntersecting)\n const getElementInview = inView?.target?.getAttribute('data-eevee-carousel-index')\n const elIndex = parseInt(getElementInview, 10)\n\n if (!isNaN(elIndex)) {\n activeDots.forEach((ad) => ad?.classList?.remove('eevee-carousel-active-dot'))\n dots[elIndex]?.classList?.add('eevee-carousel-active-dot')\n }\n },\n { rootMargin: '0%', threshold: 1 },\n )\n\n slides.forEach((slide) => {\n // set an observer on each slide\n observer.observe(slide)\n })\n\n dots.forEach((dot, i) => {\n const currentImage = carousel.querySelector(`[data-eevee-carousel-index=\"${i}\"]`)\n dot.addEventListener('keydown', (event) => {\n if (event.keyCode === 13) {\n currentImage.scrollIntoView({\n block: 'nearest',\n inline: 'center',\n behavior: 'smooth',\n })\n }\n })\n dot.addEventListener('click', () => {\n currentImage.scrollIntoView({\n block: 'nearest',\n inline: 'center',\n behavior: 'smooth',\n })\n })\n })\n })\n}\n\nexport default init\n","import { formatThousands } from '../utils/formatter'\nimport { getBestRate } from '../components/platinum-modules/travel-money-calculator/calculation'\nimport {\n flagMappings,\n currencyPairOptions,\n gbpCurrency,\n currencyMappings,\n} from '../components/platinum-modules/travel-money-calculator/mappings'\n\nconst travelMoneyData = document.querySelector('[data-travel-money-script-data]')?.textContent\n\ndocument.querySelectorAll('[data-all-travel-money-content]').forEach((selector) => {\n const collectionRadioButtons = selector.querySelectorAll(\n '[data-travel-collection-selector-radio]',\n )\n const travelInput = selector.querySelector('[data-travel-input-selector-content]')\n const currencyInput = selector.querySelector('[data-input-prefix-selector-content]')\n const travelSelect = selector.querySelectorAll('[data-travel-select-currency-content]')\n const swapCurrency = selector.querySelector('[data-travel-swap-currency-button]')\n const bestRateLogo = selector.querySelector('[data-travel-money-logo-data]')?.children[0]\n const conversionText = selector.querySelector('[data-travel-money-conversion-text-data]')\n const loadingSpinner = selector.querySelector('[data-travel-loading-spinner-content]')\n const errorText = selector.querySelector('[data-travel-money-error-data]')\n const noResultText = selector.querySelector('[data-travel-money-no-result-data]')\n const bestRateResult = selector.querySelectorAll('[data-travel-money-best-rate-data]')\n const span_receivedLeft = selector.querySelector('[data-travel-money-received-left-data]')\n const span_receivedRight = selector.querySelector('[data-travel-money-received-right-data]')\n const amountError = selector.querySelector('[data-travel-money-amount-error-content]')\n const showOtherResults = selector.querySelectorAll('[data-show-other-results-content]')\n const showResults = selector.querySelector('[data-travel-money-show-results]')\n\n interface BestRate {\n rate: number\n collection: boolean\n delivery: boolean\n deliveryRate: string | number\n logo: string\n name: string\n amountReceived: number\n error?: string\n }\n\n let amount: number = 750\n let currencyToUse: string = 'GBP'\n let toCurrency: string\n let swapped: boolean = false\n let collectionType = 'delivery'\n let parsedData: string = ''\n let bestRate: BestRate\n\n const updateResultUrl = () => {\n showResults!.children[0].href = `/travel-money/results?gbpAmount=${amount}¤cyToUse=${currencyToUse}¤cyPair=${\n swapped ? currencyToUse : toCurrency\n }&otherAmount=${amount}&collectionType=${collectionType}`\n }\n\n const updateResult = () => {\n updateResultUrl()\n bestRateLogo!.attributes[0].value = bestRate.logo\n bestRateLogo!.style.width = '150px'\n conversionText!.children[0].innerText = ` 1 ${currencyToUse} = ${\n swapped ? (1 / bestRate.rate).toFixed(3) : bestRate.rate\n } ${toCurrency}`\n conversionText!.children[1].innerText = ` 1 ${toCurrency} = ${\n swapped ? bestRate.rate : (1 / bestRate.rate).toFixed(3)\n } ${currencyToUse}`\n if (span_receivedLeft) {\n span_receivedLeft.innerHTML = `${formatThousands(amount)} ${currencyToUse} =`\n }\n if (span_receivedRight) {\n const amountReceived =\n bestRate.amountReceived &&\n (currencyToUse === 'GBP'\n ? bestRate.amountReceived.toFixed(2)\n : (0 - bestRate.amountReceived).toFixed(2))\n span_receivedRight.innerHTML = `${formatThousands(amountReceived)} ${toCurrency}`\n }\n bestRateResult.forEach((resultDisplay) => (resultDisplay.style.display = 'flex'))\n }\n\n const updateReceivedAmount = (newAmount: number, showLoading: boolean) => {\n bestRate = getBestRate(\n newAmount,\n newAmount,\n currencyToUse,\n swapped ? currencyToUse : toCurrency,\n collectionType,\n parsedData,\n )\n if (bestRate.error || travelInput!.error || amount === 0) {\n bestRateResult.forEach((resultDisplay) => (resultDisplay.style.display = 'none'))\n if (travelInput!.error || amount === 0) {\n errorText!.children[0].textContent = ''\n errorText!.children[1].textContent = ''\n noResultText!.textContent = 'There are no results matching your search, please try again.'\n } else {\n noResultText!.textContent = ''\n errorText!.children[0].innerHTML = bestRate.error.title\n errorText!.children[1].innerHTML = bestRate.error.subtitle\n }\n updateResultUrl()\n } else {\n noResultText!.textContent = ''\n errorText!.children[0].textContent = ''\n errorText!.children[1].textContent = ''\n if (showLoading) {\n bestRateResult.forEach((resultDisplay) => (resultDisplay.style.display = 'none'))\n loadingSpinner!.style.display = 'flex'\n setTimeout(() => {\n loadingSpinner!.style.display = 'none'\n updateResult()\n }, 100)\n } else {\n loadingSpinner!.style.display = 'none'\n updateResult()\n }\n }\n }\n\n const initiate = () => {\n toCurrency = travelSelect[1].value\n parsedData = JSON.parse(travelMoneyData)\n showOtherResults.forEach((otherResult) => (otherResult.style.display = 'none'))\n updateReceivedAmount(amount, false)\n }\n initiate()\n\n Array.from(collectionRadioButtons).forEach((radioButton) => {\n radioButton.addEventListener('click', () => {\n Array.from(collectionRadioButtons).forEach((rb, i) => {\n const index = parseInt(radioButton.dataset.travelCollectionSelectorRadio)\n if (i === index) {\n rb.parentElement.classList.add('radio-checked')\n index === 0 ? (collectionType = 'delivery') : (collectionType = 'collection')\n updateReceivedAmount(amount, true)\n } else {\n rb.parentElement.classList.remove('radio-checked')\n }\n })\n })\n })\n\n travelInput?.addEventListener('input', () => {\n const valueString = travelInput.value\n let newAmount = formatThousands(valueString.replace(/[^0-9]/g, '')).replace(/^0+/, '')\n if (isNaN(parseInt(newAmount))) {\n newAmount = '0'\n }\n travelInput.value = newAmount\n const intAmount = parseInt(newAmount.replace(/,/g, ''))\n amount = intAmount\n if (intAmount > 0 && (currencyToUse === 'GBP' ? intAmount <= 7500 : intAmount <= 999999999)) {\n travelInput.error = false\n amountError!.innerHTML = ''\n updateReceivedAmount(intAmount, true)\n } else {\n travelInput.error = true\n amountError!.innerHTML = 'Min order amount £1, max £7,500'\n updateReceivedAmount(intAmount, false)\n }\n })\n\n travelSelect?.forEach((select) => {\n select.addEventListener('change', (e) => {\n if (e.target.id === 'from-currency') {\n currencyToUse = select.value\n select.style.backgroundImage = `url(/fs-core-assets/icons/money/${flagMappings[currencyToUse]}.svg?v=13#${flagMappings[currencyToUse]}), url(/fs-core-assets/icons/money/chevron-down.svg?v=13)`\n currencyInput!.innerHTML =\n currencyMappings.find((c) => c.code === currencyToUse)?.symbol ?? ''\n } else {\n toCurrency = select.value\n select.style.backgroundImage = `url(/fs-core-assets/icons/money/${flagMappings[toCurrency]}.svg?v=13#${flagMappings[toCurrency]}), url(/fs-core-assets/icons/money/chevron-down.svg?v=13)`\n }\n updateReceivedAmount(amount, true)\n })\n })\n\n swapCurrency?.addEventListener('click', () => {\n while (travelSelect[0].options.length) {\n travelSelect[0].remove(0)\n }\n while (travelSelect[1].options.length) {\n travelSelect[1].remove(0)\n }\n if (!swapped) {\n swapped = true\n for (let i = 0; i < currencyPairOptions.length; i++) {\n const newOption = document.createElement('option')\n newOption.value = currencyPairOptions[i].value\n newOption.innerHTML = currencyPairOptions[i].text\n travelSelect[0].appendChild(newOption)\n }\n for (let i = 0; i < gbpCurrency.length; i++) {\n const newOption = document.createElement('option')\n newOption.value = gbpCurrency[i].value\n newOption.innerHTML = gbpCurrency[i].text\n newOption.style.backgroundImage = `url(/fs-core-assets/icons/money/${\n flagMappings[gbpCurrency[i].value]\n }.svg?v=13#${\n flagMappings[gbpCurrency[i].value]\n }), url(/fs-core-assets/icons/money/chevron-down.svg?v=13)`\n travelSelect[1].appendChild(newOption)\n }\n } else {\n swapped = false\n for (let i = 0; i < gbpCurrency.length; i++) {\n const newOption = document.createElement('option')\n newOption.value = gbpCurrency[i].value\n newOption.innerHTML = gbpCurrency[i].text\n travelSelect[0].appendChild(newOption)\n }\n for (let i = 0; i < currencyPairOptions.length; i++) {\n const newOption = document.createElement('option')\n newOption.value = currencyPairOptions[i].value\n newOption.innerHTML = currencyPairOptions[i].text\n travelSelect[1].appendChild(newOption)\n }\n }\n amount = 1000\n travelInput.value = formatThousands(amount)\n toCurrency = [currencyToUse, (currencyToUse = toCurrency)][0]\n travelSelect[0].style.backgroundImage = `url(/fs-core-assets/icons/money/${flagMappings[currencyToUse]}.svg?v=13#${flagMappings[currencyToUse]}), url(/fs-core-assets/icons/money/chevron-down.svg?v=13)`\n travelSelect[1].style.backgroundImage = `url(/fs-core-assets/icons/money/${flagMappings[toCurrency]}.svg?v=13#${flagMappings[toCurrency]}), url(/fs-core-assets/icons/money/chevron-down.svg?v=13)`\n travelSelect[0].value = currencyToUse\n travelSelect[1].value = toCurrency\n currencyInput!.innerHTML = currencyMappings.find((c) => c.code === currencyToUse)?.symbol ?? ''\n updateReceivedAmount(amount, true)\n })\n})\n","import { updateConsents, setConfig } from '../components/helpers/consent'\n\nconst platinumEmailCapture = document.querySelectorAll('[data-email-capture]')\n\nconst errorId = 'EmailCapture__box__form__formError'\n\nlet timer: any\nconst waitTime = 500\n\nif (platinumEmailCapture && platinumEmailCapture.length > 0) {\n setConfig({\n apiPath: '/consent',\n clientId: 'fs-core',\n brand: 'money',\n })\n}\n\nplatinumEmailCapture?.forEach((e) => {\n const platinumEmailCaptureFormButton = e.querySelector('[data-email-capture-submit]')!\n const platinumEmailCaptureInput = e.querySelector(\n '[data-email-capture-input]',\n )! as HTMLInputElement\n\n platinumEmailCaptureInput.addEventListener('keyup', () => {\n timer && clearTimeout(timer)\n\n timer = setTimeout(() => {\n validateForm(platinumEmailCaptureInput, platinumEmailCaptureFormButton)\n }, waitTime)\n })\n platinumEmailCaptureInput.addEventListener('blur', () => {\n validateForm(platinumEmailCaptureInput, platinumEmailCaptureFormButton)\n })\n\n platinumEmailCaptureFormButton.addEventListener('click', async () => {\n try {\n const consentName =\n e.querySelector('[data-email-capture-consent]')?.getAttribute('data-consent-name') || ''\n const consentSource =\n e.querySelector('[data-email-capture-consent]')?.getAttribute('data-consent-source') || ''\n const form = e.querySelector('[data-email-capture-box]')\n const success = e.querySelector('[data-email-capture-success]')\n await submitForm(consentName, consentSource, platinumEmailCaptureInput, form, success)\n } catch (error) {\n errorMessage('An error occurred', platinumEmailCaptureInput)\n }\n })\n})\n\nconst errorMessage = (message: string, input: Element) => {\n const error = document.getElementById(errorId)\n if (!error) {\n const error = document.createElement('div')\n error.id = errorId\n error.classList.add(errorId)\n error.textContent = message\n input.after(error)\n }\n}\n\nconst submitForm = async (\n consentName: string,\n consentSource: string,\n input: HTMLInputElement,\n form: Element | null,\n success: Element | null,\n) => {\n const email = input.value\n const secondaryConsentInput = form?.querySelector(\n '[data-email-capture-secondary-consent]',\n ) as HTMLInputElement | null\n const consents = [consentName]\n if (secondaryConsentInput?.checked) {\n const secondaryConsentName = secondaryConsentInput.getAttribute(\n 'data-email-capture-secondary-consent',\n )\n secondaryConsentName && consents.push(secondaryConsentName)\n }\n await submitConsent(email, consents, consentSource)\n if (form?.classList.contains('EmailCapturePrimary__box')) {\n form?.classList.remove('EmailCapturePrimary__box')\n }\n form?.classList.add('EmailCapture__box__hidden')\n success?.classList.add('EmailCapture__success__visible')\n}\n\nconst submitConsent = async (email: string, consents: string[], consentSource: string) => {\n return await updateConsents({\n email,\n consents: consents.map((c) => {\n return {\n status: true,\n name: c,\n source: consentSource,\n sourceUrl: window.location.href,\n }\n }),\n })\n}\n\nconst validateForm = (input: HTMLInputElement, submitButton: Element) => {\n const erroredInput = 'EmailCapture__box__form__input__error'\n const email = input.value\n\n if (email) {\n if (!validateEmail(email)) {\n addOrRemoveError(errorId, erroredInput, 'add', input)\n submitButton?.setAttribute('disabled', 'true')\n } else {\n addOrRemoveError(errorId, erroredInput, 'remove', input)\n submitButton?.removeAttribute('disabled')\n }\n } else {\n addOrRemoveError(errorId, erroredInput, 'remove', input)\n }\n}\n\nconst validateEmail = (email: string) => {\n return String(email).toLowerCase().match(/@/)\n}\n\nconst addOrRemoveError = (errId: string, input: string, action: string, inputElement: Element) => {\n if (action === 'remove') {\n const error = document.getElementById(errId)\n error?.remove()\n inputElement?.classList.remove(input)\n } else {\n errorMessage('Please input a valid email', inputElement)\n inputElement?.classList.add(input)\n }\n}\n","// @ts-strict-ignore\nconst round = (x: number) => Math.round(x * 100) / 100\n\nconst wholeNumber = Intl.NumberFormat('en-UK', { minimumFractionDigits: 0 })\nconst twoDPNumber = Intl.NumberFormat('en-UK', { minimumFractionDigits: 2 })\n\nconst formatNumber = (x: number) =>\n x % 1 === 0 ? wholeNumber.format(round(x)) : twoDPNumber.format(round(x))\n\nexport const calculateLoanRepayment = ({\n amount,\n apr,\n duration,\n}: {\n amount: number\n apr: number\n duration: number\n}) => {\n const principal = amount\n const interest = apr / 100 / 12\n const payments = duration * 12\n\n const x = Math.pow(1 + interest, payments)\n const monthly = (principal * x * interest) / (x - 1)\n\n if (\n !isNaN(monthly) &&\n monthly !== Number.POSITIVE_INFINITY &&\n monthly !== Number.NEGATIVE_INFINITY\n ) {\n const monthlyPayment = formatNumber(monthly)\n const total = formatNumber(monthly * payments)\n const totalInterest = formatNumber(monthly * payments - principal)\n\n return {\n monthlyPayment,\n total,\n totalInterest,\n }\n } else {\n return {\n monthlyPayment: 0,\n total: 0,\n totalInterest: 0,\n }\n }\n}\n","import { calculateLoanRepayment } from './calculator-helper'\nimport { formatThousands } from '../utils/formatter'\nimport yieldToMain from '../utils/yield-to-main'\nimport { debounce } from '../utils/debounce'\n\nconst loanRepaymentCalculator = document.querySelector('[data-loan-repayment-calculator]')\n\nconst fields = {\n amount: 7500,\n duration: 5,\n apr: 3.7,\n}\n\nconst updateCells = () => {\n const monthlyPaymentCell = loanRepaymentCalculator.querySelector(\n '[data-loan-repayment-calculator-monthly-payments]',\n )\n const costOfCreditCell = loanRepaymentCalculator.querySelector(\n '[data-loan-repayment-calculator-cost-of-credit]',\n )\n const aprCell = loanRepaymentCalculator.querySelector('[data-loan-repayment-calculator-apr]')\n const totalCell = loanRepaymentCalculator.querySelector('[data-loan-repayment-calculator-total]')\n\n const { monthlyPayment, total, totalInterest } = calculateLoanRepayment(fields)\n\n monthlyPaymentCell.innerText = `£${monthlyPayment}`\n costOfCreditCell.innerText = `£${totalInterest}`\n aprCell.innerText = `${fields.apr}%`\n totalCell.innerText = `£${total}`\n}\n\nconst handleInputBlur = (e) => {\n if (e.target.value === '') {\n e.target.value = '0'\n }\n}\nconst handleDecimalBlur = (e) => {\n const value = e.target.value\n if (value.endsWith('.')) {\n e.target.value = value.replace(/\\.$/, '')\n }\n}\nconst handleDuplicateZerosChange = (e) => {\n if (parseInt(e.target.value) === 0) {\n e.target.value = '0'\n }\n}\nconst handleAmountInputChange = async (e) => {\n const digitsValue = e.target.value.replace(/\\D/g, '')\n const n = parseInt(digitsValue)\n e.target.value = digitsValue === '' ? '' : formatThousands(n)\n await yieldToMain()\n if (n !== fields.amount) {\n fields.amount = digitsValue === '' ? 0 : n\n updateCells()\n }\n}\nconst handleDurationInputChange = async (e) => {\n const value = e.target.value.replace(/\\D/g, '')\n const n = parseInt(value)\n e.target.value = value\n await yieldToMain()\n if (n !== fields.duration) {\n fields.duration = value === '' ? 0 : n\n updateCells()\n }\n}\nconst handleAprInputChange = async (e) => {\n const value = e.target.value.replace(/[^\\d.]/g, '')\n const singleDotValue = value.split('.').slice(0, 2).join('.')\n const n = parseFloat(singleDotValue)\n e.target.value = singleDotValue\n await yieldToMain()\n if (n !== fields.apr) {\n fields.apr = value === '' ? 0 : n\n updateCells()\n }\n}\n\nconst run = () => {\n if (!loanRepaymentCalculator) {\n return\n }\n\n const amountInput = loanRepaymentCalculator.querySelector('input[name=\"loan-amount\"]')\n const durationInput = loanRepaymentCalculator.querySelector('input[name=\"loan-duration\"]')\n const aprInput = loanRepaymentCalculator.querySelector('input[name=\"loan-apr\"]')\n\n const inputs = [amountInput, durationInput, aprInput]\n inputs.forEach((input) => {\n input.addEventListener('blur', debounce(handleInputBlur, 200))\n input.addEventListener('keyup', debounce(handleDuplicateZerosChange, 200))\n })\n\n aprInput.addEventListener('blur', debounce(handleDecimalBlur, 200))\n amountInput.addEventListener('keyup', debounce(handleAmountInputChange, 200))\n durationInput.addEventListener('keyup', debounce(handleDurationInputChange, 200))\n aprInput.addEventListener('keyup', debounce(handleAprInputChange, 200))\n}\n\nrun()\n","// @ts-strict-ignore\nimport 'lazysizes'\n// eslint-disable-next-line import/extensions\nimport 'lazysizes/plugins/attrchange/ls.attrchange'\nimport './critical/experiment-tracking'\nimport './critical/click-tracking'\nimport './critical/view-tracking'\nimport './css/main-money.css'\nimport './critical/provider-logo'\nimport 'lite-youtube-embed/src/lite-yt-embed.css'\nimport 'lite-youtube-embed/src/lite-yt-embed.js'\nimport './critical/calculator'\nimport './critical/carousel'\nimport './critical/sticky-nav'\nimport './critical/accordion'\nimport './critical/tab'\nimport carousel from './critical/eevee-carousel'\nimport './critical/sticky-banner'\nimport './critical/tabs-selector'\nimport './critical/travel-money-input'\nimport './critical/button-atom'\nimport './critical/platinum-tooltip'\nimport './critical/email-capture'\nimport './critical/sticky-top-nav'\nimport './critical/top-picks'\nimport './critical/chart'\nimport './critical/triage'\nimport './critical/loan-repayment-calculator'\nimport './critical/superscript'\nimport './critical/pill'\ncarousel()\n","// TODO(Babel 8): Remove this file.\n\nvar runtime = require(\"../helpers/regeneratorRuntime\")();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","(function(window, factory) {\n\tvar lazySizes = factory(window, window.document, Date);\n\twindow.lazySizes = lazySizes;\n\tif(typeof module == 'object' && module.exports){\n\t\tmodule.exports = lazySizes;\n\t}\n}(typeof window != 'undefined' ?\n window : {}, \n/**\n * import(\"./types/global\")\n * @typedef { import(\"./types/lazysizes-config\").LazySizesConfigPartial } LazySizesConfigPartial\n */\nfunction l(window, document, Date) { // Pass in the window Date function also for SSR because the Date class can be lost\n\t'use strict';\n\t/*jshint eqnull:true */\n\n\tvar lazysizes,\n\t\t/**\n\t\t * @type { LazySizesConfigPartial }\n\t\t */\n\t\tlazySizesCfg;\n\n\t(function(){\n\t\tvar prop;\n\n\t\tvar lazySizesDefaults = {\n\t\t\tlazyClass: 'lazyload',\n\t\t\tloadedClass: 'lazyloaded',\n\t\t\tloadingClass: 'lazyloading',\n\t\t\tpreloadClass: 'lazypreload',\n\t\t\terrorClass: 'lazyerror',\n\t\t\t//strictClass: 'lazystrict',\n\t\t\tautosizesClass: 'lazyautosizes',\n\t\t\tfastLoadedClass: 'ls-is-cached',\n\t\t\tiframeLoadMode: 0,\n\t\t\tsrcAttr: 'data-src',\n\t\t\tsrcsetAttr: 'data-srcset',\n\t\t\tsizesAttr: 'data-sizes',\n\t\t\t//preloadAfterLoad: false,\n\t\t\tminSize: 40,\n\t\t\tcustomMedia: {},\n\t\t\tinit: true,\n\t\t\texpFactor: 1.5,\n\t\t\thFac: 0.8,\n\t\t\tloadMode: 2,\n\t\t\tloadHidden: true,\n\t\t\tricTimeout: 0,\n\t\t\tthrottleDelay: 125,\n\t\t};\n\n\t\tlazySizesCfg = window.lazySizesConfig || window.lazysizesConfig || {};\n\n\t\tfor(prop in lazySizesDefaults){\n\t\t\tif(!(prop in lazySizesCfg)){\n\t\t\t\tlazySizesCfg[prop] = lazySizesDefaults[prop];\n\t\t\t}\n\t\t}\n\t})();\n\n\tif (!document || !document.getElementsByClassName) {\n\t\treturn {\n\t\t\tinit: function () {},\n\t\t\t/**\n\t\t\t * @type { LazySizesConfigPartial }\n\t\t\t */\n\t\t\tcfg: lazySizesCfg,\n\t\t\t/**\n\t\t\t * @type { true }\n\t\t\t */\n\t\t\tnoSupport: true,\n\t\t};\n\t}\n\n\tvar docElem = document.documentElement;\n\n\tvar supportPicture = window.HTMLPictureElement;\n\n\tvar _addEventListener = 'addEventListener';\n\n\tvar _getAttribute = 'getAttribute';\n\n\t/**\n\t * Update to bind to window because 'this' becomes null during SSR\n\t * builds.\n\t */\n\tvar addEventListener = window[_addEventListener].bind(window);\n\n\tvar setTimeout = window.setTimeout;\n\n\tvar requestAnimationFrame = window.requestAnimationFrame || setTimeout;\n\n\tvar requestIdleCallback = window.requestIdleCallback;\n\n\tvar regPicture = /^picture$/i;\n\n\tvar loadEvents = ['load', 'error', 'lazyincluded', '_lazyloaded'];\n\n\tvar regClassCache = {};\n\n\tvar forEach = Array.prototype.forEach;\n\n\t/**\n\t * @param ele {Element}\n\t * @param cls {string}\n\t */\n\tvar hasClass = function(ele, cls) {\n\t\tif(!regClassCache[cls]){\n\t\t\tregClassCache[cls] = new RegExp('(\\\\s|^)'+cls+'(\\\\s|$)');\n\t\t}\n\t\treturn regClassCache[cls].test(ele[_getAttribute]('class') || '') && regClassCache[cls];\n\t};\n\n\t/**\n\t * @param ele {Element}\n\t * @param cls {string}\n\t */\n\tvar addClass = function(ele, cls) {\n\t\tif (!hasClass(ele, cls)){\n\t\t\tele.setAttribute('class', (ele[_getAttribute]('class') || '').trim() + ' ' + cls);\n\t\t}\n\t};\n\n\t/**\n\t * @param ele {Element}\n\t * @param cls {string}\n\t */\n\tvar removeClass = function(ele, cls) {\n\t\tvar reg;\n\t\tif ((reg = hasClass(ele,cls))) {\n\t\t\tele.setAttribute('class', (ele[_getAttribute]('class') || '').replace(reg, ' '));\n\t\t}\n\t};\n\n\tvar addRemoveLoadEvents = function(dom, fn, add){\n\t\tvar action = add ? _addEventListener : 'removeEventListener';\n\t\tif(add){\n\t\t\taddRemoveLoadEvents(dom, fn);\n\t\t}\n\t\tloadEvents.forEach(function(evt){\n\t\t\tdom[action](evt, fn);\n\t\t});\n\t};\n\n\t/**\n\t * @param elem { Element }\n\t * @param name { string }\n\t * @param detail { any }\n\t * @param noBubbles { boolean }\n\t * @param noCancelable { boolean }\n\t * @returns { CustomEvent }\n\t */\n\tvar triggerEvent = function(elem, name, detail, noBubbles, noCancelable){\n\t\tvar event = document.createEvent('Event');\n\n\t\tif(!detail){\n\t\t\tdetail = {};\n\t\t}\n\n\t\tdetail.instance = lazysizes;\n\n\t\tevent.initEvent(name, !noBubbles, !noCancelable);\n\n\t\tevent.detail = detail;\n\n\t\telem.dispatchEvent(event);\n\t\treturn event;\n\t};\n\n\tvar updatePolyfill = function (el, full){\n\t\tvar polyfill;\n\t\tif( !supportPicture && ( polyfill = (window.picturefill || lazySizesCfg.pf) ) ){\n\t\t\tif(full && full.src && !el[_getAttribute]('srcset')){\n\t\t\t\tel.setAttribute('srcset', full.src);\n\t\t\t}\n\t\t\tpolyfill({reevaluate: true, elements: [el]});\n\t\t} else if(full && full.src){\n\t\t\tel.src = full.src;\n\t\t}\n\t};\n\n\tvar getCSS = function (elem, style){\n\t\treturn (getComputedStyle(elem, null) || {})[style];\n\t};\n\n\t/**\n\t *\n\t * @param elem { Element }\n\t * @param parent { Element }\n\t * @param [width] {number}\n\t * @returns {number}\n\t */\n\tvar getWidth = function(elem, parent, width){\n\t\twidth = width || elem.offsetWidth;\n\n\t\twhile(width < lazySizesCfg.minSize && parent && !elem._lazysizesWidth){\n\t\t\twidth = parent.offsetWidth;\n\t\t\tparent = parent.parentNode;\n\t\t}\n\n\t\treturn width;\n\t};\n\n\tvar rAF = (function(){\n\t\tvar running, waiting;\n\t\tvar firstFns = [];\n\t\tvar secondFns = [];\n\t\tvar fns = firstFns;\n\n\t\tvar run = function(){\n\t\t\tvar runFns = fns;\n\n\t\t\tfns = firstFns.length ? secondFns : firstFns;\n\n\t\t\trunning = true;\n\t\t\twaiting = false;\n\n\t\t\twhile(runFns.length){\n\t\t\t\trunFns.shift()();\n\t\t\t}\n\n\t\t\trunning = false;\n\t\t};\n\n\t\tvar rafBatch = function(fn, queue){\n\t\t\tif(running && !queue){\n\t\t\t\tfn.apply(this, arguments);\n\t\t\t} else {\n\t\t\t\tfns.push(fn);\n\n\t\t\t\tif(!waiting){\n\t\t\t\t\twaiting = true;\n\t\t\t\t\t(document.hidden ? setTimeout : requestAnimationFrame)(run);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\trafBatch._lsFlush = run;\n\n\t\treturn rafBatch;\n\t})();\n\n\tvar rAFIt = function(fn, simple){\n\t\treturn simple ?\n\t\t\tfunction() {\n\t\t\t\trAF(fn);\n\t\t\t} :\n\t\t\tfunction(){\n\t\t\t\tvar that = this;\n\t\t\t\tvar args = arguments;\n\t\t\t\trAF(function(){\n\t\t\t\t\tfn.apply(that, args);\n\t\t\t\t});\n\t\t\t}\n\t\t;\n\t};\n\n\tvar throttle = function(fn){\n\t\tvar running;\n\t\tvar lastTime = 0;\n\t\tvar gDelay = lazySizesCfg.throttleDelay;\n\t\tvar rICTimeout = lazySizesCfg.ricTimeout;\n\t\tvar run = function(){\n\t\t\trunning = false;\n\t\t\tlastTime = Date.now();\n\t\t\tfn();\n\t\t};\n\t\tvar idleCallback = requestIdleCallback && rICTimeout > 49 ?\n\t\t\tfunction(){\n\t\t\t\trequestIdleCallback(run, {timeout: rICTimeout});\n\n\t\t\t\tif(rICTimeout !== lazySizesCfg.ricTimeout){\n\t\t\t\t\trICTimeout = lazySizesCfg.ricTimeout;\n\t\t\t\t}\n\t\t\t} :\n\t\t\trAFIt(function(){\n\t\t\t\tsetTimeout(run);\n\t\t\t}, true)\n\t\t;\n\n\t\treturn function(isPriority){\n\t\t\tvar delay;\n\n\t\t\tif((isPriority = isPriority === true)){\n\t\t\t\trICTimeout = 33;\n\t\t\t}\n\n\t\t\tif(running){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\trunning = true;\n\n\t\t\tdelay = gDelay - (Date.now() - lastTime);\n\n\t\t\tif(delay < 0){\n\t\t\t\tdelay = 0;\n\t\t\t}\n\n\t\t\tif(isPriority || delay < 9){\n\t\t\t\tidleCallback();\n\t\t\t} else {\n\t\t\t\tsetTimeout(idleCallback, delay);\n\t\t\t}\n\t\t};\n\t};\n\n\t//based on http://modernjavascript.blogspot.de/2013/08/building-better-debounce.html\n\tvar debounce = function(func) {\n\t\tvar timeout, timestamp;\n\t\tvar wait = 99;\n\t\tvar run = function(){\n\t\t\ttimeout = null;\n\t\t\tfunc();\n\t\t};\n\t\tvar later = function() {\n\t\t\tvar last = Date.now() - timestamp;\n\n\t\t\tif (last < wait) {\n\t\t\t\tsetTimeout(later, wait - last);\n\t\t\t} else {\n\t\t\t\t(requestIdleCallback || run)(run);\n\t\t\t}\n\t\t};\n\n\t\treturn function() {\n\t\t\ttimestamp = Date.now();\n\n\t\t\tif (!timeout) {\n\t\t\t\ttimeout = setTimeout(later, wait);\n\t\t\t}\n\t\t};\n\t};\n\n\tvar loader = (function(){\n\t\tvar preloadElems, isCompleted, resetPreloadingTimer, loadMode, started;\n\n\t\tvar eLvW, elvH, eLtop, eLleft, eLright, eLbottom, isBodyHidden;\n\n\t\tvar regImg = /^img$/i;\n\t\tvar regIframe = /^iframe$/i;\n\n\t\tvar supportScroll = ('onscroll' in window) && !(/(gle|ing)bot/.test(navigator.userAgent));\n\n\t\tvar shrinkExpand = 0;\n\t\tvar currentExpand = 0;\n\n\t\tvar isLoading = 0;\n\t\tvar lowRuns = -1;\n\n\t\tvar resetPreloading = function(e){\n\t\t\tisLoading--;\n\t\t\tif(!e || isLoading < 0 || !e.target){\n\t\t\t\tisLoading = 0;\n\t\t\t}\n\t\t};\n\n\t\tvar isVisible = function (elem) {\n\t\t\tif (isBodyHidden == null) {\n\t\t\t\tisBodyHidden = getCSS(document.body, 'visibility') == 'hidden';\n\t\t\t}\n\n\t\t\treturn isBodyHidden || !(getCSS(elem.parentNode, 'visibility') == 'hidden' && getCSS(elem, 'visibility') == 'hidden');\n\t\t};\n\n\t\tvar isNestedVisible = function(elem, elemExpand){\n\t\t\tvar outerRect;\n\t\t\tvar parent = elem;\n\t\t\tvar visible = isVisible(elem);\n\n\t\t\teLtop -= elemExpand;\n\t\t\teLbottom += elemExpand;\n\t\t\teLleft -= elemExpand;\n\t\t\teLright += elemExpand;\n\n\t\t\twhile(visible && (parent = parent.offsetParent) && parent != document.body && parent != docElem){\n\t\t\t\tvisible = ((getCSS(parent, 'opacity') || 1) > 0);\n\n\t\t\t\tif(visible && getCSS(parent, 'overflow') != 'visible'){\n\t\t\t\t\touterRect = parent.getBoundingClientRect();\n\t\t\t\t\tvisible = eLright > outerRect.left &&\n\t\t\t\t\t\teLleft < outerRect.right &&\n\t\t\t\t\t\teLbottom > outerRect.top - 1 &&\n\t\t\t\t\t\teLtop < outerRect.bottom + 1\n\t\t\t\t\t;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn visible;\n\t\t};\n\n\t\tvar checkElements = function() {\n\t\t\tvar eLlen, i, rect, autoLoadElem, loadedSomething, elemExpand, elemNegativeExpand, elemExpandVal,\n\t\t\t\tbeforeExpandVal, defaultExpand, preloadExpand, hFac;\n\t\t\tvar lazyloadElems = lazysizes.elements;\n\n\t\t\tif((loadMode = lazySizesCfg.loadMode) && isLoading < 8 && (eLlen = lazyloadElems.length)){\n\n\t\t\t\ti = 0;\n\n\t\t\t\tlowRuns++;\n\n\t\t\t\tfor(; i < eLlen; i++){\n\n\t\t\t\t\tif(!lazyloadElems[i] || lazyloadElems[i]._lazyRace){continue;}\n\n\t\t\t\t\tif(!supportScroll || (lazysizes.prematureUnveil && lazysizes.prematureUnveil(lazyloadElems[i]))){unveilElement(lazyloadElems[i]);continue;}\n\n\t\t\t\t\tif(!(elemExpandVal = lazyloadElems[i][_getAttribute]('data-expand')) || !(elemExpand = elemExpandVal * 1)){\n\t\t\t\t\t\telemExpand = currentExpand;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!defaultExpand) {\n\t\t\t\t\t\tdefaultExpand = (!lazySizesCfg.expand || lazySizesCfg.expand < 1) ?\n\t\t\t\t\t\t\tdocElem.clientHeight > 500 && docElem.clientWidth > 500 ? 500 : 370 :\n\t\t\t\t\t\t\tlazySizesCfg.expand;\n\n\t\t\t\t\t\tlazysizes._defEx = defaultExpand;\n\n\t\t\t\t\t\tpreloadExpand = defaultExpand * lazySizesCfg.expFactor;\n\t\t\t\t\t\thFac = lazySizesCfg.hFac;\n\t\t\t\t\t\tisBodyHidden = null;\n\n\t\t\t\t\t\tif(currentExpand < preloadExpand && isLoading < 1 && lowRuns > 2 && loadMode > 2 && !document.hidden){\n\t\t\t\t\t\t\tcurrentExpand = preloadExpand;\n\t\t\t\t\t\t\tlowRuns = 0;\n\t\t\t\t\t\t} else if(loadMode > 1 && lowRuns > 1 && isLoading < 6){\n\t\t\t\t\t\t\tcurrentExpand = defaultExpand;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcurrentExpand = shrinkExpand;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif(beforeExpandVal !== elemExpand){\n\t\t\t\t\t\teLvW = innerWidth + (elemExpand * hFac);\n\t\t\t\t\t\telvH = innerHeight + elemExpand;\n\t\t\t\t\t\telemNegativeExpand = elemExpand * -1;\n\t\t\t\t\t\tbeforeExpandVal = elemExpand;\n\t\t\t\t\t}\n\n\t\t\t\t\trect = lazyloadElems[i].getBoundingClientRect();\n\n\t\t\t\t\tif ((eLbottom = rect.bottom) >= elemNegativeExpand &&\n\t\t\t\t\t\t(eLtop = rect.top) <= elvH &&\n\t\t\t\t\t\t(eLright = rect.right) >= elemNegativeExpand * hFac &&\n\t\t\t\t\t\t(eLleft = rect.left) <= eLvW &&\n\t\t\t\t\t\t(eLbottom || eLright || eLleft || eLtop) &&\n\t\t\t\t\t\t(lazySizesCfg.loadHidden || isVisible(lazyloadElems[i])) &&\n\t\t\t\t\t\t((isCompleted && isLoading < 3 && !elemExpandVal && (loadMode < 3 || lowRuns < 4)) || isNestedVisible(lazyloadElems[i], elemExpand))){\n\t\t\t\t\t\tunveilElement(lazyloadElems[i]);\n\t\t\t\t\t\tloadedSomething = true;\n\t\t\t\t\t\tif(isLoading > 9){break;}\n\t\t\t\t\t} else if(!loadedSomething && isCompleted && !autoLoadElem &&\n\t\t\t\t\t\tisLoading < 4 && lowRuns < 4 && loadMode > 2 &&\n\t\t\t\t\t\t(preloadElems[0] || lazySizesCfg.preloadAfterLoad) &&\n\t\t\t\t\t\t(preloadElems[0] || (!elemExpandVal && ((eLbottom || eLright || eLleft || eLtop) || lazyloadElems[i][_getAttribute](lazySizesCfg.sizesAttr) != 'auto')))){\n\t\t\t\t\t\tautoLoadElem = preloadElems[0] || lazyloadElems[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(autoLoadElem && !loadedSomething){\n\t\t\t\t\tunveilElement(autoLoadElem);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar throttledCheckElements = throttle(checkElements);\n\n\t\tvar switchLoadingClass = function(e){\n\t\t\tvar elem = e.target;\n\n\t\t\tif (elem._lazyCache) {\n\t\t\t\tdelete elem._lazyCache;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tresetPreloading(e);\n\t\t\taddClass(elem, lazySizesCfg.loadedClass);\n\t\t\tremoveClass(elem, lazySizesCfg.loadingClass);\n\t\t\taddRemoveLoadEvents(elem, rafSwitchLoadingClass);\n\t\t\ttriggerEvent(elem, 'lazyloaded');\n\t\t};\n\t\tvar rafedSwitchLoadingClass = rAFIt(switchLoadingClass);\n\t\tvar rafSwitchLoadingClass = function(e){\n\t\t\trafedSwitchLoadingClass({target: e.target});\n\t\t};\n\n\t\tvar changeIframeSrc = function(elem, src){\n\t\t\tvar loadMode = elem.getAttribute('data-load-mode') || lazySizesCfg.iframeLoadMode;\n\n\t\t\t// loadMode can be also a string!\n\t\t\tif (loadMode == 0) {\n\t\t\t\telem.contentWindow.location.replace(src);\n\t\t\t} else if (loadMode == 1) {\n\t\t\t\telem.src = src;\n\t\t\t}\n\t\t};\n\n\t\tvar handleSources = function(source){\n\t\t\tvar customMedia;\n\n\t\t\tvar sourceSrcset = source[_getAttribute](lazySizesCfg.srcsetAttr);\n\n\t\t\tif( (customMedia = lazySizesCfg.customMedia[source[_getAttribute]('data-media') || source[_getAttribute]('media')]) ){\n\t\t\t\tsource.setAttribute('media', customMedia);\n\t\t\t}\n\n\t\t\tif(sourceSrcset){\n\t\t\t\tsource.setAttribute('srcset', sourceSrcset);\n\t\t\t}\n\t\t};\n\n\t\tvar lazyUnveil = rAFIt(function (elem, detail, isAuto, sizes, isImg){\n\t\t\tvar src, srcset, parent, isPicture, event, firesLoad;\n\n\t\t\tif(!(event = triggerEvent(elem, 'lazybeforeunveil', detail)).defaultPrevented){\n\n\t\t\t\tif(sizes){\n\t\t\t\t\tif(isAuto){\n\t\t\t\t\t\taddClass(elem, lazySizesCfg.autosizesClass);\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.setAttribute('sizes', sizes);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tsrcset = elem[_getAttribute](lazySizesCfg.srcsetAttr);\n\t\t\t\tsrc = elem[_getAttribute](lazySizesCfg.srcAttr);\n\n\t\t\t\tif(isImg) {\n\t\t\t\t\tparent = elem.parentNode;\n\t\t\t\t\tisPicture = parent && regPicture.test(parent.nodeName || '');\n\t\t\t\t}\n\n\t\t\t\tfiresLoad = detail.firesLoad || (('src' in elem) && (srcset || src || isPicture));\n\n\t\t\t\tevent = {target: elem};\n\n\t\t\t\taddClass(elem, lazySizesCfg.loadingClass);\n\n\t\t\t\tif(firesLoad){\n\t\t\t\t\tclearTimeout(resetPreloadingTimer);\n\t\t\t\t\tresetPreloadingTimer = setTimeout(resetPreloading, 2500);\n\t\t\t\t\taddRemoveLoadEvents(elem, rafSwitchLoadingClass, true);\n\t\t\t\t}\n\n\t\t\t\tif(isPicture){\n\t\t\t\t\tforEach.call(parent.getElementsByTagName('source'), handleSources);\n\t\t\t\t}\n\n\t\t\t\tif(srcset){\n\t\t\t\t\telem.setAttribute('srcset', srcset);\n\t\t\t\t} else if(src && !isPicture){\n\t\t\t\t\tif(regIframe.test(elem.nodeName)){\n\t\t\t\t\t\tchangeIframeSrc(elem, src);\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.src = src;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(isImg && (srcset || isPicture)){\n\t\t\t\t\tupdatePolyfill(elem, {src: src});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(elem._lazyRace){\n\t\t\t\tdelete elem._lazyRace;\n\t\t\t}\n\t\t\tremoveClass(elem, lazySizesCfg.lazyClass);\n\n\t\t\trAF(function(){\n\t\t\t\t// Part of this can be removed as soon as this fix is older: https://bugs.chromium.org/p/chromium/issues/detail?id=7731 (2015)\n\t\t\t\tvar isLoaded = elem.complete && elem.naturalWidth > 1;\n\n\t\t\t\tif( !firesLoad || isLoaded){\n\t\t\t\t\tif (isLoaded) {\n\t\t\t\t\t\taddClass(elem, lazySizesCfg.fastLoadedClass);\n\t\t\t\t\t}\n\t\t\t\t\tswitchLoadingClass(event);\n\t\t\t\t\telem._lazyCache = true;\n\t\t\t\t\tsetTimeout(function(){\n\t\t\t\t\t\tif ('_lazyCache' in elem) {\n\t\t\t\t\t\t\tdelete elem._lazyCache;\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 9);\n\t\t\t\t}\n\t\t\t\tif (elem.loading == 'lazy') {\n\t\t\t\t\tisLoading--;\n\t\t\t\t}\n\t\t\t}, true);\n\t\t});\n\n\t\t/**\n\t\t *\n\t\t * @param elem { Element }\n\t\t */\n\t\tvar unveilElement = function (elem){\n\t\t\tif (elem._lazyRace) {return;}\n\t\t\tvar detail;\n\n\t\t\tvar isImg = regImg.test(elem.nodeName);\n\n\t\t\t//allow using sizes=\"auto\", but don't use. it's invalid. Use data-sizes=\"auto\" or a valid value for sizes instead (i.e.: sizes=\"80vw\")\n\t\t\tvar sizes = isImg && (elem[_getAttribute](lazySizesCfg.sizesAttr) || elem[_getAttribute]('sizes'));\n\t\t\tvar isAuto = sizes == 'auto';\n\n\t\t\tif( (isAuto || !isCompleted) && isImg && (elem[_getAttribute]('src') || elem.srcset) && !elem.complete && !hasClass(elem, lazySizesCfg.errorClass) && hasClass(elem, lazySizesCfg.lazyClass)){return;}\n\n\t\t\tdetail = triggerEvent(elem, 'lazyunveilread').detail;\n\n\t\t\tif(isAuto){\n\t\t\t\t autoSizer.updateElem(elem, true, elem.offsetWidth);\n\t\t\t}\n\n\t\t\telem._lazyRace = true;\n\t\t\tisLoading++;\n\n\t\t\tlazyUnveil(elem, detail, isAuto, sizes, isImg);\n\t\t};\n\n\t\tvar afterScroll = debounce(function(){\n\t\t\tlazySizesCfg.loadMode = 3;\n\t\t\tthrottledCheckElements();\n\t\t});\n\n\t\tvar altLoadmodeScrollListner = function(){\n\t\t\tif(lazySizesCfg.loadMode == 3){\n\t\t\t\tlazySizesCfg.loadMode = 2;\n\t\t\t}\n\t\t\tafterScroll();\n\t\t};\n\n\t\tvar onload = function(){\n\t\t\tif(isCompleted){return;}\n\t\t\tif(Date.now() - started < 999){\n\t\t\t\tsetTimeout(onload, 999);\n\t\t\t\treturn;\n\t\t\t}\n\n\n\t\t\tisCompleted = true;\n\n\t\t\tlazySizesCfg.loadMode = 3;\n\n\t\t\tthrottledCheckElements();\n\n\t\t\taddEventListener('scroll', altLoadmodeScrollListner, true);\n\t\t};\n\n\t\treturn {\n\t\t\t_: function(){\n\t\t\t\tstarted = Date.now();\n\n\t\t\t\tlazysizes.elements = document.getElementsByClassName(lazySizesCfg.lazyClass);\n\t\t\t\tpreloadElems = document.getElementsByClassName(lazySizesCfg.lazyClass + ' ' + lazySizesCfg.preloadClass);\n\n\t\t\t\taddEventListener('scroll', throttledCheckElements, true);\n\n\t\t\t\taddEventListener('resize', throttledCheckElements, true);\n\n\t\t\t\taddEventListener('pageshow', function (e) {\n\t\t\t\t\tif (e.persisted) {\n\t\t\t\t\t\tvar loadingElements = document.querySelectorAll('.' + lazySizesCfg.loadingClass);\n\n\t\t\t\t\t\tif (loadingElements.length && loadingElements.forEach) {\n\t\t\t\t\t\t\trequestAnimationFrame(function () {\n\t\t\t\t\t\t\t\tloadingElements.forEach( function (img) {\n\t\t\t\t\t\t\t\t\tif (img.complete) {\n\t\t\t\t\t\t\t\t\t\tunveilElement(img);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif(window.MutationObserver){\n\t\t\t\t\tnew MutationObserver( throttledCheckElements ).observe( docElem, {childList: true, subtree: true, attributes: true} );\n\t\t\t\t} else {\n\t\t\t\t\tdocElem[_addEventListener]('DOMNodeInserted', throttledCheckElements, true);\n\t\t\t\t\tdocElem[_addEventListener]('DOMAttrModified', throttledCheckElements, true);\n\t\t\t\t\tsetInterval(throttledCheckElements, 999);\n\t\t\t\t}\n\n\t\t\t\taddEventListener('hashchange', throttledCheckElements, true);\n\n\t\t\t\t//, 'fullscreenchange'\n\t\t\t\t['focus', 'mouseover', 'click', 'load', 'transitionend', 'animationend'].forEach(function(name){\n\t\t\t\t\tdocument[_addEventListener](name, throttledCheckElements, true);\n\t\t\t\t});\n\n\t\t\t\tif((/d$|^c/.test(document.readyState))){\n\t\t\t\t\tonload();\n\t\t\t\t} else {\n\t\t\t\t\taddEventListener('load', onload);\n\t\t\t\t\tdocument[_addEventListener]('DOMContentLoaded', throttledCheckElements);\n\t\t\t\t\tsetTimeout(onload, 20000);\n\t\t\t\t}\n\n\t\t\t\tif(lazysizes.elements.length){\n\t\t\t\t\tcheckElements();\n\t\t\t\t\trAF._lsFlush();\n\t\t\t\t} else {\n\t\t\t\t\tthrottledCheckElements();\n\t\t\t\t}\n\t\t\t},\n\t\t\tcheckElems: throttledCheckElements,\n\t\t\tunveil: unveilElement,\n\t\t\t_aLSL: altLoadmodeScrollListner,\n\t\t};\n\t})();\n\n\n\tvar autoSizer = (function(){\n\t\tvar autosizesElems;\n\n\t\tvar sizeElement = rAFIt(function(elem, parent, event, width){\n\t\t\tvar sources, i, len;\n\t\t\telem._lazysizesWidth = width;\n\t\t\twidth += 'px';\n\n\t\t\telem.setAttribute('sizes', width);\n\n\t\t\tif(regPicture.test(parent.nodeName || '')){\n\t\t\t\tsources = parent.getElementsByTagName('source');\n\t\t\t\tfor(i = 0, len = sources.length; i < len; i++){\n\t\t\t\t\tsources[i].setAttribute('sizes', width);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!event.detail.dataAttr){\n\t\t\t\tupdatePolyfill(elem, event.detail);\n\t\t\t}\n\t\t});\n\t\t/**\n\t\t *\n\t\t * @param elem {Element}\n\t\t * @param dataAttr\n\t\t * @param [width] { number }\n\t\t */\n\t\tvar getSizeElement = function (elem, dataAttr, width){\n\t\t\tvar event;\n\t\t\tvar parent = elem.parentNode;\n\n\t\t\tif(parent){\n\t\t\t\twidth = getWidth(elem, parent, width);\n\t\t\t\tevent = triggerEvent(elem, 'lazybeforesizes', {width: width, dataAttr: !!dataAttr});\n\n\t\t\t\tif(!event.defaultPrevented){\n\t\t\t\t\twidth = event.detail.width;\n\n\t\t\t\t\tif(width && width !== elem._lazysizesWidth){\n\t\t\t\t\t\tsizeElement(elem, parent, event, width);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar updateElementsSizes = function(){\n\t\t\tvar i;\n\t\t\tvar len = autosizesElems.length;\n\t\t\tif(len){\n\t\t\t\ti = 0;\n\n\t\t\t\tfor(; i < len; i++){\n\t\t\t\t\tgetSizeElement(autosizesElems[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar debouncedUpdateElementsSizes = debounce(updateElementsSizes);\n\n\t\treturn {\n\t\t\t_: function(){\n\t\t\t\tautosizesElems = document.getElementsByClassName(lazySizesCfg.autosizesClass);\n\t\t\t\taddEventListener('resize', debouncedUpdateElementsSizes);\n\t\t\t},\n\t\t\tcheckElems: debouncedUpdateElementsSizes,\n\t\t\tupdateElem: getSizeElement\n\t\t};\n\t})();\n\n\tvar init = function(){\n\t\tif(!init.i && document.getElementsByClassName){\n\t\t\tinit.i = true;\n\t\t\tautoSizer._();\n\t\t\tloader._();\n\t\t}\n\t};\n\n\tsetTimeout(function(){\n\t\tif(lazySizesCfg.init){\n\t\t\tinit();\n\t\t}\n\t});\n\n\tlazysizes = {\n\t\t/**\n\t\t * @type { LazySizesConfigPartial }\n\t\t */\n\t\tcfg: lazySizesCfg,\n\t\tautoSizer: autoSizer,\n\t\tloader: loader,\n\t\tinit: init,\n\t\tuP: updatePolyfill,\n\t\taC: addClass,\n\t\trC: removeClass,\n\t\thC: hasClass,\n\t\tfire: triggerEvent,\n\t\tgW: getWidth,\n\t\trAF: rAF,\n\t};\n\n\treturn lazysizes;\n}\n));\n","import { trackComponent } from './tracking'\n\nconst clickElements = document.querySelectorAll('[data-click-tracking]')\nconst accordionElements = document.querySelectorAll('[data-click-accordion-tracking]')\nconst selectElements = document.querySelectorAll('[data-select-tracking]')\n\nconst getComponentData = (trackingProps) => ({\n /* eslint-disable camelcase */\n component_category: trackingProps.component_category,\n component_id: trackingProps.component_id,\n component_name: trackingProps.component_name,\n contentful_name: trackingProps.contentful_name,\n contentful_variant: trackingProps.contentful_variant,\n link_path: trackingProps.link_path,\n})\n\nconst trackClickEvent = (element: Element) => {\n const trackingProps = JSON.parse(element.getAttribute('data-click-tracking') ?? '{}')\n const componentData = getComponentData(trackingProps)\n const event = trackingProps.event ?? 'Dynamic Component Event'\n const eventName = trackingProps.event_name ?? 'CTAButtonClicked'\n\n trackComponent(event, eventName, componentData, {\n ...trackingProps.additionalProps,\n })\n}\n\nconst trackClickAccordionEvent = (element: Element) => {\n const accordion = element.getAttribute('data-click-accordion-tracking')\n const trackingProps = accordion ? JSON.parse(accordion) : ''\n const componentData = getComponentData(trackingProps)\n\n const detailsOpen = element.parentElement?.hasAttribute('open')\n\n const event = detailsOpen ? 'Accordion Closed' : 'Accordion Opened'\n const eventName = trackingProps.event_name ?? event\n\n trackComponent(event, eventName, componentData, {\n ...trackingProps.additionalProps,\n })\n}\n\nconst trackSelectEvent = (element: Element, selected: boolean) => {\n const trackingProps = JSON.parse(element.getAttribute('data-select-tracking') ?? '{}')\n const componentData = getComponentData(trackingProps)\n const event = trackingProps.event ?? 'Dynamic Component Event'\n\n let eventName\n\n if (selected) {\n const selectedElement = element as HTMLSelectElement\n eventName = trackingProps.selectEventName ?? 'Option Selected'\n const selectedOption = selectedElement.selectedOptions[0]\n trackingProps.additionalProps = {\n ...trackingProps.additionalProps,\n title: selectedOption.text,\n index: selectedOption.index,\n }\n } else {\n eventName = trackingProps.clickEventName ?? 'Select Clicked'\n }\n\n trackComponent(event, eventName, componentData, {\n ...trackingProps.additionalProps,\n })\n}\n\nclickElements.forEach((element) => {\n element?.addEventListener('click', () => {\n trackClickEvent(element)\n })\n\n element?.addEventListener('auxclick', () => {\n trackClickEvent(element)\n })\n})\n\naccordionElements.forEach((element) => {\n element?.addEventListener('click', () => {\n trackClickAccordionEvent(element)\n })\n\n element?.addEventListener('auxclick', () => {\n trackClickAccordionEvent(element)\n })\n})\n\nselectElements.forEach((element) => {\n element?.addEventListener('click', () => {\n trackSelectEvent(element, false)\n })\n\n element?.addEventListener('auxclick', () => {\n trackSelectEvent(element, false)\n })\n\n element?.addEventListener('change', () => {\n trackSelectEvent(element, true)\n })\n})\n","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nmodule.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nmodule.exports = _nonIterableRest, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\nmodule.exports = _asyncToGenerator, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;"],"sourceRoot":""}