{"version":3,"sources":["Utilities/Helper.client.ts","Components/StickyButtonPriceCompare/StickyButtonPriceCompare.client.ts","Utilities/Webfontloader.ts","Containers/TopNav/TopNav.client.ts","Components/SearchForm/SearchFormWidget.client.ts","Containers/SiteFooter/SiteFooter.client.ts","Utilities/SmoothScroll.ts","Containers/TopNav/TopMenu.client.ts","Utilities/DelayThirdPartyScripts.ts","Utilities/AboveTheFoldObserver.client.ts","Utilities/PolyfillLoader.ts","../node_modules/countup.js/dist/countUp.min.js","Pages/Home/HomePage.client.ts"],"names":["createScriptTag","content","url","callback","script","document","createElement","setAttribute","appendChild","createTextNode","onload","body","initObserver","args","observableElements","forEach","observable","push","length","entry","index","IntersectionObserver","entries","observer","threshold","observe","element","createObserver","priceBtn","querySelector","stickyButtonPriceCompareHandler","target","event","preventDefault","distance","getBoundingClientRect","top","window","scrollY","smoothScrollTo","toggleStickyPriceCompareButton","options","shouldShow","screen","availWidth","classList","add","remove","bottom","availHeight","intersectionRatio","StickyButtonPriceCompareClient","btn","addEventListener","WebFont","load","google","families","timeout","topNavEl","topLogo","topNavObserverEl","getWindowScroll","pageYOffset","toggleTopNavStyling","bgChange","clientHeight","toggleTopNavLogo","innerWidth","topNavObserver","requestIdleCallback","isSearchFormLoaded","getSearchFormContainer","getElementById","getSearchFormObservableEntry","isIntersecting","__SEARCHFORM_URL__","getFooterLinksObservableEntry","showCurrentYear","currentYear","Date","getFullYear","innerHTML","smoothScroll","SmoothScroll","topNavElement","offset","animateScroll","speed","navToggleHandler","slidingMenu","open","TopMenuClient","openToggle","closeToggle","slidingMenuBg","delayThirdPartyScripts","__BENTO_SCRIPT_URL__","isScrolled","aboveTheFoldObserver","onIntersected","cb","start","now","setTimeout","didTimeout","timeRemaining","Math","max","cancelIdleCallback","id","clearTimeout","CustomEvent","navigator","userAgent","match","__assign","Object","assign","t","i","a","s","arguments","n","prototype","hasOwnProperty","call","apply","this","CountUp","endVal","version","defaults","startVal","decimalPlaces","duration","useEasing","useGrouping","smartEasingThreshold","smartEasingAmount","separator","decimal","prefix","suffix","finalEndVal","countDown","error","paused","count","startTime","remaining","frameVal","easingFn","Number","toFixed","printValue","rAF","requestAnimationFrame","update","formatNumber","e","r","abs","o","split","l","h","numerals","replace","easeOutExpo","pow","formattingFn","validateValue","resetDuration","String","el","determineDirectionAndSmartEasing","pauseResume","cancelAnimationFrame","reset","tagName","value","textContent","ensureNumber","isNaN","counterObserver","animated","PolyfillLoader","webFontLoader","LazyLoad","elements_selector","searchFormContainer"],"mappings":"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","file":"static/js/vroomuk-client.396cd2eb.chunk.js","sourcesContent":["import 'intersection-observer';\n\nexport const waitUntilExist = (things: any, time: number, callback: () => void) => {\n if(typeof things !== 'undefined' || things !== null) {\n callback();\n }\n else {\n setTimeout(function() {\n waitUntilExist(things, time, callback);\n }, time);\n }\n};\n\nexport const createScriptTag = (content: string | null, url?: string, callback?: () => void): void => {\n const script = document.createElement('script');\n script.setAttribute('type', 'text/javascript');\n if (content !== null) {\n script.appendChild(document.createTextNode(content));\n }\n\n if (typeof url !== 'undefined') {\n script.setAttribute('defer', 'defer');\n script.setAttribute('src', url);\n }\n\n if (typeof callback !== 'undefined') {\n script.onload = callback;\n }\n\n document.body.appendChild(script);\n};\n\nexport interface IPageObserverEntry {\n element: HTMLElement;\n callback: (entry: IntersectionObserverEntry) => void;\n threshold?: number[];\n}\n\nexport const createObserver = (args: IPageObserverEntry[]): void => {\n args.forEach((entry, index: number) => {\n const observer = new IntersectionObserver((entries, observer) => {\n if (typeof args[index] !== 'undefined') {\n args[index].callback(entries[0]);\n }\n }, {\n threshold: typeof entry.threshold !== 'undefined' ? entry.threshold : [0.5, 0.75]\n });\n observer.observe(entry.element);\n });\n};\n\nexport const initObserver = (args: (IPageObserverEntry | null)[]): void => {\n const observableElements: IPageObserverEntry[] = [];\n\n args.forEach((observable: IPageObserverEntry | null) => {\n if (observable !== null) {\n observableElements.push(observable)\n }\n });\n\n if (observableElements.length > 0) {\n createObserver(observableElements);\n }\n};\n","import { smoothScrollTo } from '../../Utilities/SmoothScroll';\n\nconst priceBtn: HTMLElement | null = document.querySelector('.PriceCompareBtn');\n\nconst stickyButtonPriceCompareHandler = (target: HTMLElement) => (event: Event) => {\n event.preventDefault();\n const distance: number = target.getBoundingClientRect().top + window.scrollY;\n smoothScrollTo(distance);\n};\n\nexport const toggleStickyPriceCompareButton = (entry: IntersectionObserverEntry, options?: any) => {\n if (priceBtn === null) {\n return;\n }\n\n let shouldShow = true;\n\n // If on mobile device, account for when virtual keyboard is shown\n if (window.screen.availWidth < 768) {\n // Remove display none and add visibility: none so we can get the button BoundingClientRect on the viewport\n priceBtn.classList.add('invisible');\n priceBtn.classList.remove('xs:hidden');\n shouldShow = priceBtn.getBoundingClientRect().bottom > (window.screen.availHeight / 2);\n \n // reset visibility\n priceBtn.classList.remove('invisible');\n }\n\n if (shouldShow === false) {\n priceBtn.classList.add('xs:hidden');\n return;\n }\n\n // Use entry.intersectionRatio if need more precise when hiding/showing the button\n entry.intersectionRatio > 0.5 ? priceBtn.classList.add('xs:hidden') : priceBtn.classList.remove('xs:hidden');\n\n};\n\nexport const StickyButtonPriceCompareClient = (target: HTMLElement): void => {\n const btn: HTMLElement | null = document.querySelector('.PriceCompareBtn button');\n\n if (btn !== null) {\n btn.addEventListener('click', stickyButtonPriceCompareHandler(target));\n btn.addEventListener('touchend', stickyButtonPriceCompareHandler(target));\n }\n};\n","import WebFont from 'webfontloader';\n\nexport default (): void => {\n WebFont.load({\n google: {\n families: ['DM Sans:400,700&display=swap']\n },\n timeout: 4000\n })\n};\n","import {IPageObserverEntry} from '../../Utilities/Helper.client';\n\nconst topNavEl: HTMLDivElement | null = document.querySelector('.top-nav');\nconst topLogo: HTMLDivElement | null = document.querySelector('.topLogoContainer');\nconst topNavObserverEl: HTMLElement | null = document.querySelector('.TopNavObserver');\n\nconst getWindowScroll = (): number => {\n if (typeof window.scrollY !== 'undefined') {\n return window.scrollY;\n }\n\n return window.pageYOffset;\n}\n\nexport const toggleTopNavStyling = (bgChange?: boolean): void => {\n if (topNavEl === null || topLogo === null) {\n return;\n }\n\n // Subtract topNav height to prevent overlap when scrolled\n const isScroll: boolean = getWindowScroll() > (topNavEl.clientHeight - 30);\n\n if (isScroll === true) {\n bgChange === true && topNavEl.classList.add('bg-blue-400');\n topLogo.classList.add('md:max-w-210');\n } else {\n bgChange === true && topNavEl.classList.remove('bg-blue-400');\n topLogo.classList.remove('md:max-w-210');\n }\n}\n\nexport const toggleTopNavLogo = (): void => {\n if (topNavEl === null || topLogo === null || window.innerWidth >= 768) {\n return;\n }\n\n if (getWindowScroll() > topNavEl.clientHeight) {\n topLogo.classList.remove('xs:invisible');\n } else {\n topLogo.classList.add('xs:invisible');\n }\n}\n\nexport const topNavObserver = (callback: () => void): IPageObserverEntry | null => {\n if (topNavObserverEl === null) {\n return topNavObserverEl;\n }\n\n return {\n element: topNavObserverEl,\n callback: () => {\n window.requestIdleCallback(() => {\n callback();\n }, { timeout: 1000 })\n },\n threshold: [0, 0.2, 0.8, 1]\n }\n}\n","import {IPageObserverEntry} from '../../Utilities/Helper.client';\nimport { toggleStickyPriceCompareButton } from '../StickyButtonPriceCompare/StickyButtonPriceCompare.client';\n\nlet isSearchFormLoaded: boolean = false;\n\nexport const getSearchFormContainer = (): HTMLElement | null => {\n return document.getElementById('vvv-search-form-widget');\n};\n\nconst loadSearchFormScript = () => {\n if (isSearchFormLoaded === false) {\n isSearchFormLoaded = true;\n window.requestIdleCallback(() => {\n const script = document.createElement('script');\n script.setAttribute('type', 'text/javascript');\n script.setAttribute('defer', 'defer');\n script.setAttribute('src', __SEARCHFORM_URL__);\n document.body.appendChild(script);\n }, { timeout: 2000 });\n }\n};\n\nexport const getSearchFormObservableEntry = (): IPageObserverEntry | null => {\n const target: HTMLElement | null = getSearchFormContainer();\n if (target === null) {\n return target;\n }\n\n return {\n element: target,\n callback: (entry: IntersectionObserverEntry): void => {\n // only load once\n if (entry.isIntersecting === true && entry.intersectionRatio > 0.5 && isSearchFormLoaded === false) {\n loadSearchFormScript();\n }\n\n toggleStickyPriceCompareButton(entry);\n }\n }\n};\n","import {IPageObserverEntry} from '../../Utilities/Helper.client';\nimport {toggleStickyPriceCompareButton} from '../../Components/StickyButtonPriceCompare/StickyButtonPriceCompare.client';\n\nexport const getFooterLinksObservableEntry = (): IPageObserverEntry | null => {\n const target: HTMLElement | null = document.querySelector('.FooterLinks');\n\n if (target === null) {\n return target;\n }\n\n return {\n element: target,\n callback: (entry: IntersectionObserverEntry): void => {\n toggleStickyPriceCompareButton(entry);\n }\n }\n};\n\nexport const showCurrentYear = () => {\n const currentYear: number = new Date().getFullYear();\n const element: HTMLElement | null = document.querySelector('.footerCurrentYear');\n\n if (element === null) {\n return;\n }\n\n element.innerHTML = `${currentYear}`;\n}","import SmoothScroll from 'smooth-scroll';\n\nconst smoothScroll = new SmoothScroll();\nconst topNavElement: HTMLElement | null = document.querySelector('.top-nav');\n\nexport const smoothScrollTo = (target: HTMLElement | number): void => {\n let offset: number = 0;\n\n if (topNavElement !== null) {\n offset = topNavElement.clientHeight;\n }\n\n if (typeof target === 'number') {\n target -= offset;\n }\n\n smoothScroll.animateScroll(target, null, {\n speed: 1000,\n offset: offset,\n });\n};","const navToggleHandler = (slidingMenu: HTMLElement, open: boolean) => (event: Event) => {\n event.preventDefault();\n if (event.target !== null) {\n open === true ? slidingMenu.classList.remove('hidden') : slidingMenu.classList.add('hidden');\n open === true ? document.body.classList.add('overflow-hidden') : document.body.classList.remove('overflow-hidden');\n }\n};\n\nexport const TopMenuClient = (): void => {\n const slidingMenu: null | HTMLElement = document.querySelector('.TopSlidingMenu');\n const openToggle: null | HTMLButtonElement = document.querySelector('.TopMenuToggle');\n const closeToggle: null | HTMLElement = document.querySelector('.SlidingMenuClose');\n const slidingMenuBg: null | HTMLElement = document.querySelector('.TopSlidingMenuBg');\n\n if (openToggle !== null && slidingMenu !== null && closeToggle !== null && slidingMenuBg !== null) {\n openToggle.addEventListener('click', navToggleHandler(slidingMenu, true));\n openToggle.addEventListener('touchend', navToggleHandler(slidingMenu, true));\n closeToggle.addEventListener('click', navToggleHandler(slidingMenu, false));\n closeToggle.addEventListener('touchend', navToggleHandler(slidingMenu, false));\n slidingMenuBg.addEventListener('click', navToggleHandler(slidingMenu, false));\n }\n};\n","// @ts-nocheck\nimport {createScriptTag} from './Helper.client';\n\nexport const delayThirdPartyScripts = (): void => {\n window.requestIdleCallback(() => {\n createScriptTag(\n null,\n __BENTO_SCRIPT_URL__\n );\n createScriptTag(`var bento_event_queue = []; bento_event_queue.push([\"bento.view()\"]);`);\n }, { timeout: 7000 });\n};\n","import {createScriptTag, IPageObserverEntry} from './Helper.client';\n\nlet isScrolled: boolean = false;\nconst target: HTMLElement | null = document.querySelector('.AboveTheFold');\n\nexport const aboveTheFoldObserver = (onIntersected?: (target: Element) => void): IPageObserverEntry | null => {\n if (target === null) {\n return target;\n }\n\n return {\n element: target,\n callback: (entry: IntersectionObserverEntry): void => {\n if (\n isScrolled !== true &&\n entry.target.getBoundingClientRect().top < 0\n ) {\n isScrolled = true;\n createScriptTag(null, 'https://wchat.freshchat.com/js/widget.js', () => {\n createScriptTag(`\n window.fcWidget.init({\n token: \"d11539bc-c189-4fc7-896b-4eaca3dba929\",\n host: \"https://wchat.freshchat.com\",\n siteId: \"vroom\",\n tags: [\"vroom-au\"],\n config: {\n hideFAQ: true,\n }\n });\n `);\n });\n }\n\n if (typeof onIntersected !== 'undefined') {\n onIntersected(entry.target);\n }\n },\n threshold: [0.1, 0.25]\n }\n}\n","export default function () {\n if (typeof window.requestIdleCallback === 'undefined') {\n window.requestIdleCallback =\n window.requestIdleCallback ||\n function (cb) {\n const start = Date.now();\n return setTimeout(function () {\n cb({\n didTimeout: false,\n timeRemaining: function () {\n return Math.max(0, 50 - (Date.now() - start));\n }\n });\n }, 1);\n }\n\n window.cancelIdleCallback =\n window.cancelIdleCallback ||\n function (id) {\n clearTimeout(id);\n }\n }\n\n if (typeof window.CustomEvent !== \"function\" || window.navigator.userAgent.match(/MSIE|Trident/) !== null) {\n import(/* webpackChunkName: \"Polyfill\" */ './Polyfill');\n }\n}\n","var __assign=this&&this.__assign||function(){return(__assign=Object.assign||function(t){for(var i,a=1,s=arguments.length;as.endVal?s.endVal:s.frameVal,s.frameVal=Number(s.frameVal.toFixed(s.options.decimalPlaces)),s.printValue(s.frameVal),i1?s.options.decimal+o[1]:\"\",s.options.useGrouping){e=\"\";for(var l=0,h=a.length;lt;var i=t-this.startVal;if(Math.abs(i)>this.options.smartEasingThreshold){this.finalEndVal=t;var a=this.countDown?1:-1;this.endVal=t+a*this.options.smartEasingAmount,this.duration=this.duration/2}else this.endVal=t,this.finalEndVal=null;this.finalEndVal?this.useEasing=!1:this.useEasing=this.options.useEasing},t.prototype.start=function(t){this.error||(this.callback=t,this.duration>0?(this.determineDirectionAndSmartEasing(),this.paused=!1,this.rAF=requestAnimationFrame(this.count)):this.printValue(this.endVal))},t.prototype.pauseResume=function(){this.paused?(this.startTime=null,this.duration=this.remaining,this.startVal=this.frameVal,this.determineDirectionAndSmartEasing(),this.rAF=requestAnimationFrame(this.count)):cancelAnimationFrame(this.rAF),this.paused=!this.paused},t.prototype.reset=function(){cancelAnimationFrame(this.rAF),this.paused=!0,this.resetDuration(),this.startVal=this.validateValue(this.options.startVal),this.frameVal=this.startVal,this.printValue(this.startVal)},t.prototype.update=function(t){cancelAnimationFrame(this.rAF),this.startTime=null,this.endVal=this.validateValue(t),this.endVal!==this.frameVal&&(this.startVal=this.frameVal,this.finalEndVal||this.resetDuration(),this.finalEndVal=null,this.determineDirectionAndSmartEasing(),this.rAF=requestAnimationFrame(this.count))},t.prototype.printValue=function(t){var i=this.formattingFn(t);\"INPUT\"===this.el.tagName?this.el.value=i:\"text\"===this.el.tagName||\"tspan\"===this.el.tagName?this.el.textContent=i:this.el.innerHTML=i},t.prototype.ensureNumber=function(t){return\"number\"==typeof t&&!isNaN(t)},t.prototype.validateValue=function(t){var i=Number(t);return this.ensureNumber(i)?i:(this.error=\"[CountUp] invalid start or end value: \"+t,null)},t.prototype.resetDuration=function(){this.startTime=null,this.duration=1e3*Number(this.options.duration),this.remaining=this.duration},t}();export{CountUp};","import LazyLoad from \"vanilla-lazyload\";\nimport { CountUp } from \"countup.js\";\nimport { initObserver, IPageObserverEntry } from \"../../Utilities/Helper.client\";\n\nimport { TopMenuClient } from \"../../Containers/TopNav/TopMenu.client\";\nimport { showCurrentYear } from \"../../Containers/SiteFooter/SiteFooter.client\";\nimport webFontLoader from \"../../Utilities/Webfontloader\";\nimport {\n getSearchFormContainer,\n getSearchFormObservableEntry,\n} from \"../../Components/SearchForm/SearchFormWidget.client\";\nimport { StickyButtonPriceCompareClient } from \"../../Components/StickyButtonPriceCompare/StickyButtonPriceCompare.client\";\nimport { delayThirdPartyScripts } from \"../../Utilities/DelayThirdPartyScripts\";\nimport {\n toggleTopNavLogo,\n toggleTopNavStyling,\n topNavObserver,\n} from \"../../Containers/TopNav/TopNav.client\";\nimport { aboveTheFoldObserver } from \"../../Utilities/AboveTheFoldObserver.client\";\nimport PolyfillLoader from \"../../Utilities/PolyfillLoader\";\n\nconst counterObserver = (): IPageObserverEntry | null => {\n const target: HTMLElement | null = document.querySelector(\"#customerCounter\");\n\n if (target === null) {\n return target;\n }\n\n let animated: boolean = false;\n\n return {\n element: target,\n callback: (entry: IntersectionObserverEntry): void => {\n if (animated !== true && entry.intersectionRatio > 0) {\n animated = true;\n const countup = new CountUp(\"customerCounter\", 423);\n countup.start();\n }\n },\n };\n};\n\nPolyfillLoader();\n\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n webFontLoader();\n\n new LazyLoad({\n elements_selector: \".lazyload\",\n });\n\n TopMenuClient();\n showCurrentYear();\n\n const searchFormContainer: HTMLElement | null = getSearchFormContainer();\n if (searchFormContainer !== null) {\n StickyButtonPriceCompareClient(searchFormContainer);\n }\n\n initObserver([\n getSearchFormObservableEntry(),\n counterObserver(),\n aboveTheFoldObserver(),\n topNavObserver(() => {\n toggleTopNavStyling(true);\n toggleTopNavLogo();\n }),\n ]);\n});\n\nwindow.onload = () => {\n delayThirdPartyScripts();\n};\n"],"sourceRoot":""}