{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/helpers/fluid.ts","webpack:///./src/hoc/withQueryParams.tsx","webpack:///./src/hoc/withRouter.tsx","webpack:///./src/stories/Components/Buttons/Button/Button.tsx","webpack:///./src/img/icons/tick.svg","webpack:///./src/img/icons/chevron-left.svg","webpack:///./src/core/url-resolver/UrlResolver.ts","webpack:///./src/helpers/grid.ts","webpack:///./src/helpers/date.ts","webpack:///./node_modules/react-use/esm/useClickAway.js","webpack:///./src/img/icons/close.svg","webpack:///./src/stories/Widgets/Content/NewsListing/NewsListing.styles.ts","webpack:///./node_modules/react-use/esm/useUpdateEffect.js","webpack:///./src/stories/Widgets/Content/NewsListing/NewsListing.widget.tsx","webpack:///./node_modules/react-spinners/esm/helpers/unitConverter.js","webpack:///./node_modules/react-spinners/esm/helpers/animation.js","webpack:///./node_modules/react-spinners/esm/PuffLoader.js","webpack:///./node_modules/querystring-es3/index.js","webpack:///./src/img/line-pattern.svg","webpack:///./src/stories/Components/Buttons/Button/Button.styles.tsx","webpack:///./node_modules/querystring-es3/decode.js","webpack:///./node_modules/querystring-es3/encode.js"],"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","66","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","DEFAULT_MIN_VALUE","Device","TabletSmall","DEFAULT_MAX_VALUE","ActualDesktop","fluid","min","max","minWidth","maxWidth","minRem","maxRem","minWidthRem","maxWidthRem","slope","yAxisIntersection","clampMin","round","clampVal","clampMax","num","Math","withQueryParams","WrappedComponent","displayName","ComponentWithQueryParams","props","React","createElement","QueryParamProvider","ReactRouterRoute","Route","ComponentWithRouter","window","StaticRouter","BrowserRouter","basename","withRouter","Button","addon","addonPosition","branding","className","disabled","title","type","onClick","hoverColour","hideTextMobile","rest","undefined","ButtonStyles","iconPosition","HoverEffect","Inner","Icon","position","Text","LinkButton","href","target","download","as","_path","_extends","assign","arguments","source","SvgTick","xmlns","viewBox","fill","SvgChevronLeft","stroke","strokeWidth","UrlResolver","process","toLowerCase","_localDomain","baseGrid","css","from","MobileLarge","Tablet","TabletLarge","DesktopSmall","Grid","Default","styled","div","Desktop","DesktopLarge","DefaultBreakout","DefaultPseudo","CardGridSpans","formatStringDate","dateString","formatDate","Date","formatDateISO","date","toISOString","Intl","DateTimeFormat","day","month","year","format","formatDateLong","useShortMonthName","formatDateShort","defaultEvents","ref","onClickAway","events","savedCallback","current","handler","event","el","contains","_i","events_1","eventName","document","events_2","_g","SvgClose","Container","Containers","FullWidth","TitleContainer","fonts","DaxPro","Bold","brand","primary","alt","Regular","grey","grey40","FiltersContainer","FiltersControls","FiltersLeft","FiltersRight","until","MultiSelect","MultiSelectWrapper","white","MultiSelectOptions","attrs","initial","animate","variants","hidden","height","opacity","pointerEvents","overflow","visible","transition","bounce","Medium","MultiSelectCheck","grey44","Pills","Pill","Cards","staggerChildren","CardWrapper","a","exit","CardContentTitle","CardInner","ImageWrapper","transparentize","LazyImage","img","scale","SpinnerContainer","x","duration","ease","CardContent","CardContentLine","h3","y","black","CardContentIntro","CardContentCta","span","LoadMore","DesktopFiltersWrapper","MobileFiltersWrapper","MobileFiltersContainer","MobileFiltersInner","MobileFilterSection","MobileButtons","MobileFilterOption","MobileCloseButton","MobileFilterSections","MobilePagination","grey89","NoResultsMsg","NewsListingStyles","effect","deps","isFirstMount","useFirstMountState","MultiSelectFilter","useState","expanded","setExpanded","useRef","useClickAway","wrapperRef","multiSelectOptionsRef","useEffect","wrapperRect","getBoundingClientRect","style","maxHeight","top","S","label","ChevronDown","options","map","option","id","singleSelectMode","params","includes","Tick","NewsListingCard","imageLoaded","setImageLoaded","imageRef","useInView","threshold","inView","hovering","setHovering","complete","url","isVideo","onMouseEnter","onMouseLeave","AnimatePresence","PuffLoader","src","image","loading","onLoad","intro","readMoreText","Chevron","withWidget","withRedux","withMotion","useQueryParams","filters","reduce","acc","filter","withDefault","ArrayParam","setParams","cultureCode","useSelector","pageContext","documentCulture","useQueryParam","NumberParam","pageIndex","setPageIndex","StringParam","sortBy","setSortBy","selectedOptions","useMemo","handleMultiSelectOptionSelect","filterId","optionId","isSingle","setLoading","initialData","setData","totalPages","totalResults","setTotalResults","previousPageRef","showMobileFilters","setShowMobileFilters","activeMobileFilter","setActiveMobileFilter","hasMore","setHasMore","scrollableSectionRef","useLockBodyScroll","handleParamChange","request","newsDetailPage","pageSize","ApiService","baseUrl","getDomain","method","controller","slug","response","status","success","totalResultCount","setTimeout","handleNextPage","useUpdateEffect","keys","Fragment","Close","translations","dangerouslySetInnerHTML","__html","replace","toString","exitBeforeEnter","card","e","preventDefault","hydrate","HydrateOption","InView","cssUnit","cm","mm","in","px","pt","pc","em","ex","ch","rem","vw","vh","vmin","vmax","cssValue","lengthWithunit","size","unit","valueString","match","parseFloat","parseInt","console","warn","concat","parseLengthAndUnit","createAnimation","loaderName","frames","suffix","animationName","styleEl","head","appendChild","styleSheet","sheet","keyFrames","insertRule","__assign","__rest","indexOf","getOwnPropertySymbols","propertyIsEnumerable","puff","_a","_b","_c","color","_d","speedMultiplier","_e","cssOverride","_f","additionalprops","wrapper","display","width","border","borderRadius","left","animationFillMode","animation","animationDuration","animationIterationCount","animationTimingFunction","animationDelay","decode","parse","encode","stringify","ThemeSwitch","groundforceColour","base","accent","orange","PrimaryStyles","groundforceColourHover","PrimaryAltStyles","SecondaryStyles","grey55","WhiteStyles","BlackStyles","grey20","GreyStyles","grey76","TextOnlyStyles","TextOnlyPrimaryStyles","IconLeft","IconRight","hideText","button","ButtonReset","obj","prop","qs","sep","eq","regexp","split","maxKeys","len","kstr","vstr","k","v","idx","substr","decodeURIComponent","isArray","Array","xs","stringifyPrimitive","isFinite","objectKeys","ks","encodeURIComponent","join","f","res"],"mappings":"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","file":"NewsListing-598e06c2ee497711038e.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\t66: 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([600,0,1,2,4,5,9,33,3,22]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","import { Device } from './media';\r\n/**\r\n * Base pixel value for the \"rem\" unit.\r\n */\r\nexport const PIXELS_PER_REM = 16;\r\n/**\r\n * Default pixel value for the min width.\r\n */\r\nexport const DEFAULT_MIN_VALUE = Device.TabletSmall;\r\n/**\r\n * Default pixel value for the max width.\r\n */\r\nexport const DEFAULT_MAX_VALUE = Device.ActualDesktop;\r\n/**\r\n * Define a fluid value between the min/max values at the min/max widths.\r\n */\r\nexport function fluid(min, max, minWidth = DEFAULT_MIN_VALUE, maxWidth = DEFAULT_MAX_VALUE) {\r\n const minRem = min / PIXELS_PER_REM;\r\n const maxRem = max / PIXELS_PER_REM;\r\n const minWidthRem = minWidth / PIXELS_PER_REM;\r\n const maxWidthRem = maxWidth / PIXELS_PER_REM;\r\n const slope = (maxRem - minRem) / (maxWidthRem - minWidthRem);\r\n const yAxisIntersection = -minWidthRem * slope + minRem;\r\n const clampMin = `${round(minRem)}rem`;\r\n const clampVal = `${round(yAxisIntersection)}rem + ${round(slope * 100)}vw`;\r\n const clampMax = `${round(maxRem)}rem`;\r\n return `clamp(${clampMin}, ${clampVal}, ${clampMax})`;\r\n}\r\n/**\r\n * Define a fluid value between the min/max values at the min/max widths.\r\n */\r\nexport function fluidUnit(min, max, minWidth = DEFAULT_MIN_VALUE, maxWidth = DEFAULT_MAX_VALUE, unit) {\r\n const slope = (max - min) / (maxWidth - minWidth);\r\n const yAxisIntersection = -minWidth * slope + min;\r\n const clampMin = `${round(min)}`;\r\n const clampVal = `${round(yAxisIntersection)}${unit} + ${round(slope * 100)}vw`;\r\n const clampMax = `${round(max)}`;\r\n return `clamp(${clampMin}${unit}, ${clampVal}, ${clampMax}${unit})`;\r\n}\r\n/**\r\n * Round to nearest hundredth.\r\n */\r\nfunction round(num) {\r\n return Math.round(num * 100) / 100;\r\n}\r\n","import React from 'react';\r\nimport { Route } from 'react-router';\r\nimport { QueryParamProvider } from 'use-query-params';\r\nimport { withRouter } from './withRouter';\r\nexport function withQueryParams(WrappedComponent) {\r\n const displayName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\r\n const ComponentWithQueryParams = (props) => {\r\n return (React.createElement(QueryParamProvider, { ReactRouterRoute: Route },\r\n React.createElement(WrappedComponent, { ...props })));\r\n };\r\n ComponentWithQueryParams.displayName = `withQueryParams(${displayName})`;\r\n return withRouter(ComponentWithQueryParams);\r\n}\r\n","import React from 'react';\r\nimport { BrowserRouter, StaticRouter } from 'react-router-dom';\r\nexport function withRouter(WrappedComponent) {\r\n const displayName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\r\n const ComponentWithRouter = (props) => {\r\n if (typeof window === 'undefined') {\r\n // if (!props.location) {\r\n // throw new Error(\r\n // `The \"location\" prop was not provided when the \"withRouter\" HOC was used. Ensure the Tag Helper is using the \"use-router\" parameter.`,\r\n // );\r\n // }\r\n return (React.createElement(StaticRouter, null,\r\n React.createElement(WrappedComponent, { ...props })));\r\n }\r\n return (React.createElement(BrowserRouter, { basename: props.basename },\r\n React.createElement(WrappedComponent, { ...props })));\r\n };\r\n ComponentWithRouter.displayName = `withRouter(${displayName})`;\r\n return ComponentWithRouter;\r\n}\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","var _path;\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 SvgTick(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 10.461 8.047\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M.121 4.426a.389.389 0 010-.563L.684 3.3a.389.389 0 01.563 0l.04.04L3.5 5.714a.194.194 0 00.282 0L9.174.121h.04a.389.389 0 01.563 0l.563.563a.389.389 0 010 .563L3.9 7.927a.389.389 0 01-.563 0L.2 4.547l-.08-.121z\",\n fill: \"#fff\"\n })));\n}\n\nexport default __webpack_public_path__ + \"f4264fed6b9c7f2f5267ffb08b4bb7f3.svg\";\nexport { SvgTick as ReactComponent };","var _path;\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 SvgChevronLeft(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 10.384 17.941\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.677.708L1.414 8.971l8.263 8.263\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2\n })));\n}\n\nexport default __webpack_public_path__ + \"11b88404772f121a18c9cd642acd31eb.svg\";\nexport { SvgChevronLeft as ReactComponent };","class UrlResolver {\r\n _localDomain = 'https://groundforce.local';\r\n /**\r\n *\r\n * Gets the current domain\r\n */\r\n getDomain = () => {\r\n if (`${process.env.NODE_ENV}`.toLowerCase() === 'development') {\r\n return this._localDomain;\r\n }\r\n return '';\r\n };\r\n}\r\nexport default new UrlResolver();\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","export function formatStringDate(dateString) {\r\n const date = new Date(dateString);\r\n return formatDate(date);\r\n}\r\nexport function formatDateISO(value) {\r\n let date = value;\r\n if (typeof date === 'string') {\r\n date = new Date(date);\r\n }\r\n return date.toISOString();\r\n}\r\nexport function formatDate(value) {\r\n let date = value;\r\n if (typeof date === 'string') {\r\n date = new Date(date);\r\n }\r\n return new Intl.DateTimeFormat(undefined, {\r\n day: 'numeric',\r\n month: 'short',\r\n year: 'numeric',\r\n }).format(date);\r\n}\r\nexport function formatDateLong(value, useShortMonthName) {\r\n let date = value;\r\n if (typeof date === 'string') {\r\n date = new Date(date);\r\n }\r\n return new Intl.DateTimeFormat(undefined, {\r\n day: 'numeric',\r\n month: useShortMonthName ? 'short' : 'long',\r\n year: 'numeric',\r\n }).format(date);\r\n}\r\nexport function formatDateShort(value) {\r\n let date = value;\r\n if (typeof date === 'string') {\r\n date = new Date(date);\r\n }\r\n return new Intl.DateTimeFormat(undefined, {\r\n day: 'numeric',\r\n month: '2-digit',\r\n year: '2-digit',\r\n }).format(date);\r\n}\r\n","import { useEffect, useRef } from 'react';\nimport { off, on } from './misc/util';\nvar defaultEvents = ['mousedown', 'touchstart'];\nvar useClickAway = function (ref, onClickAway, events) {\n if (events === void 0) { events = defaultEvents; }\n var savedCallback = useRef(onClickAway);\n useEffect(function () {\n savedCallback.current = onClickAway;\n }, [onClickAway]);\n useEffect(function () {\n var handler = function (event) {\n var el = ref.current;\n el && !el.contains(event.target) && savedCallback.current(event);\n };\n for (var _i = 0, events_1 = events; _i < events_1.length; _i++) {\n var eventName = events_1[_i];\n on(document, eventName, handler);\n }\n return function () {\n for (var _i = 0, events_2 = events; _i < events_2.length; _i++) {\n var eventName = events_2[_i];\n off(document, eventName, handler);\n }\n };\n }, [events, ref]);\n};\nexport default useClickAway;\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 SvgClose(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 22.628 22.627\"\n }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n \"data-name\": \"Group 32606\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2\n }, /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Line 3112\",\n d: \"M21.92.707L.707 21.92\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Line 3113\",\n d: \"M21.92 21.92L.707.707\"\n }))));\n}\n\nexport default __webpack_public_path__ + \"f628526dc59e3ff391c007673281196e.svg\";\nexport { SvgClose as ReactComponent };","import brand from '@helpers/brand';\r\nimport { fluid } from '@helpers/fluid';\r\nimport { fonts } from '@helpers/fonts';\r\nimport { Device, from, until } from '@helpers/media';\r\nimport { ButtonStyles } from '@stories/Components/Buttons/Button/Button.styles';\r\nimport { Containers } from '@stories/Widgets/YourSolution/YS/Components/Shared/Step.styles';\r\nimport { m } from 'framer-motion';\r\nimport { transparentize } from 'polished';\r\nimport styled from 'styled-components';\r\nconst Container = styled(Containers.FullWidth) `\r\n margin-top: ${fluid(34, 48)};\r\n\r\n display: flex;\r\n flex-direction: column;\r\n`;\r\nconst TitleContainer = styled.div `\r\n text-align: center;\r\n padding-bottom: ${fluid(24, 86)};\r\n\r\n display: flex;\r\n flex-direction: column;\r\n gap: ${fluid(20, 31)};\r\n\r\n h1 {\r\n ${fonts.DaxPro.Bold};\r\n color: ${brand.primary.alt};\r\n font-size: ${fluid(26, 35)};\r\n line-height: ${fluid(32, 45)};\r\n margin: 0;\r\n }\r\n\r\n p {\r\n ${fonts.DaxPro.Regular};\r\n color: ${brand.grey.grey40};\r\n font-size: ${fluid(18, 20)};\r\n line-height: ${fluid(22, 25)};\r\n margin: 0;\r\n }\r\n`;\r\nconst FiltersContainer = styled.div `\r\n display: flex;\r\n flex-direction: column;\r\n gap: ${fluid(25, 32)};\r\n z-index: 5;\r\n`;\r\nconst FiltersControls = styled.div `\r\n display: flex;\r\n justify-content: space-between;\r\n`;\r\nconst FiltersLeft = styled.div `\r\n display: flex;\r\n align-items: center;\r\n gap: 16px;\r\n\r\n > span {\r\n ${fonts.DaxPro.Bold};\r\n margin-right: ${fluid(0, 13, Device.Desktop)};\r\n }\r\n`;\r\nconst FiltersRight = styled.div `\r\n display: flex;\r\n align-items: center;\r\n gap: 16px;\r\n\r\n > span {\r\n @media ${until(Device.DesktopLarge)} {\r\n display: none;\r\n }\r\n\r\n ${fonts.DaxPro.Bold};\r\n margin-left: 26px;\r\n }\r\n`;\r\nconst MultiSelect = styled.div `\r\n position: relative;\r\n display: flex;\r\n flex-direction: column;\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n min-width: 236px;\r\n }\r\n\r\n opacity: 1;\r\n &[data-disabled='true'] {\r\n opacity: 0.75;\r\n pointer-events: none;\r\n }\r\n\r\n transition: opacity 0.25s ease-in-out;\r\n`;\r\nconst MultiSelectWrapper = styled.div `\r\n padding: ${fluid(10, 13)} ${fluid(16, 23)};\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n background: ${brand.white};\r\n border: 1px solid ${brand.primary.alt};\r\n border-radius: 8px;\r\n cursor: pointer;\r\n z-index: 1;\r\n\r\n &[data-mobile-trigger] {\r\n svg {\r\n transform: rotate(180deg);\r\n }\r\n\r\n gap: 10px;\r\n }\r\n\r\n &[aria-expanded='true'] {\r\n svg {\r\n transform: rotate(180deg);\r\n }\r\n }\r\n\r\n > span {\r\n ${fonts.DaxPro.Bold};\r\n font-size: 18px;\r\n line-height: 23px;\r\n }\r\n\r\n svg {\r\n width: 14px;\r\n height: 14px;\r\n transition: transform 0.3s;\r\n }\r\n`;\r\nconst MultiSelectOptions = styled(m.div).attrs((props) => ({\r\n initial: 'hidden',\r\n animate: props['data-visible'] ? 'visible' : 'hidden',\r\n variants: {\r\n hidden: {\r\n height: 0,\r\n opacity: 0,\r\n pointerEvents: 'none',\r\n overflow: 'hidden',\r\n },\r\n visible: {\r\n height: 'max-content',\r\n opacity: 1,\r\n pointerEvents: 'all',\r\n overflow: 'auto',\r\n },\r\n },\r\n transition: {\r\n bounce: 0,\r\n },\r\n})) `\r\n --height: 51px;\r\n position: absolute;\r\n inset: 0;\r\n width: 100%;\r\n padding-left: 10px;\r\n padding-right: 10px;\r\n padding-top: calc(var(--height) + 16px);\r\n padding-bottom: 16px;\r\n background-color: ${brand.white};\r\n z-index: 0;\r\n\r\n display: flex;\r\n flex-direction: column;\r\n gap: 22px;\r\n\r\n border-radius: 0px 0px 8px 8px;\r\n\r\n span {\r\n ${fonts.DaxPro.Medium};\r\n font-size: ${fluid(16, 18)};\r\n line-height: ${fluid(20, 23)};\r\n }\r\n\r\n div {\r\n cursor: pointer;\r\n display: flex;\r\n align-items: center;\r\n gap: 12px;\r\n }\r\n`;\r\nconst MultiSelectCheck = styled.div `\r\n width: 20px;\r\n height: 20px;\r\n position: relative;\r\n border: 1px solid ${brand.grey.grey44};\r\n flex-shrink: 0;\r\n\r\n &[data-selected='true'] {\r\n svg {\r\n opacity: 1;\r\n }\r\n }\r\n\r\n svg {\r\n opacity: 0;\r\n transition: opacity 0.25s ease-in-out;\r\n width: 16px;\r\n height: 16px;\r\n margin: auto;\r\n\r\n path {\r\n fill: ${brand.primary.alt} !important;\r\n }\r\n }\r\n`;\r\nconst Pills = styled.div `\r\n display: flex;\r\n gap: ${fluid(8, 16)};\r\n flex-wrap: wrap;\r\n\r\n @media ${until(Device.TabletLarge)} {\r\n margin-bottom: ${fluid(17, 32)};\r\n flex-wrap: nowrap;\r\n overflow: auto;\r\n }\r\n`;\r\nconst Pill = styled.div `\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n border-radius: 6px;\r\n background: ${brand.primary.alt};\r\n color: ${brand.white};\r\n padding: 4px 12px;\r\n ${fonts.DaxPro.Medium};\r\n font-size: ${fluid(16, 18)};\r\n line-height: ${fluid(20, 23)};\r\n cursor: pointer;\r\n gap: ${fluid(8, 15)};\r\n white-space: nowrap;\r\n min-width: max-content;\r\n\r\n svg {\r\n width: 13px;\r\n height: 13px;\r\n color: ${brand.white};\r\n\r\n @media ${until(Device.TabletLarge)} {\r\n width: 11px;\r\n height: 11px;\r\n\r\n g {\r\n stroke-width: 4px;\r\n }\r\n }\r\n }\r\n`;\r\nconst Cards = styled(m.div).attrs(() => ({\r\n transition: {\r\n staggerChildren: 1,\r\n },\r\n})) `\r\n display: grid;\r\n column-gap: 30px;\r\n row-gap: ${fluid(32, 72)};\r\n padding-top: ${fluid(25, 56)};\r\n padding-bottom: ${fluid(32, 72)};\r\n\r\n grid-template-columns: 1fr;\r\n @media ${from(Device.Tablet)} {\r\n grid-template-columns: repeat(2, 1fr);\r\n }\r\n @media ${from(Device.TabletLarge)} {\r\n grid-template-columns: repeat(3, 1fr);\r\n }\r\n @media ${from(Device.DesktopLarge)} {\r\n grid-template-columns: repeat(4, 1fr);\r\n }\r\n`;\r\nconst CardWrapper = styled(m.a).attrs((props) => ({\r\n initial: 'hidden',\r\n animate: props['data-in-view'] ? 'visible' : 'hidden',\r\n exit: 'hidden',\r\n variants: {\r\n hidden: {\r\n opacity: 0,\r\n },\r\n visible: {\r\n opacity: 1,\r\n },\r\n },\r\n})) `\r\n text-decoration: none;\r\n display: block;\r\n border-top: 2px solid ${brand.primary.alt};\r\n\r\n &:hover {\r\n ${() => CardContentTitle} {\r\n text-decoration: underline;\r\n }\r\n }\r\n`;\r\nconst CardInner = styled.div `\r\n display: flex;\r\n flex-direction: column;\r\n position: relative;\r\n height: 100%;\r\n overflow: hidden;\r\n`;\r\nconst ImageWrapper = styled.div `\r\n height: ${fluid(204, 245)};\r\n overflow: hidden;\r\n position: relative;\r\n flex-shrink: 0;\r\n\r\n background: ${transparentize(0.9, brand.primary.alt)};\r\n\r\n img {\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n object-position: center center;\r\n }\r\n`;\r\nconst LazyImage = styled(m.img).attrs((props) => ({\r\n initial: 'hidden',\r\n animate: props['data-loaded'] ? 'visible' : 'hidden',\r\n variants: {\r\n hidden: {\r\n opacity: 0,\r\n scale: 0.95,\r\n },\r\n visible: {\r\n opacity: 1,\r\n scale: 1,\r\n },\r\n },\r\n})) ``;\r\nconst SpinnerContainer = styled(m.div).attrs(() => ({\r\n initial: 'hidden',\r\n animate: 'visible',\r\n exit: 'hidden',\r\n variants: {\r\n hidden: {\r\n opacity: 0,\r\n scale: 0.5,\r\n },\r\n visible: {\r\n opacity: 1,\r\n scale: 1,\r\n },\r\n },\r\n})) `\r\n position: absolute;\r\n inset: 0;\r\n width: 100%;\r\n height: 100%;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n`;\r\nconst Date = styled(m.div).attrs(() => ({\r\n variants: {\r\n hidden: {\r\n x: '100%',\r\n },\r\n visible: {\r\n x: '0%',\r\n },\r\n },\r\n transition: {\r\n duration: 0.45,\r\n bounce: 0,\r\n ease: 'easeInOut',\r\n },\r\n})) `\r\n ${fonts.DaxPro.Bold};\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n padding: 8px 16px;\r\n background: ${brand.primary.alt};\r\n color: ${brand.white};\r\n font-size: 23px;\r\n line-height: 29px;\r\n z-index: 2;\r\n`;\r\nconst CardContent = styled(m.div).attrs(() => ({\r\n variants: {\r\n visible: {\r\n transition: {\r\n staggerChildren: 0.15,\r\n },\r\n },\r\n },\r\n})) `\r\n display: flex;\r\n flex-direction: column;\r\n position: relative;\r\n margin-top: 16px;\r\n padding-left: 18px;\r\n flex-grow: 1;\r\n`;\r\nconst CardContentLine = styled(m.div).attrs(() => ({\r\n variants: {\r\n hidden: {\r\n height: '0px',\r\n },\r\n visible: {\r\n height: '100%',\r\n },\r\n },\r\n transition: {\r\n duration: 0.7,\r\n ease: 'easeOut',\r\n },\r\n})) `\r\n position: absolute;\r\n inset: 0;\r\n background: ${brand.primary.alt};\r\n width: 2px;\r\n`;\r\nconst CardContentTitle = styled(m.h3).attrs(() => ({\r\n variants: {\r\n hidden: {\r\n opacity: 0,\r\n y: '25px',\r\n },\r\n visible: {\r\n opacity: 1,\r\n y: '0px',\r\n },\r\n },\r\n})) `\r\n margin: 0;\r\n ${fonts.DaxPro.Bold};\r\n font-size: ${fluid(18, 21)};\r\n line-height: 25px;\r\n color: ${brand.black};\r\n margin-bottom: ${fluid(13, 20)};\r\n`;\r\nconst CardContentIntro = styled(m.p).attrs(() => ({\r\n variants: {\r\n hidden: {\r\n opacity: 0,\r\n y: '25px',\r\n },\r\n visible: {\r\n opacity: 1,\r\n y: '0px',\r\n },\r\n },\r\n})) `\r\n margin: 0;\r\n ${fonts.DaxPro.Regular};\r\n font-size: ${fluid(16, 18)};\r\n line-height: 25px;\r\n color: ${brand.black};\r\n margin-top: auto;\r\n\r\n display: -webkit-box;\r\n -webkit-line-clamp: 3;\r\n -webkit-box-orient: vertical;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n -webkit-line-clamp: 2;\r\n }\r\n`;\r\nconst CardContentCta = styled(m.span).attrs(() => ({\r\n variants: {\r\n hidden: {\r\n opacity: 0,\r\n y: '25px',\r\n },\r\n visible: {\r\n opacity: 1,\r\n y: '0px',\r\n },\r\n },\r\n})) `\r\n color: ${brand.primary.alt};\r\n font-size: 18px;\r\n line-height: 23px;\r\n display: flex;\r\n align-items: center;\r\n gap: 14px;\r\n margin-top: ${fluid(16, 20)};\r\n\r\n svg {\r\n width: 14px;\r\n height: 14px;\r\n transform: rotate(180deg);\r\n }\r\n`;\r\nconst HoverEffect = styled.div `\r\n position: absolute;\r\n inset: 0;\r\n pointer-events: none;\r\n z-index: 1;\r\n background: #66990033;\r\n opacity: 0;\r\n width: 100%;\r\n height: 100%;\r\n\r\n &[data-active='true'] {\r\n opacity: 1;\r\n }\r\n\r\n transition: opacity 0.25s ease-in-out;\r\n`;\r\nconst LoadMore = styled.div `\r\n display: flex;\r\n justify-content: center;\r\n padding-bottom: 53px;\r\n\r\n ${ButtonStyles.Button} {\r\n min-width: 173px;\r\n }\r\n`;\r\nconst DesktopFiltersWrapper = styled.div `\r\n display: none;\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n display: contents;\r\n }\r\n`;\r\nconst MobileFiltersWrapper = styled.div `\r\n display: none;\r\n\r\n @media ${until(Device.TabletLarge)} {\r\n width: 100%;\r\n display: grid;\r\n grid-template-columns: 1fr 1fr;\r\n gap: 10px;\r\n }\r\n`;\r\nconst MobileFiltersContainer = styled(m.div).attrs(() => ({\r\n initial: 'hidden',\r\n animate: 'visible',\r\n exit: 'hidden',\r\n variants: {\r\n hidden: {\r\n opacity: 0,\r\n x: '100%',\r\n },\r\n visible: {\r\n opacity: 1,\r\n x: '0%',\r\n },\r\n },\r\n transition: {\r\n bounce: 0,\r\n ease: 'easeInOut',\r\n duration: 0.5,\r\n },\r\n})) `\r\n position: fixed;\r\n z-index: 100; // Sit above 'enquire now' button //\r\n background: rgba(0, 0, 0, 0.8);\r\n inset: 0;\r\n width: 100%;\r\n height: 100%;\r\n display: flex;\r\n justify-content: flex-end;\r\n`;\r\nconst MobileFiltersInner = styled.div `\r\n height: 100%;\r\n max-height: 100dvh;\r\n overflow: hidden;\r\n width: 100%;\r\n background: ${brand.white};\r\n display: flex;\r\n flex-direction: column;\r\n padding: 21px 16px;\r\n max-width: 80dvw;\r\n\r\n > span {\r\n ${fonts.DaxPro.Bold};\r\n font-size: 18px;\r\n line-height: 24px;\r\n margin-bottom: 13px;\r\n display: flex;\r\n align-items: center;\r\n gap: 7px;\r\n\r\n &[data-is-back] {\r\n cursor: pointer;\r\n }\r\n\r\n svg {\r\n width: 14px;\r\n height: 14px;\r\n }\r\n }\r\n`;\r\nconst MobileFilterSection = styled.div `\r\n padding: 16px 0px;\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n border-bottom: 1px solid rgba(0, 0, 0, 0.3);\r\n cursor: pointer;\r\n\r\n svg {\r\n transform: rotate(180deg);\r\n width: 14px;\r\n height: 14px;\r\n }\r\n\r\n span {\r\n ${fonts.DaxPro.Medium}\r\n font-size: 18px;\r\n line-height: 22px;\r\n }\r\n\r\n &:first-child {\r\n padding-top: 0px;\r\n }\r\n\r\n &:last-child {\r\n border-bottom: none;\r\n }\r\n`;\r\nconst MobileButtons = styled.div `\r\n display: flex;\r\n flex-direction: column;\r\n gap: 10px;\r\n margin-top: auto;\r\n\r\n ${ButtonStyles.Button} {\r\n width: 100%;\r\n\r\n &:last-child {\r\n ${ButtonStyles.Inner} {\r\n border-color: ${brand.primary.alt};\r\n color: ${brand.primary.alt};\r\n }\r\n }\r\n }\r\n`;\r\nconst MobileFilterOption = styled.div `\r\n padding: 16px 0px;\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n border-bottom: 1px solid rgba(0, 0, 0, 0.3);\r\n cursor: pointer;\r\n\r\n &[data-disabled='true'] {\r\n opacity: 0.75;\r\n pointer-events: none;\r\n }\r\n\r\n span {\r\n ${fonts.DaxPro.Medium};\r\n font-size: 18px;\r\n line-height: 23px;\r\n }\r\n\r\n div {\r\n border: 1px solid ${brand.primary.alt};\r\n cursor: pointer;\r\n width: 24px;\r\n height: 24px;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n\r\n svg {\r\n width: 16px;\r\n height: 16px;\r\n }\r\n\r\n &[data-selected='true'] {\r\n background: ${brand.primary.alt};\r\n\r\n svg {\r\n opacity: 1;\r\n }\r\n }\r\n }\r\n`;\r\nconst MobileCloseButton = styled.div `\r\n position: absolute;\r\n inset: 14px;\r\n color: ${brand.white};\r\n cursor: pointer;\r\n width: 20px;\r\n height: 20px;\r\n\r\n svg {\r\n width: 19px;\r\n height: 19px;\r\n }\r\n`;\r\nconst MobileFilterSections = styled.div `\r\n display: flex;\r\n flex-direction: column;\r\n overflow-y: auto;\r\n`;\r\nconst MobilePagination = styled.div `\r\n padding: 6px;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n ${fonts.DaxPro.Medium};\r\n font-size: 18px;\r\n line-height: 23px;\r\n text-align: center;\r\n color: ${brand.black};\r\n background-color: ${brand.grey.grey89};\r\n margin-left: calc(var(--gridPadding) * -1);\r\n width: calc(100% + var(--gridPadding) * 2);\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n display: none;\r\n }\r\n`;\r\nconst NoResultsMsg = styled.div `\r\n grid-column: span 12;\r\n padding-top: 30px;\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n text-align: center;\r\n }\r\n`;\r\nexport const NewsListingStyles = {\r\n Container,\r\n TitleContainer,\r\n FiltersContainer,\r\n FiltersControls,\r\n FiltersLeft,\r\n MultiSelect,\r\n MultiSelectWrapper,\r\n MultiSelectOptions,\r\n MultiSelectCheck,\r\n Pills,\r\n Pill,\r\n FiltersRight,\r\n Cards,\r\n CardWrapper,\r\n ImageWrapper,\r\n LazyImage,\r\n SpinnerContainer,\r\n Date,\r\n CardContent,\r\n CardContentTitle,\r\n CardContentIntro,\r\n CardInner,\r\n CardContentCta,\r\n CardContentLine,\r\n HoverEffect,\r\n LoadMore,\r\n DesktopFiltersWrapper,\r\n MobileFiltersWrapper,\r\n MobileFiltersContainer,\r\n MobileFiltersInner,\r\n MobileFilterSection,\r\n MobileButtons,\r\n MobileFilterOption,\r\n MobileFilterSections,\r\n MobileCloseButton,\r\n MobilePagination,\r\n NoResultsMsg,\r\n};\r\n","import { useEffect } from 'react';\nimport { useFirstMountState } from './useFirstMountState';\nvar useUpdateEffect = function (effect, deps) {\n var isFirstMount = useFirstMountState();\n useEffect(function () {\n if (!isFirstMount) {\n return effect();\n }\n }, deps);\n};\nexport default useUpdateEffect;\n","import React from 'react';\r\nimport { NewsListingStyles as S } from './NewsListing.styles';\r\nimport withWidget from '@hoc/withWidget';\r\nimport { HydrateOption } from '@core/enums';\r\nimport { Grid } from '@helpers/grid';\r\nimport { ArrayParam, NumberParam, StringParam, useQueryParam, useQueryParams, withDefault, } from 'use-query-params';\r\nimport { withQueryParams } from '@hoc/withQueryParams';\r\nimport { ReactComponent as ChevronDown } from '@img/icons/chevron-down.svg';\r\nimport { ReactComponent as Chevron } from '@img/icons/chevron-left.svg';\r\nimport { ReactComponent as Tick } from '@img/icons/tick.svg';\r\nimport { ReactComponent as Close } from '@img/icons/close.svg';\r\nimport { withMotion } from '@hoc/withMotion';\r\nimport { useClickAway, useLockBodyScroll, useUpdateEffect } from 'react-use';\r\nimport ApiService from '@core/api/services/ApiService';\r\nimport { AnimatePresence } from 'framer-motion';\r\nimport { PuffLoader } from 'react-spinners';\r\nimport { formatDateLong } from '@helpers/date';\r\nimport { useInView } from '@hooks/useInView';\r\nimport Button, { LinkButton } from '@stories/Components/Buttons/Button/Button';\r\nimport { useSelector } from 'react-redux';\r\nimport UrlResolver from '@core/url-resolver/UrlResolver';\r\nimport withRedux from '@helpers/withRedux';\r\nconst MultiSelectFilter = (props) => {\r\n const [expanded, setExpanded] = React.useState(false);\r\n const ref = React.useRef(null);\r\n useClickAway(ref, () => setExpanded(false));\r\n const wrapperRef = React.useRef(null);\r\n const multiSelectOptionsRef = React.useRef(null);\r\n React.useEffect(() => {\r\n if (multiSelectOptionsRef.current && wrapperRef.current && expanded) {\r\n const wrapperRect = wrapperRef.current.getBoundingClientRect();\r\n multiSelectOptionsRef.current.style.maxHeight = `calc(100dvh - ${wrapperRect.top + wrapperRect.height}px)`;\r\n }\r\n }, [expanded]);\r\n return (React.createElement(S.MultiSelect, { \"data-disabled\": props.disabled, ref: ref },\r\n React.createElement(S.MultiSelectWrapper, { ref: wrapperRef, \"aria-expanded\": expanded, onClick: () => setExpanded(!expanded) },\r\n React.createElement(\"span\", null, props.label),\r\n React.createElement(ChevronDown, null)),\r\n React.createElement(S.MultiSelectOptions, { ref: multiSelectOptionsRef, \"data-visible\": expanded }, props.options &&\r\n props.options.map((option) => (React.createElement(\"div\", { key: option.id, onClick: () => !props.disabled && props.onClick(option.id) },\r\n React.createElement(S.MultiSelectCheck, { \"data-selected\": props.singleSelectMode\r\n ? props.params === option.id\r\n : props.params?.includes(option.id) },\r\n React.createElement(Tick, null)),\r\n React.createElement(\"span\", null, option.value)))))));\r\n};\r\nconst NewsListingCard = (props) => {\r\n const [imageLoaded, setImageLoaded] = React.useState(false);\r\n const imageRef = React.useRef(null);\r\n const [ref, inView] = useInView({ threshold: 0.25 });\r\n const [hovering, setHovering] = React.useState(false);\r\n React.useEffect(() => {\r\n // Handle scenario where image is cached //\r\n if (imageRef.current?.complete) {\r\n setImageLoaded(true);\r\n }\r\n }, [imageRef]);\r\n return (React.createElement(S.CardWrapper, { href: props.url, target: props.isVideo ? \"_blank\" : \"_self\", onMouseEnter: () => setHovering(true), onMouseLeave: () => setHovering(false), \"data-in-view\": inView, ref: ref },\r\n React.createElement(S.CardInner, null,\r\n React.createElement(S.Date, null, formatDateLong(props.date, true)),\r\n React.createElement(S.ImageWrapper, null,\r\n React.createElement(S.HoverEffect, { \"data-active\": hovering }),\r\n React.createElement(AnimatePresence, null, !imageLoaded && (React.createElement(S.SpinnerContainer, null,\r\n React.createElement(PuffLoader, null)))),\r\n React.createElement(S.LazyImage, { \"data-loaded\": imageLoaded, src: props.image, alt: props.title, loading: \"lazy\", ref: imageRef, onLoad: () => setImageLoaded(true) })),\r\n React.createElement(S.CardContent, null,\r\n React.createElement(S.CardContentLine, null),\r\n React.createElement(S.CardContentTitle, null, props.title),\r\n React.createElement(S.CardContentIntro, null, props.intro),\r\n !props.isVideo && (React.createElement(S.CardContentCta, null,\r\n React.createElement(\"span\", null, props.readMoreText),\r\n \" \",\r\n React.createElement(Chevron, null)))))));\r\n};\r\nconst PAGE_SIZE = 8;\r\nconst NewsListing = (props) => {\r\n const [params, setParams] = useQueryParams({\r\n ...props.filters.reduce((acc, filter) => {\r\n acc[filter.id] = withDefault(ArrayParam, []);\r\n return acc;\r\n }, {}),\r\n });\r\n const cultureCode = useSelector((x) => x.pageContext.documentCulture);\r\n const [pageIndex, setPageIndex] = useQueryParam('pageIndex', withDefault(NumberParam, props.pageIndex));\r\n const [sortBy, setSortBy] = useQueryParam('sortBy', withDefault(StringParam, undefined));\r\n const selectedOptions = React.useMemo(() => {\r\n return props.filters.reduce((acc, filter) => {\r\n acc[filter.id] = filter.options.filter((option) => params[filter.id].includes(option.id));\r\n return acc;\r\n }, {});\r\n }, [params, props.filters]);\r\n const handleMultiSelectOptionSelect = (filterId, optionId, isSingle) => {\r\n isSingle\r\n ? sortBy === optionId\r\n ? setSortBy(undefined)\r\n : setSortBy(optionId)\r\n : setParams({\r\n [filterId]: params[filterId].includes(optionId)\r\n ? params[filterId].filter((id) => id !== optionId)\r\n : [...params[filterId], optionId],\r\n });\r\n };\r\n const [loading, setLoading] = React.useState(false);\r\n const [data, setData] = React.useState(props.initialData);\r\n const [totalResults, setTotalResults] = React.useState(props.totalPages * PAGE_SIZE);\r\n const previousPageRef = React.useRef(pageIndex);\r\n const [showMobileFilters, setShowMobileFilters] = React.useState(false);\r\n const [activeMobileFilter, setActiveMobileFilter] = React.useState(null);\r\n const [hasMore, setHasMore] = React.useState(props.initialData ? props.pageIndex < props.totalPages : true);\r\n const scrollableSectionRef = React.useRef(null);\r\n useLockBodyScroll(showMobileFilters, scrollableSectionRef);\r\n const handleParamChange = async () => {\r\n setLoading(true);\r\n setParams({ pageIndex: 1 });\r\n const request = {\r\n newsDetailPage: props.newsDetailPage,\r\n pageIndex: pageIndex,\r\n sortBy,\r\n cultureCode,\r\n pageSize: PAGE_SIZE,\r\n filters: props.filters.reduce((acc, filter) => {\r\n acc[filter.id] = selectedOptions[filter.id]?.map((option) => option.id);\r\n return acc;\r\n }, {}),\r\n };\r\n const response = await ApiService.request({\r\n baseUrl: UrlResolver.getDomain(),\r\n method: 'POST',\r\n controller: 'news',\r\n slug: 'list',\r\n params: request,\r\n });\r\n if (response.status?.success) {\r\n setData(response.result);\r\n setHasMore(response.pageIndex < response.totalPages);\r\n setTotalResults(response.totalResultCount);\r\n }\r\n setTimeout(() => {\r\n setLoading(false);\r\n }, 750);\r\n };\r\n const handleNextPage = async () => {\r\n setLoading(true);\r\n if (pageIndex === previousPageRef.current) {\r\n return;\r\n }\r\n previousPageRef.current = pageIndex;\r\n const request = {\r\n newsDetailPage: props.newsDetailPage,\r\n pageIndex,\r\n sortBy,\r\n cultureCode,\r\n pageSize: PAGE_SIZE,\r\n filters: props.filters.reduce((acc, filter) => {\r\n acc[filter.id] = selectedOptions[filter.id]?.map((option) => option.id);\r\n return acc;\r\n }, {}),\r\n };\r\n const response = await ApiService.request({\r\n baseUrl: UrlResolver.getDomain(),\r\n method: 'POST',\r\n controller: 'news',\r\n slug: 'list',\r\n params: request,\r\n });\r\n if (response.status.success) {\r\n setData([...data, ...response.result]);\r\n setHasMore(response.pageIndex < response.totalPages);\r\n setTotalResults(response.totalResultCount);\r\n }\r\n setTimeout(() => {\r\n setLoading(false);\r\n }, 750);\r\n };\r\n useUpdateEffect(() => {\r\n handleNextPage();\r\n }, [pageIndex]);\r\n useUpdateEffect(() => {\r\n handleParamChange();\r\n }, [sortBy, params]);\r\n const Pills = React.useMemo(() => {\r\n return Object.keys(selectedOptions)?.map((key) => (React.createElement(React.Fragment, null, selectedOptions[key]?.map((option) => (React.createElement(S.Pill, { onClick: () => handleMultiSelectOptionSelect(key, option.id), key: `NewsListing_Pill_${key}_${option.id}` },\r\n option.value,\r\n \" \",\r\n React.createElement(Close, null)))))));\r\n }, [selectedOptions]);\r\n return (React.createElement(Grid.Default, null,\r\n React.createElement(S.Container, null,\r\n React.createElement(S.TitleContainer, null,\r\n React.createElement(\"h1\", null, props.title),\r\n props.intro && React.createElement(\"p\", null, props.intro)),\r\n React.createElement(S.FiltersContainer, null,\r\n React.createElement(S.FiltersControls, null,\r\n React.createElement(S.DesktopFiltersWrapper, null,\r\n React.createElement(S.FiltersLeft, null,\r\n React.createElement(\"span\", null,\r\n props.translations['custom.news-listing.filter'],\r\n \":\"),\r\n props.filters &&\r\n props.filters.map((filter, i) => (React.createElement(MultiSelectFilter, { key: `NewsListing_MultiSelect_${i}`, disabled: loading, ...filter, params: params[filter.id], onClick: (id) => handleMultiSelectOptionSelect(filter.id, id) })))),\r\n React.createElement(S.FiltersRight, null,\r\n React.createElement(MultiSelectFilter, { singleSelectMode: true, disabled: loading, ...props.sortBy, params: sortBy, onClick: (id) => handleMultiSelectOptionSelect('sortBy', id, true) }),\r\n React.createElement(\"span\", { dangerouslySetInnerHTML: {\r\n __html: props.translations['custom.news-listing.pagination']\r\n .replace('[x]', (1).toString())\r\n .replace('[y]', ((pageIndex - 1) * PAGE_SIZE + PAGE_SIZE).toString())\r\n .replace('[z]', (totalResults ?? 0).toString()),\r\n } }))),\r\n React.createElement(S.MobileFiltersWrapper, null,\r\n React.createElement(S.MultiSelectWrapper, { \"data-mobile-trigger\": true, onClick: () => setShowMobileFilters(true) },\r\n React.createElement(\"span\", null, props.translations['custom.news-listing.filter']),\r\n React.createElement(Chevron, null)),\r\n React.createElement(MultiSelectFilter, { singleSelectMode: true, disabled: loading, ...props.sortBy, params: sortBy, onClick: (id) => handleMultiSelectOptionSelect('sortBy', id, true) }))),\r\n React.createElement(S.Pills, null, Pills)),\r\n React.createElement(S.MobilePagination, null,\r\n React.createElement(\"span\", { dangerouslySetInnerHTML: {\r\n __html: props.translations['custom.news-listing.pagination']\r\n .replace('[x]', (1).toString())\r\n .replace('[y]', ((pageIndex - 1) * PAGE_SIZE + PAGE_SIZE).toString())\r\n .replace('[z]', (totalResults ?? 0).toString()),\r\n } })),\r\n React.createElement(S.Cards, null,\r\n React.createElement(AnimatePresence, { exitBeforeEnter: true }, data.length ?\r\n data.map((card, i) => (React.createElement(NewsListingCard, { ...card, key: `NewsListing_Card_${i}_${card.id}`, readMoreText: props.translations['custom.news-listing.read-more'] }))) : (React.createElement(React.Fragment, null,\r\n React.createElement(S.NoResultsMsg, { dangerouslySetInnerHTML: { __html: props.translations['custom.news-listing.no-results'] } }))))),\r\n hasMore && (React.createElement(S.LoadMore, null,\r\n React.createElement(LinkButton, { href: `?pageIndex=${pageIndex + 1}`, branding: \"primaryAlt\", hoverColour: \"black\", title: props.translations['custom.news-listing.load-more'], onClick: (e) => {\r\n e.preventDefault();\r\n setPageIndex(pageIndex + 1);\r\n } })))),\r\n React.createElement(AnimatePresence, null, showMobileFilters && (React.createElement(S.MobileFiltersContainer, null,\r\n React.createElement(S.MobileCloseButton, { onClick: () => setShowMobileFilters(false) },\r\n React.createElement(Close, null)),\r\n React.createElement(S.MobileFiltersInner, null,\r\n activeMobileFilter ? (React.createElement(React.Fragment, null,\r\n React.createElement(\"span\", { \"data-is-back\": true, onClick: () => setActiveMobileFilter(null) },\r\n React.createElement(Chevron, null),\r\n activeMobileFilter.label))) : (React.createElement(\"span\", null, props.translations['custom.news-listing.filters'])),\r\n activeMobileFilter?.options ? (React.createElement(S.MobileFilterSections, { ref: scrollableSectionRef }, activeMobileFilter.options.map((option, i) => (React.createElement(S.MobileFilterOption, { \"data-disabled\": loading, onClick: () => handleMultiSelectOptionSelect(activeMobileFilter.id, option.id), key: `NewsListing_${activeMobileFilter.id}_MobileFilterOption_${i}` },\r\n React.createElement(\"span\", null, option.value),\r\n React.createElement(\"div\", { \"data-selected\": params[activeMobileFilter.id].includes(option.id) },\r\n React.createElement(Tick, null))))))) : (React.createElement(React.Fragment, null,\r\n React.createElement(S.Pills, null, Pills),\r\n props.filters &&\r\n props.filters.map((filter, i) => (React.createElement(S.MobileFilterSection, { onClick: () => setActiveMobileFilter(filter), key: `NewsListing_MobileFilters_${i}` },\r\n React.createElement(\"span\", null, filter.label),\r\n React.createElement(Chevron, null)))))),\r\n React.createElement(S.MobileButtons, null,\r\n React.createElement(Button, { onClick: () => setShowMobileFilters(false), branding: \"primaryAlt\", title: props.translations['custom.news-listing.view-results'] }),\r\n activeMobileFilter ? (React.createElement(Button, { onClick: () => {\r\n setActiveMobileFilter(null);\r\n }, branding: \"white\", title: props.translations['custom.news-listing.back'] })) : (React.createElement(Button, { onClick: () => {\r\n setParams(Object.keys(params).reduce((acc, key) => ({ ...acc, [key]: [] }), {}));\r\n setSortBy(undefined);\r\n setShowMobileFilters(false);\r\n }, branding: \"white\", title: props.translations['custom.news-listing.remove-all-filters'] })))))))));\r\n};\r\nexport default withWidget(withQueryParams(withRedux(withMotion(NewsListing))), 'NewsListing', {\r\n hydrate: HydrateOption.InView,\r\n});\r\n","var cssUnit = {\n cm: true,\n mm: true,\n in: true,\n px: true,\n pt: true,\n pc: true,\n em: true,\n ex: true,\n ch: true,\n rem: true,\n vw: true,\n vh: true,\n vmin: true,\n vmax: true,\n \"%\": true,\n};\n/**\n * If size is a number, append px to the value as default unit.\n * If size is a string, validate against list of valid units.\n * If unit is valid, return size as is.\n * If unit is invalid, console warn issue, replace with px as the unit.\n *\n * @param {(number | string)} size\n * @return {LengthObject} LengthObject\n */\nexport function parseLengthAndUnit(size) {\n if (typeof size === \"number\") {\n return {\n value: size,\n unit: \"px\",\n };\n }\n var value;\n var valueString = (size.match(/^[0-9.]*/) || \"\").toString();\n if (valueString.includes(\".\")) {\n value = parseFloat(valueString);\n }\n else {\n value = parseInt(valueString, 10);\n }\n var unit = (size.match(/[^0-9]*$/) || \"\").toString();\n if (cssUnit[unit]) {\n return {\n value: value,\n unit: unit,\n };\n }\n console.warn(\"React Spinners: \".concat(size, \" is not a valid css value. Defaulting to \").concat(value, \"px.\"));\n return {\n value: value,\n unit: \"px\",\n };\n}\n/**\n * Take value as an input and return valid css value\n *\n * @param {(number | string)} value\n * @return {string} valid css value\n */\nexport function cssValue(value) {\n var lengthWithunit = parseLengthAndUnit(value);\n return \"\".concat(lengthWithunit.value).concat(lengthWithunit.unit);\n}\n","export var createAnimation = function (loaderName, frames, suffix) {\n var animationName = \"react-spinners-\".concat(loaderName, \"-\").concat(suffix);\n if (typeof window == \"undefined\" || !window.document) {\n return animationName;\n }\n var styleEl = document.createElement(\"style\");\n document.head.appendChild(styleEl);\n var styleSheet = styleEl.sheet;\n var keyFrames = \"\\n @keyframes \".concat(animationName, \" {\\n \").concat(frames, \"\\n }\\n \");\n if (styleSheet) {\n styleSheet.insertRule(keyFrames, 0);\n }\n return animationName;\n};\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from \"react\";\nimport { cssValue } from \"./helpers/unitConverter\";\nimport { createAnimation } from \"./helpers/animation\";\nvar puff = [\n createAnimation(\"PuffLoader\", \"0% {transform: scale(0)} 100% {transform: scale(1.0)}\", \"puff-1\"),\n createAnimation(\"PuffLoader\", \"0% {opacity: 1} 100% {opacity: 0}\", \"puff-2\"),\n];\nfunction PuffLoader(_a) {\n var _b = _a.loading, loading = _b === void 0 ? true : _b, _c = _a.color, color = _c === void 0 ? \"#000000\" : _c, _d = _a.speedMultiplier, speedMultiplier = _d === void 0 ? 1 : _d, _e = _a.cssOverride, cssOverride = _e === void 0 ? {} : _e, _f = _a.size, size = _f === void 0 ? 60 : _f, additionalprops = __rest(_a, [\"loading\", \"color\", \"speedMultiplier\", \"cssOverride\", \"size\"]);\n var wrapper = __assign({ display: \"inherit\", position: \"relative\", width: cssValue(size), height: cssValue(size) }, cssOverride);\n var style = function (i) {\n return {\n position: \"absolute\",\n height: cssValue(size),\n width: cssValue(size),\n border: \"thick solid \".concat(color),\n borderRadius: \"50%\",\n opacity: \"1\",\n top: \"0\",\n left: \"0\",\n animationFillMode: \"both\",\n animation: \"\".concat(puff[0], \", \").concat(puff[1]),\n animationDuration: \"\".concat(2 / speedMultiplier, \"s\"),\n animationIterationCount: \"infinite\",\n animationTimingFunction: \"cubic-bezier(0.165, 0.84, 0.44, 1), cubic-bezier(0.3, 0.61, 0.355, 1)\",\n animationDelay: i === 1 ? \"-1s\" : \"0s\",\n };\n };\n if (!loading) {\n return null;\n }\n return (React.createElement(\"span\", __assign({ style: wrapper }, additionalprops),\n React.createElement(\"span\", { style: style(1) }),\n React.createElement(\"span\", { style: style(2) })));\n}\nexport default PuffLoader;\n","'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');\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","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n\n var maxKeys = 1000;\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length;\n // maxKeys <= 0 means that we should not limit keys count\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr, vstr, k, v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar stringifyPrimitive = function(v) {\n switch (typeof v) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n if (obj === null) {\n obj = undefined;\n }\n\n if (typeof obj === 'object') {\n return map(objectKeys(obj), function(k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n if (isArray(obj[k])) {\n return map(obj[k], function(v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n\n }\n\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq +\n encodeURIComponent(stringifyPrimitive(obj));\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n\nfunction map (xs, f) {\n if (xs.map) return xs.map(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n res.push(f(xs[i], i));\n }\n return res;\n}\n\nvar objectKeys = Object.keys || function (obj) {\n var res = [];\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key);\n }\n return res;\n};\n"],"sourceRoot":""}