{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/index.js","webpack:///./src/js/app.js","webpack:///./src/js/components/background-video.js","webpack:///./src/js/components/career-filter-dropdown.js","webpack:///./src/js/components/careers.js","webpack:///./src/js/components/carousel.js","webpack:///./src/js/components/cookie-bar.js","webpack:///./src/js/components/filter.js","webpack:///./src/js/components/footer.js","webpack:///./src/js/components/forms.js","webpack:///./src/js/components/navigation.js","webpack:///./src/js/components/split-background.js","webpack:///./src/js/components/split-multiple-backgrounds.js","webpack:///./src/js/components/swiper-carousels.js","webpack:///./src/js/jquery-loader.js","webpack:///./src/js/modules/debounce.js","webpack:///./src/js/modules/device-detection.js","webpack:///./src/js/modules/masthead-vimeo.js","webpack:///./src/js/modules/scroll-reveal.js","webpack:///./src/js/modules/tracking.js","webpack:///./src/scss/app.scss"],"names":["documentBody","window","onload","event","document","querySelector","classList","add","remove","initSwiperCarousels","initDeviceDetection","initMastHeadVimeo","backgroundVideos","querySelectorAll","showVideoOnLoad","parent","video","button","container","showVideo","setTimeout","toggleVideoPlayback","paused","play","pause","currentTime","addEventListener","contains","ev","stopPropagation","length","forEach","filterPanelList","initFilterPanel","filterPanel","inner","menu","menuItems","dropdownLink","urlSearchParams","Proxy","URLSearchParams","location","search","get","searchParams","prop","selectedCategoryId","category","selectedCategory","insertAdjacentElement","cloneNode","selectedCategoryLink","href","selectedCategoryText","dataset","text","textContent","innerWidth","isAboveHalfway","position","getBoundingClientRect","top","innerHeight","scrollHandler","removeAttribute","ticking","e","requestAnimationFrame","jobApplyNowBtns","jobTitleFormInput","jobTitle","pathname","split","btn","addJobTitle","has","value","replace","map","s","charAt","toUpperCase","substring","join","carousels","carousel","carouselSlides","autoplayBtn","prevSlideBtn","nextSlideBtn","currentSlideOutput","totalSlides","parseInt","slideAnimateOutClass","slideShownClass","autoplayEnabled","autoplayTiming","currentSlide","currentSlidesPosition","Array","u","i","currentSlideElement","previousSlideElement","slideAnimationDuration","carouselSlideAnimating","carouselPaused","autoplayTimeout","slide","style","zIndex","setAttribute","showPreviousSlide","pos","updateSlides","showNextSlide","clearTimeout","playCarousel","pauseCarousel","vh","documentElement","setProperty","turnCookiesOnBtn","turnCookiesOffBtn","cookiesStatus","cookiesStatusOnTitle","cookiesStatusOffTitle","setCookieStatusOff","setCookieStatusOn","initOneTrustListener","OneTrust","interval","setInterval","clearInterval","OnConsentChanged","detail","turnOffCookies","RejectAll","localStorage","setItem","dataLayer","push","cookieOptIn","turnOnCookies","AllowAll","initialStatus","getItem","loadMoreBtn","currentUrl","currentPage","footer","mainContent","setFooterSpacing","footerHeight","height","marginBottom","debounce","fakeFileInputBtn","realFileInputBtn","btnText","closest","previousElementSibling","trim","click","addFileMessage","message","uploadValue","srcElement","encodeURI","innerHTML","header","navMenuButton","navOverlay","scrollYPos","initialPosition","initialOverflowY","openNav","body","overflowY","scrollTop","left","right","closeNav","scrollTo","initSplitBackground","component","firstChild","firstChildImage","cardsBackground","setCardsBackgroundHeight","cardDistanceFromTop","cardImageOffset","cardsBackgroundHeight","splitBackgroundComponentList","multipleSplitComponent","childComponents","prevComponentBgClass","childComponent","childComponentBgClass","filter","cl","test","paddingTop","sharedConfig","slidesPerView","uniqueNavElements","watchOverflow","observer","observeParents","spaceBetween","breakpoints","modules","Navigation","Pagination","careerCarouselConfig","slidesPerGroup","loop","slideToClickedSlide","imageCarouselConfig","getConfig","element","newConfig","carouseltype","Object","assign","swiperCarousels","x","max","thisConfig","carouselPagination","carouselControlPrev","carouselControlNext","pagination","el","navigation","prevEl","nextEl","swiperCarousel","Swiper","$","jQuery","func","wait","timeout","context","args","arguments","apply","userAgent","navigator","includes","playerNodeList","playerElements","players","playerElement","player","Player","showPlayer","opacity","getPaused","then","isPaused","on","masthead","revealClass","options","duration","easing","scale","distance","ScrollReveal","reveal","tracking","init","setupElementTaggingTracking","setupUmbracoFormTracking","setupCustomEventTracking","checkUmbracoFormTracking","isDev","hostname","match","log","console","target","matches","cat","getAttribute","act","lab","trackEvent","setPageview","pageView","pageViewOptions","trackPageview","SUPPRESS_EVENT","APPEND","PREPEND","KEEP_QUERYSTRING","dlObject","action","label","eventData","eventCategory","eventAction","eventLabel","setDataLayerKeyValue","key","data","img","info","tagName","socialType","isOpen","linkText","innerText","umbFormButton","jobtitle","pageview","sessionStorage","umbFormSubmitted","removeItem"],"mappings":";QAAA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA;QACA,QAAQ,oBAAoB;QAC5B;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA,iBAAiB,4BAA4B;QAC7C;QACA;QACA,kBAAkB,2BAA2B;QAC7C;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;;QAEA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;QAEA;QACA;QACA;QACA;QACA,gBAAgB,uBAAuB;QACvC;;;QAGA;QACA;QACA;QACA;;;;;;;;;;;;;ACvJA;AAAA;AAAA;AAAA;AAAA;CAGA;;;;;;;;;;;;;;ACHA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;CACuD;;CAGvD;;CAGA;;AACA;AACA;CAGA;;AACA;AACA;AACA;AACA;CAGA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA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","file":"js/app.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\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 = \"\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([\"./src/index.js\",\"vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","// SCSS\r\nimport \"./scss/app.scss\";\r\n\r\n// JS\r\nimport \"./js/app.js\";","// Polyfills\r\nimport URLSearchParams from '@ungap/url-search-params' // url search parametr API polyfill\r\nimport 'element-closest-polyfill'\r\n\r\n// jQuery\r\nimport './jquery-loader'\r\n\r\n// jQuery Validator (Umbraco Forms)\r\nimport 'jquery-validation'\r\nimport 'jquery-validation-unobtrusive'\r\nimport 'jquery-ajax-unobtrusive'\r\n\r\n// Modules\r\nimport initDeviceDetection from './modules/device-detection'\r\nimport initMastHeadVimeo from './modules/masthead-vimeo'\r\nimport './modules/scroll-reveal'\r\nimport './modules/tracking'\r\nimport 'swiped-events'\r\n\r\n// Components\r\nimport './components/background-video'\r\nimport './components/careers'\r\nimport './components/career-filter-dropdown'\r\nimport './components/carousel'\r\nimport './components/cookie-bar'\r\nimport './components/filter'\r\nimport './components/footer'\r\nimport './components/forms'\r\nimport './components/navigation'\r\nimport './components/split-background'\r\nimport './components/split-multiple-backgrounds'\r\nimport { initSwiperCarousels } from './components/swiper-carousels'\r\n\r\n// Onload Events\r\nlet documentBody = ''\r\nwindow.onload = (event) => {\r\n documentBody = document.querySelector('body')\r\n documentBody.classList.add('content-loaded')\r\n documentBody.classList.remove('no-js')\r\n\r\n initSwiperCarousels()\r\n initDeviceDetection()\r\n initMastHeadVimeo()\r\n}\r\n","const backgroundVideos = document.querySelectorAll('.bg-video')\r\nconst showVideoOnLoad = (parent) => {\r\n if (!parent) return\r\n const video = parent.querySelector('.background-video')\r\n const button = parent.querySelector('.background-video__button')\r\n const container = parent.querySelector('.container')\r\n\r\n if (!video) return\r\n function showVideo() {\r\n video.classList.add('background-video--playing')\r\n button &&\r\n button.classList &&\r\n button.classList.add('background-video__button--visible')\r\n\r\n setTimeout(() => {\r\n button.classList.add('background-video__button--initialized')\r\n }, 2000)\r\n }\r\n\r\n const toggleVideoPlayback = () => {\r\n if (video.paused) {\r\n button.classList.remove('background-video__button--paused')\r\n video.play()\r\n } else {\r\n button.classList.add('background-video__button--paused')\r\n video.pause()\r\n }\r\n }\r\n\r\n video.currentTime ? showVideo() : video.addEventListener('play', showVideo)\r\n\r\n if (\r\n button &&\r\n button.classList &&\r\n button.classList.contains('background-video__button')\r\n ) {\r\n button.addEventListener('click', (ev) => {\r\n ev.stopPropagation()\r\n toggleVideoPlayback()\r\n })\r\n }\r\n}\r\nbackgroundVideos &&\r\n backgroundVideos.length &&\r\n backgroundVideos.forEach(showVideoOnLoad)\r\n","const filterPanelList = document.querySelectorAll('.filter-panel')\r\nfunction initFilterPanel(filterPanel) {\r\n const inner = filterPanel.querySelector('.filter-panel__inner')\r\n const menu = filterPanel.querySelector('.filter-panel__menu')\r\n const menuItems = filterPanel.querySelector('.filter-panel__menu .items')\r\n const dropdownLink = filterPanel.querySelector('summary a')\r\n const urlSearchParams = new Proxy(\r\n new URLSearchParams(window.location.search),\r\n {\r\n get: (searchParams, prop) => searchParams.get(prop),\r\n }\r\n )\r\n const selectedCategoryId = urlSearchParams.category\r\n const selectedCategory =\r\n selectedCategoryId &&\r\n document.querySelector(`[data-categoryid=\"${selectedCategoryId}\"]`)\r\n\r\n if (selectedCategory) {\r\n // Add \"All positions\" option to sub-list if category selected\r\n menuItems &&\r\n menuItems.insertAdjacentElement(\r\n 'afterbegin',\r\n dropdownLink.cloneNode(true)\r\n )\r\n\r\n // Set dropdown to selected category from query string on page load\r\n const selectedCategoryLink = selectedCategory.href\r\n const selectedCategoryText = selectedCategory.dataset.text\r\n\r\n dropdownLink.href = selectedCategoryLink\r\n dropdownLink.dataset.text = selectedCategoryText\r\n dropdownLink.textContent = selectedCategoryText\r\n\r\n // Remove selected category from filter list to avoid duplication\r\n selectedCategory.remove()\r\n }\r\n if (window.innerWidth < 1024 || !inner || !menu) {\r\n return\r\n }\r\n function isAboveHalfway() {\r\n const position = inner.getBoundingClientRect().top\r\n return position <= window.innerHeight / 2\r\n }\r\n function scrollHandler() {\r\n menu.removeAttribute('open') // Close native details modal\r\n if (isAboveHalfway()) {\r\n menu.classList.add('filter-panel__menu--above-halfway-point')\r\n } else {\r\n menu.classList.remove('filter-panel__menu--above-halfway-point')\r\n }\r\n }\r\n let ticking = false\r\n document.addEventListener('scroll', function (e) {\r\n if (!ticking) {\r\n window.requestAnimationFrame(function () {\r\n scrollHandler()\r\n ticking = false\r\n })\r\n ticking = true\r\n }\r\n })\r\n}\r\nfilterPanelList && filterPanelList.forEach(initFilterPanel)\r\n","const jobApplyNowBtns = document.querySelectorAll(\r\n '[href=\"/job-application-page/\"]'\r\n)\r\nconst jobTitleFormInput = document.querySelector(\r\n '[data-val-required=\"Please select a job title\"]'\r\n)\r\n\r\nif (jobApplyNowBtns.length > 0) {\r\n const jobTitle = window.location.pathname.split('/careers/')[1].split('/')[0]\r\n\r\n jobApplyNowBtns.forEach((btn) => (btn.href += '?jobtitle=' + jobTitle))\r\n}\r\n\r\nconst addJobTitle = () => {\r\n // add job title to the job title input field\r\n const searchParams = new URLSearchParams(window.location.search)\r\n if (searchParams.has('jobtitle')) {\r\n jobTitleFormInput.value = searchParams\r\n .get('jobtitle')\r\n .replace(/-/g, ' ')\r\n .split(' ')\r\n .map((s) => s.charAt(0).toUpperCase() + s.substring(1))\r\n .join(' ')\r\n }\r\n}\r\n\r\nif (jobTitleFormInput) {\r\n addJobTitle()\r\n}\r\n","const carousels = document.querySelectorAll('.carousel-component')\r\n\r\nif (carousels.length > 0) {\r\n carousels.forEach((carousel) => {\r\n const carouselSlides = carousel.querySelectorAll('.carousel-slide')\r\n const autoplayBtn = carousel.querySelector(\r\n '.carousel-controls__autoplay-btn'\r\n )\r\n const prevSlideBtn = carousel.querySelector('.carousel-controls__prev-btn')\r\n const nextSlideBtn = carousel.querySelector('.carousel-controls__next-btn')\r\n const currentSlideOutput = carousel.querySelector(\r\n '.carousel-controls__current-slide'\r\n )\r\n const totalSlides = parseInt(\r\n carousel.querySelector('.carousel-controls__total-slides').textContent\r\n )\r\n const slideAnimateOutClass = 'carousel-slide--animate-out'\r\n const slideShownClass = 'carousel-slide--shown'\r\n const autoplayEnabled =\r\n carousel.dataset.autoplayEnabled === 'True' ? true : false\r\n const autoplayTiming =\r\n carousel.dataset.autoplayTiming > 0\r\n ? carousel.dataset.autoplayTiming * 1000\r\n : 0\r\n\r\n let currentSlide = 1\r\n let currentSlidesPosition = [...Array(carouselSlides.length)].map(\r\n (u, i) => i * -1\r\n )\r\n let currentSlideElement = null\r\n let previousSlideElement = null\r\n let slideAnimationDuration = 2800\r\n let carouselSlideAnimating = false\r\n let carouselPaused = false\r\n let autoplayTimeout = null\r\n\r\n // set initial slide z-index\r\n carouselSlides.forEach((slide, i) => {\r\n slide.style.zIndex = i * -1\r\n })\r\n\r\n //set 1st carousel slide props\r\n carouselSlides[0].classList.add(slideShownClass)\r\n carouselSlides[0].setAttribute('aria-hidden', false)\r\n\r\n function showPreviousSlide() {\r\n previousSlideElement = carouselSlides[currentSlide - 1]\r\n\r\n // get new carousel slides z-indexes\r\n currentSlidesPosition = currentSlidesPosition.map((pos) => {\r\n if (pos === (currentSlidesPosition.length - 1) * -1) {\r\n return 0\r\n } else {\r\n return (pos -= 1)\r\n }\r\n })\r\n\r\n previousSlideElement.classList.add(slideAnimateOutClass)\r\n\r\n // set current slides\r\n if (currentSlide - 1 < 1) {\r\n currentSlide = totalSlides\r\n } else {\r\n currentSlide -= 1\r\n }\r\n\r\n updateSlides()\r\n }\r\n\r\n function showNextSlide() {\r\n previousSlideElement = carouselSlides[currentSlide - 1]\r\n\r\n // get new carousel slides z-indexes\r\n currentSlidesPosition = currentSlidesPosition.map((pos) => {\r\n if (pos === 0) {\r\n return (currentSlidesPosition.length - 1) * -1\r\n } else {\r\n return (pos += 1)\r\n }\r\n })\r\n\r\n previousSlideElement.classList.add(slideAnimateOutClass)\r\n\r\n // set current slides\r\n if (currentSlide + 1 > totalSlides) {\r\n currentSlide = 1\r\n } else {\r\n currentSlide += 1\r\n }\r\n\r\n updateSlides()\r\n }\r\n\r\n function updateSlides() {\r\n currentSlideElement = carouselSlides[currentSlide - 1]\r\n\r\n currentSlideOutput.textContent = currentSlide\r\n\r\n carouselSlideAnimating = true\r\n\r\n previousSlideElement.classList.remove(slideShownClass)\r\n currentSlideElement.classList.add(slideShownClass)\r\n\r\n previousSlideElement.setAttribute('aria-hidden', true)\r\n currentSlideElement.setAttribute('aria-hidden', false)\r\n\r\n // set new slide z-indexes\r\n carouselSlides.forEach((slide, i) => {\r\n slide.style.zIndex = currentSlidesPosition[i]\r\n })\r\n\r\n if (autoplayEnabled) {\r\n window.clearTimeout(autoplayTimeout)\r\n }\r\n\r\n if (autoplayEnabled && carouselPaused) {\r\n playCarousel()\r\n }\r\n\r\n setTimeout(() => {\r\n carouselSlideAnimating = false\r\n\r\n previousSlideElement.classList.remove(slideAnimateOutClass)\r\n\r\n if (autoplayEnabled) {\r\n autoplayTimeout = window.setTimeout(showNextSlide, autoplayTiming)\r\n }\r\n }, slideAnimationDuration)\r\n }\r\n\r\n function playCarousel() {\r\n carouselPaused = false\r\n autoplayBtn.classList.remove('carousel-controls__autoplay-btn--paused')\r\n autoplayBtn.setAttribute('aria-label', 'Pause Carousel')\r\n autoplayBtn.setAttribute('aria-pressed', 'false')\r\n }\r\n\r\n function pauseCarousel() {\r\n carouselPaused = true\r\n autoplayBtn.classList.add('carousel-controls__autoplay-btn--paused')\r\n autoplayBtn.setAttribute('aria-label', 'Resume Carousel')\r\n autoplayBtn.setAttribute('aria-pressed', 'true')\r\n window.clearTimeout(autoplayTimeout)\r\n }\r\n\r\n prevSlideBtn.addEventListener('click', () => {\r\n if (!carouselSlideAnimating) {\r\n showPreviousSlide()\r\n }\r\n })\r\n\r\n nextSlideBtn.addEventListener('click', () => {\r\n if (!carouselSlideAnimating) {\r\n showNextSlide()\r\n }\r\n })\r\n\r\n carousel.addEventListener('swiped-right', () => {\r\n if (!carouselSlideAnimating) {\r\n showPreviousSlide()\r\n }\r\n })\r\n\r\n carousel.addEventListener('swiped-left', () => {\r\n if (!carouselSlideAnimating) {\r\n showNextSlide()\r\n }\r\n })\r\n\r\n if (autoplayEnabled) {\r\n // Set autoplay timeout to show next slide\r\n autoplayTimeout = window.setTimeout(showNextSlide, autoplayTiming)\r\n\r\n autoplayBtn.addEventListener('click', function () {\r\n if (!carouselSlideAnimating) {\r\n if (carouselPaused) {\r\n // Play Carousel\r\n playCarousel()\r\n showNextSlide()\r\n } else {\r\n // Pause Carousel\r\n pauseCarousel()\r\n }\r\n }\r\n })\r\n }\r\n })\r\n}\r\n\r\nlet vh = window.innerHeight * 0.01\r\n// Then we set the value in the --vh custom property to the root of the document\r\ndocument.documentElement.style.setProperty('--vh', `${vh}px`)\r\n\r\n// We listen to the resize event\r\nwindow.addEventListener('resize', () => {\r\n // We execute the same script as before\r\n let vh = window.innerHeight * 0.01\r\n document.documentElement.style.setProperty('--vh', `${vh}px`)\r\n})\r\n","/*\r\n * Cookie consent page indicator and control elements\r\n */\r\n\r\nconst turnCookiesOnBtn = document.querySelector(\r\n '*[data-js-turn-on-cookies-btn]'\r\n)\r\nconst turnCookiesOffBtn = document.querySelector(\r\n '*[data-js-turn-off-cookies-btn]'\r\n)\r\nconst cookiesStatus = document.querySelector('*[data-js-cookie-status]')\r\nconst cookiesStatusOnTitle = document.querySelector(\r\n '*[data-js-cookie-status-on-title]'\r\n)\r\nconst cookiesStatusOffTitle = document.querySelector(\r\n '*[data-js-cookie-status-off-title]'\r\n)\r\n\r\nif (\r\n cookiesStatus &&\r\n turnCookiesOffBtn &&\r\n turnCookiesOnBtn &&\r\n cookiesStatusOnTitle &&\r\n cookiesStatusOffTitle\r\n) {\r\n function setCookieStatusOff() {\r\n cookiesStatus.classList.remove('cookie-status--on')\r\n cookiesStatus.classList.add('cookie-status--off')\r\n cookiesStatusOffTitle.removeAttribute('aria-hidden')\r\n cookiesStatusOnTitle.setAttribute('aria-hidden', true)\r\n }\r\n\r\n function setCookieStatusOn() {\r\n cookiesStatus.classList.remove('cookie-status--off')\r\n cookiesStatus.classList.add('cookie-status--on')\r\n cookiesStatusOnTitle.removeAttribute('aria-hidden')\r\n cookiesStatusOffTitle.setAttribute('aria-hidden', true)\r\n }\r\n\r\n const initialStatus = localStorage.getItem('cookie-status')\r\n if (initialStatus && initialStatus === 'reject') {\r\n setCookieStatusOff()\r\n } else {\r\n setCookieStatusOn()\r\n }\r\n\r\n let interval\r\n function initOneTrustListener() {\r\n if (!window.OneTrust) {\r\n if (!interval) {\r\n interval = setInterval(initOneTrustListener, 200)\r\n }\r\n } else {\r\n clearInterval(interval)\r\n OneTrust.OnConsentChanged(function (e) {\r\n // ON: e.detail: ['C0002', 'C0004', 'C0003', 'C0001'] - allow all cookie types\r\n // OFF: e.detail: ['C0001'] - allow essential cookie types\r\n if (e.detail.length > 1) {\r\n setCookieStatusOn()\r\n } else {\r\n setCookieStatusOff()\r\n }\r\n })\r\n }\r\n }\r\n initOneTrustListener()\r\n\r\n function turnOffCookies() {\r\n // Reject all non essential cookies\r\n OneTrust && OneTrust.RejectAll()\r\n localStorage.setItem('cookie-status', 'reject')\r\n // Set GA cookie opt in, cookieOptIn is a custom GA property we have added to enable/ disable tracking, see TagManagerHead.cshtml for more details\r\n window.dataLayer.push({\r\n cookieOptIn: false,\r\n event: 'setCookieOptIn',\r\n })\r\n }\r\n\r\n function turnOnCookies() {\r\n // Allow all non essential cookies\r\n OneTrust && OneTrust.AllowAll()\r\n localStorage.setItem('cookie-status', 'allow')\r\n // Set GA cookie opt in, cookieOptIn is a custom GA property we have added to enable/ disable tracking, see TagManagerHead.cshtml for more details\r\n window.dataLayer.push({\r\n cookieOptIn: true,\r\n event: 'setCookieOptIn',\r\n })\r\n }\r\n\r\n if (turnCookiesOnBtn) {\r\n turnCookiesOnBtn.addEventListener('click', turnOnCookies)\r\n }\r\n\r\n if (turnCookiesOffBtn) {\r\n turnCookiesOffBtn.addEventListener('click', turnOffCookies)\r\n }\r\n}\r\n","const loadMoreBtn = document.querySelector('.load-more__btn')\r\n\r\nif (loadMoreBtn) {\r\n const currentUrl = window.location.href.split('?')\r\n const category = currentUrl[1]\r\n ? currentUrl[1].split('#')[0].split('&page=')[0]\r\n : ''\r\n\r\n let currentPage =\r\n (currentUrl[1] && currentUrl[1].split('#')[0].split('&page=')[1]) || 1\r\n\r\n loadMoreBtn.addEventListener('click', () => {\r\n // Increment page parameter\r\n currentPage++\r\n //Load new items\r\n window.location.href =\r\n currentUrl[0] +\r\n '?' +\r\n category +\r\n '&page=' +\r\n currentPage +\r\n '#filter-results'\r\n })\r\n}\r\n","import debounce from '../modules/debounce'\r\n\r\nconst footer = document.querySelector('.footer')\r\nconst mainContent = document.querySelector('main')\r\n\r\nfunction setFooterSpacing() {\r\n const footerHeight = footer.getBoundingClientRect().height\r\n\r\n //Check if screen height is tall enough to enable reveal effect\r\n if (window.innerHeight >= footerHeight) {\r\n //Enable reveal effect\r\n footer.style.position = 'fixed'\r\n mainContent.style.marginBottom = footerHeight + 'px'\r\n } else {\r\n //Disable reveal effect\r\n footer.style.position = 'static'\r\n mainContent.style.marginBottom = 0\r\n }\r\n}\r\n\r\nwindow.addEventListener('resize', debounce(setFooterSpacing, 100))\r\n\r\nsetFooterSpacing()\r\n","const fakeFileInputBtn = document.querySelector('.file-input__btn')\r\nconst realFileInputBtn = document.querySelector('.file-input__input')\r\n/*\r\nfunction addFileMessage() {\r\n let message = document.querySelector(\".file-upload-message\");\r\n realFileInputBtn.addEventListener(\"change\", (e) => {\r\n\r\n let uploadValue = e.srcElement.value.replace(/^.*[\\\\\\/]/, '');\r\n uploadValue = encodeURI(uploadValue);\r\n message.innerHTML = uploadValue;\r\n\r\n });\r\n}\r\n*/\r\nif (fakeFileInputBtn) {\r\n const btnText = fakeFileInputBtn\r\n .closest('.form__input')\r\n .previousElementSibling.textContent.split('*')[0]\r\n .trim()\r\n\r\n //Set button text\r\n fakeFileInputBtn.textContent = btnText\r\n fakeFileInputBtn.setAttribute('data-text', btnText)\r\n\r\n fakeFileInputBtn.addEventListener('click', () => {\r\n //Click on real file input\r\n realFileInputBtn.click()\r\n })\r\n\r\n addFileMessage()\r\n}\r\n\r\nfunction addFileMessage() {\r\n if (realFileInputBtn) {\r\n let message = document.querySelector('.file-upload-message')\r\n realFileInputBtn.addEventListener('change', (e) => {\r\n let uploadValue = e.srcElement.value.replace(/^.*[\\\\\\/]/, '')\r\n uploadValue = encodeURI(uploadValue)\r\n message.innerHTML = uploadValue\r\n })\r\n }\r\n}\r\n\r\naddFileMessage()\r\n","const header = document.querySelector('.header')\r\nconst navMenuButton = document.querySelector('.menu-btn')\r\nconst navOverlay = document.querySelector('.header__overlay')\r\n\r\nlet scrollYPos = 0\r\nlet initialPosition = ''\r\nlet initialOverflowY = ''\r\n\r\nfunction openNav() {\r\n //Add open class\r\n header.classList.add('header--nav-open')\r\n\r\n //Prevent body scroll\r\n\r\n // get the initial values because IE11 doesn't know \"initial\", and I don't just want to set to \"auto\"\r\n initialPosition = document.body.style.position\r\n initialOverflowY = document.body.style.overflowY\r\n\r\n scrollYPos = document.documentElement.scrollTop\r\n document.body.style.top = -1 * scrollYPos + 'px'\r\n document.body.style.position = 'fixed'\r\n document.body.style.left = '0'\r\n document.body.style.right = '0'\r\n document.body.style.overflowY = 'scroll'\r\n}\r\n\r\nfunction closeNav() {\r\n //Remove open class\r\n header.classList.remove('header--nav-open')\r\n\r\n //Enable body scroll\r\n // just in-case someone else set them. You could pretty safely in this case just set to \"\", but you never know\r\n document.body.style.position = initialPosition\r\n document.body.style.overflowY = initialOverflowY\r\n window.scrollTo(0, scrollYPos)\r\n}\r\n\r\nnavMenuButton.addEventListener('change', () => {\r\n header.classList.contains('header--nav-open') ? closeNav() : openNav()\r\n})\r\n\r\nnavOverlay.addEventListener('click', closeNav)\r\n","import debounce from '../modules/debounce'\r\nfunction initSplitBackground(component) {\r\n const firstChild = component.querySelector('.split-background__child')\r\n const firstChildImage = component.querySelector('.split-background__image')\r\n if (!firstChild || !firstChildImage) return\r\n const cardsBackground = component.querySelector('.background--main')\r\n function setCardsBackgroundHeight() {\r\n //Set height of cards background to midpoint of first card image\r\n const cardDistanceFromTop =\r\n firstChild.getBoundingClientRect().top -\r\n component.getBoundingClientRect().top\r\n const cardImageOffset = firstChildImage.getBoundingClientRect().height / 2\r\n const cardsBackgroundHeight = cardDistanceFromTop + cardImageOffset\r\n //Set background height\r\n cardsBackground.style.height = cardsBackgroundHeight + 'px'\r\n }\r\n window.addEventListener('resize', debounce(setCardsBackgroundHeight, 100))\r\n setCardsBackgroundHeight()\r\n}\r\nconst splitBackgroundComponentList =\r\n document.querySelectorAll('.split-background')\r\nsplitBackgroundComponentList.length &&\r\n splitBackgroundComponentList.forEach(initSplitBackground)\r\n","const multipleSplitComponent = document.querySelectorAll('.split--multiple')\r\n\r\nmultipleSplitComponent.forEach((component) => {\r\n const childComponents = component.querySelectorAll(':scope > .component')\r\n let prevComponentBgClass = ''\r\n\r\n childComponents.forEach((childComponent, i) => {\r\n const childComponentBgClass =\r\n [...childComponent.classList].filter((cl) =>\r\n /bg-colour-+[a-z]+-/.test(cl)\r\n )[0] || ''\r\n\r\n if (i > 0 && childComponentBgClass === prevComponentBgClass) {\r\n // Remove spacing at top of component if previous component has the same background tint class\r\n childComponent.style.paddingTop = 0\r\n }\r\n\r\n // Set previous background class to current background class for next component check\r\n prevComponentBgClass = childComponentBgClass\r\n })\r\n})\r\n","import Swiper, { Navigation, Pagination } from 'swiper'\r\n\r\nconst sharedConfig = {\r\n slidesPerView: 'auto',\r\n uniqueNavElements: true,\r\n watchOverflow: true,\r\n observer: true,\r\n observeParents: true,\r\n spaceBetween: 20,\r\n breakpoints: {\r\n 768: {\r\n spaceBetween: 40,\r\n },\r\n 1440: {\r\n spaceBetween: 60,\r\n },\r\n },\r\n modules: [Navigation, Pagination],\r\n}\r\nconst careerCarouselConfig = {\r\n ...sharedConfig,\r\n slidesPerGroup: 1,\r\n loop: false,\r\n slideToClickedSlide: true,\r\n breakpoints: {\r\n 768: {\r\n spaceBetween: 40,\r\n slidesPerGroup: 2,\r\n },\r\n 1440: {\r\n slidesPerGroup: 3,\r\n spaceBetween: 60,\r\n },\r\n },\r\n}\r\nconst imageCarouselConfig = {\r\n ...sharedConfig,\r\n slidesPerGroup: 1,\r\n slideToClickedSlide: true,\r\n loop: false,\r\n}\r\n\r\n// Function to return the appropriate carousel config\r\nfunction getConfig(element) {\r\n let newConfig\r\n switch (element.dataset.carouseltype) {\r\n case 'values-carousel':\r\n newConfig = Object.assign({}, imageCarouselConfig)\r\n break\r\n case 'interview-carousel':\r\n newConfig = Object.assign({}, imageCarouselConfig)\r\n break\r\n default:\r\n newConfig = Object.assign({}, careerCarouselConfig)\r\n }\r\n return newConfig\r\n}\r\n\r\nfunction initSwiperCarousels() {\r\n // Query for all the swiper carousels\r\n let swiperCarousels = document.querySelectorAll('.swiper')\r\n if (swiperCarousels.length > 0) {\r\n for (let x = 0, max = swiperCarousels.length; x < max; x++) {\r\n let thisConfig = getConfig(swiperCarousels[x])\r\n let carouselPagination =\r\n swiperCarousels[x].querySelector('.swiper-pagination')\r\n let carouselControlPrev = swiperCarousels[x].querySelector(\r\n '.swiper-button-prev'\r\n )\r\n let carouselControlNext = swiperCarousels[x].querySelector(\r\n '.swiper-button-next'\r\n )\r\n\r\n if (carouselPagination) {\r\n thisConfig.pagination = {\r\n el: carouselPagination,\r\n }\r\n }\r\n\r\n if (carouselControlPrev && carouselControlNext) {\r\n thisConfig.navigation = {\r\n prevEl: carouselControlPrev,\r\n nextEl: carouselControlNext,\r\n }\r\n }\r\n\r\n if (\r\n swiperCarousels[x].querySelectorAll('.swiper-slide').length >\r\n thisConfig.slidesPerGroup\r\n ) {\r\n let swiperCarousel = new Swiper(swiperCarousels[x], thisConfig)\r\n } else if (swiperCarousels[x].dataset.carouseltype === 'card-carousel') {\r\n let swiperCarousel = new Swiper(swiperCarousels[x], thisConfig)\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport { initSwiperCarousels }\r\n","import $ from 'jquery'\r\n\r\nwindow.$ = $\r\nwindow.jQuery = $\r\n","export default function debounce(func, wait = 0) {\r\n let timeout\r\n return function () {\r\n const context = this\r\n const args = arguments\r\n\r\n clearTimeout(timeout)\r\n\r\n timeout = setTimeout(() => {\r\n timeout = null\r\n func.apply(context, args)\r\n }, wait)\r\n }\r\n}\r\n","const initDeviceDetection = () => {\r\n const userAgent = window?.navigator?.userAgent\r\n if (userAgent.includes('Windows')) {\r\n document.querySelector('body').classList.add('is-windows')\r\n }\r\n if (userAgent.includes('Macintosh')) {\r\n document.querySelector('body').classList.add('is-mac')\r\n }\r\n if (userAgent.includes('iPhone')) {\r\n document.querySelector('body').classList.add('is-iphone')\r\n }\r\n if (userAgent.includes('Android')) {\r\n document.querySelector('body').classList.add('is-android')\r\n }\r\n}\r\nexport default initDeviceDetection\r\n","import Player from '@vimeo/player'\r\nconst initMastHeadVimeo = () => {\r\n const playerNodeList = document.querySelectorAll('.masthead__vimeo')\r\n if (!playerNodeList || !playerNodeList.length) return\r\n\r\n // Init player and fade-in video\r\n const playerElements = [...playerNodeList]\r\n const players = playerElements.map((playerElement) => {\r\n const player = new Player(playerElement)\r\n const showPlayer = () => {\r\n playerElement.style.opacity = 1\r\n }\r\n // Show vimeo when loaded faster than the JS parser, or wait for video to finish loading.\r\n player\r\n .getPaused()\r\n .then((isPaused) =>\r\n isPaused ? player.on('play', showPlayer) : showPlayer()\r\n )\r\n return player\r\n })\r\n\r\n // Allow user to pause/unpause video on click for accessibility\r\n const masthead = document.querySelector('.masthead')\r\n masthead.addEventListener('click', () => {\r\n players.forEach((player) => {\r\n player.getPaused().then((paused) => {\r\n !paused ? player.pause() : player.play()\r\n })\r\n })\r\n })\r\n}\r\nexport default initMastHeadVimeo\r\n","import ScrollReveal from 'scrollreveal'\r\n\r\nconst revealClass = '.reveal'\r\n\r\nconst options = {\r\n duration: 1000,\r\n easing: 'ease-in-out',\r\n scale: 1,\r\n distance: '25px',\r\n}\r\n\r\nScrollReveal().reveal(revealClass, options)\r\n","export const tracking = {\r\n init() {\r\n // this is for direct tagging of elements in the site. See example in MyAccountCTA.jsx\r\n this.setupElementTaggingTracking()\r\n\r\n // for tracking umbraco forms with non-helpful urls. and thankyous\r\n this.setupUmbracoFormTracking()\r\n\r\n // custom event tracking that is easier to do in javascript rather than tagging links around the site\r\n this.setupCustomEventTracking()\r\n\r\n // check for umbraco form submission\r\n this.checkUmbracoFormTracking()\r\n\r\n // track the initial page load. This is used instead of the built-in GTM \"Page View\", so we can capture information from previous pages easier e.g. umbraco form submissions\r\n\r\n // Using a \"fake page view\" to fire page tracking for 2 reasons\r\n // - when trying to rerun the tags after cookie consent, you can't run the \"Page View\" event again\r\n // - makes it easier to run virtual page views and on-load page views without having separate rules\r\n dataLayer.push({\r\n event: 'Site Page View',\r\n })\r\n },\r\n isDev: location.hostname.match(/localhost|equator/),\r\n log(...args) {\r\n if (this.isDev) {\r\n console.log(args[0])\r\n }\r\n },\r\n setupElementTaggingTracking() {\r\n // this is for stuff that would require a rewrite to make click work. If you want to sort it out with react onclick handlers, be my guest\r\n document.addEventListener(\r\n 'click',\r\n (e) => {\r\n if (e.target.matches('[data-event-category],[data-event-category] *')) {\r\n let element = e.target.closest('[data-event-category]')\r\n let cat = element.getAttribute('data-event-category')\r\n let act = element.getAttribute('data-event-action')\r\n let lab = element.getAttribute('data-event-label')\r\n this.trackEvent(cat, act, lab)\r\n }\r\n },\r\n false\r\n )\r\n },\r\n setPageview: function (pageView, pageViewOptions) {\r\n // this is just a shortcut for tracking the pageview with the supressevent option pretagged. This method is supposed to make it a bit clearer about what's going on and why?\r\n // There are a few occasion you want to set the pageview but not track the page yet (e.g. form submits) and then let the normal tracking in GTM pick it up.\r\n // The only real reason at the moment to do this when you want to set something before the trackingReady event (which is only delayed because of the login callback)\r\n\r\n this.trackPageview(\r\n pageView,\r\n pageViewOptions | this.pageViewOptions.SUPPRESS_EVENT\r\n )\r\n },\r\n\r\n trackPageview: function (pageView, pageViewOptions) {\r\n // if there are pageview options APPEND and/or PREPEND, then we will take the pageview and glue it to the current window.location.pathname\r\n\r\n if (pageView && pageViewOptions) {\r\n // append will trump prepend. Not doing both.\r\n if (pageViewOptions & this.pageViewOptions.APPEND) {\r\n pageView = window.location.pathname + '/' + pageView\r\n } else if (pageViewOptions & this.pageViewOptions.PREPEND) {\r\n pageView = '/' + pageView + '/' + window.location.pathname\r\n }\r\n\r\n if (pageViewOptions & this.pageViewOptions.KEEP_QUERYSTRING) {\r\n pageView += window.location.search\r\n }\r\n }\r\n\r\n if (pageView) {\r\n // get rid of any multiple slashes\r\n pageView = pageView.replace(/\\/{2,}/g, '/')\r\n }\r\n\r\n let dlObject = {\r\n pageView: pageView,\r\n }\r\n\r\n if (!(pageViewOptions & this.pageViewOptions.SUPPRESS_EVENT)) {\r\n dlObject.event = 'Site Page View'\r\n }\r\n\r\n dataLayer.push(dlObject)\r\n\r\n this.log(dlObject)\r\n },\r\n\r\n pageViewOptions: {\r\n // uses bitwise for matching. Why? It feels a bit .nety\r\n APPEND: 1,\r\n SUPPRESS_EVENT: 2,\r\n KEEP_QUERYSTRING: 4,\r\n PREPEND: 8,\r\n },\r\n\r\n trackEvent(category, action, label) {\r\n let eventData = {\r\n event: 'trackEvent',\r\n eventCategory: category,\r\n eventAction: action,\r\n eventLabel: label,\r\n }\r\n\r\n dataLayer.push(eventData)\r\n\r\n this.log(eventData)\r\n },\r\n //==================================================================================================\r\n //\tSingular Generic set dimension method\r\n //==================================================================================================\r\n setDataLayerKeyValue: function (key, value) {\r\n let data = {}\r\n data[key] = value\r\n dataLayer.push(data)\r\n },\r\n\r\n // site specific stuff.\r\n setupCustomEventTracking() {\r\n // social links at the bottom of the page\r\n document\r\n .querySelector('.footer__social-list')\r\n .addEventListener('click', (e) => {\r\n // get the event target\r\n if (e.target.matches('a,a *')) {\r\n let img = e.target.closest('a').querySelector('*') // strange traversal, but want to make sure that I am grabbing the image if I haven't clicked on the image\r\n console.info(e.target.tagName, img.tagName)\r\n let socialType = img.getAttribute('alt')\r\n this.trackEvent(\r\n 'Page Event',\r\n 'Social Link Footer',\r\n `Social Link - ${socialType}`\r\n )\r\n }\r\n })\r\n\r\n // track the menu opening/closing\r\n // store the header el for later use\r\n let header = document.querySelector('header.header.page-wrapper') // sorry if this is too specific, not sure where else headers have been used\r\n document.querySelector('.menu-btn__icon').addEventListener('click', (e) => {\r\n // check the header state.\r\n let isOpen = header.classList.contains('header--nav-open')\r\n\r\n this.trackEvent(\r\n 'Page Event',\r\n 'Main Menu',\r\n `Main Menu - ${isOpen ? 'closed' : 'opened'}`\r\n )\r\n })\r\n\r\n // track the main menu items\r\n header.querySelector('.main-nav__list').addEventListener('click', (e) => {\r\n if (e.target.matches('a,a *')) {\r\n // risk the chance that the event gets cancelled, rather than stop the nav and force the location.href\r\n let linkText = e.target.innerText\r\n\r\n this.trackEvent(\r\n 'Page Event',\r\n 'Main Menu',\r\n `Main Menu Nav - ${linkText}\"}`\r\n )\r\n }\r\n })\r\n },\r\n\r\n //The umbraco stuff is pretty generic, but the rules and classes are based on the EQTR website\r\n setupUmbracoFormTracking() {\r\n /*\r\n contact form is fine.\r\n /contact/ => /thank-you-contact, maybe just use a generic /contact/thank-you-contact?\r\n \r\n Job form needs a tweak\r\n 1 - /job-application-page/?jobtitle=project-manager , would be better to have /job-application-page/project-manager\r\n 2 - goes to \"thank-you-job\", would be better to have /job-application-page/project-manager/thank-you-job or something\r\n\r\n Whitepaper form \r\n /reports/whitepaper-energy-futures-report/ => /thank-you-contact, but might be something different.\r\n make it go to /reports/whitepaper-energy-futures-report/thank-you-contact\r\n */\r\n\r\n // so all umbraco forms need a little nudge to help with the tracking\r\n // there will need to be intervention on the razor end to intercept the dataLayer before the container gets initialised\r\n // thinking that maybe a little hack to the GTM container setup code to remove the \"gtm.js\" event might be needed?\r\n\r\n document.querySelector('.field-validation-error')\r\n\r\n let umbFormButton = document.querySelector(\r\n \".umbraco-forms-eqtr-form form button[type='submit']\"\r\n )\r\n\r\n if (!umbFormButton) return\r\n\r\n // change the pageview if we are on the job page\r\n let jobtitle = location.search.match(/jobtitle=([^&]+)/)\r\n let pageview = location.pathname + ((jobtitle && jobtitle[1]) || '') + '/' // double slashes will get removed in the setpageview method\r\n\r\n // set the dataLayer\r\n this.setPageview(pageview)\r\n\r\n // tag the click on the submit button\r\n // can't hook into the submit event, think this is being fired with form.submit() which\r\n // doesn't fire submit listeners\r\n umbFormButton.addEventListener('click', function () {\r\n if (!document.querySelector('.form-row--invalid')) {\r\n // set a local variable to get picked up on the submission page. If you fire tracking here\r\n // there is a chance it will get stopped on the page submit\r\n // if this variable has been set then we can check to see if we are on the same page\r\n // if on the same page then we don't have a \"thanks\" page, so no tracking\r\n\r\n // if we are on\r\n sessionStorage['umbFormSubmitted'] = pageview\r\n // use this to set the \"thanks\" page view variable in GTM\r\n }\r\n })\r\n },\r\n checkUmbracoFormTracking() {\r\n let umbFormSubmitted = sessionStorage['umbFormSubmitted']\r\n sessionStorage.removeItem('umbFormSubmitted')\r\n\r\n if (umbFormSubmitted) {\r\n this.setPageview(umbFormSubmitted + location.pathname)\r\n }\r\n },\r\n}\r\n\r\n// self initialisier\r\ntracking.init()\r\n","// extracted by mini-css-extract-plugin"],"sourceRoot":""}