{"version":3,"sources":["webpack:///./src/js/modules/animatedLargeButton.js","webpack:///./src/js/modules/jobListing.js"],"names":["Module","this","dom","caseStudiesTabButton","el","overlay","querySelector","text","addEventListener","handleHoverIn","bind","handleHoverOut","sequence","opacity","transform","color","duration","delay","at","timeline","animate","finished","then","closest","classList","contains","isActiveButton","style","removeProperty","Component","$el","$regionsCtas","querySelectorAll","$defaultActive","$noResults","$noResultsName","$allItems","regionsCtasAnimated","queryParams","window","URLSearchParams","location","search","initialRegion","get","classes","ctaActive","noResultVisible","hidden","jobListingLoaded","init","initUrl","length","add","forEach","$regionCta","handleOnCLick","cta","animatedLargeButton","remove","filterButton","$matchItems","$item","setAttribute","defaultRegion","dataset","region","currentRegion","showJobsByRegion","e","preventDefault","currentTarget","ctasActiveClassToggle","$target","textContent","set","delete","Array","from","history","pushState","toString","pathname"],"mappings":"wYAAA,S,qQAIMA,E,ieAEFC,KAAKC,IAAM,CACTC,qBAAsBF,KAAKG,GAC3BC,QAASJ,KAAKG,GAAGE,cAAc,YAC/BC,KAAMN,KAAKG,GAAGE,cAAc,sC,qCAK9BL,KAAKC,IAAIC,qBAAqBK,iBAC5B,aACAP,KAAKQ,cAAcC,KAAKT,OAE1BA,KAAKC,IAAIC,qBAAqBK,iBAC5B,aACAP,KAAKU,eAAeD,KAAKT,S,sCAK3B,IAAMW,EAAW,CACf,CACEX,KAAKC,IAAIK,KACT,CACEM,QAAS,CAAC,EAAG,GACbC,UAAW,CAAC,kBAAmB,uBAC/BC,MAAO,QAET,CAAEC,SAAU,IAAMC,MAAO,MAE3B,CACEhB,KAAKC,IAAIK,KACT,CACEM,QAAS,CAAC,EAAG,GACbC,UAAW,CAAC,uBAAwB,oBAEtC,CAAEI,GAAI,IAAO,KACb,CAAEF,SAAU,IAAMC,MAAO,QAI7B,IAAAE,UAASP,IAET,IAAAQ,SACEnB,KAAKC,IAAIG,QACT,CAAES,UAAW,eACb,CAAEE,SAAU,KACZK,SAASC,MAAK,iB,uCAIhB,OAAOrB,KAAKC,IAAIK,KACbgB,QAAQ,6BACRC,UAAUC,SAAS,8B,uCAGP,WACTb,EAAW,CACf,CACEX,KAAKC,IAAIK,KACT,CACEM,QAAS,CAAC,EAAG,GACbC,UAAW,CAAC,kBAAmB,wBAC/BC,MAAO,WAET,CAAEC,SAAU,IAAMC,MAAO,MAE3B,CACEhB,KAAKC,IAAIK,KACT,CACEM,QAAS,CAAC,EAAG,GACbC,UAAW,CAAC,sBAAuB,oBAErC,CAAEI,GAAI,IAAO,KACb,CAAEF,SAAU,IAAMC,MAAO,QAI7B,IAAAE,UAASP,GAAUS,SAASC,MAAK,WAC3B,EAAKI,kBACP,EAAKxB,IAAIK,KAAKoB,MAAMC,eAAe,aAIvC,IAAAR,SACEnB,KAAKC,IAAIG,QACT,CAAES,UAAW,eACb,CAAEE,SAAU,KACZK,SAASC,MAAK,mB,GA3FpB,MAEqBO,W,UA6FN7B,G,6UCjGf,QACA,S,iaAEMA,E,ieAEFC,KAAKC,IAAM,CACT4B,IAAK7B,KAAKG,GACV2B,yBACK9B,KAAKG,GAAG4B,iBAAiB,6CAE9BC,eAAgBhC,KAAKG,GAAGE,cACtB,mDAEF4B,WAAYjC,KAAKG,GAAGE,cAClB,mDAEF6B,eAAgBlC,KAAKG,GAAGE,cACtB,8EAEF8B,sBACKnC,KAAKG,GAAG4B,iBAAiB,4CAE9BK,gCACKpC,KAAKG,GAAG4B,iBACT,sDAKN,IAAMM,EAAc,IAAIC,OAAOC,gBAAgBD,OAAOE,SAASC,QAa/D,GAXAzC,KAAK0C,cAAgBL,EAAYM,IAAI,UAErC3C,KAAK4C,QAAU,CACbC,UAAW,2BACXC,gBAAiB,mCACjBC,OAAQ,oBACRC,iBAAkB,uBAGpBhD,KAAKiD,OAEDjD,KAAK0C,cACP,OAAO1C,KAAKkD,UAvCA,IA0CNpB,EAAiB9B,KAAKC,IAAtB6B,aAEJA,EAAaqB,OAAS,GACxBrB,EAAaA,EAAaqB,OAAS,GAAG5B,UAAU6B,IAC9CpD,KAAK4C,QAAQC,a,qCAKJ,WACY7C,KAAKC,IAAtB6B,aAEKuB,SAAQ,SAAAC,GACnBA,EAAW/C,iBAAiB,QAAS,EAAKgD,cAAc9C,KAAK,OAG/DT,KAAKC,IAAImC,oBAAoBiB,SAAQ,SAAAG,GACnC,IAAIC,UAAoBD,Q,gCAIlB,aACiCxD,KAAKC,IAAtC4B,EADA,EACAA,IAAKM,EADL,EACKA,UADL,EACgBL,aAEXuB,SAAQ,SAAAC,GACnBA,EAAW/B,UAAUmC,OAAO,EAAKd,QAAQC,cAG3C,IAAMc,EAAe9B,EAAIxB,cAAJ,2CACwBL,KAAK0C,cAD7B,MAIA,OAAjBiB,GACFA,EAAapC,UAAU6B,IAAIpD,KAAK4C,QAAQC,WAG1C,IAAIe,EAAc,GAElBA,EAAc/B,EAAIE,iBAAJ,yCAC6B/B,KAAK0C,cADlC,MAIdP,EAAUkB,SAAQ,SAAAQ,GAChBA,EAAMtC,UAAU6B,IAAI,EAAKR,QAAQG,WAGnCa,EAAYP,SAAQ,SAAAQ,GAClBA,EAAMtC,UAAUmC,OAAO,EAAKd,QAAQG,a,6BAIjC,MAC2B/C,KAAKC,IAA7B+B,EADH,EACGA,eAER,GAHK,EACmBH,IACpBN,UAAU6B,IAAIpD,KAAK4C,QAAQI,kBAC1BhB,EAAL,CAEAA,EAAe8B,aAAa,gBAAiB,QAE7C,IAAMC,EAAgB/B,EAAegC,QAAQC,QAAUjE,KAAK0C,cACvDqB,IACL/D,KAAKkE,cAAgBH,EAErB/D,KAAKmE,uB,oCAGOC,GACZA,EAAEC,iBACED,EAAEE,cAAc/C,UAAUC,SAASxB,KAAK4C,QAAQC,aAEpD7C,KAAKuE,sBAAsBH,GAC3BpE,KAAKmE,sB,wCAIL,OAAInE,KAAK0C,cACA1C,KAAK0C,cAGP,O,4CAGa0B,GAAG,aACkBpE,KAAKC,IAAtC6B,EADe,EACfA,aAAcI,EADC,EACDA,eAChBsC,EAAUJ,EAAEE,cAClB,GAAKE,EAAL,CAEAxE,KAAKkE,cAAgBM,EAAQR,QAAQC,QAAU,KAE/C/B,EAAeuC,YAAcD,EAAQC,YAErC3C,EAAauB,SAAQ,SAAAC,GACnBA,EAAW/B,UAAUmC,OAAO,EAAKd,QAAQC,WACzCS,EAAWQ,aAAa,gBAAiB,YAG3CU,EAAQjD,UAAU6B,IAAIpD,KAAK4C,QAAQC,WACnC2B,EAAQV,aAAa,gBAAiB,QACtC,IAAMzB,EAAc,IAAIC,OAAOC,gBAAgBD,OAAOE,SAASC,QAC/DzC,KAAKkE,cACD7B,EAAYqC,IAAI,SAAU1E,KAAKkE,eAC/B7B,EAAYsC,OAAO,UAEnBC,MAAMC,KAAKxC,GAAac,QAAU,EACpCb,OAAOwC,QAAQC,UAAU,KAAM,KAA/B,IAAyC1C,EAAY2C,YAErD1C,OAAOwC,QAAQC,UAAU,KAAM,KAAMzC,OAAOE,SAASyC,a,yCAItC,aACsBjF,KAAKC,IAApC4B,EADS,EACTA,IAAKI,EADI,EACJA,WAAYE,EADR,EACQA,UAErByB,EAAc,GAEd5D,KAAKkE,eACPN,EAAc/B,EAAIE,iBAAJ,yCAC6B/B,KAAKkE,cADlC,MAId/B,EAAUkB,SAAQ,SAAAQ,GAChBA,EAAMtC,UAAU6B,IAAI,EAAKR,QAAQG,WAGnCa,EAAYP,SAAQ,SAAAQ,GAClBA,EAAMtC,UAAUmC,OAAO,EAAKd,QAAQG,YAGtCZ,EAAUkB,SAAQ,SAAAQ,GAChBA,EAAMtC,UAAUmC,OAAO,EAAKd,QAAQG,WAIpCa,EAAYT,QAAU,IAAMnD,KAAKkE,cACnCjC,EAAWV,UAAU6B,IAAIpD,KAAK4C,QAAQG,QAEtCd,EAAWV,UAAUmC,OAAO1D,KAAK4C,QAAQG,Y,GAlL1BnB,a,UAuLN7B","file":"34.d8d7e5c2bc0bc7e56589.js","sourcesContent":["import { animate, timeline } from 'motion';\n\nimport { Component } from '@verndale/core';\n\nclass Module extends Component {\n setupDefaults() {\n this.dom = {\n caseStudiesTabButton: this.el,\n overlay: this.el.querySelector('.overlay'),\n text: this.el.querySelector('.case-studies-tab__button .text')\n };\n }\n\n addListeners() {\n this.dom.caseStudiesTabButton.addEventListener(\n 'mouseenter',\n this.handleHoverIn.bind(this)\n );\n this.dom.caseStudiesTabButton.addEventListener(\n 'mouseleave',\n this.handleHoverOut.bind(this)\n );\n }\n\n handleHoverIn() {\n const sequence = [\n [\n this.dom.text,\n {\n opacity: [1, 0],\n transform: ['translate(0, 0)', 'translate(100px, 0)'],\n color: '#fff'\n },\n { duration: 0.15, delay: 0.05 }\n ],\n [\n this.dom.text,\n {\n opacity: [0, 1],\n transform: ['translate(-100px, 0)', 'translate(0, 0)']\n },\n { at: 0.17 + 0.05 },\n { duration: 0.15, delay: 0.05 }\n ]\n ];\n\n timeline(sequence);\n\n animate(\n this.dom.overlay,\n { transform: 'scale(2, 1)' },\n { duration: 0.7 }\n ).finished.then(() => {});\n }\n\n isActiveButton() {\n return this.dom.text\n .closest('.case-studies-tab__button')\n .classList.contains('job-listing__cta--active');\n }\n\n handleHoverOut() {\n const sequence = [\n [\n this.dom.text,\n {\n opacity: [1, 0],\n transform: ['translate(0, 0)', 'translate(-100px, 0)'],\n color: '#1c1c1c'\n },\n { duration: 0.15, delay: 0.05 }\n ],\n [\n this.dom.text,\n {\n opacity: [0, 1],\n transform: ['translate(100px, 0)', 'translate(0, 0)']\n },\n { at: 0.17 + 0.05 },\n { duration: 0.15, delay: 0.05 }\n ]\n ];\n\n timeline(sequence).finished.then(() => {\n if (this.isActiveButton()) {\n this.dom.text.style.removeProperty('color');\n }\n });\n\n animate(\n this.dom.overlay,\n { transform: 'scale(0, 1)' },\n { duration: 0.7 }\n ).finished.then(() => {});\n }\n}\n\nexport default Module;\n","import { Component } from '@verndale/core';\nimport animatedLargeButton from './animatedLargeButton';\n\nclass Module extends Component {\n setupDefaults() {\n this.dom = {\n $el: this.el,\n $regionsCtas: [\n ...this.el.querySelectorAll('.job-listing__content .job-listing__cta')\n ],\n $defaultActive: this.el.querySelector(\n '.job-listing__content .job-listing__cta--active'\n ),\n $noResults: this.el.querySelector(\n '.job-listing__openings .job-listing--no-results'\n ),\n $noResultsName: this.el.querySelector(\n '.job-listing__openings .job-listing--no-results .job-listing__opening-name'\n ),\n $allItems: [\n ...this.el.querySelectorAll('.job-listing__openings li[data-region]')\n ],\n regionsCtasAnimated: [\n ...this.el.querySelectorAll(\n '.job-listing__content .case-studies-tab__button'\n )\n ]\n };\n\n const queryParams = new window.URLSearchParams(window.location.search);\n\n this.initialRegion = queryParams.get('region');\n\n this.classes = {\n ctaActive: 'job-listing__cta--active',\n noResultVisible: 'job-listing--no-results--visible',\n hidden: 'job-listing--hide',\n jobListingLoaded: 'job-listing--loaded'\n };\n\n this.init();\n\n if (this.initialRegion) {\n return this.initUrl();\n }\n\n const { $regionsCtas } = this.dom;\n\n if ($regionsCtas.length > 0) {\n $regionsCtas[$regionsCtas.length - 1].classList.add(\n this.classes.ctaActive\n );\n }\n } //setupDefaults\n\n addListeners() {\n const { $regionsCtas } = this.dom;\n\n $regionsCtas.forEach($regionCta => {\n $regionCta.addEventListener('click', this.handleOnCLick.bind(this));\n });\n\n this.dom.regionsCtasAnimated.forEach(cta => {\n new animatedLargeButton(cta);\n });\n } //addListeners\n\n initUrl() {\n const { $el, $allItems, $regionsCtas } = this.dom;\n\n $regionsCtas.forEach($regionCta => {\n $regionCta.classList.remove(this.classes.ctaActive);\n });\n\n const filterButton = $el.querySelector(\n `.case-studies-tab__button[data-region*=\"${this.initialRegion}\"]`\n );\n\n if (filterButton !== null) {\n filterButton.classList.add(this.classes.ctaActive);\n }\n\n let $matchItems = [];\n\n $matchItems = $el.querySelectorAll(\n `.job-listing__openings [data-region*=\"${this.initialRegion}\"]`\n );\n\n $allItems.forEach($item => {\n $item.classList.add(this.classes.hidden);\n });\n\n $matchItems.forEach($item => {\n $item.classList.remove(this.classes.hidden);\n });\n }\n\n init() {\n const { $defaultActive, $el } = this.dom;\n $el.classList.add(this.classes.jobListingLoaded);\n if (!$defaultActive) return;\n\n $defaultActive.setAttribute('aria-selected', 'true');\n\n const defaultRegion = $defaultActive.dataset.region || this.initialRegion;\n if (!defaultRegion) return;\n this.currentRegion = defaultRegion;\n\n this.showJobsByRegion();\n } //init\n\n handleOnCLick(e) {\n e.preventDefault();\n if (e.currentTarget.classList.contains(this.classes.ctaActive)) return;\n\n this.ctasActiveClassToggle(e);\n this.showJobsByRegion();\n } //handleOnCLick\n\n getActiveRegion() {\n if (this.initialRegion) {\n return this.initialRegion;\n }\n\n return null;\n }\n\n ctasActiveClassToggle(e) {\n const { $regionsCtas, $noResultsName } = this.dom;\n const $target = e.currentTarget;\n if (!$target) return;\n\n this.currentRegion = $target.dataset.region || null;\n\n $noResultsName.textContent = $target.textContent;\n\n $regionsCtas.forEach($regionCta => {\n $regionCta.classList.remove(this.classes.ctaActive);\n $regionCta.setAttribute('aria-selected', 'false');\n });\n\n $target.classList.add(this.classes.ctaActive);\n $target.setAttribute('aria-selected', 'true');\n const queryParams = new window.URLSearchParams(window.location.search);\n this.currentRegion\n ? queryParams.set('region', this.currentRegion)\n : queryParams.delete('region');\n\n if (Array.from(queryParams).length >= 1) {\n window.history.pushState(null, null, `?${queryParams.toString()}`);\n } else {\n window.history.pushState(null, null, window.location.pathname);\n }\n } //ctasActiveClassToggle\n\n showJobsByRegion() {\n const { $el, $noResults, $allItems } = this.dom;\n\n let $matchItems = [];\n\n if (this.currentRegion) {\n $matchItems = $el.querySelectorAll(\n `.job-listing__openings [data-region*=\"${this.currentRegion}\"]`\n );\n\n $allItems.forEach($item => {\n $item.classList.add(this.classes.hidden);\n });\n\n $matchItems.forEach($item => {\n $item.classList.remove(this.classes.hidden);\n });\n } else {\n $allItems.forEach($item => {\n $item.classList.remove(this.classes.hidden);\n });\n }\n\n if ($matchItems.length >= 1 || !this.currentRegion) {\n $noResults.classList.add(this.classes.hidden);\n } else {\n $noResults.classList.remove(this.classes.hidden);\n }\n } //showJobsByRegion\n}\n\nexport default Module;\n"],"sourceRoot":""}