{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/helpers/media.ts","webpack:///./src/helpers/ssr.ts","webpack:///./src/stories/Components/Misc/DotPagination/DotPagination.styles.ts","webpack:///./src/hooks/useIntersectionObserver.ts","webpack:///./src/hooks/useInView.ts","webpack:///./src/hooks/useMedia.ts","webpack:///./src/helpers/to-base-64.ts","webpack:///./src/hoc/withWidget.ts","webpack:///./src/stories/Widgets/Meta/Breadcrumbs/Breadcrumbs.widget.tsx","webpack:///./src/stories/Components/Buttons/Button/Button.tsx","webpack:///./src/hoc/withMotionMax.tsx","webpack:///./src/helpers/global.ts","webpack:///./src/stories/Components/Global/SiteWide/SiteWide.styles.ts","webpack:///./src/stories/Components/Global/Typography/Paragraph.styles.ts","webpack:///./src/stories/Components/Global/SiteWide/SiteWide.tsx","webpack:///./src/helpers/grid.ts","webpack:///./src/helpers/ReactPropsHelper.ts","webpack:///./src/stories/Components/Misc/DotPagination/DotPagination.tsx","webpack:///./src/stories/Components/Media/Image/Image.styles.ts","webpack:///./src/helpers/brand.ts","webpack:///./src/helpers/fonts.ts","webpack:///./node_modules/react-swipeable/es/index.js","webpack:///./src/stories/Widgets/Media/HomepageCarousel/HomepageCarousel.styles.ts","webpack:///./src/stories/Widgets/Media/HomepageCarousel/HomepageCarouselItem/HomepageCarouselItem.styles.tsx","webpack:///./src/stories/Widgets/Media/HomepageCarousel/HomepageCarouselItem/HomepageCarouselItem.tsx","webpack:///./src/stories/Widgets/Media/HomepageCarousel/HomepageCarousel.widget.tsx","webpack:///./src/hooks/useAutoplay.ts","webpack:///./src/helpers/theme.ts","webpack:///./src/stories/Components/Media/Image/Image.tsx","webpack:///./src/stories/Widgets/Meta/Breadcrumbs/Breadcrumbs.styles.ts","webpack:///./src/img/line-pattern.svg","webpack:///./src/stories/Components/Buttons/Button/Button.styles.tsx","webpack:///./src/helpers/cloudinary.ts","webpack:///./src/core/enums.ts"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","53","37","86","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","this","oldJsonpFunction","slice","Device","from","size","until","between","min","max","isSSR","window","document","DotPaginationStyles","Container","styled","nav","brand","white","Tablet","Item","button","ActiveIndicator","span","SvgIndicator","svg","Circle","circle","SvgBox","div","SvgOutline","SvgPath","path","useIntersectionObserver","callback","options","observerRef","useRef","rootRef","elementRef","useEffect","current","IntersectionObserver","root","observe","disconnect","useInView","reverse","isEditMode","useState","inView","setInView","entries","isIntersecting","useMedia","queries","values","defaultValue","mediaQueryLists","map","query","matchMedia","getValue","index","findIndex","mql","matches","setValue","handler","forEach","addListener","removeListener","toBase64","str","Buffer","toString","btoa","component","componentName","hydrate","HydrateOption","Never","configs","ReactPropsHelper","props","filter","x","toLowerCase","config","container","querySelector","id","classList","add","requestIdleCallback","element","createElement","withWidget","items","React","BreadcrumbsStyles","Wrapper","Grid","Default","Inner","href","url","Button","addon","addonPosition","branding","className","disabled","title","type","onClick","hoverColour","hideTextMobile","rest","undefined","ButtonStyles","iconPosition","HoverEffect","Icon","position","Text","LinkButton","target","download","as","withMotionMax","WrappedComponent","displayName","ComponentWithMotionMax","LazyMotion","features","domMax","strict","ButtonReset","css","Desktop","isThin","DesktopSmall","LargeStyles","fonts","DaxPro","Regular","RegularStyles","SmallStyles","Paragraph","isLatestNewsWidget","align","SiteWide","forwardRef","ref","children","baseGrid","MobileLarge","TabletLarge","DesktopLarge","DefaultBreakout","DefaultPseudo","CardGridSpans","reactPropsNode","JSON","parse","innerHTML","autoplay","count","paused","customLayoutId","onChange","onHover","S","Array","_","event","preventDefault","onMouseEnter","onMouseLeave","isActiveAnimating","viewBox","xmlns","initial","pathLength","animate","transition","duration","ease","strokeWidth","strokeDasharray","stroke","fill","layoutId","renderActiveIndicator","Image","img","objectFit","objectPosition","Intrinsic","Responsive","width","height","fullPaddingTop","quotient","isNaN","ImageStyles","Fixed","Fill","black","primary","base","dark","light","alt","accent","orange","divisionTags","mrCropper","sandhurst","default","grey","grey89","hsl","grey96","grey76","grey75","grey55","grey44","grey40","grey35","grey20","red","ysp","input","water","ground","excavation","tpa","Bold","BoldItalic","Medium","SlightlyLessThanMedium","RegularItalic","Light","defaultProps","delta","preventScrollOnSwipe","rotationAngle","trackMouse","trackTouch","swipeDuration","Infinity","touchEventOptions","passive","initialState","first","start","swiping","xy","rotateXYByAngle","pos","angle","angleInRadians","Math","PI","cos","sin","getHandlers","set","handlerProps","onStart","isTouch","touches","state","addEventListener","onMove","onUp","clientX","clientY","onTouchStartOrOnMouseDown","assign","timeStamp","y","deltaX","deltaY","absX","abs","absY","time","velocity","sqrt","vxvy","dir","getDirection","eventData","onSwipeStart","onSwiping","cancelablePageSwipe","onSwiped","cancelable","onEnd","onSwipedDir","onTap","onTouchEndOrOnMouseUp","e","removeEventListener","attachTouch","el","cleanup","baseOptions","tls","h","output","addState","cleanUpTouch","onMouseDown","useSwipeable","transientState","transientProps","previousProps","defaultKey","handlers","stateSetter","updateTransientState","section","HomepageCarouselStyles","BreadcrumbWrapper","ItemList","ul","li","PaginationWrapper","SiteWideStyles","ImageWrapper","ContentWrapper","Overlay","ContentWrapperInner","Title","h1","Description","ParagraphStyles","HomepageCarouselItemStyles","CtaWrapper","HomepageCarouselItem","active","cta","image","description","variants","hidden","opacity","visible","loading","preload","style","transformOrigin","h2","breadcrumb","isMobile","refContainer","params","refInterval","activeIndex","setActiveIndex","setPaused","activeItemDuration","enabled","setTimeout","newIndex","clearInterval","useAutoplay","swipeHandlers","onSwipedLeft","onSwipedRight","Fragment","Breadcrumbs","item","DotPagination","hover","Always","ThemeWrapper","ThemeSwitch","groundforceColour","groundforceColourHover","lighten","generateOpacity","transparentize","groundforcePseudoColourAlt","tpaColour","tpaColourHover","tpaPseudoColourAlt","hasErrored","setHasErrored","deviceWidths","MobileSmall","MobileMedium","Mobile","ActualDesktop","sort","a","b","srcSetUrls","imageUrl","src","join","sizes","handleError","currentTarget","fallbackSrc","components","layout","role","decoding","draggable","srcSet","onError","fetchPriority","sizerSvg","_g","_extends","arguments","source","PrimaryStyles","PrimaryAltStyles","SecondaryStyles","WhiteStyles","BlackStyles","GreyStyles","TextOnlyStyles","TextOnlyPrimaryStyles","IconLeft","IconRight","hideText","cl","Cloudinary","cloud","cloudName","secure","publicId","rawTransformation","transformation","addTransformation","FormatRegEx","test","toURL","delivery","format","fAuto","quality","qAuto","extractPublicId","split","pop","Error","MediaType","HireViewType","OrderStepProgress"],"mappings":"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","file":"HomepageCarousel-de292cdcb18e845b8721.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\t53: 0,\n \t\t37: 0,\n \t\t86: 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 = \"/sitefiles/next-gen/dist/\";\n\n \tvar jsonpArray = this[\"nextGenJsonpFunction\"] = this[\"nextGenJsonpFunction\"] || [];\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([528,0,1,2,4,5,6,19]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","export var Device;\r\n(function (Device) {\r\n Device[Device[\"MobileSmall\"] = 320] = \"MobileSmall\";\r\n Device[Device[\"MobileMedium\"] = 360] = \"MobileMedium\";\r\n Device[Device[\"Mobile\"] = 375] = \"Mobile\";\r\n Device[Device[\"MobileLarge\"] = 480] = \"MobileLarge\";\r\n Device[Device[\"TabletSmall\"] = 568] = \"TabletSmall\";\r\n Device[Device[\"Tablet\"] = 768] = \"Tablet\";\r\n Device[Device[\"TabletLarge\"] = 1024] = \"TabletLarge\";\r\n Device[Device[\"DesktopSmall\"] = 1280] = \"DesktopSmall\";\r\n Device[Device[\"Desktop\"] = 1366] = \"Desktop\";\r\n Device[Device[\"DesktopLarge\"] = 1600] = \"DesktopLarge\";\r\n Device[Device[\"ActualDesktop\"] = 1920] = \"ActualDesktop\";\r\n Device[Device[\"DesktopXL\"] = 2560] = \"DesktopXL\";\r\n})(Device || (Device = {}));\r\nexport function from(size) {\r\n return `(min-width: ${size}px)`;\r\n}\r\nexport function until(size) {\r\n return `(max-width: ${size - 1}px)`;\r\n}\r\nexport function between(min, max) {\r\n return `${from(min)} and ${until(max)}`;\r\n}\r\n","export const isSSR = () => {\r\n const returnValue = !(typeof window != 'undefined' && window.document);\r\n return returnValue;\r\n};\r\n","import brand from '@helpers/brand';\r\nimport { Device, from } from '@helpers/media';\r\nimport { m } from 'framer-motion';\r\nimport styled from 'styled-components';\r\nconst Container = styled.nav `\r\n --color: ${brand.white};\r\n --gap: 4px;\r\n --height: 16px;\r\n --opacityInactive: 1;\r\n --opacityActive: 0.65;\r\n --tapSize: 48px;\r\n --width: 16px;\r\n\r\n --tapPadding: calc((var(--tapSize) - var(--width)) / 2);\r\n\r\n display: flex;\r\n flex-direction: row;\r\n gap: var(--gap);\r\n place-content: center;\r\n place-items: center;\r\n user-select: none;\r\n\r\n @media ${from(Device.Tablet)} {\r\n --gap: 8px;\r\n --height: 16px;\r\n --width: 16px;\r\n }\r\n`;\r\nconst Item = styled.button `\r\n position: relative;\r\n display: flex;\r\n background: none;\r\n border: 0;\r\n color: var(--color);\r\n margin: 0;\r\n \r\n padding: var(--tapPadding);\r\n place-content: center;\r\n place-items: center;\r\n\r\n &::before {\r\n content: '';\r\n display: block;\r\n background: currentColor;\r\n border: 0;\r\n color: currentColor;\r\n height: var(--height);\r\n width: var(--width);\r\n transform: scale(1);\r\n transition: transform 0.15s ease-out;\r\n will-change: transform;\r\n }\r\n\r\n /* Enable focus styles for Safari */\r\n &:focus {\r\n background: none;\r\n outline: none;\r\n\r\n &::before {\r\n outline: auto;\r\n outline-color: currentColor;\r\n outline-offset: 5px;\r\n outline-width: thin;\r\n }\r\n }\r\n\r\n /* Enable hover styles for Safari */\r\n &:hover {\r\n background: none;\r\n &::before {\r\n transform: scale(0.6);\r\n }\r\n }\r\n\r\n /* Disable focus styles if focus visible is supported */\r\n &:not(:focus-visible):focus {\r\n outline: none;\r\n\r\n &::before {\r\n outline: none;\r\n }\r\n }\r\n\r\n /* Reapply focus styles for focus-visible browsers */\r\n &:focus-visible {\r\n outline: none;\r\n\r\n &::before {\r\n outline: auto;\r\n outline-color: currentColor;\r\n outline-offset: 5px;\r\n outline-width: thin;\r\n }\r\n }\r\n\r\n /* Apply hover styles for focus-visible browsers */\r\n &:not(:focus-visible):hover {\r\n &::before {\r\n transform: scale(0.6);\r\n }\r\n }\r\n\r\n /* Apply active styles */\r\n &[aria-current='true'] {\r\n &::before {\r\n transform: scale(0.6);\r\n }\r\n }\r\n`;\r\nconst ActiveIndicator = styled(m.span) `\r\n position: absolute;\r\n top: 50%;\r\n left: 50%;\r\n display: block;\r\n border: 2px solid var(--color);\r\n height: 20px;\r\n width: 20px;\r\n transform: translate(-50%, -50%);\r\n`;\r\nconst SvgIndicator = styled(m.svg) `\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n display: block;\r\n height: 100%;\r\n width: 100%;\r\n`;\r\nconst Circle = styled(m.circle) `\r\n fill: none;\r\n stroke: var(--color);\r\n stroke-width: 2px;\r\n`;\r\nconst SvgBox = styled.div `\r\n position: absolute;\r\n top: 50%;\r\n left: 50%;\r\n margin-left: auto;\r\n margin-right: auto;\r\n stroke: var(--color);\r\n border: 'none';\r\n transform: translate(-50%, -50%);\r\n width: 20px;\r\n height: 20px;\r\n`;\r\nconst SvgOutline = styled(m.svg) `\r\n width: 100%;\r\n height: 100%;\r\n transform: scaleX(-1) rotate(90deg);\r\n`;\r\nconst SvgPath = styled(m.path) `\r\n`;\r\nconst DotPaginationStyles = {\r\n Container,\r\n Item,\r\n ActiveIndicator,\r\n SvgIndicator,\r\n Circle,\r\n SvgBox,\r\n SvgOutline,\r\n SvgPath,\r\n};\r\nexport default DotPaginationStyles;\r\n","import { useEffect, useRef } from 'react';\r\n/**\r\n * Use the IntersectionObserver to track visibility of an element in the viewport.\r\n * @param {IntersectionObserverCallback} callback\r\n * @param {IntersectionObserverInit} options\r\n * @returns {UseIntersectionObserverReturn}\r\n */\r\nfunction useIntersectionObserver(callback, options = {}) {\r\n const observerRef = useRef(null);\r\n const rootRef = useRef(null);\r\n const elementRef = useRef(null);\r\n useEffect(() => {\r\n if (!elementRef.current) {\r\n return undefined;\r\n }\r\n observerRef.current = new IntersectionObserver(callback, {\r\n root: rootRef.current,\r\n ...options,\r\n });\r\n observerRef.current.observe(elementRef.current);\r\n return () => {\r\n if (observerRef.current === null) {\r\n return;\r\n }\r\n observerRef.current.disconnect();\r\n };\r\n }, [callback, options]);\r\n return { elementRef, observerRef, rootRef };\r\n}\r\nexport default useIntersectionObserver;\r\n","import { useState } from 'react';\r\nimport useIntersectionObserver from './useIntersectionObserver';\r\nexport function useInView(options, reverse = false, isEditMode = false) {\r\n const [inView, setInView] = useState(false);\r\n const { elementRef } = useIntersectionObserver((entries) => {\r\n if (entries[0].isIntersecting) {\r\n setInView(true);\r\n }\r\n else if (reverse === true) {\r\n setInView(false);\r\n }\r\n }, options);\r\n return [elementRef, isEditMode ? true : inView];\r\n}\r\n","import { isSSR } from '@helpers/ssr';\r\nimport { useEffect, useState } from 'react';\r\n/**\r\n * Store a value in state based on the specified media queries.\r\n * @param {Array} queries\r\n * @param {Array} values\r\n * @param {T} defaultValue\r\n */\r\nfunction useMedia(queries, values, defaultValue) {\r\n // Avoid error with SSR.\r\n if (isSSR()) {\r\n return defaultValue;\r\n }\r\n // Array containing a media query list for each query\r\n const mediaQueryLists = queries.map((query) => window.matchMedia(query));\r\n // Function that gets value based on matching media query\r\n const getValue = () => {\r\n // Get index of first media query that matches\r\n const index = mediaQueryLists.findIndex((mql) => mql.matches);\r\n // Return related value or defaultValue if none\r\n return typeof values[index] !== 'undefined' ? values[index] : defaultValue;\r\n };\r\n // State and setter for matched value\r\n const [value, setValue] = useState(getValue);\r\n useEffect(() => {\r\n // Event listener callback\r\n // Note: By defining getValue outside of useEffect we ensure that it has ...\r\n // ... current values of hook args (as this hook callback is created once on mount).\r\n const handler = () => setValue(getValue);\r\n // Set a listener for each media query with above handler as callback.\r\n mediaQueryLists.forEach((mql) => mql.addListener(handler));\r\n // Remove listeners on cleanup\r\n return () => mediaQueryLists.forEach((mql) => mql.removeListener(handler));\r\n }, []); // Empty array ensures effect is only run on mount and unmount\r\n return value;\r\n}\r\nexport default useMedia;\r\n","/**\r\n * Isomorphic base64 that works on the server and client\r\n */\r\nexport function toBase64(str) {\r\n if (typeof window === 'undefined') {\r\n return Buffer.from(str).toString('base64');\r\n }\r\n else {\r\n return window.btoa(str);\r\n }\r\n}\r\n","import { HydrateOption } from '@core/enums';\r\nimport ReactPropsHelper from '@helpers/ReactPropsHelper';\r\nimport { isSSR } from '@helpers/ssr';\r\nimport { createElement } from 'react';\r\nimport { hydrate } from 'react-dom';\r\nimport 'regenerator-runtime/runtime';\r\nexport default function (component, componentName, options) {\r\n if (isSSR() || options.hydrate === HydrateOption.Never) {\r\n return component;\r\n }\r\n const configs = ReactPropsHelper.props.filter((x) => x.name.toLowerCase() === `components.${componentName.toLowerCase()}`);\r\n if (!configs || configs.length === 0) {\r\n return component;\r\n }\r\n for (let index = 0; index < configs.length; index++) {\r\n const config = configs[index];\r\n const container = document.querySelector(`#${config.id}:not(.hydrated)`);\r\n if (!container) {\r\n continue;\r\n }\r\n container.classList.add('hydrated');\r\n // Not supported in Safari iOS\r\n if (window.requestIdleCallback) {\r\n window.requestIdleCallback(() => {\r\n const element = createElement(component, config.props);\r\n // const t0 = performance.now();\r\n hydrate(element, container);\r\n // const t1 = performance.now();\r\n // console.log(`${componentName} hydrate took ${t1 - t0} milliseconds.`);\r\n });\r\n }\r\n else {\r\n hydrate(createElement(component, config.props), container);\r\n }\r\n }\r\n return component;\r\n}\r\n","import { HydrateOption } from '@core/enums';\r\nimport { Grid } from '@helpers/grid';\r\nimport withWidget from '@hoc/withWidget';\r\nimport React from 'react';\r\nimport { BreadcrumbsStyles } from './Breadcrumbs.styles';\r\nconst Breadcrumbs = (props) => {\r\n if (!props.items || props.items.length === 0) {\r\n return null;\r\n }\r\n return (React.createElement(BreadcrumbsStyles.Wrapper, null,\r\n React.createElement(Grid.Default, null,\r\n React.createElement(BreadcrumbsStyles.Inner, null, props.items.map((x) => (React.createElement(\"li\", { key: x.name },\r\n React.createElement(\"a\", { href: x.url }, x.name))))))));\r\n};\r\nexport default withWidget(Breadcrumbs, 'Breadcrumbs', { hydrate: HydrateOption.Never });\r\n","import React from 'react';\r\nimport { ButtonStyles } from './Button.styles';\r\nconst Button = ({ addon, addonPosition, branding, className, disabled, title, type = 'button', onClick, hoverColour, hideTextMobile, ...rest }) => {\r\n if (hideTextMobile == undefined && addonPosition == 'right') {\r\n hideTextMobile = true;\r\n }\r\n return (React.createElement(ButtonStyles.Button, { \"data-theme\": branding, className: className, disabled: disabled, iconPosition: addonPosition, type: type, onClick: onClick, hoverColour: hoverColour, hideTextMobile: hideTextMobile, ...rest },\r\n React.createElement(ButtonStyles.HoverEffect, null),\r\n React.createElement(ButtonStyles.Inner, null,\r\n addon && addonPosition === 'left' && (React.createElement(ButtonStyles.Icon, { position: addonPosition }, addon)),\r\n React.createElement(ButtonStyles.Text, null, title),\r\n addon && addonPosition === 'right' && (React.createElement(ButtonStyles.Icon, { position: addonPosition }, addon)))));\r\n};\r\nconst LinkButton = ({ addon, addonPosition, branding, className, onClick, href, target = '_self', title, download, hoverColour, }) => {\r\n return (React.createElement(ButtonStyles.Button, { \"data-theme\": branding, className: className, as: \"a\", href: href, target: target, download: download, hoverColour: hoverColour, onClick: onClick },\r\n React.createElement(ButtonStyles.HoverEffect, null),\r\n React.createElement(ButtonStyles.Inner, null,\r\n addon && addonPosition === 'left' && (React.createElement(ButtonStyles.Icon, { position: addonPosition }, addon)),\r\n React.createElement(ButtonStyles.Text, null, title),\r\n addon && addonPosition === 'right' && (React.createElement(ButtonStyles.Icon, { position: addonPosition }, addon)))));\r\n};\r\nexport { LinkButton, Button as default };\r\n","import { domMax, LazyMotion } from 'framer-motion';\r\nimport React from 'react';\r\nexport function withMotionMax(WrappedComponent) {\r\n const displayName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\r\n const ComponentWithMotionMax = (props) => {\r\n return (React.createElement(LazyMotion, { features: domMax, strict: true },\r\n React.createElement(WrappedComponent, { ...props })));\r\n };\r\n ComponentWithMotionMax.displayName = `withMotionMax(${displayName})`;\r\n return ComponentWithMotionMax;\r\n}\r\n","import { css } from 'styled-components';\r\nexport default {\r\n navHeight: 107,\r\n navHeightTablet: 80,\r\n navHeightMobile: 59,\r\n};\r\nexport const ButtonReset = css `\r\n border: none;\r\n outline: none;\r\n padding: 0px;\r\n background: none;\r\n border-radius: 0px;\r\n`;\r\n","import { Device, from } from '@helpers/media';\r\nimport styled, { css } from 'styled-components';\r\nexport const SiteWideDesktop = 1757;\r\nexport const SitePaddingMobile = 18;\r\nexport const SitePaddingDesktop = 24;\r\nconst Container = styled.div `\r\n --site-wide: 100%;\r\n --site-padding: ${SitePaddingMobile}px;\r\n\r\n margin-left: auto;\r\n margin-right: auto;\r\n overflow: visible;\r\n padding-left: var(--site-padding);\r\n padding-right: var(--site-padding);\r\n width: 100%;\r\n\r\n @media ${from(Device.Desktop)} {\r\n --site-padding: ${SitePaddingDesktop}px;\r\n --site-wide: ${SiteWideDesktop}px;\r\n max-width: calc(var(--site-wide) + (var(--site-padding) * 2));\r\n }\r\n\r\n ${({ isThin }) => isThin &&\r\n css `\r\n @media ${from(Device.DesktopSmall)} {\r\n --site-wide: 863px;\r\n max-width: calc(var(--site-wide) + (var(--site-padding) * 2));\r\n }\r\n `}\r\n`;\r\nexport default {\r\n Container,\r\n};\r\n","import { fonts } from '@helpers/fonts';\r\nimport styled, { css } from 'styled-components';\r\n/**\r\n * 20px / 28px\r\n */\r\nexport const LargeStyles = css `\r\n ${fonts.DaxPro.Regular};\r\n font-size: 20px;\r\n letter-spacing: normal;\r\n line-height: 28px;\r\n margin-bottom: 16px;\r\n`;\r\n/**\r\n * 18px / 28px\r\n */\r\nexport const RegularStyles = css `\r\n ${fonts.DaxPro.Regular};\r\n font-size: 18px;\r\n letter-spacing: normal;\r\n line-height: 28px;\r\n margin-bottom: 16px;\r\n`;\r\n/**\r\n * 16px / 26px\r\n */\r\nexport const SmallStyles = css `\r\n ${fonts.DaxPro.Regular};\r\n font-size: 16px;\r\n letter-spacing: normal;\r\n line-height: 26px;\r\n margin-bottom: 16px;\r\n`;\r\nconst Paragraph = styled.p `\r\n ${({ isLatestNewsWidget }) => isLatestNewsWidget\r\n ? css `\r\n min-height: 104px;\r\n `\r\n : null}\r\n \r\n ${({ align }) => align\r\n ? css `\r\n text-align: ${align};\r\n `\r\n : null}\r\n\r\n ${({ size }) => {\r\n switch (size) {\r\n case 'large':\r\n return LargeStyles;\r\n case 'regular':\r\n return RegularStyles;\r\n case 'small':\r\n return SmallStyles;\r\n default:\r\n break;\r\n }\r\n}}\r\n`;\r\nexport default {\r\n Paragraph,\r\n SmallStyles,\r\n RegularStyles,\r\n LargeStyles,\r\n};\r\n","import React from 'react';\r\nimport s from './SiteWide.styles';\r\nconst SiteWide = React.forwardRef((props, ref) => {\r\n const { children, className, isThin } = props;\r\n return (React.createElement(s.Container, { ref: ref, className: className, isThin: isThin }, children));\r\n});\r\nSiteWide.displayName = 'SiteWide';\r\nexport default SiteWide;\r\n","import styled, { css } from 'styled-components';\r\nimport { Device, from } from './media';\r\nconst baseGrid = css `\r\n --grid-gap: 10px;\r\n display: grid;\r\n grid-template-columns: repeat(12, 1fr);\r\n grid-gap: var(--grid-gap);\r\n max-width: 1920px;\r\n margin: 0 auto;\r\n\r\n max-width: 1920px;\r\n margin: 0 auto;\r\n\r\n @media ${from(Device.MobileLarge)} {\r\n --grid-gap: 12px;\r\n }\r\n\r\n @media ${from(Device.Tablet)} {\r\n --grid-gap: 15px;\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n --grid-gap: 20px;\r\n }\r\n\r\n @media ${from(Device.DesktopSmall)} {\r\n --grid-gap: 30px;\r\n }\r\n`;\r\nconst Default = styled.div `\r\n ${baseGrid};\r\n --gridPadding: 13px;\r\n max-width: 1920px;\r\n margin: 0 auto;\r\n\r\n @media ${from(Device.MobileLarge)} {\r\n --gridPadding: 40px;\r\n }\r\n\r\n @media ${from(Device.Tablet)} {\r\n --gridPadding: 60px;\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n --gridPadding: 80px;\r\n }\r\n\r\n @media ${from(Device.DesktopSmall)} {\r\n --gridPadding: 100px;\r\n }\r\n\r\n @media ${from(Device.Desktop)} {\r\n --gridPadding: 120px;\r\n }\r\n\r\n @media ${from(Device.DesktopLarge)} {\r\n --gridPadding: 140px;\r\n }\r\n\r\n padding: 0px var(--gridPadding);\r\n`;\r\nconst DefaultBreakout = css `\r\n position: relative;\r\n left: 0px;\r\n right: 0px;\r\n margin: 0px -13px;\r\n\r\n @media ${from(Device.MobileLarge)} {\r\n margin: 0px -40px;\r\n }\r\n\r\n @media ${from(Device.Tablet)} {\r\n margin: 0px -60px;\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n margin: 0px -80px;\r\n }\r\n\r\n @media ${from(Device.DesktopSmall)} {\r\n margin: 0px -100px;\r\n }\r\n\r\n @media ${from(Device.Desktop)} {\r\n margin: 0px -120px;\r\n }\r\n\r\n @media ${from(Device.DesktopLarge)} {\r\n margin: 0px -140px;\r\n }\r\n`;\r\nconst DefaultPseudo = css `\r\n position: relative;\r\n\r\n &:before,\r\n &:after {\r\n content: '';\r\n position: absolute;\r\n top: 0;\r\n height: 100%;\r\n }\r\n\r\n &:before {\r\n left: -13px;\r\n width: 13px;\r\n\r\n @media ${from(Device.MobileLarge)} {\r\n left: -40px;\r\n width: 40px;\r\n }\r\n\r\n @media ${from(Device.Tablet)} {\r\n left: -60px;\r\n width: 60px;\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n left: -80px;\r\n width: 80px;\r\n }\r\n\r\n @media ${from(Device.DesktopSmall)} {\r\n left: -100px;\r\n width: 100px;\r\n }\r\n\r\n @media ${from(Device.Desktop)} {\r\n left: -120px;\r\n width: 120px;\r\n }\r\n\r\n @media ${from(Device.DesktopLarge)} {\r\n left: -140px;\r\n width: 140px;\r\n }\r\n }\r\n\r\n &:after {\r\n right: -13px;\r\n width: 13px;\r\n\r\n @media ${from(Device.MobileLarge)} {\r\n right: -40px;\r\n width: 40px;\r\n }\r\n\r\n @media ${from(Device.Tablet)} {\r\n right: -60px;\r\n width: 60px;\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n right: -80px;\r\n width: 80px;\r\n }\r\n\r\n @media ${from(Device.DesktopSmall)} {\r\n right: -100px;\r\n width: 100px;\r\n }\r\n\r\n @media ${from(Device.Desktop)} {\r\n right: -120px;\r\n width: 120px;\r\n }\r\n\r\n @media ${from(Device.DesktopLarge)} {\r\n right: -140px;\r\n width: 140px;\r\n }\r\n }\r\n`;\r\nconst Inner = styled.div `\r\n ${baseGrid};\r\n`;\r\nconst CardGridSpans = css `\r\n grid-column: span 6;\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n grid-column: span 4;\r\n }\r\n\r\n @media ${from(Device.DesktopLarge)} {\r\n grid-column: span 3;\r\n }\r\n`;\r\nexport const Grid = {\r\n Default,\r\n DefaultBreakout,\r\n DefaultPseudo,\r\n Inner,\r\n CardGridSpans,\r\n};\r\n","import { isSSR } from './ssr';\r\nclass ReactPropsHelper {\r\n props = [];\r\n constructor() {\r\n if (isSSR()) {\r\n return;\r\n }\r\n const reactPropsNode = document.querySelector('#react_props');\r\n if (!reactPropsNode) {\r\n return;\r\n }\r\n this.props = JSON.parse(reactPropsNode.innerHTML);\r\n }\r\n}\r\nexport default new ReactPropsHelper();\r\n","import * as React from 'react';\r\nimport S from './DotPagination.styles';\r\nimport { withMotionMax } from '@hoc/withMotionMax';\r\nconst DotPagination = ({ autoplay = 0, count, paused = false, value, customLayoutId = 'indicator', onChange, onHover, }) => {\r\n return (React.createElement(S.Container, { \"aria-label\": \"Slider Pagination\" }, Array.from(Array(count)).map((_, index) => (React.createElement(S.Item, { key: `DotPaginationItem_${index}`, \"aria-current\": index === value, \"aria-label\": `Go to ${index + 1}`, onClick: (event) => {\r\n event.preventDefault();\r\n onChange(index);\r\n }, onMouseEnter: () => (onHover && autoplay > 0) ? onHover(true) : null, onMouseLeave: () => (onHover && autoplay > 0) ? onHover(false) : null }, index === value && renderActiveIndicator())))));\r\n function renderActiveIndicator() {\r\n const isActiveAnimating = autoplay > 0 && !paused;\r\n if (isActiveAnimating) {\r\n return (React.createElement(S.SvgBox, null,\r\n React.createElement(S.SvgOutline, { viewBox: \"0 0 204 204\", xmlns: \"http://www.w3.org/2000/svg\" },\r\n React.createElement(S.SvgPath, { initial: { pathLength: isActiveAnimating ? 0 : 1 }, animate: { pathLength: 1 }, transition: {\r\n duration: autoplay / 1000,\r\n ease: \"linear\",\r\n }, strokeWidth: 40, strokeDasharray: \"0 1\", stroke: \"currentColor\", fill: \"none\", d: \"M2.7.7v200h200V.7H2.7Z\" }))));\r\n }\r\n return (React.createElement(S.ActiveIndicator, { \"aria-hidden\": true, \r\n // \"layoutId\" handles animating between positions automatically.\r\n layoutId: customLayoutId, transition: {\r\n duration: 0.3,\r\n ease: 'easeOut',\r\n } }));\r\n }\r\n};\r\nexport default withMotionMax(DotPagination);\r\n","import { Device, from } from '@helpers/media';\r\nimport styled from 'styled-components';\r\nconst Image = styled.img `\r\n position: absolute;\r\n height: 100%;\r\n inset: 0px;\r\n box-sizing: border-box;\r\n padding: 0px;\r\n margin-left: auto;\r\n margin-right: auto;\r\n border: none;\r\n display: block;\r\n text-indent: -999px;\r\n object-fit: ${({ objectFit }) => (objectFit !== undefined ? objectFit : 'initial')};\r\n object-position: ${({ objectPosition }) => objectPosition !== undefined ? objectPosition : undefined};\r\n\r\n @media ${from(Device.DesktopSmall)} {\r\n width: 100%;\r\n height: auto;\r\n }\r\n`;\r\nconst Intrinsic = styled.div `\r\n height: 100%;\r\n display: inline-block;\r\n max-width: 100%;\r\n overflow: hidden;\r\n position: relative;\r\n box-sizing: border-box;\r\n margin: 0;\r\n\r\n > div {\r\n box-sizing: border-box;\r\n display: block;\r\n max-width: 100%;\r\n }\r\n`;\r\nconst Responsive = styled.div `\r\n display: block;\r\n overflow: hidden;\r\n position: relative;\r\n box-sizing: border-box;\r\n margin: 0;\r\n\r\n > div {\r\n display: block;\r\n box-sizing: border-box;\r\n \r\n padding-top: ${({ width, height, fullPaddingTop }) => {\r\n if (fullPaddingTop || !height || !width) {\r\n return '100%';\r\n }\r\n const quotient = height / width;\r\n return isNaN(quotient) ? '100%' : `${quotient * 100}%`;\r\n}};\r\n\r\n }\r\n`;\r\nconst Fixed = styled.div `\r\n overflow: hidden;\r\n box-sizing: border-box;\r\n display: inline-block;\r\n position: relative;\r\n width: ${({ width }) => width}px;\r\n height: ${({ height }) => height}px;\r\n`;\r\nconst Fill = styled.div `\r\n display: block;\r\n overflow: hidden;\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n bottom: 0;\r\n right: 0;\r\n box-sizing: border-box;\r\n margin: 0;\r\n`;\r\nexport const ImageStyles = {\r\n Image,\r\n Intrinsic,\r\n Fixed,\r\n Responsive,\r\n Fill,\r\n};\r\n","import { hsl } from 'polished';\r\nexport default {\r\n /** Hex: #1f1f1f */\r\n black: '#1f1f1f',\r\n /** Hex: #fff */\r\n white: '#fff',\r\n primary: {\r\n /** Hex: #859a3e */\r\n base: '#859a3e',\r\n /** Hex: #558000 */\r\n dark: '#558000',\r\n /** Hex: #84bb26 */\r\n light: '#84bb26',\r\n /** Hex: #669900 */\r\n alt: '#669900',\r\n },\r\n accent: {\r\n /** Hex: #FF6600 */\r\n orange: '#FF6600',\r\n },\r\n divisionTags: {\r\n mrCropper: '#CC0000',\r\n sandhurst: '#FF6600',\r\n default: '#669900',\r\n },\r\n grey: {\r\n /** Hex: #E5E5E5 */\r\n grey89: hsl(0, 0, 0.89),\r\n /** Hex: #F6F6F6 */\r\n grey96: hsl(0, 0, 0.96),\r\n /** Hex: #C1C1C1 */\r\n grey76: hsl(0, 0, 0.76),\r\n grey75: hsl(0, 0, 0.75),\r\n /** Hex: #8D8C8C*/\r\n grey55: hsl(0, 0, 0.55),\r\n /** Hex: #707070*/\r\n grey44: hsl(0, 0, 0.44),\r\n /** Hex: #666666*/\r\n grey40: hsl(0, 0, 0.4),\r\n /** Hex: #5A5A5A */\r\n grey35: hsl(0, 0, 0.35),\r\n /** Hex: #333333*/\r\n grey20: hsl(0, 0, 0.2),\r\n },\r\n red: { base: 'red' },\r\n ysp: {\r\n input: '#DBE6C7',\r\n water: '#0097a9',\r\n ground: '#ab0216',\r\n excavation: '#93545c',\r\n },\r\n tpa: {\r\n base: '#26358c',\r\n light: '#009dff',\r\n },\r\n};\r\n","import { css } from 'styled-components';\r\nexport const fonts = {\r\n DaxPro: {\r\n Bold: css `\r\n font-family: 'ff-dax-pro', Arial, sans-serif;\r\n font-style: normal;\r\n font-weight: 700;\r\n `,\r\n BoldItalic: css `\r\n font-family: 'ff-dax-pro', Arial, sans-serif;\r\n font-style: italic;\r\n font-weight: 700;\r\n `,\r\n Medium: css `\r\n font-family: 'ff-dax-pro', Arial, sans-serif;\r\n font-style: normal;\r\n font-weight: 600;\r\n `,\r\n SlightlyLessThanMedium: css `\r\n font-family: 'ff-dax-pro', Arial, sans-serif;\r\n font-style: normal;\r\n font-weight: 500;\r\n `,\r\n Regular: css `\r\n font-family: 'ff-dax-pro', Arial, sans-serif;\r\n font-style: normal;\r\n font-weight: 400;\r\n `,\r\n RegularItalic: css `\r\n font-family: 'ff-dax-pro', Arial, sans-serif;\r\n font-style: italic;\r\n font-weight: 400;\r\n `,\r\n Light: css `\r\n font-family: 'ff-dax-pro', Arial, sans-serif;\r\n font-style: normal;\r\n font-weight: 200;\r\n `,\r\n },\r\n};\r\n","import * as React from 'react';\n\nconst LEFT = \"Left\";\nconst RIGHT = \"Right\";\nconst UP = \"Up\";\nconst DOWN = \"Down\";\n\n/* global document */\nconst defaultProps = {\n delta: 10,\n preventScrollOnSwipe: false,\n rotationAngle: 0,\n trackMouse: false,\n trackTouch: true,\n swipeDuration: Infinity,\n touchEventOptions: { passive: true },\n};\nconst initialState = {\n first: true,\n initial: [0, 0],\n start: 0,\n swiping: false,\n xy: [0, 0],\n};\nconst mouseMove = \"mousemove\";\nconst mouseUp = \"mouseup\";\nconst touchEnd = \"touchend\";\nconst touchMove = \"touchmove\";\nconst touchStart = \"touchstart\";\nfunction getDirection(absX, absY, deltaX, deltaY) {\n if (absX > absY) {\n if (deltaX > 0) {\n return RIGHT;\n }\n return LEFT;\n }\n else if (deltaY > 0) {\n return DOWN;\n }\n return UP;\n}\nfunction rotateXYByAngle(pos, angle) {\n if (angle === 0)\n return pos;\n const angleInRadians = (Math.PI / 180) * angle;\n const x = pos[0] * Math.cos(angleInRadians) + pos[1] * Math.sin(angleInRadians);\n const y = pos[1] * Math.cos(angleInRadians) - pos[0] * Math.sin(angleInRadians);\n return [x, y];\n}\nfunction getHandlers(set, handlerProps) {\n const onStart = (event) => {\n const isTouch = \"touches\" in event;\n // if more than a single touch don't track, for now...\n if (isTouch && event.touches.length > 1)\n return;\n set((state, props) => {\n // setup mouse listeners on document to track swipe since swipe can leave container\n if (props.trackMouse && !isTouch) {\n document.addEventListener(mouseMove, onMove);\n document.addEventListener(mouseUp, onUp);\n }\n const { clientX, clientY } = isTouch ? event.touches[0] : event;\n const xy = rotateXYByAngle([clientX, clientY], props.rotationAngle);\n props.onTouchStartOrOnMouseDown &&\n props.onTouchStartOrOnMouseDown({ event });\n return Object.assign(Object.assign(Object.assign({}, state), initialState), { initial: xy.slice(), xy, start: event.timeStamp || 0 });\n });\n };\n const onMove = (event) => {\n set((state, props) => {\n const isTouch = \"touches\" in event;\n // Discount a swipe if additional touches are present after\n // a swipe has started.\n if (isTouch && event.touches.length > 1) {\n return state;\n }\n // if swipe has exceeded duration stop tracking\n if (event.timeStamp - state.start > props.swipeDuration) {\n return state.swiping ? Object.assign(Object.assign({}, state), { swiping: false }) : state;\n }\n const { clientX, clientY } = isTouch ? event.touches[0] : event;\n const [x, y] = rotateXYByAngle([clientX, clientY], props.rotationAngle);\n const deltaX = x - state.xy[0];\n const deltaY = y - state.xy[1];\n const absX = Math.abs(deltaX);\n const absY = Math.abs(deltaY);\n const time = (event.timeStamp || 0) - state.start;\n const velocity = Math.sqrt(absX * absX + absY * absY) / (time || 1);\n const vxvy = [deltaX / (time || 1), deltaY / (time || 1)];\n const dir = getDirection(absX, absY, deltaX, deltaY);\n // if swipe is under delta and we have not started to track a swipe: skip update\n const delta = typeof props.delta === \"number\"\n ? props.delta\n : props.delta[dir.toLowerCase()] ||\n defaultProps.delta;\n if (absX < delta && absY < delta && !state.swiping)\n return state;\n const eventData = {\n absX,\n absY,\n deltaX,\n deltaY,\n dir,\n event,\n first: state.first,\n initial: state.initial,\n velocity,\n vxvy,\n };\n // call onSwipeStart if present and is first swipe event\n eventData.first && props.onSwipeStart && props.onSwipeStart(eventData);\n // call onSwiping if present\n props.onSwiping && props.onSwiping(eventData);\n // track if a swipe is cancelable (handler for swiping or swiped(dir) exists)\n // so we can call preventDefault if needed\n let cancelablePageSwipe = false;\n if (props.onSwiping ||\n props.onSwiped ||\n props[`onSwiped${dir}`]) {\n cancelablePageSwipe = true;\n }\n if (cancelablePageSwipe &&\n props.preventScrollOnSwipe &&\n props.trackTouch &&\n event.cancelable) {\n event.preventDefault();\n }\n return Object.assign(Object.assign({}, state), { \n // first is now always false\n first: false, eventData, swiping: true });\n });\n };\n const onEnd = (event) => {\n set((state, props) => {\n let eventData;\n if (state.swiping && state.eventData) {\n // if swipe is less than duration fire swiped callbacks\n if (event.timeStamp - state.start < props.swipeDuration) {\n eventData = Object.assign(Object.assign({}, state.eventData), { event });\n props.onSwiped && props.onSwiped(eventData);\n const onSwipedDir = props[`onSwiped${eventData.dir}`];\n onSwipedDir && onSwipedDir(eventData);\n }\n }\n else {\n props.onTap && props.onTap({ event });\n }\n props.onTouchEndOrOnMouseUp && props.onTouchEndOrOnMouseUp({ event });\n return Object.assign(Object.assign(Object.assign({}, state), initialState), { eventData });\n });\n };\n const cleanUpMouse = () => {\n // safe to just call removeEventListener\n document.removeEventListener(mouseMove, onMove);\n document.removeEventListener(mouseUp, onUp);\n };\n const onUp = (e) => {\n cleanUpMouse();\n onEnd(e);\n };\n /**\n * The value of passive on touchMove depends on `preventScrollOnSwipe`:\n * - true => { passive: false }\n * - false => { passive: true } // Default\n *\n * NOTE: When preventScrollOnSwipe is true, we attempt to call preventDefault to prevent scroll.\n *\n * props.touchEventOptions can also be set for all touch event listeners,\n * but for `touchmove` specifically when `preventScrollOnSwipe` it will\n * supersede and force passive to false.\n *\n */\n const attachTouch = (el, props) => {\n let cleanup = () => { };\n if (el && el.addEventListener) {\n const baseOptions = Object.assign(Object.assign({}, defaultProps.touchEventOptions), props.touchEventOptions);\n // attach touch event listeners and handlers\n const tls = [\n [touchStart, onStart, baseOptions],\n // preventScrollOnSwipe option supersedes touchEventOptions.passive\n [\n touchMove,\n onMove,\n Object.assign(Object.assign({}, baseOptions), (props.preventScrollOnSwipe ? { passive: false } : {})),\n ],\n [touchEnd, onEnd, baseOptions],\n ];\n tls.forEach(([e, h, o]) => el.addEventListener(e, h, o));\n // return properly scoped cleanup method for removing listeners, options not required\n cleanup = () => tls.forEach(([e, h]) => el.removeEventListener(e, h));\n }\n return cleanup;\n };\n const onRef = (el) => {\n // \"inline\" ref functions are called twice on render, once with null then again with DOM element\n // ignore null here\n if (el === null)\n return;\n set((state, props) => {\n // if the same DOM el as previous just return state\n if (state.el === el)\n return state;\n const addState = {};\n // if new DOM el clean up old DOM and reset cleanUpTouch\n if (state.el && state.el !== el && state.cleanUpTouch) {\n state.cleanUpTouch();\n addState.cleanUpTouch = void 0;\n }\n // only attach if we want to track touch\n if (props.trackTouch && el) {\n addState.cleanUpTouch = attachTouch(el, props);\n }\n // store event attached DOM el for comparison, clean up, and re-attachment\n return Object.assign(Object.assign(Object.assign({}, state), { el }), addState);\n });\n };\n // set ref callback to attach touch event listeners\n const output = {\n ref: onRef,\n };\n // if track mouse attach mouse down listener\n if (handlerProps.trackMouse) {\n output.onMouseDown = onStart;\n }\n return [output, attachTouch];\n}\nfunction updateTransientState(state, props, previousProps, attachTouch) {\n // if trackTouch is off or there is no el, then remove handlers if necessary and exit\n if (!props.trackTouch || !state.el) {\n if (state.cleanUpTouch) {\n state.cleanUpTouch();\n }\n return Object.assign(Object.assign({}, state), { cleanUpTouch: undefined });\n }\n // trackTouch is on, so if there are no handlers attached, attach them and exit\n if (!state.cleanUpTouch) {\n return Object.assign(Object.assign({}, state), { cleanUpTouch: attachTouch(state.el, props) });\n }\n // trackTouch is on and handlers are already attached, so if preventScrollOnSwipe changes value,\n // remove and reattach handlers (this is required to update the passive option when attaching\n // the handlers)\n if (props.preventScrollOnSwipe !== previousProps.preventScrollOnSwipe ||\n props.touchEventOptions.passive !== previousProps.touchEventOptions.passive) {\n state.cleanUpTouch();\n return Object.assign(Object.assign({}, state), { cleanUpTouch: attachTouch(state.el, props) });\n }\n return state;\n}\nfunction useSwipeable(options) {\n const { trackMouse } = options;\n const transientState = React.useRef(Object.assign({}, initialState));\n const transientProps = React.useRef(Object.assign({}, defaultProps));\n // track previous rendered props\n const previousProps = React.useRef(Object.assign({}, transientProps.current));\n previousProps.current = Object.assign({}, transientProps.current);\n // update current render props & defaults\n transientProps.current = Object.assign(Object.assign({}, defaultProps), options);\n // Force defaults for config properties\n let defaultKey;\n for (defaultKey in defaultProps) {\n if (transientProps.current[defaultKey] === void 0) {\n transientProps.current[defaultKey] = defaultProps[defaultKey];\n }\n }\n const [handlers, attachTouch] = React.useMemo(() => getHandlers((stateSetter) => (transientState.current = stateSetter(transientState.current, transientProps.current)), { trackMouse }), [trackMouse]);\n transientState.current = updateTransientState(transientState.current, transientProps.current, previousProps.current, attachTouch);\n return handlers;\n}\n\nexport { DOWN, LEFT, RIGHT, UP, useSwipeable };\n//# sourceMappingURL=index.js.map\n","import brand from '@helpers/brand';\r\nimport { Device, from, until } from '@helpers/media';\r\nimport SiteWideStyles from '@stories/Components/Global/SiteWide/SiteWide.styles';\r\nimport DotPaginationStyles from '@stories/Components/Misc/DotPagination/DotPagination.styles';\r\nimport { BreadcrumbsStyles } from '@stories/Widgets/Meta/Breadcrumbs/Breadcrumbs.styles';\r\nimport { m } from 'framer-motion';\r\nimport styled from 'styled-components';\r\nconst Container = styled(m.section) `\r\n position: relative;\r\n`;\r\nconst BreadcrumbWrapper = styled.div `\r\n position: absolute;\r\n width: 100%;\r\n z-index: 2;\r\n\r\n ${BreadcrumbsStyles.Inner} li a, ${BreadcrumbsStyles.Inner} li:after {\r\n color: ${brand.white};\r\n }\r\n`;\r\nconst ItemList = styled.ul `\r\n position: relative;\r\n display: grid;\r\n z-index: 0;\r\n`;\r\nconst Item = styled.li `\r\n grid-area: 1 / 1;\r\n pointer-events: none;\r\n\r\n &[aria-current='true'] {\r\n pointer-events: all;\r\n }\r\n`;\r\nconst PaginationWrapper = styled.div `\r\n pointer-events: none;\r\n z-index: 1;\r\n\r\n ${DotPaginationStyles.Container} {\r\n pointer-events: all;\r\n --direction: column;\r\n }\r\n\r\n @media ${until(Device.TabletLarge)} {\r\n position: absolute;\r\n bottom: 10px;\r\n left: 0;\r\n width: 100%;\r\n\r\n ${SiteWideStyles.Container} {\r\n display: flex;\r\n justify-content: center;\r\n }\r\n\r\n ${DotPaginationStyles.Container} {\r\n flex-direction: row;\r\n }\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n position: absolute;\r\n top: 50%;\r\n left: 0;\r\n transform: translateY(-50%);\r\n width: 100%;\r\n\r\n ${SiteWideStyles.Container} {\r\n display: flex;\r\n justify-content: flex-start;\r\n }\r\n\r\n ${DotPaginationStyles.Container} {\r\n flex-direction: column;\r\n }\r\n }\r\n`;\r\nexport const HomepageCarouselStyles = {\r\n BreadcrumbWrapper,\r\n Container,\r\n ItemList,\r\n Item,\r\n PaginationWrapper,\r\n};\r\n","import brand from '@helpers/brand';\r\nimport { fonts } from '@helpers/fonts';\r\nimport { between, Device, from, until } from '@helpers/media';\r\nimport SiteWideStyles from '@stories/Components/Global/SiteWide/SiteWide.styles';\r\nimport ParagraphStyles from '@stories/Components/Global/Typography/Paragraph.styles';\r\nimport { m } from 'framer-motion';\r\nimport styled from 'styled-components';\r\nconst Container = styled(m.section) `\r\n position: relative;\r\n display: grid;\r\n height: 100%;\r\n min-height: 296px;\r\n\r\n @media ${from(Device.DesktopSmall)} {\r\n height: 90vh;\r\n max-height: min(100vh - 185px, 786px);\r\n }\r\n`;\r\nconst ImageWrapper = styled.div `\r\n position: relative;\r\n grid-area: 1 / 1;\r\n`;\r\nconst ContentWrapper = styled.div `\r\n position: relative;\r\n display: flex;\r\n flex-direction: column;\r\n grid-area: 1 / 1;\r\n height: 100%;\r\n justify-content: flex-start;\r\n\r\n ${SiteWideStyles.Container} {\r\n display: flex;\r\n align-items: center;\r\n height: 100%;\r\n\r\n @media ${between(Device.TabletLarge, Device.DesktopSmall)} {\r\n padding-top: 40px;\r\n padding-bottom: 40px;\r\n }\r\n\r\n @media ${until(Device.TabletLarge)} {\r\n padding-top: 75px;\r\n padding-bottom: 75px;\r\n }\r\n }\r\n`;\r\nconst Overlay = styled.div `\r\n content: '';\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n background: rgba(0, 0, 0, 0.43);\r\n height: 100%;\r\n width: 100%;\r\n z-index: 1;\r\n`;\r\nconst ContentWrapperInner = styled.div `\r\n position: relative;\r\n z-index: 2;\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n padding-left: max(10vw, 64px);\r\n }\r\n`;\r\nconst Title = styled(m.h1) `\r\n display: block;\r\n color: ${brand.white};\r\n ${fonts.DaxPro.Bold};\r\n font-size: clamp(30px, 20px + 2.5vw, 50px);\r\n line-height: 1.2;\r\n max-width: clamp(350px, 70vw, 526px);\r\n margin-bottom: 20px;\r\n`;\r\nconst Description = styled(m.p) `\r\n ${ParagraphStyles.RegularStyles};\r\n color: ${brand.white};\r\n max-width: clamp(350px, 70vw, 800px);\r\n`;\r\nconst CtaWrapper = styled.div `\r\n margin-top: 25px;\r\n`;\r\nexport const HomepageCarouselItemStyles = {\r\n Container,\r\n ContentWrapper,\r\n ContentWrapperInner,\r\n CtaWrapper,\r\n ImageWrapper,\r\n Overlay,\r\n Title,\r\n Description,\r\n};\r\n","import { LinkButton } from '@stories/Components/Buttons/Button/Button';\r\nimport SiteWide from '@stories/Components/Global/SiteWide/SiteWide';\r\nimport Image from '@stories/Components/Media/Image/Image';\r\nimport { m } from 'framer-motion';\r\nimport React from 'react';\r\nimport { HomepageCarouselItemStyles as S } from './HomepageCarouselItem.styles';\r\nconst HomepageCarouselItem = ({ active, cta, image, index, title, description, }) => {\r\n return (React.createElement(S.Container, { initial: active ? 'visible' : 'hidden', animate: active ? 'visible' : 'hidden', variants: { hidden: { opacity: 0 }, visible: { opacity: 1 } } },\r\n React.createElement(S.ImageWrapper, null,\r\n React.createElement(Image, { ...image, alt: title || description || '', objectFit: \"cover\", loading: index === 0 ? 'eager' : 'lazy', preload: index === 0 })),\r\n React.createElement(S.Overlay, { style: { transformOrigin: 'top center' } }),\r\n React.createElement(S.ContentWrapper, null,\r\n React.createElement(SiteWide, null,\r\n React.createElement(S.ContentWrapperInner, null,\r\n React.createElement(S.Title, { as: index === 0 ? m.h1 : m.h2 }, title),\r\n description && React.createElement(S.Description, null, description),\r\n cta && (React.createElement(S.CtaWrapper, null,\r\n React.createElement(LinkButton, { branding: \"white\", href: cta.url, target: cta.target, title: cta.title }))))))));\r\n};\r\nexport default HomepageCarouselItem;\r\n","import { HydrateOption } from '@core/enums';\r\nimport { Device, until } from '@helpers/media';\r\nimport { isSSR } from '@helpers/ssr';\r\nimport withWidget from '@hoc/withWidget';\r\nimport useMedia from '@hooks/useMedia';\r\nimport SiteWide from '@stories/Components/Global/SiteWide/SiteWide';\r\nimport Breadcrumbs from '@stories/Widgets/Meta/Breadcrumbs/Breadcrumbs.widget';\r\nimport React from 'react';\r\nimport { useSwipeable } from 'react-swipeable';\r\nimport { HomepageCarouselStyles as S } from './HomepageCarousel.styles';\r\nimport HomepageCarouselItem from './HomepageCarouselItem/HomepageCarouselItem';\r\nimport { useAutoplay } from '@hooks/useAutoplay';\r\nimport { useInView } from '@hooks/useInView';\r\nimport { withMotionMax } from '@hoc/withMotionMax';\r\nimport DotPagination from '@stories/Components/Misc/DotPagination/DotPagination';\r\nconst HomepageCarousel = ({ items, breadcrumb, autoplay = 0, }) => {\r\n const isMobile = useMedia([until(Device.Tablet)], [true], false);\r\n const [refContainer, inView] = useInView({}, true);\r\n const { activeIndex, duration, paused, setActiveIndex, setPaused } = useAutoplay({\r\n enabled: autoplay > 0,\r\n duration: autoplay,\r\n items,\r\n });\r\n React.useEffect(() => {\r\n setPaused(!inView);\r\n }, [inView]);\r\n const swipeHandlers = useSwipeable({\r\n onSwipedLeft: () => {\r\n setActiveIndex(Math.min(activeIndex + 1, items.length - 1));\r\n },\r\n onSwipedRight: () => {\r\n setActiveIndex(Math.max(activeIndex - 1, 0));\r\n },\r\n });\r\n return (React.createElement(React.Fragment, null,\r\n React.createElement(\"div\", { ...swipeHandlers, ref: (r) => {\r\n refContainer.current = r;\r\n swipeHandlers.ref(r);\r\n } },\r\n React.createElement(S.Container, null,\r\n breadcrumb && (React.createElement(S.BreadcrumbWrapper, null,\r\n React.createElement(Breadcrumbs, { items: breadcrumb }))),\r\n React.createElement(S.ItemList, null,\r\n !isMobile &&\r\n !isSSR() &&\r\n items.map((item, index) => (React.createElement(S.Item, { key: item.id, \"aria-current\": activeIndex === index },\r\n React.createElement(HomepageCarouselItem, { ...item, active: activeIndex === index, index: index })))),\r\n isMobile || (isSSR() && items.length > 0) ? (React.createElement(S.Item, { key: items[0].id, \"aria-current\": true },\r\n React.createElement(HomepageCarouselItem, { ...items[0], active: true, index: 0 }))) : null),\r\n items.length > 1 && !isMobile && !isSSR() && (React.createElement(S.PaginationWrapper, null,\r\n React.createElement(SiteWide, null,\r\n React.createElement(DotPagination, { autoplay: duration, count: items.length, paused: paused, value: activeIndex, onChange: (index) => {\r\n setActiveIndex(index);\r\n setPaused(true);\r\n }, onHover: (hover) => setPaused(hover) }))))))));\r\n};\r\nexport default withWidget(withMotionMax(HomepageCarousel), 'HomepageCarousel', {\r\n hydrate: HydrateOption.Always,\r\n});\r\n","import * as React from 'react';\r\nexport function useAutoplay(params) {\r\n const refInterval = React.useRef();\r\n const [activeIndex, setActiveIndex] = React.useState(0);\r\n const [paused, setPaused] = React.useState(params.duration === 0);\r\n const activeItem = params.items[activeIndex];\r\n const activeItemDuration = activeItem.duration ?? params.duration;\r\n React.useEffect(() => {\r\n if (params.enabled && !paused) {\r\n refInterval.current = window.setTimeout(update, activeItemDuration);\r\n }\r\n return cleanup;\r\n function update() {\r\n if (paused) {\r\n return;\r\n }\r\n let newIndex = activeIndex + 1;\r\n if (newIndex === params.items.length) {\r\n newIndex = 0;\r\n }\r\n setActiveIndex(newIndex);\r\n }\r\n function cleanup() {\r\n if (refInterval.current) {\r\n window.clearInterval(refInterval.current);\r\n }\r\n }\r\n }, [activeIndex, activeItemDuration, paused, params.enabled]);\r\n return {\r\n activeIndex,\r\n duration: activeItemDuration,\r\n setActiveIndex,\r\n paused,\r\n setPaused,\r\n };\r\n}\r\n","import styled, { css } from 'styled-components';\r\nimport brand from './brand';\r\nimport { lighten, transparentize } from 'polished';\r\nexport const ThemeWrapper = styled.div `\r\n display: contents;\r\n`;\r\n/**\r\n * Injects the theme switching for Groundforce / TPA.\r\n * Make sure to not include this on a pseudoelement, as they can't query parents for some reason.\r\n */\r\nexport const ThemeSwitch = (options) => css `\r\n --theme: ${options.groundforceColour ?? brand.primary.base};\r\n --theme-hover: ${options.groundforceColourHover ?? lighten(0.1, brand.primary.base)};\r\n\r\n ${options.generateOpacity &&\r\n `--theme-half-opacity: ${transparentize(0.5, options.groundforceColour ?? brand.primary.base)};`}\r\n\r\n ${options.groundforcePseudoColourAlt && `--theme-alt: ${options.groundforcePseudoColourAlt};`}\r\n\r\n [data-theme='tpa'] &,\r\n &[data-theme='tpa'] {\r\n --theme: ${options.tpaColour ?? brand.tpa.base};\r\n --theme-hover: ${options.tpaColourHover ?? lighten(0.1, brand.tpa.base)};\r\n\r\n ${options.generateOpacity &&\r\n `--theme-half-opacity: ${transparentize(0.5, options.tpaColour ?? brand.tpa.base)};`}\r\n\r\n ${options.tpaPseudoColourAlt && `--theme-alt: ${options.tpaPseudoColourAlt};`}\r\n }\r\n`;\r\n","import { imageUrl } from '@helpers/cloudinary';\r\nimport { Device } from '@helpers/media';\r\nimport { toBase64 } from '@helpers/to-base-64';\r\nimport React, { useState } from 'react';\r\nimport { ImageStyles } from './Image.styles';\r\nconst Image = (props) => {\r\n const [hasErrored, setHasErrored] = useState(false);\r\n const deviceWidths = [\r\n props.width ? props.width : -1,\r\n Device.MobileSmall,\r\n Device.MobileSmall * 2,\r\n Device.MobileSmall * 3,\r\n Device.MobileMedium,\r\n Device.MobileMedium * 2,\r\n Device.MobileMedium * 3,\r\n Device.Mobile,\r\n Device.Mobile * 2,\r\n Device.Mobile * 3,\r\n Device.MobileLarge,\r\n Device.MobileLarge * 2,\r\n Device.MobileLarge * 3,\r\n Device.Tablet,\r\n Device.Tablet * 2,\r\n Device.Tablet * 3,\r\n Device.TabletLarge,\r\n Device.TabletLarge * 2,\r\n Device.TabletLarge * 3,\r\n Device.DesktopSmall,\r\n Device.DesktopSmall * 2,\r\n Device.DesktopSmall * 3,\r\n Device.Desktop,\r\n Device.Desktop * 2,\r\n Device.Desktop * 3,\r\n Device.ActualDesktop,\r\n Device.ActualDesktop * 2,\r\n Device.ActualDesktop * 3,\r\n ]\r\n .filter((x) => x > 0)\r\n .sort((a, b) => (a < b ? -1 : 1));\r\n const srcSetUrls = deviceWidths\r\n .map((x) => `${imageUrl(props.src, `c_fill,w_${x}`)} ${x}w`)\r\n .join(', ');\r\n const src = imageUrl(props.src, `c_fill,w_${deviceWidths[deviceWidths.length - 1]}`);\r\n const sizes = props.sizes ? props.sizes : '100vw';\r\n const handleError = (e) => {\r\n if (hasErrored) {\r\n return;\r\n }\r\n setHasErrored(true);\r\n e.currentTarget.src = props.fallbackSrc ? props.fallbackSrc : '';\r\n };\r\n let components = null;\r\n switch (props.layout) {\r\n default:\r\n case 'responsive': {\r\n components = (React.createElement(ImageStyles.Responsive, { width: props.width, height: props.height, fullPaddingTop: props.fullPaddingTop },\r\n React.createElement(\"div\", null),\r\n React.createElement(ImageStyles.Image, { role: props.role, alt: props.alt, decoding: props.preload ? 'sync' : 'async', loading: props.loading ? props.loading : 'lazy', objectFit: props.objectFit, objectPosition: props.objectPosition, draggable: props.draggable, sizes: sizes, srcSet: srcSetUrls, src: src, onError: handleError, \r\n /*// @ts-ignore */\r\n fetchPriority: props.preload ? 'high' : 'auto' })));\r\n break;\r\n }\r\n case 'intrinsic': {\r\n const sizerSvg = ``;\r\n components = (React.createElement(ImageStyles.Intrinsic, null,\r\n React.createElement(\"div\", null,\r\n React.createElement(\"img\", { \"aria-hidden\": true, role: \"presentation\", src: `data:image/svg+xml;base64,${toBase64(sizerSvg)}` })),\r\n React.createElement(ImageStyles.Image, { role: props.role, alt: props.alt, decoding: props.preload ? 'sync' : 'async', loading: props.loading ? props.loading : 'lazy', objectFit: props.objectFit, objectPosition: props.objectPosition, draggable: props.draggable, sizes: sizes, srcSet: srcSetUrls, src: src, onError: handleError, \r\n /*// @ts-ignore */\r\n fetchPriority: props.preload ? 'high' : 'auto' })));\r\n break;\r\n }\r\n case 'fixed': {\r\n components = (React.createElement(ImageStyles.Fixed, { width: props.width, height: props.height },\r\n React.createElement(ImageStyles.Image, { role: props.role, alt: props.alt, decoding: props.preload ? 'sync' : 'async', loading: props.loading ? props.loading : 'lazy', objectFit: props.objectFit, objectPosition: props.objectPosition, draggable: props.draggable, sizes: sizes, srcSet: srcSetUrls, src: src, onError: handleError, \r\n /*// @ts-ignore */\r\n fetchPriority: props.preload ? 'high' : 'auto' })));\r\n break;\r\n }\r\n case 'fill': {\r\n components = (React.createElement(ImageStyles.Fill, null,\r\n React.createElement(ImageStyles.Image, { role: props.role, alt: props.alt, decoding: props.preload ? 'sync' : 'async', loading: props.loading ? props.loading : 'lazy', draggable: props.draggable, objectFit: props.objectFit, objectPosition: props.objectPosition, sizes: sizes, srcSet: srcSetUrls, src: src, onError: handleError, \r\n /*// @ts-ignore */\r\n fetchPriority: props.preload ? 'high' : 'auto' })));\r\n break;\r\n }\r\n }\r\n return React.createElement(React.Fragment, null, components);\r\n};\r\nexport default Image;\r\n","import brand from '@helpers/brand';\r\nimport { fonts } from '@helpers/fonts';\r\nimport { from, Device } from '@helpers/media';\r\nimport styled from 'styled-components';\r\nconst Wrapper = styled.div `\r\n margin: 25px 0px;\r\n`;\r\nconst Inner = styled.ul `\r\n grid-column: span 12;\r\n display: flex;\r\n flex-direction: row;\r\n flex-wrap: nowrap;\r\n margin-bottom: 0px;\r\n height: 16px;\r\n white-space: nowrap;\r\n\r\n li {\r\n position: relative;\r\n white-space: nowrap;\r\n\r\n &:after {\r\n content: '|';\r\n padding: 0px 5px;\r\n }\r\n\r\n &:last-child:after {\r\n display: none;\r\n }\r\n\r\n a {\r\n color: ${brand.grey.grey20};\r\n ${fonts.DaxPro.Regular};\r\n font-size: 14px;\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n font-size: 16px;\r\n }\r\n }\r\n }\r\n`;\r\nexport const BreadcrumbsStyles = { Wrapper, Inner };\r\n","var _g;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgLinePattern(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 119 45\"\n }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n \"data-name\": \"Line pattern\",\n fill: \"none\",\n stroke: \"currentColor\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Line 16\",\n d: \"M198.312-368.656l-423.66 764.334M202.674-366.238l-423.66 764.334M207.036-363.82l-423.66 764.334M211.398-361.402l-423.66 764.334M215.761-358.984l-423.66 764.334M220.123-356.566l-423.66 764.334M224.485-354.148l-423.66 764.334M228.847-351.73l-423.66 764.334M233.209-349.312l-423.66 764.334M237.572-346.894l-423.66 764.334M241.934-344.476l-423.66 764.334M246.296-342.058l-423.66 764.334M250.658-339.64l-423.66 764.334M255.02-337.222l-423.66 764.334M259.382-334.804l-423.66 764.334M263.744-332.386l-423.66 764.334M268.107-329.968l-423.66 764.334M272.469-327.55l-423.66 764.334M276.831-325.132l-423.66 764.334M281.193-322.714l-423.66 764.334M285.555-320.296l-423.66 764.334M289.917-317.878l-423.66 764.334M294.28-315.46l-423.66 764.334M298.642-313.042l-423.66 764.334M303.004-310.624l-423.66 764.334M307.366-308.206l-423.66 764.334M311.728-305.788l-423.66 764.334M316.091-303.37l-423.66 764.334M320.453-300.952l-423.66 764.334M324.815-298.534L-98.845 465.8M329.177-296.116l-423.66 764.334M333.539-293.698l-423.66 764.334M337.901-291.28l-423.66 764.334M342.264-288.862l-423.66 764.334M346.625-286.444L-77.035 477.89M350.988-284.026l-423.66 764.334M355.35-281.608L-68.31 482.726M359.712-279.19l-423.66 764.334M364.074-276.772l-423.66 764.334M368.436-274.354L-55.224 489.98M372.799-271.936l-423.66 764.334M377.161-269.518l-423.66 764.334M381.523-267.1l-423.66 764.334M385.885-264.682l-423.66 764.334M390.247-262.264L-33.413 502.07M394.609-259.847l-423.66 764.334M398.972-257.428l-423.66 764.334M403.334-255.011l-423.66 764.334M407.696-252.592l-423.66 764.334M412.058-250.175l-423.66 764.334M416.42-247.756L-7.24 516.578M420.783-245.339L-2.877 518.995M425.145-242.92L1.485 521.414M429.507-240.503L5.847 523.831M433.869-238.084L10.209 526.25M438.231-235.667L14.571 528.667M442.593-233.248L18.933 531.086M446.955-230.831L23.295 533.503M451.318-228.413L27.658 535.921M455.68-225.995L32.02 538.339M460.042-223.577L36.382 540.757M464.404-221.159L40.744 543.175M468.766-218.741L45.106 545.593M473.128-216.323L49.468 548.011M477.491-213.905L53.831 550.429M481.853-211.487L58.193 552.847M486.215-209.069L62.555 555.265M490.577-206.651L66.917 557.683M494.939-204.233L71.279 560.101M499.302-201.815L75.642 562.519M503.664-199.397L80.004 564.937M508.026-196.979L84.366 567.355M512.388-194.561L88.728 569.773M516.75-192.143L93.09 572.191M521.112-189.725L97.452 574.609M525.474-187.307l-423.66 764.334M529.836-184.889l-423.66 764.334M534.199-182.471l-423.66 764.334M538.561-180.053l-423.66 764.334M542.923-177.635l-423.66 764.334M547.285-175.217l-423.66 764.334M551.647-172.799l-423.66 764.334M556.01-170.381L132.35 593.953M560.372-167.963l-423.66 764.334M564.734-165.545l-423.66 764.334M569.096-163.127l-423.66 764.334M573.458-160.709l-423.66 764.334M577.821-158.291l-423.66 764.334M582.183-155.873l-423.66 764.334M586.545-153.455l-423.66 764.334M590.907-151.037l-423.66 764.334M595.269-148.619l-423.66 764.334M599.631-146.201l-423.66 764.334M603.993-143.783l-423.66 764.334M608.355-141.365l-423.66 764.334M612.718-138.947l-423.66 764.334M617.08-136.529L193.42 627.805M621.442-134.111l-423.66 764.334M625.804-131.693l-423.66 764.334M630.166-129.275l-423.66 764.334M634.529-126.857l-423.66 764.334M638.891-124.439l-423.66 764.334M643.253-122.021l-423.66 764.334M647.615-119.603l-423.66 764.334M651.977-117.185l-423.66 764.334M656.339-114.767l-423.66 764.334M660.702-112.349l-423.66 764.334M665.064-109.931l-423.66 764.334M669.426-107.513l-423.66 764.334M673.788-105.095l-423.66 764.334M678.15-102.677L254.49 661.657M682.513-100.259l-423.66 764.334M686.874-97.841l-423.66 764.334M691.237-95.423l-423.66 764.334M695.599-93.005l-423.66 764.334M699.961-90.587l-423.66 764.334M704.323-88.169l-423.66 764.334M708.685-85.751l-423.66 764.334M713.047-83.333l-423.66 764.334M717.41-80.915L293.75 683.419M721.772-78.497l-423.66 764.334M726.134-76.079l-423.66 764.334M730.496-73.661l-423.66 764.334M734.858-71.243l-423.66 764.334M739.221-68.825l-423.66 764.334M743.583-66.407l-423.66 764.334M747.945-63.99l-423.66 764.334M752.307-61.571l-423.66 764.334M756.669-59.153l-423.66 764.334M761.032-56.735l-423.66 764.334M765.394-54.318l-423.66 764.334M769.756-51.899l-423.66 764.334M774.118-49.481l-423.66 764.334M778.48-47.064L354.82 717.27M782.842-44.646l-423.66 764.334M787.204-42.227l-423.66 764.334M791.566-39.809l-423.66 764.334M795.929-37.392l-423.66 764.334M800.291-34.974L376.631 729.36M804.653-32.556l-423.66 764.334M809.015-30.137l-423.66 764.334M813.377-27.72l-423.66 764.334M817.74-25.302L394.08 739.032\",\n strokeWidth: 1.00042\n }))));\n}\n\nexport default __webpack_public_path__ + \"32774766b3243253aabbc97bbe71ff0a.svg\";\nexport { SvgLinePattern as ReactComponent };","import brand from '@helpers/brand';\r\nimport { fonts } from '@helpers/fonts';\r\nimport { ButtonReset } from '@helpers/global';\r\nimport { Device, until } from '@helpers/media';\r\nimport { ReactComponent as SvgHoverLines } from '@img/line-pattern.svg';\r\nimport styled, { css } from 'styled-components';\r\nimport { ThemeSwitch } from '@helpers/theme';\r\nconst Text = styled.div ``;\r\nconst HoverEffect = styled(SvgHoverLines) `\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n transform: translate(0, 0);\r\n transition: transform 0.3s;\r\n\r\n [data-theme='textOnly'] & {\r\n display: none;\r\n }\r\n [data-theme='textOnlyPrimary'] & {\r\n display: none;\r\n }\r\n [data-theme='primary'] &,\r\n &[data-theme='primary'] {\r\n ${ThemeSwitch({ groundforceColour: brand.primary.base })};\r\n color: var(--theme);\r\n }\r\n [data-theme='primaryAlt'] &,\r\n &[data-theme='primaryAlt'] {\r\n ${ThemeSwitch({ groundforceColour: brand.primary.alt })};\r\n color: var(--theme);\r\n }\r\n [data-theme='secondary'] &,\r\n &[data-theme='secondary'] {\r\n color: ${brand.accent.orange};\r\n }\r\n [data-theme='white'] &,\r\n &[data-theme='white'] {\r\n color: ${brand.white};\r\n }\r\n [data-theme='black'] &,\r\n &[data-theme='black'] {\r\n color: ${brand.black};\r\n }\r\n [data-theme='grey'] &,\r\n &[data-theme='grey'] {\r\n color: ${brand.black};\r\n }\r\n`;\r\nconst PrimaryStyles = css `\r\n ${ThemeSwitch({ groundforceColour: brand.primary.base, groundforceColourHover: '#a2b952' })};\r\n color: ${brand.white};\r\n background-color: var(--theme);\r\n\r\n &:hover {\r\n background-color: var(--theme-hover);\r\n color: ${brand.white};\r\n }\r\n\r\n &:active,\r\n &:focus {\r\n color: ${brand.white};\r\n }\r\n`;\r\nconst PrimaryAltStyles = css `\r\n ${ThemeSwitch({ groundforceColour: brand.primary.alt, groundforceColourHover: '#a2b952' })};\r\n color: ${brand.white};\r\n background-color: var(--theme);\r\n\r\n &:hover {\r\n background-color: var(--theme-hover);\r\n color: ${brand.white};\r\n }\r\n\r\n &:active,\r\n &:focus {\r\n color: ${brand.white};\r\n }\r\n`;\r\nconst SecondaryStyles = css `\r\n background-color: ${brand.accent.orange};\r\n color: ${brand.white};\r\n\r\n &:focus {\r\n background-color: ${brand.accent.orange};\r\n color: ${brand.white};\r\n }\r\n\r\n &:hover {\r\n border-color: ${brand.black};\r\n background-color: ${brand.black};\r\n color: ${brand.white};\r\n }\r\n\r\n &:active,\r\n &:focus {\r\n color: ${brand.grey.grey55};\r\n }\r\n`;\r\nconst WhiteStyles = css `\r\n background-color: ${brand.white};\r\n color: ${brand.black};\r\n border: 1px solid ${brand.white};\r\n\r\n &:hover {\r\n border-color: ${brand.white};\r\n background-color: ${brand.white};\r\n color: ${brand.black};\r\n }\r\n\r\n &:active,\r\n &:focus {\r\n color: ${brand.black};\r\n }\r\n`;\r\nconst BlackStyles = css `\r\n background-color: ${brand.grey.grey20};\r\n color: ${brand.white};\r\n\r\n &:hover {\r\n border-color: ${brand.grey.grey44};\r\n background-color: ${brand.grey.grey44};\r\n color: ${brand.white};\r\n }\r\n\r\n &:active,\r\n &:focus {\r\n color: ${brand.white};\r\n }\r\n`;\r\nconst GreyStyles = css `\r\n background-color: ${brand.grey.grey89};\r\n color: ${brand.black};\r\n\r\n &:hover {\r\n border-color: ${brand.grey.grey76};\r\n background-color: ${brand.grey.grey76};\r\n color: ${brand.black};\r\n }\r\n\r\n &:active,\r\n &:focus {\r\n color: ${brand.black};\r\n }\r\n`;\r\nconst TextOnlyStyles = css `\r\n border: 1px solid transparent;\r\n background: none;\r\n color: ${brand.black};\r\n\r\n &:hover {\r\n border-color: ${brand.black};\r\n background-color: ${brand.black};\r\n color: ${brand.white};\r\n }\r\n\r\n &:active,\r\n &:focus {\r\n color: ${brand.white};\r\n }\r\n`;\r\nconst TextOnlyPrimaryStyles = css `\r\n ${ThemeSwitch({\r\n groundforceColour: brand.primary.alt,\r\n groundforceColourHover: brand.primary.base,\r\n})}\r\n ${TextOnlyStyles};\r\n color: var(--theme);\r\n\r\n &:hover {\r\n border-color: transparent;\r\n background-color: transparent;\r\n color: var(--theme-hover);\r\n }\r\n\r\n &:active,\r\n &:focus {\r\n color: var(--theme-hover);\r\n }\r\n`;\r\nconst IconLeft = css `\r\n padding-right: 12px;\r\n\r\n @media ${until(Device.DesktopSmall)} {\r\n padding-right: 6px;\r\n }\r\n`;\r\nconst IconRight = css `\r\n padding-left: 15px;\r\n\r\n @media ${until(Device.DesktopSmall)} {\r\n padding-left: 6px;\r\n }\r\n`;\r\nconst hideText = css `\r\n ${Text} {\r\n @media ${until(Device.DesktopSmall)} {\r\n display: none;\r\n }\r\n }\r\n`;\r\nconst Icon = styled.div `\r\n display: inline-block;\r\n vertical-align: middle;\r\n\r\n ${({ position }) => {\r\n switch (position) {\r\n case 'left':\r\n return IconLeft;\r\n case 'right':\r\n return IconRight;\r\n default:\r\n break;\r\n }\r\n}}\r\n\r\n svg {\r\n vertical-align: middle;\r\n max-height: 24px;\r\n width: 22px;\r\n }\r\n`;\r\nconst Inner = styled.div `\r\n position: relative;\r\n padding: 11px 14px;\r\n\r\n [data-theme='textOnly'] & {\r\n ${TextOnlyStyles}\r\n }\r\n [data-theme='textOnlyPrimary'] & {\r\n ${TextOnlyPrimaryStyles}\r\n }\r\n [data-theme='primary'] & {\r\n ${PrimaryStyles}\r\n }\r\n [data-theme='primaryAlt'] & {\r\n ${PrimaryAltStyles}\r\n }\r\n [data-theme='secondary'] & {\r\n ${SecondaryStyles}\r\n }\r\n [data-theme='white'] & {\r\n ${WhiteStyles}\r\n }\r\n [data-theme='black'] & {\r\n ${BlackStyles}\r\n }\r\n [data-theme='grey'] & {\r\n ${GreyStyles}\r\n }\r\n`;\r\nconst Button = styled.button `\r\n ${ButtonReset};\r\n display: inline-block;\r\n padding: 0;\r\n position: relative;\r\n transition: background-color 0.3s, border-color 0.3s, opacity 100ms;\r\n user-select: none;\r\n background-color: transparent;\r\n border: none;\r\n\r\n &:hover,\r\n &:focus {\r\n ${HoverEffect} {\r\n transform: translate(10px, 10px);\r\n }\r\n }\r\n\r\n &:disabled {\r\n user-select: none;\r\n cursor: not-allowed;\r\n opacity: 0.5;\r\n }\r\n\r\n ${Text} {\r\n ${fonts.DaxPro.Bold};\r\n font-size: 18px;\r\n line-height: 24px;\r\n display: inline-block;\r\n vertical-align: middle;\r\n }\r\n\r\n ${({ branding }) => {\r\n switch (branding) {\r\n case 'textOnly':\r\n return TextOnlyStyles;\r\n case 'textOnlyPrimary':\r\n return TextOnlyPrimaryStyles;\r\n case 'primary':\r\n return PrimaryStyles;\r\n case 'secondary':\r\n return SecondaryStyles;\r\n case 'white':\r\n return WhiteStyles;\r\n case 'black':\r\n return BlackStyles;\r\n default:\r\n break;\r\n }\r\n}}\r\n\r\n ${({ hoverColour }) => {\r\n switch (hoverColour) {\r\n case 'primary':\r\n return css `\r\n ${ThemeSwitch({ groundforceColour: brand.primary.alt })}\r\n\r\n ${HoverEffect} {\r\n color: var(--theme) !important;\r\n }\r\n\r\n ${Inner} {\r\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out;\r\n }\r\n\r\n &:hover {\r\n ${Inner} {\r\n background-color: var(--theme) !important;\r\n border-color: var(--theme) !important;\r\n }\r\n }\r\n `;\r\n case 'black':\r\n return css `\r\n ${HoverEffect} {\r\n color: ${brand.black} !important;\r\n }\r\n\r\n ${Inner} {\r\n transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out;\r\n }\r\n\r\n &:hover {\r\n ${Inner} {\r\n background-color: ${brand.black} !important;\r\n border-color: ${brand.black} !important;\r\n }\r\n }\r\n `;\r\n default:\r\n break;\r\n }\r\n}}\r\n\r\n ${({ hideTextMobile }) => {\r\n if (hideTextMobile) {\r\n return hideText;\r\n }\r\n}}\r\n`;\r\nexport const ButtonStyles = {\r\n Button,\r\n HoverEffect,\r\n Icon,\r\n Inner,\r\n Text,\r\n};\r\n","import { Cloudinary } from '@cloudinary/base';\r\nimport { format, quality } from '@cloudinary/base/actions/delivery';\r\nimport { fit } from '@cloudinary/base/actions/resize';\r\nimport { audioCodec } from '@cloudinary/base/actions/transcode';\r\nimport { auto as fAuto } from '@cloudinary/base/qualifiers/format';\r\nimport { auto as qAuto } from '@cloudinary/base/qualifiers/quality';\r\nconst cl = new Cloudinary({\r\n cloud: {\r\n cloudName: 'vp-groundforce',\r\n },\r\n url: {\r\n secure: true,\r\n },\r\n});\r\nexport function imageUrl(publicId, rawTransformation) {\r\n if (!publicId) {\r\n return '';\r\n }\r\n const image = cl.image(publicId);\r\n // Apply raw transformation.\r\n if (rawTransformation) {\r\n image.addTransformation(rawTransformation);\r\n }\r\n // Ensure we're specifying a format...\r\n if (containsFormatTransformation(rawTransformation)) {\r\n return image.toURL();\r\n }\r\n // ...otherwise serve with \"f_auto\" for WebP support.\r\n return image.delivery(format(fAuto())).delivery(quality(qAuto())).toURL();\r\n}\r\nexport function videoUrl(publicId, options = {}) {\r\n if (!publicId) {\r\n return '';\r\n }\r\n let video = cl.video(publicId);\r\n // Apply resize.\r\n if (options.aspectRatio || options.width) {\r\n let resize = fit();\r\n if (options.aspectRatio) {\r\n resize = resize.aspectRatio(options.aspectRatio);\r\n }\r\n if (options.width) {\r\n resize = resize.width(options.width);\r\n }\r\n video = video.resize(resize);\r\n }\r\n // Apply transcale (remove audio).\r\n if (options.audioCodec) {\r\n video = video.transcode(audioCodec(options.audioCodec));\r\n }\r\n // Apply format.\r\n if (options.format) {\r\n video = video.delivery(format(options.format));\r\n }\r\n return video.toURL();\r\n}\r\n// eslint-disable-next-line no-useless-escape\r\nconst FormatRegEx = /(\\/|\\,)(f_.*?)(\\/|\\,)/;\r\nfunction containsFormatTransformation(transformation) {\r\n return !!transformation && FormatRegEx.test(transformation);\r\n}\r\nexport function extractPublicId(url) {\r\n const publicId = url.split('/groundforce').pop();\r\n if (!publicId) {\r\n throw new Error('Failed to extract public ID from URL');\r\n }\r\n return `/groundforce${publicId}`;\r\n}\r\n","export var MediaType;\r\n(function (MediaType) {\r\n MediaType[MediaType[\"Image\"] = 0] = \"Image\";\r\n MediaType[MediaType[\"YouTube\"] = 1] = \"YouTube\";\r\n})(MediaType || (MediaType = {}));\r\nexport var HireViewType;\r\n(function (HireViewType) {\r\n HireViewType[HireViewType[\"ReadOnly\"] = 0] = \"ReadOnly\";\r\n HireViewType[HireViewType[\"Editable\"] = 1] = \"Editable\";\r\n})(HireViewType || (HireViewType = {}));\r\nexport var OrderStepProgress;\r\n(function (OrderStepProgress) {\r\n OrderStepProgress[OrderStepProgress[\"Inactive\"] = 0] = \"Inactive\";\r\n OrderStepProgress[OrderStepProgress[\"Complete\"] = 1] = \"Complete\";\r\n OrderStepProgress[OrderStepProgress[\"Current\"] = 2] = \"Current\";\r\n})(OrderStepProgress || (OrderStepProgress = {}));\r\nexport var HydrateOption;\r\n(function (HydrateOption) {\r\n HydrateOption[HydrateOption[\"Always\"] = 0] = \"Always\";\r\n HydrateOption[HydrateOption[\"InView\"] = 1] = \"InView\";\r\n HydrateOption[HydrateOption[\"Never\"] = 2] = \"Never\";\r\n})(HydrateOption || (HydrateOption = {}));\r\n"],"sourceRoot":""}