{"version":3,"sources":["cac.main.js","cac.nav.js","menus.js"],"names":["remCalc","px","base","let","tempPx","String","replace","parseInt","globalThis","cac_data","currency","currencyFmt","Intl","NumberFormat","style","maximumFractionDigits","minimumFractionDigits","ga","sendEvent","evtName","evtData","Reflect","has","window","gtag","console","log","viewItem","product","value","price","items","item_id","id","item_brand","make","item_name","model","item_variant","derivativeAndColour","item_category","type","item_category2","condition","discount","index","item_list_id","listId","item_list_name","listName","quantity","viewList","products","name","viewContentType","contentType","viewContentTypes","contentTypes","forEach","productEnquirySent","push","dataLayer","formSubmitted","form","form_id","form_name","form_destination","action","form_submit_text","evtDatalayer","event","gtm.element","gtm.elementId","gtm.elementUrl","location","href","tapPhoneNumber","url","capturePhonetapUtmData","send_to","event_callback","getUtmFromStorage","cac_util","storageAvailable","utmWrapper","ca_utmGuid","localStorage","getItem","ca_UtmSrc","ca_UtmMedium","ca_UtmTerm","ca_UtmCampaign","ca_UtmContent","ca_RefferingURL","ca_LandingURL","ca_keyWord","ca_DocReff","ca_gclid","ca_gid","asString","asJson","utmData","utm","utmJson","headers","Headers","request","append","Request","method","body","JSON","stringify","fetch","then","response","status","init","document","querySelectorAll","link","addEventListener","e","currentTarget","recaptcha","key","required","rendered","this","verify","resultFunction","actionName","elements","EnquiryTypeAction","grecaptcha","ready","execute","token","axios","X-Requested-With","recaptcha_response","success","data","actionsConfirmed","makes_models","results","carousel","finance","calculator","panel","isChild","el","closest","parentPanelElementOfChild","datepicker","create","parent","parentElement","querySelector","setAttribute","flatpickr","altInput","wrap","altFormat","minDate","altInputClass","onReady","selectedDates","dateStr","instance","isMobile","element","btn","classList","remove","onChange","length","removeAttribute","getStatusDisplay","setState","initial","dataset","state","setParentPanelState","loading","callback","statusBtn","focus","error","hasState","add","handleStateClick","preventDefault","button","isSuccess","matches","reset","registerStatusListeners","enquiry","handleValidation","target","valid","detail","handleSubmit","handleSubmitClick","recaptchaResult","send","validator","isValid","generatesLead","lead","api","Content-Type","undefined","__RequestVerificationToken","jsonData","pair","FormData","entries","val","transformedData","post","formName","catch","toJSON","finally","checkHoneypot","input","removeEventListener","once","setTimeout","parentNode","removeChild","forms","honeypot","toTop","current","topElement","topElementId","getAttribute","slice","getElementById","buttonHandler","scrollIntoView","behavior","block","inline","observer","entry","isHeaderEl","isFooterEl","entryTop","boundingClientRect","top","show","intersectionRatio","nudge","isIntersecting","toggle","contains","footerTarget","IntersectionObserver","rootMargin","threshold","observe","sanitizeHTML","strings","entities","&","<",">","\"","'","result","i","arguments","char","sanitiseNumber","x","isNaN","NaN","empty","containerElem","firstChild","disableField","field","enableField","disableFields","fields","NodeList","Array","isArray","enableFields","slugify","str","conversions","ae","oe","ue","a","c","d","f","g","h","j","k","l","n","o","r","s","t","u","y","w","z","ss","ij","Object","keys","map","re","RegExp","trim","toLowerCase","test","navigator","userAgent","storage","setItem","removeItem","DOMException","onreadystatechange","readyState","getElements","layout","menu","header","menuLink","menuClose","toggleClass","className","handleEvent","active","dropdowns","siteHeader","mql","matchMedia","PureDropdown","dropdownParent","ACTIVE_CLASS_NAME","PREFIX","ARIA_ROLE","ARIA_HIDDEN","MENU_LINK_SELECTOR","ddm","_state","_dropdownParent","_menu","hide","_link","halt","stopPropagation","_firstMenuLink","call","otherDdm","currentLink","previousSibling","nextSibling","nextLink","keyCode","nodeType","previousLink","blur","dropdownParents"],"mappings":"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","file":"site.min.js","sourcesContent":["\r\n/**\r\n * Converts pixel size to rem and accepts the base as second argument. default base is 16px\r\n *\r\n * @param {number|string} px\r\n * @param {number} base\r\n * @return {string}\r\n */\r\nfunction remCalc(px, base = 16) {\r\n let tempPx = px\r\n if (typeof px === 'string' || px instanceof String)\r\n tempPx = tempPx.replace('px', '')\r\n\r\n tempPx = parseInt(tempPx)\r\n return (1 / base) * tempPx + 'rem'\r\n}\r\n\r\nglobalThis.cac_data = (typeof globalThis.cac_data === \"undefined\") ? {} : globalThis.cac_data;\r\ncac_data.currency = \"GBP\";\r\ncac_data.currencyFmt = new Intl.NumberFormat(\"en-GB\", {\r\n style: \"currency\",\r\n currency: cac_data.currency,\r\n maximumFractionDigits: 0,\r\n minimumFractionDigits: 0\r\n});\r\ncac_data.ga = {\r\n sendEvent: function (evtName, evtData) {\r\n if (!Reflect.has(window, 'gtag')) return;\r\n //evtData[\"cac.info\"] = \"I was triggered by javascript on the website :)\";\r\n try {\r\n gtag('event', evtName, evtData);\r\n console.log(`Event: ${evtName}`);\r\n console.log(`Event data:`);\r\n console.log(evtData);\r\n return true;\r\n } catch {\r\n return false;\r\n }\r\n },\r\n viewItem: function (product) {\r\n const evtData = {\r\n currency: cac_data.currency,\r\n value: product.price,\r\n items: [{\r\n item_id: product.id,\r\n item_brand: product.make,\r\n item_name: product.model,\r\n item_variant: product.derivativeAndColour,\r\n item_category: product.type,\r\n item_category2: product.condition,\r\n currency: cac_data.currency,\r\n discount: product.discount,\r\n index: 0,\r\n item_list_id: product.listId,\r\n item_list_name: product.listName,\r\n price: product.price,\r\n quantity: 1\r\n }]\r\n };\r\n cac_data.ga.sendEvent(\"view_item\", evtData);\r\n },\r\n viewList: function (products, id, name) {\r\n const evtData = {\r\n item_list_id: id,\r\n item_list_name: name,\r\n items: [products]\r\n };\r\n cac_data.ga.sendEvent(\"view_item_list\", evtData);\r\n },\r\n viewContentType: function (contentType) {\r\n cac_data.ga.sendEvent(\"select_content\", contentType);\r\n },\r\n viewContentTypes: function (contentTypes) {\r\n contentTypes.forEach((contentType) => {\r\n cac_data.ga.viewContentType(contentType);\r\n })\r\n },\r\n productEnquirySent: function (value) {\r\n const evtData = (value) ? {\r\n currency: cac_data.currency,\r\n value: value\r\n //send_to: \"G-NJYPZRPZMD\"\r\n } : {\r\n //send_to: \"G-NJYPZRPZMD\"\r\n };\r\n cac_data.ga.sendEvent(\"generate_lead\", evtData);\r\n },\r\n push: function (evtData) {\r\n window.dataLayer = window.dataLayer || [];\r\n dataLayer.push(evtData);\r\n },\r\n formSubmitted: function (form, name) {\r\n const evtData = (form) ? {\r\n form_id: form.id,\r\n form_name: name,\r\n form_destination: form.action,\r\n form_submit_text: \"Submit\"\r\n } : null;\r\n\r\n const ga4EvtData = evtData;\r\n //ga4EvtData.send_to = \"G-NJYPZRPZMD\";\r\n if (evtData != null) {\r\n cac_data.ga.sendEvent(\"form_submit\", evtData);\r\n }\r\n\r\n const evtDatalayer = {\r\n \"event\": \"gtm.formSubmit\",\r\n \"gtm.element\": form,\r\n \"gtm.elementId\": form.id,\r\n \"gtm.elementUrl\": window.location.href\r\n };\r\n cac_data.ga.push(evtDatalayer);\r\n },\r\n tapPhoneNumber: function (url) {\r\n cac_data.ga.capturePhonetapUtmData(url);\r\n var callback = function () {\r\n if (typeof (url) != 'undefined') {\r\n window.location = url;\r\n }\r\n };\r\n const evtData = {\r\n \"send_to\": \"AW-981107271/xxprCMKjxPcYEMeE6tMD\",\r\n \"event_callback\": callback\r\n };\r\n cac_data.ga.sendEvent(\"conversion\", evtData);\r\n return false;\r\n },\r\n\r\n getUtmFromStorage: function () {\r\n if (cac_util.storageAvailable(\"localStorage\")) {\r\n const utmWrapper = {\r\n ca_utmGuid: localStorage.getItem(\"ca_utmGuid\"),\r\n ca_UtmSrc: localStorage.getItem(\"ca_UtmSrc\"),\r\n ca_UtmMedium: localStorage.getItem(\"ca_UtmMedium\"),\r\n ca_UtmTerm: localStorage.getItem(\"ca_UtmTerm\"),\r\n ca_UtmCampaign: localStorage.getItem(\"ca_UtmCampaign\"),\r\n ca_UtmContent: localStorage.getItem(\"ca_UtmContent\"),\r\n ca_RefferingURL: localStorage.getItem(\"ca_RefferingURL\"),\r\n ca_LandingURL: localStorage.getItem(\"ca_LandingURL\"),\r\n ca_keyWord: localStorage.getItem(\"ca_keyWord\"),\r\n ca_DocReff: localStorage.getItem(\"ca_DocReff\"),\r\n ca_gclid: localStorage.getItem(\"ca_gclid\"),\r\n ca_gid: localStorage.getItem(\"ca_gid\"),\r\n get asString() {\r\n return `ca_utmGuid:${utmWrapper.ca_utmGuid};`\r\n + `ca_UtmSrc:${utmWrapper.ca_UtmSrc};`\r\n + `ca_UtmMedium:${utmWrapper.ca_UtmMedium};`\r\n + `ca_UtmTerm:${utmWrapper.ca_UtmTerm};`\r\n + `ca_UtmCampaign:${utmWrapper.ca_UtmCampaign};`\r\n + `ca_UtmContent:${utmWrapper.ca_UtmContent};`\r\n + `ca_RefferingURL:${utmWrapper.ca_RefferingURL};`\r\n + `ca_LandingURL:${utmWrapper.ca_LandingURL};`\r\n + `ca_keyWord:${utmWrapper.ca_keyWord};`\r\n + `ca_DocReff:${utmWrapper.ca_DocReff};`\r\n + `ca_gclid:${utmWrapper.ca_gclid};`\r\n + `ca_gid:${utmWrapper.ca_gid};`;\r\n },\r\n get asJson() {\r\n return {\r\n \"ca_utmGuid\": utmWrapper.ca_utmGuid,\r\n \"ca_UtmSrc\": utmWrapper.ca_UtmSrc,\r\n \"ca_UtmMedium\": utmWrapper.ca_UtmMedium,\r\n \"ca_UtmTerm\": utmWrapper.ca_UtmTerm,\r\n \"ca_UtmCampaign\": utmWrapper.ca_UtmCampaign,\r\n \"ca_UtmContent\": utmWrapper.ca_UtmContent,\r\n \"ca_RefferingURL\": utmWrapper.ca_RefferingURL,\r\n \"ca_LandingURL\": utmWrapper.ca_LandingURL,\r\n \"ca_keyWord\": utmWrapper.ca_keyWord,\r\n \"ca_DocReff\": utmWrapper.ca_DocReff,\r\n \"ca_gclid\": utmWrapper.ca_gclid,\r\n \"ca_gid\": utmWrapper.ca_gid\r\n };\r\n }\r\n };\r\n return utmWrapper;\r\n }\r\n return false;\r\n },\r\n\r\n capturePhonetapUtmData: function (url) {\r\n const endpoint = \"/api/phone-tap\";\r\n const utmData = cac_data.ga.getUtmFromStorage();\r\n const utmDataStr = (utmData === \"undefined\" || !utmData) ? \"\" : utmData.asString;\r\n const utmDataJson = (utmData === \"undefined\" || !utmData) ? \"\" : utmData.asJson;\r\n const evtData = {\r\n \"url\": url,\r\n \"utm\": utmDataStr,\r\n \"utmJson\": utmDataJson\r\n };\r\n\r\n const headers = new Headers();\r\n headers.append(\"Content-Type\", \"application/json\");\r\n const request = new Request(endpoint, {\r\n method: \"POST\",\r\n headers: headers,\r\n body: JSON.stringify(evtData)\r\n });\r\n fetch(request).then(function (response) {\r\n console.log(response.status);\r\n });\r\n //fetch(request);\r\n\r\n //axios.post(endpoint, JSON.stringify(evtData), {\r\n // headers: headers\r\n //}).then(function (response) {\r\n // console.log(response.status);\r\n //});\r\n \r\n },\r\n\r\n init: function () {\r\n document.querySelectorAll('[data-phone-lead]').forEach((link) => {\r\n link.addEventListener('click', function (e) {\r\n const url = e.currentTarget.href;\r\n cac_data.ga.tapPhoneNumber(url)\r\n });\r\n })\r\n }\r\n}\r\ncac_data.recaptcha = {\r\n key: '6Lf9hbAnAAAAAHCdH8rEnHTa6kGgxyz77XPeqhij',\r\n required: false,\r\n rendered: false,\r\n init: function () {\r\n if (this.rendered) return;\r\n if (this.required) {\r\n //grecaptcha.ready(function () {\r\n // grecaptcha.render(\"container\", {\r\n // sitekey: recaptcha.key\r\n // });\r\n // cac_data.recaptcha.rendered = true;\r\n //});\r\n }\r\n },\r\n verify: function (form, resultFunction) {\r\n const actionName = form.elements.EnquiryTypeAction.value || \"form\";\r\n grecaptcha.ready(function () {\r\n grecaptcha.execute(cac_data.recaptcha.key, { action: actionName })\r\n .then(function (token) {\r\n console.log(`token: ${token}`);\r\n axios({\r\n url: `/api/recaptcha/verify-token?token=${token}`,\r\n method: \"GET\",\r\n headers: { 'X-Requested-With': 'XMLHttpRequest' }\r\n })\r\n .then(function (recaptcha_response) {\r\n const success = recaptcha_response.data.success;\r\n const actionsConfirmed = recaptcha_response.data.action == actionName\r\n const result = {\r\n data: {\r\n success: success && actionsConfirmed\r\n }\r\n };\r\n resultFunction(result);\r\n })\r\n });\r\n //axios({\r\n // url: `/api/recaptcha/verify-token?token=${token}`,\r\n // method: \"GET\",\r\n // headers: { 'X-Requested-With': 'XMLHttpRequest' }\r\n //}).then(function (recaptcha_response) {\r\n // console.log(recaptcha_response);\r\n // if (recaptcha_response.data.success) {\r\n // cac_data.form.enquiry.send(form);\r\n // } else {\r\n // cac_data.form.setState.error(form);\r\n // }\r\n //});\r\n });\r\n }\r\n};\r\ncac_data.makes_models = {};\r\ncac_data.results = {};\r\ncac_data.carousel = {};\r\ncac_data.finance = {\r\n calculator: {}\r\n};\r\ncac_data.panel = {\r\n isChild: function (el) {\r\n return (!el.closest('.panel')) ? false : true;\r\n },\r\n parentPanelElementOfChild: function (el) {\r\n return el.closest('.panel');\r\n }\r\n};\r\ncac_data.form = {\r\n datepicker: {\r\n create: function (el) {\r\n if (typeof (flatpickr) != \"function\") return;\r\n let parent = el.parentElement;\r\n let panel = parent.closest('.panel');\r\n parent.querySelector('[data-clear]').setAttribute('disabled', 'disabled');\r\n const options = {\r\n //appendTo: parent,\r\n //static: true,\r\n altInput: true,\r\n wrap: true,\r\n altFormat: \"d/m/Y\",\r\n minDate: \"today\",\r\n altInputClass: \"pure-u form-control form-group-input input-date flatpickr-input filter-date\",\r\n onReady: function (selectedDates, dateStr, instance) {\r\n if (!instance.isMobile) {\r\n instance.element.querySelectorAll('.pure-button').forEach((btn) => { btn.classList.remove('hidden'); })\r\n }\r\n },\r\n onChange: function (selectedDates, dateStr, instance) {\r\n let btn = instance.element.querySelector('[data-clear]');\r\n if (selectedDates.length > 0) {\r\n btn.removeAttribute('disabled');\r\n } else {\r\n btn.setAttribute('disabled', 'disabled');\r\n }\r\n }\r\n }\r\n if (panel != undefined) {\r\n //options.appendTo = panel;\r\n }\r\n flatpickr(parent, options);\r\n }\r\n },\r\n getStatusDisplay: function (form) { return form.querySelector('.form-status-display'); },\r\n setState: {\r\n initial: function (form) {\r\n cac_data.form.getStatusDisplay(form).dataset.state = \"\";\r\n cac_data.form.setParentPanelState(form, false);\r\n },\r\n loading: function (form) {\r\n cac_data.form.getStatusDisplay(form).dataset.state = \"loading\";\r\n cac_data.form.setParentPanelState(form, true);\r\n },\r\n success: function (form, callback = null) {\r\n cac_data.form.getStatusDisplay(form).dataset.state = \"success\";\r\n cac_data.form.setParentPanelState(form, true);\r\n const statusBtn = form.querySelector('.button-form-status-success');\r\n if (statusBtn) { statusBtn.focus(); }\r\n if (typeof (callback) == \"function\" && form.querySelector('.button-form-status-success')) {\r\n form.querySelector('.button-form-status-success').addEventListener('click', function (event) { callback(event); });\r\n }\r\n },\r\n error: function (form, callback = null) {\r\n cac_data.form.getStatusDisplay(form).dataset.state = \"error\";\r\n cac_data.form.setParentPanelState(form, true);\r\n const statusBtn = form.querySelector('.button-form-status-error');\r\n if (statusBtn) { statusBtn.focus(); }\r\n if (typeof (callback) == \"function\" && form.querySelector('.button-form-status-error')) {\r\n form.querySelector('.button-form-status-error').addEventListener('click', function (event) { callback(event); });\r\n }\r\n },\r\n },\r\n setParentPanelState: function (form, hasState) {\r\n if (cac_data.panel.isChild(form)) {\r\n if (hasState) {\r\n cac_data.panel.parentPanelElementOfChild(form).classList.add('has-form-status');\r\n } else {\r\n cac_data.panel.parentPanelElementOfChild(form).classList.remove('has-form-status');\r\n }\r\n }\r\n },\r\n handleStateClick: function (event) {\r\n event.preventDefault();\r\n const button = event.currentTarget;\r\n const form = button.form;\r\n const isSuccess = button.matches('[data-success]');\r\n const isError = button.matches('[data-error]');\r\n if (isSuccess) {\r\n form.reset();\r\n }\r\n cac_data.form.setState.initial(form);\r\n },\r\n registerStatusListeners: function () {\r\n document.querySelectorAll('.button-form-status-success').forEach((button) => { button.addEventListener('click', cac_data.form.handleStateClick); });\r\n document.querySelectorAll('.button-form-status-error').forEach((button) => { button.addEventListener('click', cac_data.form.handleStateClick); });\r\n },\r\n enquiry: {\r\n handleValidation: function (event) {\r\n console.log('Validation event [handleValidation]');\r\n console.log(event);\r\n const form = event.target;\r\n const valid = event.detail.valid;\r\n console.log(`valid [handleValidation]: ${valid}`);\r\n //if (valid) {\r\n // //event.preventDefault();\r\n // cac_data.form.enquiry.send(form);\r\n //}\r\n },\r\n handleSubmit: function (event) {\r\n event.preventDefault();\r\n const form = this;\r\n //const valid = cac_data.form.validator.isValid(form, true, function (valid) {\r\n // console.log(`valid [handleSubmit]: ${valid}`);\r\n // if (valid) {\r\n // cac_data.form.enquiry.send(form);\r\n // }\r\n //});\r\n },\r\n handleSubmitClick: function (event) {\r\n event.preventDefault();\r\n const button = event.currentTarget;\r\n const form = button.form;\r\n const recaptchaResult = function (recaptcha_response) {\r\n console.log(recaptcha_response);\r\n if (recaptcha_response.data.success) { cac_data.form.enquiry.send(form); }\r\n else { cac_data.form.setState.error(form); }\r\n }\r\n if (form.matches('[data-client-validate=\"false\"]')) {\r\n cac_data.recaptcha.verify(form, recaptchaResult);\r\n }\r\n else {\r\n const valid = cac_data.form.validator.isValid(form, true, function (valid) {\r\n console.log(`valid [handleSubmitClick]: ${valid}`);\r\n\r\n if (valid) {\r\n cac_data.form.setState.loading(form);\r\n cac_data.recaptcha.verify(form, recaptchaResult);\r\n }\r\n });\r\n }\r\n },\r\n send: function (form) {\r\n const setState = cac_data.form.setState;\r\n setState.loading(form);\r\n const generatesLead = form.dataset.lead ? true : false;\r\n const endpoint = form.dataset.api;\r\n const url = `/api/${endpoint}`;\r\n const headers = { 'Content-Type': 'application/json' };\r\n if (form.elements.__RequestVerificationToken != undefined) {\r\n headers[\"RequestVerificationToken\"] = form.elements.__RequestVerificationToken.value\r\n }\r\n\r\n const formData = new FormData(form);\r\n const jsonData = {};\r\n for (const pair of formData.entries()) {\r\n const key = pair[0];\r\n let val = pair[1];\r\n jsonData[key] = val;\r\n }\r\n\r\n const utmData = cac_data.ga.getUtmFromStorage();\r\n if (utmData != \"undefined\") {\r\n //formData.append(\"utm\", utmData.asString);\r\n //const utmJson = utmData.asJson;\r\n //formData.append(\"utmJson\", JSON.stringify(utmJson));\r\n jsonData[\"utm\"] = utmData.asString;\r\n jsonData[\"utmJson\"] = utmData.asJson;\r\n }\r\n const transformedData = JSON.stringify(jsonData);\r\n axios.post(url, transformedData, {\r\n headers: headers\r\n }).then(function (response) {\r\n const data = response.data;\r\n if (!data.success) {\r\n setState.error(form);\r\n } else {\r\n setState.success(form);\r\n if (generatesLead) {\r\n const formName = form.id.replace(\"-\", \"_\");\r\n cac_data.ga.formSubmitted(form, formName);\r\n cac_data.ga.productEnquirySent();\r\n }\r\n }\r\n console.log(response);\r\n console.log(response.data);\r\n }).catch(function (error) {\r\n setState.error(form);\r\n console.log('error');\r\n console.log(error.toJSON());\r\n }).finally(function () {\r\n //loadingEl.classList.add('hidden');\r\n });\r\n }\r\n },\r\n init: function () {\r\n function checkHoneypot(e) {\r\n var form = e.currentTarget.form;\r\n var input = form.querySelector(\"input[name=website]\");\r\n if (typeof input !== \"object\" || input === null) return input;\r\n for (var el of form.elements) {\r\n el.removeEventListener('focus', checkHoneypot, { once: true });\r\n }\r\n setTimeout(function () {\r\n input.parentNode.removeChild(input);\r\n }, 2000);\r\n }\r\n function honeypot(form) {\r\n for (var el of form.elements) {\r\n el.addEventListener('focus', checkHoneypot, { once: true });\r\n }\r\n }\r\n for (var form of document.forms) {\r\n honeypot(form);\r\n //form.querySelectorAll('.flatpickr-input').forEach(el => { this.datepicker.create(el); });\r\n }\r\n this.registerStatusListeners();\r\n\r\n }\r\n};\r\ncac_data.toTop = {\r\n current: false,\r\n get button() { return document.querySelector('.button-top'); },\r\n get topElement() {\r\n const topElementId = cac_data.toTop.button.getAttribute('href').slice(1);\r\n return document.getElementById(topElementId);\r\n },\r\n buttonHandler: function (e) {\r\n e.preventDefault();\r\n cac_data.toTop.topElement.scrollIntoView({\r\n behavior: \"smooth\",\r\n block: \"start\",\r\n inline: \"nearest\"\r\n });\r\n cac_data.toTop.topElement.focus();\r\n },\r\n callback: function (entries, observer) {\r\n let entry = entries[0];\r\n let isHeaderEl = entry.target.matches('.page-header') || entry.target.matches('.hero-home');\r\n let isFooterEl = entry.target.matches('.footer-copy');\r\n let entryTop = entry.boundingClientRect.top;\r\n let show = entry.intersectionRatio < 0.05 && entryTop < 0;\r\n let nudge = entry.isIntersecting;\r\n if (isHeaderEl) { \r\n if (cac_data.toTop.current != show) {\r\n cac_data.toTop.current = show\r\n document.body.classList.toggle('totop');\r\n }\r\n }\r\n if (isFooterEl) {\r\n if (nudge && !document.body.classList.contains('totop-nudge') || !nudge && document.body.classList.contains('totop-nudge')) {\r\n document.body.classList.toggle('totop-nudge');\r\n }\r\n }\r\n },\r\n init: function () {\r\n const target = document.querySelector('.page-header') || document.querySelector('.hero-home');\r\n const footerTarget = document.querySelector('.footer-copy');\r\n cac_data.toTop.topElement.setAttribute('tabindex', '-1');\r\n if (target) {\r\n const options = {\r\n rootMargin: \"0px\",\r\n threshold: [0, 0.1, 0.2, 0.4]\r\n };\r\n const observer = new IntersectionObserver(cac_data.toTop.callback, options);\r\n observer.observe(target);\r\n observer.observe(footerTarget);\r\n }\r\n cac_data.toTop.button.addEventListener('click', cac_data.toTop.buttonHandler);\r\n }\r\n};\r\ncac_data.init = function (event) {\r\n cac_data.ga.init();\r\n cac_data.form.init();\r\n //if (typeof grecaptcha !== 'undefined') cac_data.recaptcha.init();\r\n cac_data.toTop.init();\r\n};\r\n\r\n\r\nif (typeof globalThis.cac_util === \"undefined\") {\r\n globalThis.cac_util = {\r\n // Escapes HTML characters in a template literal string, to prevent XSS.\r\n // See https://www.owasp.org/index.php/XSS_%28Cross_Site_Scripting%29_Prevention_Cheat_Sheet#RULE_.231_-_HTML_Escape_Before_Inserting_Untrusted_Data_into_HTML_Element_Content\r\n sanitizeHTML: function (strings) {\r\n const entities = { '&': '&', '<': '<', '>': '>', '\"': '"', '\\'': ''' };\r\n let result = strings[0];\r\n for (let i = 1; i < arguments.length; i++) {\r\n result += String(arguments[i]).replace(/[&<>'\"]/g, (char) => {\r\n return entities[char];\r\n });\r\n result += strings[i];\r\n }\r\n return result;\r\n },\r\n sanitiseNumber: function (x) {\r\n if (isNaN(x)) return NaN;\r\n return x;\r\n },\r\n empty: function (containerElem) {\r\n while (containerElem.firstChild) {\r\n containerElem.removeChild(containerElem.firstChild);\r\n }\r\n },\r\n disableField: function (field) {\r\n field.setAttribute('disabled', 'disabled');\r\n },\r\n enableField: function (field) {\r\n field.removeAttribute('disabled');\r\n },\r\n disableFields: function (fields) {\r\n if (fields instanceof NodeList || Array.isArray(fields)) {\r\n fields.forEach((field) => { cac_util.disableField(field); });\r\n } else {\r\n cac_util.disableField(fields);\r\n }\r\n },\r\n enableFields: function (fields) {\r\n if (fields instanceof NodeList || Array.isArray(fields)) {\r\n fields.forEach((field) => { cac_util.enableField(field); });\r\n } else {\r\n cac_util.enableField(fields);\r\n }\r\n },\r\n slugify: function (str) {\r\n //// console.log(typeof str);\r\n if (typeof str !== 'string') {\r\n return str;\r\n }\r\n\r\n // character conversion list\r\n var conversions = {};\r\n conversions.ae = 'ä|æ|ǽ|Ä|Æ|Ǽ';\r\n conversions.oe = 'ö|œ|Ö|Œ';\r\n conversions.ue = 'ü|Ü';\r\n conversions.a = 'à|á|â|ã|å|ǻ|ā|ă|ą|ǎ|ª|À|Á|Â|Ã|Ä|Å|Ǻ|Ā|Ă|Ą|Ǎ';\r\n conversions.c = 'ç|ć|ĉ|ċ|č|Ç|Ć|Ĉ|Ċ|Č';\r\n conversions.d = 'ð|ď|đ|Ð|Ď|Đ';\r\n conversions.e = 'è|é|ê|ë|ē|ĕ|ė|ę|ě|È|É|Ê|Ë|Ē|Ĕ|Ė|Ę|Ě';\r\n conversions.f = 'ƒ';\r\n conversions.g = 'ĝ|ğ|ġ|ģ|Ĝ|Ğ|Ġ|Ģ';\r\n conversions.h = 'ĥ|ħ|Ĥ|Ħ';\r\n conversions.i = 'ì|í|î|ï|ĩ|ī|ĭ|ǐ|į|ı|Ì|Í|Î|Ï|Ĩ|Ī|Ĭ|Ǐ|Į|İ';\r\n conversions.j = 'ĵ|Ĵ';\r\n conversions.k = 'ķ|Ķ';\r\n conversions.l = 'ĺ|ļ|ľ|ŀ|ł|Ĺ|Ļ|Ľ|Ŀ|Ł';\r\n conversions.n = 'ñ|ń|ņ|ň|ʼn|Ñ|Ń|Ņ|Ň';\r\n conversions.o = 'ò|ó|ô|õ|ō|ŏ|ǒ|ő|ơ|ø|ǿ|º|Ò|Ó|Ô|Õ|Ō|Ŏ|Ǒ|Ő|Ơ|Ø|Ǿ';\r\n conversions.r = 'ŕ|ŗ|ř|Ŕ|Ŗ|Ř';\r\n conversions.s = 'ś|ŝ|ş|š|ſ|Ś|Ŝ|Ş|Š';\r\n conversions.t = 'ţ|ť|ŧ|Ţ|Ť|Ŧ';\r\n conversions.u = 'ù|ú|û|ũ|ū|ŭ|ů|ű|ų|ư|ǔ|ǖ|ǘ|ǚ|ǜ|Ù|Ú|Û|Ũ|Ū|Ŭ|Ů|Ű|Ų|Ư|Ǔ|Ǖ|Ǘ|Ǚ|Ǜ';\r\n conversions.y = 'ý|ÿ|ŷ|Ý|Ÿ|Ŷ';\r\n conversions.w = 'ŵ|Ŵ';\r\n conversions.z = 'ź|ż|ž|Ź|Ż|Ž';\r\n conversions.ss = 'ß';\r\n conversions.ij = 'ij|IJ';\r\n Object.keys(conversions).map(function (key, index) {\r\n const re = new RegExp(conversions[key], \"g\");\r\n str = str.replace(re, key);\r\n });\r\n // special regEx characters that need to be processed\r\n return str.replace(/\\./g, '-')\r\n .replace(/\\,/g, '-')\r\n .replace(/\\#/g, '-')\r\n .replace(/\\$/g, '~')\r\n .replace(/\\?/g, '-')\r\n .replace(/\\!/g, '-')\r\n .replace(/\\+/g, 'plus')\r\n .replace(/ /g, '-')\r\n .replace(/®/g, '')\r\n .replace(/\\\\/g, '-')\r\n .replace(/\\\"/g, '-')\r\n .replace(/\\>/g, '-')\r\n // .replace(/\\\\ {\r\n if (document.readyState === \"interactive\") {\r\n cac_data.init();\r\n }\r\n};\r\n\r\n\r\n","(function (window, document) {\r\n\r\n // we fetch the elements each time because docusaurus removes the previous\r\n // element references on page navigation\r\n function getElements() {\r\n return {\r\n body: document.body,\r\n layout: document.getElementById('layout'),\r\n menu: document.getElementById('menu'),\r\n header: document.querySelector('header.site-header'),\r\n menuLink: document.getElementById('menuLink'),\r\n menuClose: document.getElementById('menuClose')\r\n };\r\n }\r\n\r\n function toggleClass(element, className) {\r\n element.classList.toggle(className);\r\n return;\r\n var classes = element.className.split(/\\s+/);\r\n var length = classes.length;\r\n var i = 0;\r\n\r\n for (; i < length; i++) {\r\n if (classes[i] === className) {\r\n classes.splice(i, 1);\r\n break;\r\n }\r\n }\r\n // The className is not found\r\n if (length === classes.length) {\r\n classes.push(className);\r\n }\r\n\r\n element.className = classes.join(' ');\r\n }\r\n\r\n function toggleAll() {\r\n var active = 'menu-active';\r\n var elements = getElements();\r\n\r\n toggleClass(elements.body, active);\r\n toggleClass(elements.layout, active);\r\n toggleClass(elements.menu, active);\r\n toggleClass(elements.menuLink, active);\r\n toggleClass(elements.header, active);\r\n }\r\n\r\n function handleEvent(e) {\r\n var elements = getElements();\r\n\r\n //if (e.target.id === elements.menuLink.id) {\r\n e.preventDefault();\r\n toggleAll();\r\n //} else if (elements.menu.className.indexOf('menu-active') !== -1) {\r\n // toggleAll();\r\n //}\r\n }\r\n\r\n getElements().menuLink.addEventListener('click', handleEvent);\r\n //getElements().menuClose.addEventListener('click', handleEvent);\r\n document.addEventListener('click', function (event) {\r\n const outsideClick = !getElements().menuLink.contains(event.target)\r\n && !getElements().menu.contains(event.target);\r\n if (outsideClick && getElements().menuLink.classList.contains('menu-active')) handleEvent(event);\r\n });\r\n\r\n}(this, this.document));","/* eslint no-unused-vars:0 no-prototype-builtins:0 */\r\n(function (window, document) {\r\n 'use strict';\r\n\r\n // Enable drop-down menus in Pure\r\n // Inspired by YUI3 gallery-simple-menu by Julien LeComte\r\n // [https://github.com/yui/yui3-gallery/blob/master/src/gallery-simple-menu/js/simple-menu.js]\r\n\r\n const dropdowns = [];\r\n const siteHeader = document.querySelector('.site-header');\r\n let mql = window.matchMedia(\"(min-width: 48rem)\");\r\n function PureDropdown(dropdownParent) {\r\n\r\n var PREFIX = 'pure-',\r\n ACTIVE_CLASS_NAME = PREFIX + 'menu-active',\r\n ARIA_ROLE = 'role',\r\n ARIA_HIDDEN = 'aria-hidden',\r\n MENU_OPEN = 0,\r\n MENU_CLOSED = 1,\r\n MENU_ACTIVE_SELECTOR = '.pure-menu-active',\r\n MENU_LINK_SELECTOR = '.pure-menu-link, .button-dropdown',\r\n MENU_SELECTOR = '.pure-menu-children, .dropdown',\r\n //DISMISS_EVENT = (window.hasOwnProperty &&\r\n // window.hasOwnProperty('ontouchstart')) ?\r\n // 'touchstart' : 'mousedown',\r\n DISMISS_EVENT = 'click',\r\n\r\n ARROW_KEYS_ENABLED = true,\r\n\r\n ddm = this; // drop down menu\r\n\r\n this._state = MENU_CLOSED;\r\n\r\n this.show = function () {\r\n if (this._state !== MENU_OPEN) {\r\n this._dropdownParent.classList.add(ACTIVE_CLASS_NAME);\r\n this._menu.setAttribute(ARIA_HIDDEN, false);\r\n this._state = MENU_OPEN;\r\n }\r\n };\r\n\r\n this.hide = function () {\r\n if (this._state !== MENU_CLOSED) {\r\n this._dropdownParent.classList.remove(ACTIVE_CLASS_NAME);\r\n this._menu.setAttribute(ARIA_HIDDEN, true);\r\n this._link.focus();\r\n this._state = MENU_CLOSED;\r\n }\r\n };\r\n\r\n this.toggle = function () {\r\n this[this._state === MENU_CLOSED ? 'show' : 'hide']();\r\n };\r\n\r\n this.halt = function (e) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n };\r\n\r\n this._dropdownParent = dropdownParent;\r\n this._link = this._dropdownParent.querySelector(MENU_LINK_SELECTOR);\r\n this._menu = this._dropdownParent.querySelector(MENU_SELECTOR);\r\n this._firstMenuLink = this._menu.querySelector(MENU_LINK_SELECTOR);\r\n\r\n // Set ARIA attributes\r\n this._link.setAttribute('aria-haspopup', 'true');\r\n this._menu.setAttribute(ARIA_ROLE, 'menu');\r\n this._menu.setAttribute('aria-labelledby', this._link.getAttribute('id'));\r\n this._menu.setAttribute('aria-hidden', 'true');\r\n [].forEach.call(\r\n this._menu.querySelectorAll('li'),\r\n function(el){\r\n el.setAttribute(ARIA_ROLE, 'presentation');\r\n }\r\n );\r\n [].forEach.call(\r\n this._menu.querySelectorAll('a'),\r\n function(el){\r\n el.setAttribute(ARIA_ROLE, 'menuitem');\r\n }\r\n );\r\n\r\n // Toggle on click\r\n this._link.addEventListener('click', function (e) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n dropdowns.forEach(otherDdm => {\r\n if (otherDdm != ddm && shouldHide(otherDdm)) {\r\n otherDdm.hide();\r\n }\r\n })\r\n ddm.toggle();\r\n });\r\n\r\n // Keyboard navigation\r\n document.addEventListener('keydown', function (e) {\r\n var currentLink,\r\n previousSibling,\r\n nextSibling,\r\n previousLink,\r\n nextLink;\r\n\r\n // if the menu isn't active, ignore\r\n if (ddm._state !== MENU_OPEN) {\r\n return;\r\n }\r\n\r\n // if the menu is the parent of an open, active submenu, ignore\r\n if (ddm._menu.querySelector(MENU_ACTIVE_SELECTOR)) {\r\n return;\r\n }\r\n\r\n currentLink = ddm._menu.querySelector(':focus');\r\n\r\n // Dismiss an open menu on ESC\r\n if (e.keyCode === 27) {\r\n /* Esc */\r\n ddm.halt(e);\r\n ddm.hide();\r\n }\r\n // Go to the next link on down arrow\r\n else if (ARROW_KEYS_ENABLED && e.keyCode === 40) {\r\n /* Down arrow */\r\n ddm.halt(e);\r\n // get the nextSibling (an LI) of the current link's LI\r\n nextSibling = (currentLink) ? currentLink.parentNode.nextSibling : null;\r\n // if the nextSibling is a text node (not an element), go to the next one\r\n while (nextSibling && nextSibling.nodeType !== 1) {\r\n nextSibling = nextSibling.nextSibling;\r\n }\r\n nextLink = (nextSibling) ? nextSibling.querySelector('.pure-menu-link') : null;\r\n // if there is no currently focused link, focus the first one\r\n if (!currentLink) {\r\n ddm._menu.querySelector('.pure-menu-link').focus();\r\n }\r\n else if (nextLink) {\r\n nextLink.focus();\r\n }\r\n }\r\n // Go to the previous link on up arrow\r\n else if (ARROW_KEYS_ENABLED && e.keyCode === 38) {\r\n /* Up arrow */\r\n ddm.halt(e);\r\n // get the currently focused link\r\n previousSibling = (currentLink) ? currentLink.parentNode.previousSibling : null;\r\n while (previousSibling && previousSibling.nodeType !== 1) {\r\n previousSibling = previousSibling.previousSibling;\r\n }\r\n previousLink = (previousSibling) ? previousSibling.querySelector('.pure-menu-link') : null;\r\n // if there is no currently focused link, focus the last link\r\n if (!currentLink) {\r\n ddm._menu.querySelector('.pure-menu-item:last-child .pure-menu-link').focus();\r\n }\r\n // else if there is a previous item, go to the previous item\r\n else if (previousLink) {\r\n previousLink.focus();\r\n }\r\n }\r\n });\r\n\r\n // Dismiss an open menu on outside event\r\n document.addEventListener(DISMISS_EVENT, function (e) {\r\n var target = e.target;\r\n if (target !== ddm._link && !ddm._menu.contains(target)) {\r\n ddm.hide();\r\n ddm._link.blur();\r\n }\r\n });\r\n\r\n }\r\n\r\n function shouldHide(ddm) {\r\n if (mql.matches) return true;\r\n return !siteHeader.contains(ddm._dropdownParent);\r\n }\r\n\r\n function initDropdowns() {\r\n var dropdownParents = document.querySelectorAll('.pure-menu-has-children,.dropdown');\r\n for (var i = 0; i < dropdownParents.length; i++) {\r\n var ddm = new PureDropdown(dropdownParents[i]);\r\n dropdowns.push(ddm);\r\n }\r\n }\r\n\r\n initDropdowns();\r\n\r\n}(this, this.document));\r\n"]}