{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/stories/Components/Content/WYSIWYG/WYSIWYG.styles.ts","webpack:///./src/img/icons/search.svg","webpack:///./src/stories/Components/Cards/DocumentCard/DocumentCard.tsx","webpack:///./src/stories/Components/Buttons/TabButton/TabButton.styles.ts","webpack:///./src/stories/Components/Buttons/TabButton/TabButton.tsx","webpack:///./src/hoc/withQueryProvider.tsx","webpack:///./src/helpers/date.ts","webpack:///./src/img/icons/chevron.svg","webpack:///./src/stories/Components/Forms/Select/Select.styles.ts","webpack:///./src/stories/Widgets/ProductListing/ProductListing/ProductListing.styles.ts","webpack:///./src/stories/Widgets/ProductListing/ProductListing/ProductListing.widget.tsx","webpack:///./src/img/icons/select-arrow-up.svg","webpack:///./src/hooks/useSiteSearch.tsx"],"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","61","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","WYSIWYGStyles","Wrapper","styled","div","HeadingStyles","H5Styles","brand","primary","alt","ParagraphStyles","RegularStyles","grey","grey35","grey96","from","Device","DesktopLarge","black","grey44","fonts","DaxPro","Bold","white","_g","_path","_extends","assign","target","arguments","source","SvgSearch","props","xmlns","viewBox","fill","stroke","strokeWidth","cx","cy","strokeLinecap","DocumentCard","React","forwardRef","ref","createElement","DocumentCardStyles","Card","href","document","url","draggable","isLatestNewsWidget","TagArea","noticeTag","NoticeTag","groundforceDivision","DivisionTag","class","Media","Image","src","imageUrl","width","height","sizes","until","TabletLarge","layout","objectFit","title","fullPaddingTop","Content","date","Date","as","dateTime","formatDateISO","formatDateShort","tag","Tag","Title","ParagraphContent","size","description","Icon","Chevron","displayName","TabButtonStyles","Button","button","attrs","type","ButtonReset","grey89","grey20","Tablet","lighten","isActive","css","dark","TabButton","children","S","queryStringifyOptions","transformSearchString","transformSearchStringJsonSafe","withQueryProvider","Component","Fragment","isSSR","StaticRouter","QueryParamProvider","ReactRouterRoute","Route","stringifyOptions","Router","formatStringDate","dateString","formatDate","toISOString","Intl","DateTimeFormat","undefined","day","month","year","format","formatDateLong","SvgChevron","isOpen","Dropdown","Element","rgba","grey55","Regular","SvgSelectArrow","Item","base","ProductListingStyles","Container","section","ContentGrid","Grid","Default","MobileLarge","ContentSection","Filters","SelectStyles","fromDevice","untilDevice","FiltersLoadMoreWrapper","FiltersLoadMore","Search","SearchWrapper","Searchbox","input","Results","Inner","CardGridSpans","ResultsFooter","withWidget","useQueryParam","withDefault","StringParam","searchTerm","setSearchTerm","NumberParam","pageIndex","setPageIndex","ArrayParam","selectedCategories","setSelectedCategories","showAllFilters","setShowAllFilters","resultsRef","search","useSiteSearch","request","siteName","culture","searchType","SearchType","Products","applyFuzzy","searchSynonyms","pageSize","resultsOrder","OrderType","Relevance","NodeOrder","searchPath","selectedFilters","isProductListing","documentId","flattenedCategories","response","categories","flatMap","x","childCategories","handleCategoryClick","id","newSelectedCategories","existingIndex","indexOf","wysiwygContent","dangerouslySetInnerHTML","__html","map","categoryId","onClick","includes","resultCount","translations","placeholder","searchPlaceholder","onChange","e","currentTarget","onKeyDown","toLowerCase","current","scrollIntoView","behavior","SearchIcon","results","documentName","summaryText","pageUrl","canLoadMore","branding","hydrate","HydrateOption","Always","params","useState","setResponse","isLoading","setIsLoading","fetchResults","append","ApiService","baseUrl","UrlResolver","getDomain","method","controller","slug","apiResponse","debouncedFetchResults","useCallback","debounce","useEffect"],"mappings":"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","file":"ProductListing-a7f30278795124a447b7.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\t61: 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([611,0,1,2,5,8,14,6,13]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","import brand from '@helpers/brand';\r\nimport { fonts } from '@helpers/fonts';\r\nimport { Device, from } from '@helpers/media';\r\nimport HeadingStyles from '@stories/Components/Global/Typography/Heading.styles';\r\nimport ParagraphStyles from '@stories/Components/Global/Typography/Paragraph.styles';\r\nimport styled from 'styled-components';\r\nconst Wrapper = styled.div `\r\n // Needed for the horizontal scroll table\r\n overflow: auto;\r\n line-height: normal;\r\n\r\n h1,\r\n h2 {\r\n ${HeadingStyles.H5Styles};\r\n color: ${brand.primary.alt};\r\n }\r\n\r\n p {\r\n ${ParagraphStyles.RegularStyles};\r\n }\r\n\r\n a {\r\n color: ${brand.primary.alt};\r\n }\r\n\r\n table {\r\n table-layout: fixed;\r\n min-width: 700px;\r\n width: 100%;\r\n\r\n thead {\r\n tr {\r\n background: ${brand.grey.grey35};\r\n }\r\n }\r\n\r\n tbody {\r\n tr {\r\n background-color: ${brand.grey.grey96};\r\n\r\n &:nth-child(odd) {\r\n background-color: rgba(102, 153, 0, 0.12);\r\n }\r\n }\r\n }\r\n\r\n th,\r\n td {\r\n padding: 12px 20px;\r\n width: 216px;\r\n\r\n @media ${from(Device.DesktopLarge)} {\r\n padding: 12px 34px;\r\n }\r\n }\r\n\r\n td {\r\n color: ${brand.black};\r\n\r\n border-right: 1px solid ${brand.grey.grey44};\r\n &:last-child {\r\n border-right: none;\r\n }\r\n }\r\n\r\n th {\r\n ${fonts.DaxPro.Bold};\r\n color: ${brand.white};\r\n font-size: 20px;\r\n }\r\n }\r\n`;\r\nexport const WYSIWYGStyles = {\r\n Wrapper,\r\n};\r\n","var _g, _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 SvgSearch(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 27.333 27.333\"\n }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2\n }, /*#__PURE__*/React.createElement(\"circle\", {\n cx: 10.913,\n cy: 10.913,\n r: 10.913,\n stroke: \"none\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n cx: 10.913,\n cy: 10.913,\n r: 9.913\n }))), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"none\",\n stroke: \"currentColor\",\n strokeLinecap: \"round\",\n strokeWidth: 2,\n d: \"M18.643 18.643l7.275 7.275\"\n })));\n}\n\nexport default __webpack_public_path__ + \"59b9461c6c7c0d10ca810c3df0f2971c.svg\";\nexport { SvgSearch as ReactComponent };","import { formatDateISO, formatDateShort } from '@helpers/date';\r\nimport { Device, until } from '@helpers/media';\r\nimport { ReactComponent as Chevron } from '@img/icons/chevron.svg';\r\nimport Image from '@stories/Components/Media/Image/Image';\r\nimport React from 'react';\r\nimport { DocumentCardStyles } from './DocumentCard.styles';\r\nconst DocumentCard = React.forwardRef((props, ref) => {\r\n return (React.createElement(DocumentCardStyles.Card, { ref: ref, href: props.document.url, draggable: false, isLatestNewsWidget: props.isLatestNewsWidget },\r\n React.createElement(DocumentCardStyles.TagArea, null,\r\n props.document.noticeTag ? (React.createElement(DocumentCardStyles.NoticeTag, null, props.document.noticeTag)) : null,\r\n props.document.groundforceDivision &&\r\n props.document.groundforceDivision.name.length > 0 && (React.createElement(DocumentCardStyles.DivisionTag, { \"data-tag-colour\": props.document.groundforceDivision.class }, props.document.groundforceDivision.name))),\r\n React.createElement(DocumentCardStyles.Media, { isLatestNewsWidget: props.isLatestNewsWidget },\r\n React.createElement(Image, { src: props.document.imageUrl, width: 387, height: 247, sizes: `${until(Device.TabletLarge)} 50vw, ${until(Device.DesktopLarge)} 33vw, 25vw`, layout: \"responsive\", objectFit: \"cover\", alt: props.document.title || '', draggable: false, fullPaddingTop: props.document.fullPaddingTop })),\r\n React.createElement(DocumentCardStyles.Content, null,\r\n props.document.date && (React.createElement(DocumentCardStyles.Date, { as: \"time\", dateTime: formatDateISO(props.document.date) }, formatDateShort(props.document.date))),\r\n props.document.tag && (React.createElement(DocumentCardStyles.Tag, null, props.document.tag)),\r\n React.createElement(DocumentCardStyles.Title, { isLatestNewsWidget: props.isLatestNewsWidget }, props.document.title),\r\n React.createElement(DocumentCardStyles.ParagraphContent, { size: \"small\", isLatestNewsWidget: props.isLatestNewsWidget }, props.document.description),\r\n React.createElement(DocumentCardStyles.Icon, null,\r\n React.createElement(Chevron, null)))));\r\n});\r\nDocumentCard.displayName = 'DocumentCard';\r\nexport default DocumentCard;\r\n","import brand from '@helpers/brand';\r\nimport { fonts } from '@helpers/fonts';\r\nimport { ButtonReset } from '@helpers/global';\r\nimport { Device, from } from '@helpers/media';\r\nimport { lighten } from 'polished';\r\nimport styled, { css } from 'styled-components';\r\nconst Button = styled.button.attrs({ type: 'button' }) `\r\n ${ButtonReset};\r\n padding: 16px;\r\n background-color: ${brand.grey.grey89};\r\n color: ${brand.grey.grey20};\r\n border-radius: 30px;\r\n ${fonts.DaxPro.Bold};\r\n font-size: 14px;\r\n\r\n @media ${from(Device.Tablet)} {\r\n padding: 18px;\r\n font-size: 16px;\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n padding: 20px;\r\n font-size: 18px;\r\n }\r\n\r\n &:hover {\r\n background-color: ${lighten(-0.05, brand.grey.grey89)};\r\n color: ${brand.grey.grey20};\r\n }\r\n\r\n &:active {\r\n background-color: ${lighten(-0.1, brand.grey.grey89)};\r\n color: ${brand.grey.grey20};\r\n }\r\n\r\n ${({ isActive }) => isActive\r\n ? css `\r\n background-color: ${brand.primary.dark};\r\n color: ${brand.white};\r\n\r\n &:hover {\r\n background-color: ${lighten(-0.05, brand.primary.dark)};\r\n color: ${brand.white};\r\n }\r\n\r\n &:active {\r\n background-color: ${lighten(-0.1, brand.primary.dark)};\r\n color: ${brand.white};\r\n }\r\n `\r\n : null}\r\n`;\r\nconst TabButtonStyles = {\r\n Button,\r\n};\r\nexport default TabButtonStyles;\r\n","import * as React from 'react';\r\nimport S from './TabButton.styles';\r\nconst TabButton = ({ children, ...props }) => {\r\n return (React.createElement(S.Button, { type: \"button\", ...props }, children));\r\n};\r\nexport default TabButton;\r\n","import React from 'react';\r\nimport { BrowserRouter as Router, Route, StaticRouter } from 'react-router-dom';\r\nimport { QueryParamProvider, transformSearchStringJsonSafe, } from 'use-query-params';\r\nimport { isSSR } from '../helpers/ssr';\r\nconst queryStringifyOptions = {\r\n transformSearchString: transformSearchStringJsonSafe,\r\n};\r\nexport function withQueryProvider(Component) {\r\n const OutputFunction = (props) => (React.createElement(React.Fragment, null, isSSR() ? (React.createElement(StaticRouter, null,\r\n React.createElement(QueryParamProvider, { ReactRouterRoute: Route, stringifyOptions: queryStringifyOptions },\r\n React.createElement(Component, { ...props })))) : (React.createElement(Router, null,\r\n React.createElement(QueryParamProvider, { ReactRouterRoute: Route, stringifyOptions: queryStringifyOptions },\r\n React.createElement(Component, { ...props }))))));\r\n return OutputFunction;\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) {\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: '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","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 SvgChevron(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 20.679 12.461\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 99\",\n d: \"M19.618 11.4l-9.279-9.279L1.06 11.4\",\n fill: \"none\"\n })));\n}\n\nexport default __webpack_public_path__ + \"056c9f699b39d0845225c962dec7c133.svg\";\nexport { SvgChevron as ReactComponent };","import brand from '@helpers/brand';\r\nimport { fonts } from '@helpers/fonts';\r\nimport { rgba } from 'polished';\r\nimport styled, { css } from 'styled-components';\r\nimport SvgSelectArrow from '@img/icons/select-arrow-up.svg';\r\nconst Wrapper = styled.div `\r\n label {\r\n display: block;\r\n font-size: 16px;\r\n ${fonts.DaxPro['Bold']};\r\n color: ${brand.grey.grey20};\r\n margin-bottom: 6px;\r\n }\r\n\r\n ${({ isOpen }) => isOpen &&\r\n css `\r\n ${() => Dropdown} {\r\n opacity: 1;\r\n pointer-events: all;\r\n }\r\n\r\n ${() => Element} {\r\n &:after {\r\n transform: rotate(0deg);\r\n }\r\n }\r\n `}\r\n`;\r\nconst Element = styled.div `\r\n position: relative;\r\n display: inline-flex;\r\n align-items: center;\r\n border-radius: 3px;\r\n border: 1px solid ${rgba(brand.grey.grey55, 0.75)};\r\n box-sizing: border-box;\r\n ${fonts.DaxPro.Regular};\r\n font-size: 16px;\r\n height: 50px;\r\n padding: 0 36px 0 18px;\r\n width: auto;\r\n min-width: 318px;\r\n cursor: pointer;\r\n\r\n &:after {\r\n content: '';\r\n position: absolute;\r\n top: 0;\r\n right: 18px;\r\n width: 18px;\r\n height: 100%;\r\n background: url(${SvgSelectArrow}) no-repeat center;\r\n background-size: contain;\r\n transform: rotate(180deg);\r\n opacity: 0.5;\r\n }\r\n`;\r\nconst Dropdown = styled.div `\r\n position: absolute;\r\n z-index: 1;\r\n top: calc(100% + 1px);\r\n left: 0;\r\n width: 100%;\r\n box-shadow: 0 0 4px 2px ${rgba(brand.black, 0.08)};\r\n background: ${brand.white};\r\n max-height: 240px;\r\n overflow-y: auto;\r\n border-bottom-left-radius: 3px;\r\n border-bottom-right-radius: 3px;\r\n opacity: 0;\r\n pointer-events: none;\r\n cursor: not-allowed;\r\n\r\n &::-webkit-scrollbar {\r\n height: 4px;\r\n width: 4px;\r\n }\r\n\r\n &::-webkit-scrollbar-thumb {\r\n background-color: ${rgba(brand.grey.grey20, 0.5)};\r\n border-radius: 0;\r\n cursor: pointer;\r\n }\r\n`;\r\nconst Item = styled.div `\r\n ${fonts.DaxPro.Regular};\r\n font-size: 18px;\r\n padding: 14px 18px;\r\n cursor: pointer;\r\n\r\n &:hover {\r\n background-color: ${brand.primary.base};\r\n color: ${brand.white};\r\n }\r\n`;\r\nexport default {\r\n Wrapper,\r\n Element,\r\n Dropdown,\r\n Item,\r\n};\r\n","import brand from '@helpers/brand';\r\nimport { fonts } from '@helpers/fonts';\r\nimport { ButtonReset } from '@helpers/global';\r\nimport { Grid } from '@helpers/grid';\r\nimport { Device, from, until } from '@helpers/media';\r\nimport TabButtonStyles from '@stories/Components/Buttons/TabButton/TabButton.styles';\r\nimport { DocumentCardStyles } from '@stories/Components/Cards/DocumentCard/DocumentCard.styles';\r\nimport { WYSIWYGStyles } from '@stories/Components/Content/WYSIWYG/WYSIWYG.styles';\r\nimport SelectStyles from '@stories/Components/Forms/Select/Select.styles';\r\nimport styled, { css } from 'styled-components';\r\nconst Container = styled.section `\r\n padding: 20px 0px;\r\n`;\r\nconst ContentGrid = styled(Grid.Default) `\r\n grid-row-gap: 20px;\r\n\r\n @media ${from(Device.MobileLarge)} {\r\n grid-row-gap: 30px;\r\n }\r\n\r\n @media ${from(Device.Tablet)} {\r\n grid-row-gap: 40px;\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n grid-row-gap: 50px;\r\n }\r\n`;\r\nconst ContentSection = styled.div `\r\n grid-column: span 12;\r\n order: 0;\r\n\r\n ${WYSIWYGStyles.Wrapper} {\r\n overflow: unset;\r\n }\r\n\r\n @media ${from(Device.Tablet)} {\r\n grid-column: span 9;\r\n }\r\n`;\r\nconst Filters = styled.div `\r\n grid-column: span 12;\r\n display: flex;\r\n gap: 15px;\r\n order: 2;\r\n overflow-x: auto;\r\n\r\n @media ${until(Device.MobileLarge)} {\r\n &::-webkit-scrollbar {\r\n width: 0;\r\n }\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n gap: 25px;\r\n }\r\n\r\n ${SelectStyles.Wrapper}, ${SelectStyles.Element} {\r\n @media ${until(Device.MobileLarge)} {\r\n width: 100%;\r\n }\r\n }\r\n\r\n ${TabButtonStyles.Button} {\r\n min-width: max-content;\r\n }\r\n\r\n ${({ fromDevice }) => {\r\n if (!fromDevice) {\r\n return;\r\n }\r\n return css `\r\n display: none;\r\n\r\n @media ${from(fromDevice)} {\r\n display: flex;\r\n }\r\n `;\r\n}}\r\n\r\n ${({ untilDevice }) => {\r\n if (!untilDevice) {\r\n return;\r\n }\r\n return css `\r\n display: none;\r\n\r\n @media ${until(untilDevice)} {\r\n display: flex;\r\n }\r\n `;\r\n}}\r\n`;\r\nconst FiltersLoadMoreWrapper = styled.div `\r\n width: 100%;\r\n`;\r\nconst FiltersLoadMore = styled.button.attrs({ type: 'button' }) `\r\n ${ButtonReset};\r\n font-size: 18px;\r\n color: ${brand.primary.dark};\r\n ${fonts.DaxPro.Bold};\r\n`;\r\nconst Search = styled.div `\r\n grid-column: span 12;\r\n\r\n order: 1;\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n order: 2;\r\n }\r\n`;\r\nconst SearchWrapper = styled.div `\r\n position: relative;\r\n\r\n @media ${from(Device.MobileLarge)} {\r\n display: inline-block;\r\n width: 300px;\r\n }\r\n\r\n svg {\r\n position: absolute;\r\n right: 10px;\r\n top: 50%;\r\n transform: translateY(-50%);\r\n color: ${brand.grey.grey20};\r\n width: 25px;\r\n height: 21px;\r\n\r\n @media ${from(Device.Tablet)} {\r\n width: 32px;\r\n height: 27px;\r\n }\r\n }\r\n`;\r\nconst Searchbox = styled.input `\r\n padding: 16px 40px 16px 0px;\r\n border: none;\r\n outline: none;\r\n background: ${brand.white};\r\n border-bottom: 1px solid ${brand.grey.grey20};\r\n color: ${brand.grey.grey20};\r\n font-size: 18px;\r\n ${fonts.DaxPro.Regular};\r\n width: 100%;\r\n\r\n @media ${from(Device.MobileLarge)} {\r\n padding: 16px 50px 20px 0px;\r\n }\r\n`;\r\nconst Results = styled(Grid.Inner) `\r\n grid-column: span 12;\r\n order: 4;\r\n\r\n ${DocumentCardStyles.Card} {\r\n ${Grid.CardGridSpans}\r\n }\r\n`;\r\nconst ResultsFooter = styled.div `\r\n grid-column: span 12;\r\n text-align: center;\r\n margin-bottom: 30px;\r\n order: 5;\r\n`;\r\nconst ProductListingStyles = {\r\n Container,\r\n ContentGrid,\r\n ContentSection,\r\n Filters,\r\n FiltersLoadMoreWrapper,\r\n FiltersLoadMore,\r\n Search,\r\n SearchWrapper,\r\n Searchbox,\r\n Results,\r\n ResultsFooter,\r\n};\r\nexport default ProductListingStyles;\r\n","import { HydrateOption } from '@core/enums';\r\nimport { Device } from '@helpers/media';\r\nimport { withQueryProvider } from '@hoc/withQueryProvider';\r\nimport withWidget from '@hoc/withWidget';\r\nimport useSiteSearch, { OrderType, SearchType } from '@hooks/useSiteSearch';\r\nimport { ReactComponent as SearchIcon } from '@img/icons/search.svg';\r\nimport Button from '@stories/Components/Buttons/Button/Button';\r\nimport TabButton from '@stories/Components/Buttons/TabButton/TabButton';\r\nimport DocumentCard from '@stories/Components/Cards/DocumentCard/DocumentCard';\r\nimport { WYSIWYGStyles } from '@stories/Components/Content/WYSIWYG/WYSIWYG.styles';\r\n// import Select from '@stories/Components/Forms/Select/Select';\r\nimport format from 'date-fns/format';\r\nimport * as React from 'react';\r\nimport { ArrayParam, NumberParam, StringParam, useQueryParam, withDefault } from 'use-query-params';\r\nimport S from './ProductListing.styles';\r\nconst ProductListing = (props) => {\r\n const [searchTerm, setSearchTerm] = useQueryParam('search', withDefault(StringParam, ''));\r\n const [pageIndex, setPageIndex] = useQueryParam('page', withDefault(NumberParam, 1));\r\n const [selectedCategories = [], setSelectedCategories] = useQueryParam('category', withDefault(ArrayParam, []));\r\n // const [selectedCategories, setSelectedCategories] = React.useState([]);\r\n const [showAllFilters, setShowAllFilters] = React.useState(false);\r\n const resultsRef = React.useRef(null);\r\n const search = useSiteSearch({\r\n request: {\r\n siteName: 'groundforce',\r\n culture: props.culture,\r\n searchTerm: searchTerm ? searchTerm : '',\r\n searchType: SearchType.Products,\r\n applyFuzzy: false,\r\n searchSynonyms: false,\r\n pageIndex: pageIndex ? pageIndex : 1,\r\n pageSize: 28,\r\n resultsOrder: searchTerm.length > 0 ? OrderType.Relevance : OrderType.NodeOrder,\r\n searchPath: props.searchPath,\r\n selectedFilters: selectedCategories,\r\n isProductListing: true,\r\n documentId: props.documentId,\r\n },\r\n });\r\n const flattenedCategories = search.response?.categories?.flatMap((x) => x.childCategories ?? []) ?? [];\r\n const handleCategoryClick = (id) => {\r\n setPageIndex(1);\r\n const newSelectedCategories = [...selectedCategories];\r\n const existingIndex = selectedCategories.indexOf(id);\r\n if (existingIndex > -1) {\r\n newSelectedCategories.splice(existingIndex, 1);\r\n }\r\n else {\r\n newSelectedCategories.push(id);\r\n }\r\n setSelectedCategories(newSelectedCategories);\r\n };\r\n const renderFilters = () => {\r\n if (!showAllFilters) {\r\n return (React.createElement(S.Filters, null,\r\n flattenedCategories.slice(0, 10).map((x) => (React.createElement(TabButton, { key: x.categoryId, onClick: () => handleCategoryClick(`${x.categoryId}`), isActive: selectedCategories.includes(`${x.categoryId}`) },\r\n x.displayName,\r\n \" (\",\r\n x.resultCount,\r\n \")\"))),\r\n flattenedCategories.length > 10 ? (React.createElement(S.FiltersLoadMoreWrapper, null,\r\n React.createElement(S.FiltersLoadMore, { onClick: () => setShowAllFilters(true) }, props.translations['gf.showmore']))) : null));\r\n }\r\n return (React.createElement(S.Filters, { fromDevice: Device.Tablet },\r\n flattenedCategories.map((x) => (React.createElement(TabButton, { key: x.categoryId, onClick: () => handleCategoryClick(`${x.categoryId}`), isActive: selectedCategories.includes(`${x.categoryId}`) },\r\n x.displayName,\r\n \" (\",\r\n x.resultCount,\r\n \")\"))),\r\n flattenedCategories.length > 10 ? (React.createElement(S.FiltersLoadMoreWrapper, null,\r\n React.createElement(S.FiltersLoadMore, { onClick: () => setShowAllFilters(false) }, props.translations['gf.showless']))) : null));\r\n };\r\n return (React.createElement(S.Container, null,\r\n React.createElement(S.ContentGrid, null,\r\n props.wysiwygContent ? (React.createElement(S.ContentSection, null,\r\n React.createElement(WYSIWYGStyles.Wrapper, { dangerouslySetInnerHTML: { __html: props.wysiwygContent } }))) : null,\r\n renderFilters(),\r\n React.createElement(S.Search, null,\r\n React.createElement(S.SearchWrapper, null,\r\n React.createElement(S.Searchbox, { placeholder: props.searchPlaceholder || undefined, onChange: (e) => {\r\n setSearchTerm(e.currentTarget.value);\r\n setPageIndex(1);\r\n }, onKeyDown: (e) => {\r\n if (e.key.toLowerCase() === 'enter') {\r\n resultsRef.current?.scrollIntoView({ behavior: 'smooth' });\r\n }\r\n } }),\r\n React.createElement(SearchIcon, { onClick: () => resultsRef.current?.scrollIntoView({ behavior: 'smooth' }) }))),\r\n React.createElement(S.Results, { ref: resultsRef }, search.response?.results?.map((x, i) => (React.createElement(DocumentCard, { key: `${x.documentId}|${i}`, document: {\r\n title: x.documentName,\r\n description: x.summaryText,\r\n imageUrl: x.imageUrl,\r\n tag: x.date ? format(new Date(x.date), 'dd/MM/yy') : null,\r\n url: x.pageUrl,\r\n noticeTag: null,\r\n fullPaddingTop: true,\r\n } })))),\r\n search.response?.canLoadMore ? (React.createElement(S.ResultsFooter, null,\r\n React.createElement(Button, { branding: \"primaryAlt\", title: props.translations['gf.loadmore'], onClick: () => {\r\n if (!pageIndex) {\r\n setPageIndex(1);\r\n }\r\n else {\r\n setPageIndex(pageIndex + 1);\r\n }\r\n } }))) : null)));\r\n};\r\nexport default withWidget(withQueryProvider(ProductListing), 'ProductListing', {\r\n hydrate: HydrateOption.Always,\r\n});\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 SvgSelectArrowUp(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 15.438,\n height: 9.133\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 367\",\n d: \"M.707 8.426l7.012-7.012 7.012 7.012\",\n fill: \"none\",\n stroke: \"#333\",\n strokeWidth: 2\n })));\n}\n\nexport default __webpack_public_path__ + \"af12012180f17cb15c081e8255da89f9.svg\";\nexport { SvgSelectArrowUp as ReactComponent };","import ApiService from '@core/api/services/ApiService';\r\nimport UrlResolver from '@core/url-resolver/UrlResolver';\r\nimport debounce from 'lodash/debounce';\r\nimport React from 'react';\r\nexport var SearchType;\r\n(function (SearchType) {\r\n SearchType[SearchType[\"SiteWide\"] = 0] = \"SiteWide\";\r\n SearchType[SearchType[\"Products\"] = 1] = \"Products\";\r\n SearchType[SearchType[\"TechnicalLibrary\"] = 2] = \"TechnicalLibrary\";\r\n SearchType[SearchType[\"MediaArticle\"] = 3] = \"MediaArticle\";\r\n})(SearchType || (SearchType = {}));\r\nexport var OrderType;\r\n(function (OrderType) {\r\n OrderType[OrderType[\"Relevance\"] = 0] = \"Relevance\";\r\n OrderType[OrderType[\"Alphabetically\"] = 1] = \"Alphabetically\";\r\n OrderType[OrderType[\"AlphabeticallyDescending\"] = 2] = \"AlphabeticallyDescending\";\r\n OrderType[OrderType[\"DateDescending\"] = 3] = \"DateDescending\";\r\n OrderType[OrderType[\"Date\"] = 4] = \"Date\";\r\n OrderType[OrderType[\"NodeOrder\"] = 5] = \"NodeOrder\";\r\n})(OrderType || (OrderType = {}));\r\nconst useSiteSearch = (params) => {\r\n const [response, setResponse] = React.useState(undefined);\r\n const [isLoading, setIsLoading] = React.useState(false);\r\n const fetchResults = async (p, append = false) => {\r\n setIsLoading(true);\r\n const apiResponse = await ApiService.request({\r\n baseUrl: UrlResolver.getDomain(),\r\n method: 'GET',\r\n controller: 'search',\r\n slug: 'performsearch',\r\n params: { ...p },\r\n });\r\n if (append && apiResponse?.result && apiResponse.result.results && response?.results) {\r\n setResponse({\r\n ...apiResponse.result,\r\n results: [...response.results, ...apiResponse.result.results],\r\n });\r\n }\r\n else {\r\n setResponse(apiResponse.result);\r\n }\r\n setIsLoading(false);\r\n };\r\n const debouncedFetchResults = React.useCallback(debounce(fetchResults, 275), []);\r\n React.useEffect(() => {\r\n debouncedFetchResults(params.request);\r\n }, [params.request.searchTerm, params.request.selectedFilters]);\r\n React.useEffect(() => {\r\n debouncedFetchResults(params.request, true);\r\n }, [params.request.pageIndex]);\r\n return { response, isLoading };\r\n};\r\nexport default useSiteSearch;\r\n"],"sourceRoot":""}