{"version":3,"sources":["webpack:///./js/components/init-sticky-nav.ts","webpack:///./js/components/init-nav-dropdown.ts","webpack:///./js/components/init-search.ts","webpack:///./js/components/init-mobile-nav.ts","webpack:///./js/components/init-cookie-bar.ts","webpack:///./js/components/init-netc-aos.ts","webpack:///./js/components/init-animate-svg.ts","webpack:///./js/components/init-amplitude-learn.ts","webpack:///./js/components/init-amplitude.ts"],"names":["whenDomReady","then","nav","document","querySelector","classList","contains","prevScrollPos","window","pageYOffset","addEventListener","currentScrollPos","remove","add","showNav","NavDropdown","container","this","promoActiveClass","handleHoverIn","item","activeId","dataset","id","render","handleContainerOut","undefined","promos","promo","items","Array","from","querySelectorAll","forEach","containers","length","search","searchMobile","searchInput","searchClose","searchInputField","OPEN","handleClick","focus","burger","menuItems","closeButtons","navItems","ACTIVE","button","click","innerWidth","enableBodyScroll","disableBodyScroll","scrollTo","e","preventDefault","stopPropagation","debounce","cookieBar","cookieBarAccept","cookieValue","Cookies","get","set","expires","AOS","animationAttibute","thresholdAttribute","reverseAttribute","Svg","svg","paths","IntersectionObserver","entries","entry","isIntersecting","path","anime","targets","strokeDashoffset","setDashoffset","easing","direction","duration","play","rootMargin","threshold","observe","svgs","Events","Properties","initTracking","amplitude","AmpConfig","apiKey","serverZone","ServerZone","EU","promise","initialPathnameArray","location","pathname","split","filter","employer","toUpperCase","homepageIdentify","initHomepageVisit","section","pop","sectionIdentify","sectionName","initLearnSectionVisit","resource","resourceIdentify","resourceName","initLearnResourceVisit","name","parts","policy","cookieAccepted","cookiePolicyEnabled","cookie","shift","JSON","parse","optionalCookies","optionalAnalytics","TriggerEvents","autoSuggest","clientLocation","href","isCustomEvent","detail","type","redirect","followRedirect","elgibilityResult","event","CustomEvent","value","dispatchEvent","initEmployeeSearchTracking","includes","where","getAttribute","setAttribute","product","test"],"mappings":"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","file":"global-d19b9b7ffa18b1c2f278.js","sourcesContent":["import whenDomReady from 'when-dom-ready';\r\nwhenDomReady().then(() => {\r\n const nav = document.querySelector('.js-nav');\r\n // don't stick for learn-navigation\r\n if (nav?.classList.contains('header--learn')) {\r\n return;\r\n }\r\n let prevScrollPos = window.pageYOffset;\r\n const ACTIVE = 'is-sticky';\r\n const navHeight = 109;\r\n if (nav) {\r\n window.addEventListener('scroll', () => {\r\n showNav();\r\n });\r\n }\r\n function showNav() {\r\n if (!nav) {\r\n return;\r\n }\r\n const currentScrollPos = window.pageYOffset;\r\n if (currentScrollPos < navHeight) {\r\n nav.classList.remove(ACTIVE);\r\n }\r\n else {\r\n if (prevScrollPos > currentScrollPos) {\r\n nav.classList.add(ACTIVE);\r\n }\r\n else {\r\n nav.classList.remove(ACTIVE);\r\n }\r\n }\r\n prevScrollPos = currentScrollPos;\r\n }\r\n});\r\n","import whenDomReady from 'when-dom-ready';\r\nclass NavDropdown {\r\n constructor(container) {\r\n this.promoActiveClass = 'active';\r\n /**\r\n * Handles hover IN on nav dropdown items\r\n * @param item\r\n */\r\n this.handleHoverIn = (item) => {\r\n this.activeId = item.dataset.id;\r\n this.render();\r\n };\r\n /**\r\n * Handles hover OUT on the nav dropdown container\r\n * @param item\r\n */\r\n this.handleContainerOut = () => {\r\n this.activeId = undefined;\r\n this.render();\r\n };\r\n /**\r\n * Handles the updating of HTML based on the local state variables\r\n */\r\n this.render = () => {\r\n for (const promo of this.promos) {\r\n if (promo.dataset.id === this.activeId && this.activeId !== undefined) {\r\n promo.classList.add(this.promoActiveClass);\r\n }\r\n else {\r\n promo.classList.remove(this.promoActiveClass);\r\n }\r\n }\r\n };\r\n // Assign variables\r\n this.container = container;\r\n this.items = Array.from(container.querySelectorAll('.js-nav-item'));\r\n this.promos = Array.from(container.querySelectorAll('.js-nav-promo'));\r\n // Assign events\r\n this.items.forEach(item => {\r\n item.addEventListener('mouseenter', () => this.handleHoverIn(item));\r\n });\r\n this.container.addEventListener('mouseleave', this.handleContainerOut);\r\n }\r\n}\r\nwhenDomReady().then(() => {\r\n const containers = Array.from(document.querySelectorAll('.js-nav'));\r\n if (containers.length === 0) {\r\n return;\r\n }\r\n containers.forEach(container => new NavDropdown(container));\r\n});\r\n","import whenDomReady from 'when-dom-ready';\r\nfunction initialise() {\r\n const search = document.querySelector('.js-search');\r\n const searchMobile = document.querySelector('.js-search-mobile');\r\n const searchInput = document.querySelector('.js-search-input');\r\n const searchClose = document.querySelector('.js-search-close');\r\n if (!search || !searchMobile || !searchInput || !searchClose) {\r\n return;\r\n }\r\n const searchInputField = searchInput.querySelector('input[type=search]');\r\n const OPEN = 'is-open';\r\n function handleClick() {\r\n if (searchInput === null) {\r\n return;\r\n }\r\n if (!searchInput.classList.contains(OPEN)) {\r\n searchInput.classList.add(OPEN);\r\n if (searchInputField) {\r\n searchInputField.focus();\r\n }\r\n }\r\n }\r\n search.addEventListener('click', handleClick);\r\n searchMobile.addEventListener('click', handleClick);\r\n searchClose.addEventListener('click', () => {\r\n if (searchInput.classList.contains(OPEN)) {\r\n search.classList.remove(OPEN);\r\n searchInput.classList.remove(OPEN);\r\n }\r\n });\r\n}\r\nwhenDomReady().then(initialise);\r\n","import whenDomReady from 'when-dom-ready';\r\nimport { disableBodyScroll, enableBodyScroll } from 'body-scroll-lock';\r\nimport debounce from 'lodash/debounce';\r\nfunction initialise() {\r\n const burger = document.querySelector('.js-burger');\r\n const nav = document.querySelector('.js-nav');\r\n const menuItems = Array.from(document.querySelectorAll('.js-has-dropdown'));\r\n const closeButtons = Array.from(document.querySelectorAll('.js-close-burger'));\r\n const navItems = Array.from(document.querySelectorAll('.js-nav-item'));\r\n const DesktopWidth = 1024;\r\n if (!burger || !menuItems || !nav) {\r\n return;\r\n }\r\n const ACTIVE = 'is-active';\r\n const OPEN = 'is-open';\r\n if (closeButtons.length > 0) {\r\n closeButtons.forEach(button => {\r\n button.addEventListener('click', () => burger.click());\r\n });\r\n }\r\n burger.addEventListener('click', () => {\r\n if (DesktopWidth < window.innerWidth) {\r\n return;\r\n }\r\n nav.classList.add(ACTIVE);\r\n if (burger.classList.contains(ACTIVE)) {\r\n nav.classList.remove(ACTIVE);\r\n burger.classList.remove(ACTIVE);\r\n enableBodyScroll(nav);\r\n }\r\n else {\r\n disableBodyScroll(nav);\r\n window.scrollTo(0, 0);\r\n burger.classList.add(ACTIVE);\r\n }\r\n });\r\n menuItems.forEach(item => {\r\n item.addEventListener('click', e => {\r\n if (DesktopWidth < window.innerWidth) {\r\n return;\r\n }\r\n e.preventDefault();\r\n if (item.classList.contains(OPEN)) {\r\n item.classList.remove(OPEN);\r\n }\r\n else {\r\n item.classList.add(OPEN);\r\n }\r\n });\r\n });\r\n navItems.forEach(item => {\r\n item.addEventListener('click', e => {\r\n if (DesktopWidth > window.innerWidth) {\r\n e.stopPropagation();\r\n }\r\n });\r\n });\r\n function removeBodyScrollLock() {\r\n if (!burger || !nav) {\r\n return;\r\n }\r\n if (DesktopWidth < window.innerWidth) {\r\n nav.classList.remove(ACTIVE);\r\n burger.classList.remove(ACTIVE);\r\n enableBodyScroll(nav);\r\n }\r\n }\r\n window.addEventListener('resize', debounce(() => removeBodyScrollLock(), 100));\r\n}\r\nwhenDomReady().then(initialise);\r\n","import Cookies from 'js-cookie';\r\nimport whenDomReady from 'when-dom-ready';\r\nfunction initialise() {\r\n const ACTIVE = 'is-active';\r\n const COOKIE_NAME = 'salaryfinance.cookieacceptance';\r\n const cookieBar = document.querySelector('.js-cookie-bar');\r\n const cookieBarAccept = document.querySelector('.js-cookie-accept');\r\n const cookieValue = Cookies.get(COOKIE_NAME);\r\n if (!cookieBar || !cookieBarAccept || cookieValue === 'true') {\r\n return;\r\n }\r\n cookieBar.classList.add(ACTIVE);\r\n cookieBarAccept.addEventListener('click', () => {\r\n Cookies.set(COOKIE_NAME, 'true', { expires: 365 });\r\n cookieBar.classList.remove(ACTIVE);\r\n });\r\n}\r\nwhenDomReady().then(initialise);\r\n","import AOS from '@netc/aos';\r\nimport whenDomReady from 'when-dom-ready';\r\nwhenDomReady().then(() => {\r\n const settings = {\r\n animationAttibute: 'data-anim',\r\n thresholdAttribute: 'data-anim-threshold',\r\n reverseAttribute: 'data-anim-reverse',\r\n };\r\n // eslint-disable-next-line no-new\r\n new AOS(settings);\r\n});\r\n","import whenDomReady from 'when-dom-ready';\r\nimport anime from 'animejs';\r\nclass Svg {\r\n constructor(svg) {\r\n this.svg = svg;\r\n this.paths = Array.from(this.svg.querySelectorAll('path'));\r\n const callback = (entries) => {\r\n entries.forEach((entry) => {\r\n if (entry.isIntersecting) {\r\n if (this.svg.classList.contains('animated-svg')) {\r\n return;\r\n }\r\n this.svg.classList.add('animated-svg');\r\n this.paths.forEach((path) => {\r\n const animation = anime({\r\n targets: path,\r\n strokeDashoffset: [0, anime.setDashoffset],\r\n easing: 'easeInOutSine',\r\n direction: 'reverse',\r\n duration: 1500,\r\n });\r\n animation.play;\r\n });\r\n }\r\n });\r\n };\r\n const observer = new IntersectionObserver(callback, {\r\n rootMargin: '60px',\r\n threshold: 0.2,\r\n });\r\n observer.observe(this.svg);\r\n }\r\n}\r\nfunction initialize() {\r\n const svgs = Array.from(document.querySelectorAll('[data-anim-svg] svg'));\r\n if (svgs.length === 0) {\r\n return;\r\n }\r\n svgs.forEach(svg => {\r\n // eslint-disable-next-line no-new\r\n new Svg(svg);\r\n });\r\n}\r\nwhenDomReady().then(initialize);\r\n","import * as amplitude from '@amplitude/analytics-browser';\r\nimport whenDomReady from 'when-dom-ready';\r\nconst COOKIE_NAME = 'CookieControl';\r\nconst Events = {\r\n LEARN_HOME_VISIT: 'visit learn home page',\r\n LEARN_SECTION_VISIT: 'visit learn section',\r\n LEARN_RESOURCE_VISIT: 'visit learn resource',\r\n};\r\nconst Properties = {\r\n EMPLOYER_SPECIFIC: 'learn url employer name',\r\n};\r\nfunction initialise() {\r\n if (window.AmpConfig && !window.AmpConfig.cookiePolicyEnabled) {\r\n initTracking();\r\n }\r\n else {\r\n initCookieListener();\r\n }\r\n}\r\n/**\r\n * Check whether the necessary cookie has been accepted or not, initialise based on the result.\r\n * If permissions cookie doesn't exist, loop until it's been configured.\r\n */\r\nfunction initCookieListener() {\r\n const cookieAccepted = getCookiePolicyValue();\r\n if (cookieAccepted === null) {\r\n return document.addEventListener('analytical-cookies-accepted', () => {\r\n initTracking();\r\n });\r\n }\r\n else if (cookieAccepted === true) {\r\n return initTracking();\r\n }\r\n else {\r\n return;\r\n }\r\n}\r\nfunction initTracking() {\r\n amplitude\r\n .init(window.AmpConfig.apiKey, undefined, {\r\n serverZone: amplitude.Types.ServerZone.EU,\r\n })\r\n .promise.then(() => {\r\n initHomepageVisit();\r\n initLearnSectionVisit();\r\n initLearnResourceVisit();\r\n });\r\n}\r\n/** Check if user visited the homepage, and get employer if applicable */\r\nfunction initHomepageVisit() {\r\n const homepageCheck = document.querySelector('.js-learn-home-identifier');\r\n if (homepageCheck) {\r\n const initialPathnameArray = window.location.pathname.split('/').filter(item => item != '');\r\n if (initialPathnameArray.length > 1) {\r\n const employer = initialPathnameArray[0].toUpperCase();\r\n const homepageIdentify = new amplitude.Identify();\r\n homepageIdentify.set(Properties.EMPLOYER_SPECIFIC, employer);\r\n amplitude.identify(homepageIdentify);\r\n }\r\n amplitude.track(Events.LEARN_HOME_VISIT);\r\n }\r\n}\r\n/** Check if user visited a Learn Section/Category */\r\nfunction initLearnSectionVisit() {\r\n const learnSectionCheck = document.querySelector('.js-learn-section-identifier');\r\n if (learnSectionCheck) {\r\n const initialPathnameArray = window.location.pathname.split('/').filter(item => item != '');\r\n const section = initialPathnameArray.pop()?.toUpperCase();\r\n if (initialPathnameArray.length > 1) {\r\n const employer = initialPathnameArray[0].toUpperCase();\r\n const sectionIdentify = new amplitude.Identify();\r\n sectionIdentify.set(Properties.EMPLOYER_SPECIFIC, employer);\r\n amplitude.identify(sectionIdentify);\r\n }\r\n amplitude.track(Events.LEARN_SECTION_VISIT, {\r\n sectionName: section,\r\n });\r\n }\r\n}\r\n/** Check if user visited a Learn Resource */\r\nfunction initLearnResourceVisit() {\r\n const learnResourceCheck = document.querySelector('.js-learn-resource-identifier');\r\n if (learnResourceCheck) {\r\n const initialPathnameArray = window.location.pathname.split('/').filter(item => item != '');\r\n const resource = initialPathnameArray.pop()?.toUpperCase();\r\n if (initialPathnameArray.length > 2) {\r\n const employer = initialPathnameArray[0].toUpperCase();\r\n const resourceIdentify = new amplitude.Identify();\r\n resourceIdentify.set(Properties.EMPLOYER_SPECIFIC, employer);\r\n amplitude.identify(resourceIdentify);\r\n }\r\n amplitude.track(Events.LEARN_RESOURCE_VISIT, {\r\n resourceName: resource,\r\n });\r\n }\r\n}\r\n/** Get cookie policy cookie values, return the result of optionalAnalytics policy */\r\nfunction getCookiePolicyValue() {\r\n const policy = getCookie(COOKIE_NAME);\r\n if (policy === '') {\r\n return null;\r\n }\r\n if (JSON.parse(policy)?.optionalCookies?.optionalAnalytics === 'accepted') {\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n}\r\nfunction getCookie(name) {\r\n const value = `; ${document.cookie}`;\r\n const parts = value.split(`; ${name}=`);\r\n if (parts !== undefined && parts.length === 2) {\r\n return parts\r\n ?.pop()\r\n ?.split(';')\r\n .shift();\r\n }\r\n else {\r\n return '';\r\n }\r\n}\r\nwhenDomReady().then(initialise);\r\n","import * as amplitude from '@amplitude/analytics-browser';\r\nimport whenDomReady from 'when-dom-ready';\r\nconst COOKIE_NAME = 'CookieControl';\r\nconst Events = {\r\n ELIGIBILITY_BTN: 'click sf.com check eligibility button',\r\n HOME_VISIT: 'visit sf.com home page',\r\n PRODUCT_BTN: 'click sf.com product button',\r\n SEARCH_FOCUS: 'click sf.com employer search bar',\r\n SEARCH_RESULT: 'match sf.com employer search',\r\n SEARCH_TRIGGER: 'trigger sf.com employer search',\r\n SIGN_IN_BTN: 'click sf.com sign in button',\r\n};\r\nconst TriggerEvents = {\r\n autoSuggest: 'click employer name',\r\n button: \"click let's go\",\r\n};\r\nfunction initialise() {\r\n if (window.AmpConfig && !window.AmpConfig.cookiePolicyEnabled) {\r\n initTracking();\r\n }\r\n else {\r\n initCookieListener();\r\n initNoTrackingRedirects();\r\n }\r\n}\r\n/**\r\n * Check whether the necessary cookie has been accepted or not, initialise based on the result.\r\n * If permissions cookie doesn't exist, loop until it's been configured.\r\n */\r\nfunction initCookieListener() {\r\n const cookieAccepted = getCookiePolicyValue();\r\n if (cookieAccepted === null) {\r\n return document.addEventListener('analytical-cookies-accepted', () => {\r\n initTracking();\r\n });\r\n }\r\n else if (cookieAccepted === true) {\r\n return initTracking();\r\n }\r\n else {\r\n return;\r\n }\r\n}\r\nfunction initTracking() {\r\n amplitude\r\n .init(window.AmpConfig.apiKey, undefined, {\r\n serverZone: amplitude.Types.ServerZone.EU,\r\n })\r\n .promise.then(() => {\r\n initHomepageVisit();\r\n initEmployeeSearchTracking();\r\n initialiseButtonClickEvents();\r\n });\r\n}\r\n/** Redirect based on eligibility result if tracking is not available */\r\nfunction initNoTrackingRedirects() {\r\n const elgibilityResult = document.querySelector('.js-eligibility-result');\r\n if (elgibilityResult) {\r\n followRedirect(elgibilityResult.value);\r\n }\r\n}\r\n/** Identify the client location based on the homepage URL */\r\nfunction initHomepageVisit() {\r\n const homepageCheck = document.querySelector('.js-home-identifier');\r\n if (homepageCheck) {\r\n const location = window.location.pathname.split('/')[1].toUpperCase();\r\n amplitude.track(Events.HOME_VISIT, {\r\n clientLocation: location,\r\n });\r\n }\r\n}\r\nfunction initEmployeeSearchTracking() {\r\n /** Identify when the client focuses on the Eligibility Search text input */\r\n document.addEventListener('eligibility-input-focus', () => {\r\n amplitude.track(Events.SEARCH_FOCUS, {\r\n 'url of page': window.location.href,\r\n });\r\n });\r\n /**\r\n * Identify when the client uses the Eligibility Search, and specify\r\n * whether they submitted the form or clicked on an autoSuggest result\r\n */\r\n document.addEventListener('eligibility-search', (e) => {\r\n if (isCustomEvent(e)) {\r\n amplitude.track(Events.SEARCH_TRIGGER, {\r\n 'trigger method': TriggerEvents[e.detail],\r\n });\r\n }\r\n });\r\n /**\r\n * Identify when the Eligibility Search has been completed and\r\n * pass on whether or not a result was returned or not\r\n *\r\n * For the legacy search, redirect the user to the resulting\r\n * employer subdomain page once the tracking has been triggered\r\n */\r\n document.addEventListener('eligibility-result', (e) => {\r\n if (isCustomEvent(e)) {\r\n const { type, redirect } = e.detail;\r\n amplitude\r\n .track(Events.SEARCH_RESULT, {\r\n 'result of employer match': type,\r\n })\r\n .promise.then(() => {\r\n followRedirect(redirect);\r\n });\r\n }\r\n });\r\n /**\r\n * LEGACY EMPLOYEE SEARCH ONLY\r\n *\r\n * When a legacy search is completed, rather than the redirect being the result the user\r\n * will now be shown a message that they are being redirected in place of the form.\r\n * From the resulting detail, trigger the `eligibility-result` with the necessary detail\r\n * to complete the user journey.\r\n */\r\n const elgibilityResult = document.querySelector('.js-eligibility-result');\r\n if (elgibilityResult) {\r\n const event = new CustomEvent('eligibility-result', {\r\n detail: { type: 'fwh', redirect: elgibilityResult.value },\r\n });\r\n document.dispatchEvent(event);\r\n }\r\n}\r\nfunction initialiseButtonClickEvents() {\r\n /**\r\n * Identify when the client interacts with a Check Eligibility button, and pass\r\n * through the area of the site the clicked button exists in\r\n */\r\n const eligibilityCheck = document.querySelectorAll('.js-eligibility-check-btn');\r\n eligibilityCheck.forEach(item => {\r\n item.addEventListener('click', () => {\r\n /** Ensure link is configured to point at Eligibility Checker before tracking location of button */\r\n if (item.href.includes('/#eligibilityChecker')) {\r\n const where = item.getAttribute('data-where');\r\n amplitude.track(Events.ELIGIBILITY_BTN, {\r\n 'button type': where,\r\n });\r\n }\r\n });\r\n });\r\n /**\r\n * Identify when the client interacts with the Sign In button, pass through the page\r\n * URL the user is on when the button is clicked, disable the button and redirect the\r\n * user to the Sign In page once the tracking event has been sent\r\n */\r\n const signInButton = document.querySelectorAll('.js-sign-in-btn');\r\n signInButton.forEach(item => {\r\n item.addEventListener('click', e => {\r\n e.preventDefault();\r\n if (item.getAttribute('disabled') === null) {\r\n item.setAttribute('disabled', 'disabled');\r\n amplitude\r\n .track(Events.SIGN_IN_BTN, {\r\n 'url of button click': window.location.href,\r\n })\r\n .promise.then(() => {\r\n followRedirect(item.href);\r\n });\r\n }\r\n });\r\n });\r\n /**\r\n * Identify when the client interacts with a Product link, pass through the\r\n * area of the site the clicked button exists in as well as the Product type,\r\n * disable the button and redirect the user to the Product page once the tracking\r\n * event has been sent.\r\n */\r\n const productButton = document.querySelectorAll('.js-product-btn');\r\n productButton.forEach(item => {\r\n item.addEventListener('click', e => {\r\n e.preventDefault();\r\n if (item.getAttribute('disabled') === null) {\r\n const where = item.getAttribute('data-where');\r\n const type = item.getAttribute('data-product-type');\r\n item.setAttribute('disabled', 'disabled');\r\n if (type === 'overview') {\r\n followRedirect(item.href);\r\n }\r\n else {\r\n amplitude\r\n .track(Events.PRODUCT_BTN, {\r\n 'button position': where,\r\n product: type,\r\n })\r\n .promise.then(() => {\r\n followRedirect(item.href);\r\n });\r\n }\r\n }\r\n });\r\n });\r\n}\r\n/** Check the event triggered is a Custom Event with the necessary detail value is defined */\r\nfunction isCustomEvent(event) {\r\n return 'detail' in event;\r\n}\r\n/** Only follow redirect if the url includes the domain name */\r\nfunction followRedirect(redirect) {\r\n if (redirect && /(salaryfinance.com|salaryfinance.dev|localhost)/.test(redirect)) {\r\n window.location.href = redirect;\r\n }\r\n}\r\n/** Get cookie policy cookie values, return the result of optionalAnalytics policy */\r\nfunction getCookiePolicyValue() {\r\n const policy = getCookie(COOKIE_NAME);\r\n if (policy === '') {\r\n return null;\r\n }\r\n if (JSON.parse(policy)?.optionalCookies?.optionalAnalytics === 'accepted') {\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n}\r\nfunction getCookie(name) {\r\n const value = `; ${document.cookie}`;\r\n const parts = value.split(`; ${name}=`);\r\n if (parts !== undefined && parts.length === 2) {\r\n return parts\r\n ?.pop()\r\n ?.split(';')\r\n .shift();\r\n }\r\n else {\r\n return '';\r\n }\r\n}\r\nwhenDomReady().then(initialise);\r\n"],"sourceRoot":""}