{"version":3,"file":"1958-ab403834da974b0f1255.js","mappings":"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","sources":["webpack://eploy/./src/helpers/image.ts","webpack://eploy/./src/hoc/withMotion.tsx","webpack://eploy/./src/hoc/withQueryParams.tsx","webpack://eploy/./src/hoc/withRouter.tsx","webpack://eploy/./src/hooks/useApi.ts","webpack://eploy/./src/hooks/useIntersectionObserver.ts","webpack://eploy/./src/hooks/useInView.ts","webpack://eploy/./src/hooks/useMedia.ts","webpack://eploy/./src/stories/Components/Misc/Forms/Inputs/Select/Select.styles.ts","webpack://eploy/./src/stories/Components/Misc/Forms/Inputs/Textbox/Textbox.styles.ts","webpack://eploy/./src/stories/Components/Misc/Pagination/Pagination.styles.ts","webpack://eploy/./src/stories/Components/Misc/Pagination/Pagination.tsx","webpack://eploy/./src/stories/Components/Misc/SectionWrapper/SectionWrapper.styles.ts","webpack://eploy/./src/stories/Components/Misc/SectionWrapper/SectionWrapper.tsx","webpack://eploy/./src/stories/Components/Cards/GenericCard/GenericCard.styles.ts","webpack://eploy/./src/stories/Components/Cards/GenericCard/GenericCard.tsx","webpack://eploy/./node_modules/react-use/esm/useClickAway.js","webpack://eploy/./src/stories/Widgets/GenericListing/GenericListing.styles.ts","webpack://eploy/./src/stories/Widgets/GenericListing/GenericListing.tsx","webpack://eploy/./node_modules/react-use/esm/misc/util.js"],"sourcesContent":["import queryString from 'query-string';\r\n/**\r\n * Create an image URL for ImageProcessor\r\n * @param image The image model\r\n * @param imageParams The image parameters\r\n * @returns The image URL\r\n */\r\nexport function imageUrl(image, imageParams) {\r\n if (!image) {\r\n return '';\r\n }\r\n const params = {\r\n center: image.focalPoint ? `${image.focalPoint.top},${image.focalPoint.left}` : undefined,\r\n ...imageParams,\r\n };\r\n if (params.width && params.heightratio) {\r\n params.height = Math.round(params.width / params.heightratio);\r\n }\r\n const paramsString = queryString.stringify(params);\r\n return `${image.src}${paramsString ? `?${queryString.stringify(params)}` : ''}`;\r\n}\r\nexport function getSrcs(image, upper, lower, steps, ratio) {\r\n if (!image) {\r\n return { src: '', srcSet: '' };\r\n }\r\n const sizes = getRange(upper, lower, steps);\r\n const sizesArr = sizes.map((size) => `${imageUrl(image, { width: size, heightratio: ratio })} ${size}w`);\r\n return {\r\n src: sizesArr[0].split(' ')[0],\r\n srcSet: sizesArr.join(','),\r\n };\r\n}\r\nexport function getRetinaSrcs(image, width, ratio) {\r\n const dprs = [1, 1.5, 2, 2.5, 3];\r\n const dprsArr = dprs.map((dpr) => `${imageUrl(image, { width: width * dpr, heightratio: ratio })} ${dpr}x`);\r\n return {\r\n src: dprsArr[0].split(' ')[0],\r\n srcSet: dprsArr.join(','),\r\n };\r\n}\r\nfunction getRange(upper, lower, steps) {\r\n const difference = upper - lower;\r\n const increment = difference / (steps - 1);\r\n return [\r\n lower,\r\n ...Array(steps - 2)\r\n .fill('')\r\n .map((_, index) => Math.ceil(lower + increment * (index + 1))),\r\n upper,\r\n ];\r\n}\r\n","import { domAnimation, LazyMotion } from 'framer-motion';\r\nimport React from 'react';\r\nexport function withMotion(WrappedComponent) {\r\n const displayName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\r\n const ComponentWithMotion = (props) => {\r\n return (React.createElement(LazyMotion, { features: domAnimation, strict: true },\r\n React.createElement(WrappedComponent, { ...props })));\r\n };\r\n ComponentWithMotion.displayName = `withMotion(${displayName})`;\r\n return ComponentWithMotion;\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(`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 return (React.createElement(StaticRouter, { basename: props.basename, context: props.context, location: props.location },\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 { sleep } from '@helpers/utils';\r\nimport * as React from 'react';\r\nimport { useFirstMountState } from 'react-use';\r\nexport function useApi(params) {\r\n const refAbortController = React.useRef();\r\n const isFirstMount = useFirstMountState();\r\n const [data, setData] = React.useState(params.initialData);\r\n const [status, setStatus] = React.useState('initial');\r\n const minTime = 500;\r\n const clear = () => {\r\n setData(undefined);\r\n };\r\n React.useEffect(() => {\r\n // Ignore first mount if initial data is supplied.\r\n if (isFirstMount && params.initialData) {\r\n return;\r\n }\r\n // Ignore if validate is supplied and returns false.\r\n if (params.validate && !params.validate()) {\r\n return;\r\n }\r\n // Setup abortable fetch.\r\n refAbortController.current = new AbortController();\r\n const signal = refAbortController.current.signal;\r\n // Trigger fetch with abort signal.\r\n doAsync(signal);\r\n return () => {\r\n // Abort pending request if re-fetching.\r\n refAbortController.current?.abort();\r\n };\r\n async function doAsync(signal) {\r\n setStatus('loading');\r\n const start = Date.now();\r\n const res = await fetch(params.url, {\r\n cache: 'no-cache',\r\n credentials: 'same-origin',\r\n headers: {\r\n Accept: 'application/json',\r\n },\r\n method: 'get',\r\n signal,\r\n });\r\n const resData = await res.json();\r\n const end = Date.now();\r\n const diff = end - start;\r\n /** Ensure at least 500ms is taken to return results to prevent loader flash */\r\n if (diff < minTime) {\r\n await sleep(minTime - diff);\r\n }\r\n setData(resData);\r\n setStatus('complete');\r\n }\r\n }, [params.url]);\r\n return { clear, data, status };\r\n}\r\n","import { useEffect, useRef } from 'react';\r\n/**\r\n * Use the IntersectionObserver to track visibility of an element in the viewport.\r\n * @param {IntersectionObserverCallback} callback\r\n * @param {IntersectionObserverInit} options\r\n * @returns {UseIntersectionObserverReturn}\r\n */\r\nfunction useIntersectionObserver(callback, options = {}) {\r\n const observerRef = useRef(null);\r\n const rootRef = useRef(null);\r\n const elementRef = useRef(null);\r\n useEffect(() => {\r\n if (!elementRef.current) {\r\n return undefined;\r\n }\r\n observerRef.current = new IntersectionObserver(callback, {\r\n root: rootRef.current,\r\n ...options,\r\n });\r\n observerRef.current.observe(elementRef.current);\r\n return () => {\r\n if (observerRef.current === null) {\r\n return;\r\n }\r\n observerRef.current.disconnect();\r\n };\r\n }, [callback, options]);\r\n return { elementRef, observerRef, rootRef };\r\n}\r\nexport default useIntersectionObserver;\r\n","import { useState } from 'react';\r\nimport useIntersectionObserver from './useIntersectionObserver';\r\nexport function useInView(options, reverse = false, isEditMode = false) {\r\n const [inView, setInView] = useState(false);\r\n const { elementRef } = useIntersectionObserver((entries) => {\r\n if (entries[0].isIntersecting) {\r\n setInView(true);\r\n }\r\n else if (reverse === true) {\r\n setInView(false);\r\n }\r\n }, options);\r\n return [elementRef, isEditMode ? true : inView];\r\n}\r\n","import { useEffect, useState } from 'react';\r\n/**\r\n * Store a value in state based on the specified media queries.\r\n * @param {Array} queries\r\n * @param {Array} values\r\n * @param {T} defaultValue\r\n */\r\nfunction useMedia(queries, values, defaultValue) {\r\n // Function that gets value based on matching media query\r\n const getValue = () => {\r\n // Get index of first media query that matches\r\n const index = mediaQueryLists.findIndex((mql) => mql.matches);\r\n // Return related value or defaultValue if none\r\n return typeof values[index] !== 'undefined' ? values[index] : defaultValue;\r\n };\r\n // State and setter for matched value\r\n const [value, setValue] = useState(defaultValue);\r\n const [mediaQueryLists, setMediaQueryLists] = useState([]);\r\n useEffect(() => {\r\n // Array containing a media query list for each query\r\n setMediaQueryLists(queries.map((query) => window.matchMedia(query)));\r\n }, []);\r\n useEffect(() => {\r\n setValue(getValue);\r\n // Event listener callback\r\n // Note: By defining getValue outside of useEffect we ensure that it has ...\r\n // ... current values of hook args (as this hook callback is created once on mount).\r\n const handler = () => setValue(getValue);\r\n // Set a listener for each media query with above handler as callback.\r\n mediaQueryLists.forEach((mql) => mql.addListener(handler));\r\n // Remove listeners on cleanup\r\n return () => mediaQueryLists.forEach((mql) => mql.removeListener(handler));\r\n }, [mediaQueryLists]); // Empty array ensures effect is only run on mount and unmount\r\n return value;\r\n}\r\nexport default useMedia;\r\n","import { transition } from '@helpers/animate';\r\nimport svgChevron from '@img/icons/chevron.svg?url';\r\nimport styled, { css } from 'styled-components';\r\nimport { CommonTextInputStyles } from '../Textbox/Textbox.styles';\r\nexport const CommonSelectStyles = css `\r\n ${CommonTextInputStyles};\r\n\r\n &:read-only,\r\n &[readonly] {\r\n color: unset;\r\n }\r\n`;\r\nexport const CommonDropdownWrapperStyles = css `\r\n --translateY: -50%;\r\n\r\n position: relative;\r\n\r\n &::after {\r\n ${transition('transform')};\r\n\r\n content: '';\r\n display: inline-flex;\r\n align-items: center;\r\n width: 19px;\r\n height: 13px;\r\n position: absolute;\r\n top: 50%;\r\n right: 20px;\r\n transform: translateY(var(--translateY));\r\n pointer-events: none;\r\n -webkit-mask-image: url(${svgChevron});\r\n mask-image: url(${svgChevron});\r\n mask-repeat: no-repeat;\r\n background-size: contain;\r\n background: var(--textColour);\r\n }\r\n\r\n &:focus-within::after {\r\n transform: translateY(var(--translateY)) rotate(180deg);\r\n }\r\n`;\r\nconst Wrapper = styled.div `\r\n ${CommonDropdownWrapperStyles};\r\n`;\r\nconst Select = styled.select `\r\n ${CommonSelectStyles};\r\n`;\r\nconst SelectStyles = {\r\n Wrapper,\r\n Select,\r\n};\r\nexport default SelectStyles;\r\n","import brand from '@helpers/brand';\r\nimport { fluid } from '@helpers/fluid';\r\nimport fonts from '@helpers/fonts';\r\nimport styled, { css } from 'styled-components';\r\nexport const CommonTextInputStyles = css `\r\n ${fonts.poppins.regular};\r\n\r\n --borderRadius: 5px;\r\n\r\n /* Ensure iOS doesn't apply default border radius */\r\n -webkit-appearance: none !important;\r\n\r\n display: block;\r\n background: var(--bgColour);\r\n border: 2px solid var(--borderColour);\r\n border-radius: var(--borderRadius);\r\n color: var(--textColour);\r\n height: var(--inputHeight, 50px);\r\n font-size: ${fluid(15, 16)};\r\n margin: 0;\r\n padding: 7px ${fluid(16, 24)};\r\n width: 100%;\r\n\r\n &:disabled {\r\n opacity: 0.5;\r\n color: var(--readOnlyColour);\r\n cursor: not-allowed;\r\n }\r\n\r\n &:read-only,\r\n &[readonly] {\r\n color: var(--readOnlyColour);\r\n }\r\n\r\n &::placeholder {\r\n opacity: 0;\r\n }\r\n\r\n &.focus-ring {\r\n outline: auto;\r\n outline-offset: 3px;\r\n outline-width: 2px;\r\n outline-style: solid;\r\n }\r\n\r\n [data-error='true'] & {\r\n --borderColour: ${brand.primary.orangeDark};\r\n --textColour: ${brand.primary.orangeDark};\r\n }\r\n`;\r\nconst Input = styled.input `\r\n ${CommonTextInputStyles};\r\n`;\r\nconst TextboxStyles = {\r\n Input,\r\n};\r\nexport default TextboxStyles;\r\n","import { transition } from '@helpers/animate';\r\nimport brand from '@helpers/brand';\r\nimport { fluid } from '@helpers/fluid';\r\nimport fonts from '@helpers/fonts';\r\nimport { ButtonReset } from '@helpers/global';\r\nimport { Device, from, until } from '@helpers/media';\r\nimport ButtonStyles from '@stories/Components/Buttons/Button/Button.styles';\r\nimport styled from 'styled-components';\r\nconst Container = styled.div `\r\n display: flex;\r\n align-items: center;\r\n overflow: hidden;\r\n\r\n @media ${until(Device.MobileLarge)} {\r\n flex-direction: column;\r\n gap: 16px;\r\n }\r\n\r\n @media ${from(Device.MobileLarge)} {\r\n justify-content: space-between;\r\n }\r\n`;\r\nconst PaginationControls = styled.div `\r\n display: flex;\r\n align-items: center;\r\n gap: ${fluid(0, 30)};\r\n\r\n @media ${until(Device.MobileLarge)} {\r\n width: 100%;\r\n justify-content: space-between;\r\n }\r\n\r\n ul.pagination {\r\n display: flex;\r\n align-items: center;\r\n gap: ${fluid(6, 8)};\r\n\r\n li {\r\n --borderColour: transparent;\r\n --bgColour: ${brand.primary.stone};\r\n\r\n [data-disabled='true'] & {\r\n opacity: 0.75;\r\n pointer-events: none;\r\n }\r\n\r\n a {\r\n --size: ${fluid(33, 42)};\r\n width: var(--size);\r\n height: var(--size);\r\n\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n }\r\n\r\n cursor: pointer;\r\n user-select: none;\r\n border-radius: 6px;\r\n\r\n ${fonts.poppins.extraBold};\r\n font-size: ${fluid(19, 23)};\r\n line-height: ${fluid(25, 30)};\r\n\r\n &.selected {\r\n --borderColour: ${brand.tertiary.teal};\r\n --bgColour: ${brand.primary.white};\r\n }\r\n\r\n &.break {\r\n --bgColour: transparent;\r\n }\r\n\r\n border: 3px solid var(--borderColour);\r\n background-color: var(--bgColour);\r\n\r\n ${transition('border, background-color, opacity', 0.25, 'ease-out')}\r\n }\r\n\r\n li.previous,\r\n li.next {\r\n display: none;\r\n }\r\n }\r\n`;\r\nconst PageDisplay = styled.small `\r\n font-size: 16px;\r\n line-height: 24px;\r\n user-select: none;\r\n\r\n ${fonts.poppins.regular};\r\n span {\r\n ${fonts.poppins.bold};\r\n }\r\n`;\r\nconst PageButton = styled.button `\r\n ${ButtonReset}\r\n\r\n &:disabled {\r\n opacity: 0.5;\r\n pointer-events: none;\r\n }\r\n\r\n &:first-child {\r\n transform: rotate(180deg);\r\n }\r\n\r\n ${ButtonStyles.Container} {\r\n --buttonHeight: ${fluid(38, 48)};\r\n --colourText: ${brand.primary.white};\r\n --bgColour: ${brand.tertiary.teal};\r\n\r\n --colourTextHover: ${brand.primary.black};\r\n --borderColour: ${brand.tertiary.teal};\r\n --borderWidth: 3px;\r\n }\r\n`;\r\nexport const PaginationStyles = {\r\n Container,\r\n PageButton,\r\n PageDisplay,\r\n PaginationControls,\r\n};\r\n","import { Device, until } from '@helpers/media';\r\nimport useMedia from '@hooks/useMedia';\r\nimport { FakeButton } from '@stories/Components/Buttons/Button/Button';\r\nimport React from 'react';\r\nimport ReactPaginate from 'react-paginate';\r\nimport { PaginationStyles as S } from './Pagination.styles';\r\nconst Pagination = ({ currentPage, pageCount, onChange, disabled, translations, }) => {\r\n const isMobile = useMedia([`${until(Device.MobileLarge)}`], [true], false);\r\n return (React.createElement(S.Container, { \"data-disabled\": disabled },\r\n React.createElement(S.PageDisplay, null,\r\n \"Page \",\r\n React.createElement(\"span\", null, currentPage),\r\n \" of \",\r\n React.createElement(\"span\", null, pageCount)),\r\n React.createElement(S.PaginationControls, null,\r\n React.createElement(S.PageButton, { disabled: currentPage === 1 || disabled, onClick: () => onChange(currentPage - 1), \"aria-label\": translations?.['listings.previousPage'] ?? 'Previous Page' },\r\n React.createElement(FakeButton, { buttonType: \"solid-white\", iconOnly: true })),\r\n React.createElement(ReactPaginate, { pageCount: pageCount, forcePage: currentPage - 1, pageRangeDisplayed: isMobile ? 1 : 2, marginPagesDisplayed: 1, breakLabel: \"...\", onPageChange: (s) => onChange(s.selected + 1), className: \"pagination\" }),\r\n React.createElement(S.PageButton, { disabled: currentPage === pageCount || disabled, onClick: () => onChange(currentPage + 1), \"aria-label\": translations?.['listings.nextPage'] ?? 'Next Page' },\r\n React.createElement(FakeButton, { buttonType: \"solid-white\", iconOnly: true })))));\r\n};\r\nexport default Pagination;\r\n","import brand from '@helpers/brand';\r\nimport { siteWide } from '@helpers/grid';\r\nimport { m } from 'framer-motion';\r\nimport styled, { css } from 'styled-components';\r\nexport const SectionWrapperCSS = css `\r\n color: var(--sectionColour, ${brand.primary.black});\r\n background: var(--sectionBackground, transparent);\r\n scroll-margin: var(--headerHeight, 0px) 0 0;\r\n\r\n &[data-flush='top'] {\r\n --sectionSpacingTop: 0;\r\n }\r\n\r\n &[data-flush='bottom'] {\r\n --sectionSpacingBottom: 0;\r\n }\r\n\r\n &[data-flush='both'] {\r\n --sectionSpacingTop: 0;\r\n --sectionSpacingBottom: 0;\r\n }\r\n\r\n /* Variant text colours */\r\n &[data-variant='blue'],\r\n &[data-variant='charcoal'],\r\n &[data-variant='orange'],\r\n &[data-variant='pink'] {\r\n --sectionColour: ${brand.primary.white};\r\n }\r\n\r\n &[data-variant='stone'],\r\n &[data-variant='white'] {\r\n --sectionColour: ${brand.primary.black};\r\n }\r\n\r\n /* Variant background colours */\r\n &[data-variant='pink'] {\r\n --bgAngle: 90deg;\r\n }\r\n\r\n &[data-variant='blue'],\r\n &[data-variant='charcoal'] {\r\n --bgAngle: 105deg;\r\n }\r\n\r\n &[data-variant='orange'] {\r\n --bgAngle: 0deg;\r\n }\r\n\r\n &[data-variant='blue'] {\r\n --sectionBackground: linear-gradient(var(--bgAngle), #3372aa 0%, #1e2f6d 100%);\r\n }\r\n\r\n &[data-variant='charcoal'] {\r\n --sectionBackground: linear-gradient(var(--bgAngle), #2b2b2b 0%, #505050 100%);\r\n }\r\n\r\n &[data-variant='orange'] {\r\n --sectionBackground: linear-gradient(var(--bgAngle), #f47929 0%, #f17028 58.6%, #e24321 98.36%);\r\n }\r\n\r\n &[data-variant='pink'] {\r\n --sectionBackground: linear-gradient(var(--bgAngle), #9f4a92 0%, #cc709c 53%, #f491a4 100%);\r\n }\r\n\r\n &[data-variant='stone'] {\r\n --sectionBackground: ${brand.primary.stone};\r\n }\r\n\r\n &[data-variant='white'] {\r\n --sectionBackground: ${brand.primary.white};\r\n }\r\n`;\r\nconst Container = styled(m.section) `\r\n ${SectionWrapperCSS};\r\n`;\r\nexport const SectionWrapperInnerCSS = css `\r\n ${siteWide};\r\n\r\n padding-top: var(--sectionSpacingTop);\r\n padding-bottom: var(--sectionSpacingBottom);\r\n`;\r\nconst Inner = styled.div `\r\n ${SectionWrapperInnerCSS};\r\n`;\r\nconst SectionWrapperStyles = {\r\n Container,\r\n Inner,\r\n};\r\nexport default SectionWrapperStyles;\r\n","import * as React from 'react';\r\nimport S from './SectionWrapper.styles';\r\nconst SectionWrapper = React.forwardRef((props, ref) => {\r\n const { id, children, layout = 'default', flush = 'none', variant, ...otherProps } = props;\r\n return (React.createElement(S.Container, { ref: ref, id: id, \"data-flush\": flush, \"data-variant\": variant, ...otherProps }, renderLayout()));\r\n function renderLayout() {\r\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n //@ts-ignore\r\n if (layout === 'fullWidth') {\r\n return children;\r\n }\r\n return React.createElement(S.Inner, null, children);\r\n }\r\n});\r\nSectionWrapper.displayName = 'SectionWrapper';\r\nexport default SectionWrapper;\r\n","import { transition, verticalFadeIn } from '@helpers/animate';\r\nimport 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 { contentStyles, h5, paragraphSmall } from '@helpers/typography';\r\nimport ButtonStyles from '@stories/Components/Buttons/Button/Button.styles';\r\nimport { m } from 'framer-motion';\r\nimport styled from 'styled-components';\r\nconst Container = styled(m.a).attrs((props) => ({\r\n initial: 'hidden',\r\n animate: props['data-visible'] ? 'visible' : 'hidden',\r\n transition: {\r\n staggerChildren: 0.1,\r\n },\r\n})) `\r\n border: 3px solid ${brand.primary.orange};\r\n border-radius: ${fluid(12, 16)};\r\n overflow: hidden;\r\n display: flex;\r\n overflow: hidden;\r\n color: ${brand.primary.black};\r\n text-decoration: none;\r\n\r\n ${ButtonStyles.IconWrapper} {\r\n ${transition('transform')};\r\n }\r\n\r\n &[download] {\r\n svg .download_svg__arrow {\r\n ${transition('transform', 0.25)};\r\n }\r\n }\r\n\r\n &:focus-visible,\r\n &:hover {\r\n &[download] {\r\n ${ButtonStyles.IconWrapper} {\r\n transform: none;\r\n\r\n svg .download_svg__arrow {\r\n transform: translateY(3px);\r\n }\r\n }\r\n }\r\n\r\n ${ButtonStyles.IconWrapper} {\r\n transform: translateX(5px);\r\n }\r\n }\r\n\r\n @media ${until(Device.Tablet)} {\r\n flex-direction: column;\r\n }\r\n`;\r\nconst ImageWrapper = styled(m.div).attrs(() => ({\r\n variants: {\r\n hidden: {\r\n opacity: 0,\r\n },\r\n visible: {\r\n opacity: 1,\r\n transition: {\r\n bounce: 0,\r\n ease: 'easeOut',\r\n duration: 0.75,\r\n delayChildren: 0.5,\r\n },\r\n },\r\n },\r\n})) `\r\n width: 100%;\r\n height: 100%;\r\n position: relative;\r\n aspect-ratio: 344 / 247;\r\n\r\n @media ${from(Device.Tablet)} {\r\n flex-shrink: 0;\r\n }\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\n @media ${from(Device.Tablet)} {\r\n width: 300px;\r\n aspect-ratio: 1;\r\n }\r\n`;\r\nconst Content = styled(m.div).attrs(() => ({\r\n variants: {\r\n visible: {\r\n transition: {\r\n staggerChildren: 0.1,\r\n },\r\n },\r\n },\r\n})) `\r\n display: flex;\r\n flex-direction: column;\r\n\r\n padding: 15px 16px;\r\n\r\n @media ${until(Device.Tablet)} {\r\n padding-top: 20px;\r\n }\r\n`;\r\nconst CardTitle = styled(m.h5).attrs(() => ({ variants: verticalFadeIn(15) })) `\r\n ${h5}\r\n\r\n margin-bottom: 16px;\r\n @media ${until(Device.Tablet)} {\r\n ${fonts.poppins.extraBold}\r\n }\r\n`;\r\nconst CardContent = styled(m.div).attrs(() => ({ variants: verticalFadeIn(15) })) `\r\n ${contentStyles};\r\n\r\n display: -webkit-box;\r\n -webkit-line-clamp: 4;\r\n -webkit-box-orient: vertical;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n\r\n margin-bottom: 16px;\r\n\r\n p,\r\n li {\r\n ${paragraphSmall};\r\n }\r\n\r\n ul:not([style*='list-style-type']) li::before {\r\n top: ${fluid(5, 7.5)};\r\n }\r\n\r\n ol,\r\n ul {\r\n margin-top: ${fluid(14, 20)};\r\n margin-bottom: ${fluid(14, 20)};\r\n }\r\n`;\r\nconst CtaWrapper = styled(m.div).attrs(() => ({ variants: verticalFadeIn(15) })) `\r\n margin-top: auto;\r\n\r\n display: flex;\r\n\r\n @media ${from(Device.Tablet)} {\r\n justify-content: flex-end;\r\n }\r\n`;\r\nconst FeaturedTag = styled(m.div).attrs(() => ({\r\n variants: verticalFadeIn(15),\r\n})) `\r\n position: absolute;\r\n top: ${fluid(16, 19)};\r\n left: ${fluid(16, 18)};\r\n\r\n background-color: ${brand.primary.orange};\r\n color: ${brand.primary.white};\r\n border-radius: 8px;\r\n padding: ${fluid(5, 6)} ${fluid(8, 16)};\r\n\r\n ${fonts.poppins.bold};\r\n font-size: ${fluid(12, 16)};\r\n line-height: ${fluid(14, 19)};\r\n`;\r\nexport const GenericCardStyles = {\r\n Container,\r\n ImageWrapper,\r\n Content,\r\n CardTitle,\r\n CardContent,\r\n CtaWrapper,\r\n FeaturedTag,\r\n};\r\n","import { Icon } from '@helpers/icons';\r\nimport { getSrcs } from '@helpers/image';\r\nimport { Device, until } from '@helpers/media';\r\nimport { FakeButton } from '@stories/Components/Buttons/Button/Button';\r\nimport React from 'react';\r\nimport { GenericCardStyles as S } from './GenericCard.styles';\r\nconst GenericCard = ({ image, title, summary, downloadCta, isDirectDownload, featured, sizes: imageSizes, visible = false, }) => {\r\n const srcs = getSrcs(image, 300, 344, 3, 1);\r\n const sizes = imageSizes ?? `${until(Device.TabletSmall)} 95vw, 300px`;\r\n return (React.createElement(S.Container, { download: isDirectDownload, href: downloadCta.url, target: downloadCta.target, \"data-visible\": visible },\r\n React.createElement(S.ImageWrapper, null,\r\n React.createElement(\"img\", { src: srcs.src, srcSet: srcs.srcSet, sizes: sizes, loading: \"lazy\", alt: image?.altText, role: !image?.altText ? 'presentation' : undefined }),\r\n featured && React.createElement(S.FeaturedTag, null, \"Featured\")),\r\n React.createElement(S.Content, null,\r\n React.createElement(S.CardTitle, null, title),\r\n summary && React.createElement(S.CardContent, { dangerouslySetInnerHTML: { __html: summary } }),\r\n React.createElement(S.CtaWrapper, null,\r\n React.createElement(FakeButton, { buttonType: \"solid\", icon: isDirectDownload ? Icon.Download : Icon.Arrow }, downloadCta.text)))));\r\n};\r\nexport default GenericCard;\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","import { transition } from '@helpers/animate';\r\nimport brand from '@helpers/brand';\r\nimport { fluid } from '@helpers/fluid';\r\nimport fonts from '@helpers/fonts';\r\nimport { ButtonReset } from '@helpers/global';\r\nimport { Device, from, until } from '@helpers/media';\r\nimport { paragraphSmall } from '@helpers/typography';\r\nimport { CommonDropdownWrapperStyles } from '@stories/Components/Misc/Forms/Inputs/Select/Select.styles';\r\nimport { CommonTextInputStyles } from '@stories/Components/Misc/Forms/Inputs/Textbox/Textbox.styles';\r\nimport { PaginationStyles } from '@stories/Components/Misc/Pagination/Pagination.styles';\r\nimport SectionWrapper from '@stories/Components/Misc/SectionWrapper/SectionWrapper';\r\nimport SectionWrapperStyles from '@stories/Components/Misc/SectionWrapper/SectionWrapper.styles';\r\nimport { m } from 'framer-motion';\r\nimport styled from 'styled-components';\r\nconst Container = styled.div `\r\n display: flex;\r\n flex-direction: column;\r\n /* overflow: hidden; */\r\n`;\r\nconst TopFilterBar = styled(SectionWrapper) `\r\n background-color: ${brand.primary.stone};\r\n z-index: 1;\r\n\r\n ${SectionWrapperStyles.Inner} {\r\n --sectionSpacingTop: 16px;\r\n --sectionSpacingBottom: 16px;\r\n --maxHeight: ${fluid(40, 60)};\r\n\r\n height: var(--maxHeight);\r\n max-height: var(--maxHeight);\r\n\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n }\r\n`;\r\nconst AvailableText = styled.div `\r\n ${paragraphSmall};\r\n margin: 0;\r\n\r\n strong {\r\n ${fonts.poppins.extraBold};\r\n }\r\n`;\r\nconst SortBy = styled.div `\r\n position: relative;\r\n\r\n opacity: 1;\r\n ${transition('opacity', 0.25, 'ease-in-out')}\r\n &[data-disabled='true'] {\r\n pointer-events: none;\r\n opacity: 0.5;\r\n }\r\n`;\r\nconst SortByContainer = styled.button `\r\n ${ButtonReset};\r\n\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n cursor: pointer;\r\n user-select: none;\r\n\r\n &[data-active='true'] {\r\n svg {\r\n transform: rotate(180deg);\r\n }\r\n }\r\n\r\n svg {\r\n width: 10px;\r\n height: 8px;\r\n ${transition('transform', 0.25, 'ease-out')}\r\n }\r\n\r\n span {\r\n ${paragraphSmall};\r\n\r\n margin: 0;\r\n\r\n strong {\r\n ${fonts.poppins.extraBold};\r\n }\r\n }\r\n\r\n @media ${until(Device.TabletLarge)} {\r\n display: none;\r\n }\r\n`;\r\nconst SortBySelect = styled.div `\r\n ${CommonDropdownWrapperStyles};\r\n\r\n --textColour: currentColor;\r\n\r\n &::after {\r\n right: 0;\r\n width: 10px;\r\n height: 7px;\r\n }\r\n\r\n select {\r\n ${CommonTextInputStyles};\r\n ${paragraphSmall};\r\n ${fonts.poppins.extraBold};\r\n\r\n background: none;\r\n margin: auto;\r\n border: 0;\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n display: none;\r\n }\r\n`;\r\nconst SortByDropdown = styled(m.ul).attrs((props) => ({\r\n initial: 'hidden',\r\n animate: props['data-active'] ? 'visible' : 'hidden',\r\n variants: {\r\n hidden: { top: 0, opacity: 0, pointerEvents: 'none' },\r\n visible: { top: `calc(100% + var(--sectionSpacingBottom))`, opacity: 1, pointerEvents: 'all' },\r\n },\r\n transition: {\r\n bounce: 0,\r\n ease: 'easeInOut',\r\n duration: 0.25,\r\n },\r\n})) `\r\n position: absolute;\r\n background-color: lightblue;\r\n right: calc(-1 * var(--sitePadding));\r\n min-width: 250px;\r\n max-width: 90dvw;\r\n background-color: ${brand.primary.stone};\r\n border-radius: 0px 0px 10px 10px;\r\n overflow: hidden;\r\n\r\n display: flex;\r\n flex-direction: column;\r\n z-index: -1;\r\n\r\n @media ${until(Device.TabletLarge)} {\r\n display: none;\r\n }\r\n`;\r\nconst SortByDropdownItem = styled.li `\r\n ${transition('background-color', 0.15, 'ease-out')};\r\n ${fonts.poppins.regular};\r\n\r\n --bg: ${brand.primary.stone};\r\n\r\n padding: 20px;\r\n background-color: var(--bg);\r\n cursor: pointer;\r\n user-select: none;\r\n\r\n &:focus-within,\r\n &:hover {\r\n --bg: ${brand.primary.darkStone};\r\n }\r\n\r\n button {\r\n ${ButtonReset};\r\n ${paragraphSmall};\r\n\r\n margin: 0;\r\n }\r\n`;\r\nconst ListingWrapper = styled(SectionWrapper) `\r\n --sectionSpacingTop: ${fluid(20, 62)};\r\n\r\n ${SectionWrapperStyles.Inner} {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 32px;\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n ${PaginationStyles.Container} {\r\n margin-left: auto;\r\n }\r\n\r\n ${PaginationStyles.PageDisplay} {\r\n display: none;\r\n }\r\n }\r\n`;\r\nconst Listing = styled.div `\r\n display: grid;\r\n grid-template-columns: 1fr;\r\n grid-template-rows: 1fr;\r\n row-gap: ${fluid(20, 24)};\r\n column-gap: ${fluid(20, 32)};\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n grid-template-columns: repeat(2, 1fr);\r\n grid-template-rows: repeat(2, 1fr);\r\n }\r\n`;\r\nexport const GenericListingStyles = {\r\n Container,\r\n TopFilterBar,\r\n AvailableText,\r\n SortBy,\r\n SortByContainer,\r\n SortByDropdown,\r\n SortByDropdownItem,\r\n ListingWrapper,\r\n Listing,\r\n SortBySelect,\r\n};\r\n","import { rootMargin } from '@helpers/animate';\r\nimport { API_URLS } from '@helpers/api';\r\nimport { Icon, getSvgIcon } from '@helpers/icons';\r\nimport { withMotion } from '@hoc/withMotion';\r\nimport { withQueryParams } from '@hoc/withQueryParams';\r\nimport { useApi } from '@hooks/useApi';\r\nimport { useInView } from '@hooks/useInView';\r\nimport GenericCard from '@stories/Components/Cards/GenericCard/GenericCard';\r\nimport LoadingIndicator from '@stories/Components/Misc/LoadingIndicator/LoadingIndicator';\r\nimport Pagination from '@stories/Components/Misc/Pagination/Pagination';\r\nimport qs from 'qs';\r\nimport React from 'react';\r\nimport { useClickAway } from 'react-use';\r\nimport { NumberParam, StringParam, useQueryParams, withDefault } from 'use-query-params';\r\nimport { GenericListingStyles as S } from './GenericListing.styles';\r\nconst GenericListing = ({ itemText, sortByOptions, initialData, pageContext, translations, pathGuid, }) => {\r\n const [sortByOpen, setSortByOpen] = React.useState(false);\r\n const sortByRef = React.useRef(null);\r\n const [params, setParams] = useQueryParams(Object.assign({\r\n pageIndex: withDefault(NumberParam, 1),\r\n pageSize: withDefault(NumberParam, 8),\r\n sortBy: withDefault(StringParam, ''),\r\n }));\r\n useClickAway(sortByRef, () => {\r\n // Timeout to avoid race condition with onClick setting it to inverse of boolean //\r\n setTimeout(() => {\r\n if (sortByOpen) {\r\n setSortByOpen(false);\r\n }\r\n }, 100);\r\n });\r\n const [containerRef, inView] = useInView({ rootMargin }, false, pageContext?.isEditMode);\r\n const selectedSortBy = React.useMemo(() => {\r\n return sortByOptions.find((x) => x.id === params.sortBy);\r\n }, [params.sortBy, sortByOptions]);\r\n React.useEffect(() => {\r\n if (sortByOpen) {\r\n setSortByOpen(false);\r\n }\r\n }, [params.sortBy]);\r\n const api = useApi({\r\n initialData,\r\n url: `${API_URLS.downloads}?${qs.stringify({\r\n ...params,\r\n pathGuid,\r\n cultureCode: pageContext?.cultureCode,\r\n })}`,\r\n });\r\n return (React.createElement(S.Container, { ref: containerRef },\r\n React.createElement(S.TopFilterBar, { flush: \"both\" },\r\n api.data ? (React.createElement(S.AvailableText, null,\r\n React.createElement(\"strong\", null, api.data?.totalItems),\r\n \" \",\r\n itemText ?? 'items')) : (React.createElement(\"span\", null)),\r\n React.createElement(S.SortBy, { \"data-disabled\": api.status === 'loading' },\r\n React.createElement(S.SortBySelect, null,\r\n React.createElement(\"select\", { onChange: (e) => setParams({ sortBy: e.target.value, pageIndex: 1 }, 'push') },\r\n React.createElement(\"option\", { value: \"\" }, translations?.['generic-listing.sort-by'] ?? 'Sort By'),\r\n sortByOptions.map((x) => (React.createElement(\"option\", { key: `GenericListing_SortByOption_${x.id}`, value: x.id }, x.name))))),\r\n React.createElement(S.SortByContainer, { \"data-active\": sortByOpen, onClick: () => setSortByOpen(!sortByOpen) },\r\n React.createElement(\"span\", null,\r\n React.createElement(\"strong\", null, translations?.['generic-listing.sort-by'] ?? 'Sort By'),\r\n selectedSortBy ? `: ${selectedSortBy.name}` : ''),\r\n getSvgIcon(Icon.Chevron)),\r\n React.createElement(S.SortByDropdown, { ref: sortByRef, \"data-active\": sortByOpen }, sortByOptions.map((x) => (React.createElement(S.SortByDropdownItem, { key: `GenericListing_SortByOption_${x.id}` },\r\n React.createElement(\"button\", { onClick: () => setParams({ sortBy: x.id, pageIndex: 1 }, 'push') }, x.name))))))),\r\n React.createElement(S.ListingWrapper, null,\r\n React.createElement(S.Listing, null, api.data &&\r\n api.data.items.map((x) => (React.createElement(GenericCard, { key: `GenericListing_Item_${x.id}`, ...x, visible: inView })))),\r\n api.data && Math.floor(api.data?.totalItems / 8) > 0 && (React.createElement(Pagination, { hidePageCount: true, disabled: api.status === 'loading', currentPage: params.pageIndex, pageCount: Math.ceil(api.data?.totalItems / params.pageSize), onChange: (p) => {\r\n setParams({ pageIndex: p }, 'pushIn');\r\n /** timeout required to ensure scrolling occurs on prev/next buttons */\r\n setTimeout(() => containerRef.current?.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'start',\r\n inline: 'start',\r\n }), 50);\r\n }, translations: translations }))),\r\n api.status === 'loading' && (React.createElement(LoadingIndicator, { label: translations?.['listings.loading'] ?? 'Loading…', layout: \"fixed\" }))));\r\n};\r\nexport default withQueryParams(withMotion(GenericListing));\r\n","export var noop = function () { };\nexport function on(obj) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (obj && obj.addEventListener) {\n obj.addEventListener.apply(obj, args);\n }\n}\nexport function off(obj) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (obj && obj.removeEventListener) {\n obj.removeEventListener.apply(obj, args);\n }\n}\nexport var isBrowser = typeof window !== 'undefined';\nexport var isNavigator = typeof navigator !== 'undefined';\n"],"names":["imageUrl","image","imageParams","params","center","focalPoint","top","left","undefined","width","heightratio","height","Math","round","paramsString","queryString","src","getSrcs","upper","lower","steps","ratio","srcSet","sizes","increment","Array","fill","map","_","index","ceil","getRange","sizesArr","size","split","join","withMotion","WrappedComponent","displayName","name","ComponentWithMotion","props","React","LazyMotion","features","domAnimation","strict","withQueryParams","ComponentWithQueryParams","QueryParamProvider","ReactRouterRoute","Route","ComponentWithRouter","window","location","Error","StaticRouter","basename","context","BrowserRouter","withRouter","useApi","refAbortController","isFirstMount","useFirstMountState","data","setData","initialData","status","setStatus","validate","current","AbortController","async","signal","start","Date","now","res","fetch","url","cache","credentials","headers","Accept","method","resData","json","diff","sleep","doAsync","_refAbortController$c","abort","clear","callback","options","arguments","length","observerRef","useRef","rootRef","elementRef","useEffect","IntersectionObserver","root","observe","disconnect","useInView","reverse","isEditMode","inView","setInView","useState","useIntersectionObserver","entries","isIntersecting","queries","values","defaultValue","getValue","mediaQueryLists","findIndex","mql","matches","value","setValue","setMediaQueryLists","query","matchMedia","handler","forEach","addListener","removeListener","CommonSelectStyles","css","CommonTextInputStyles","CommonDropdownWrapperStyles","transition","svgChevron","styled","div","withConfig","componentId","select","fonts","poppins","regular","fluid","brand","primary","orangeDark","Input","input","Container","until","Device","MobileLarge","from","PaginationControls","stone","extraBold","tertiary","teal","white","PageDisplay","small","bold","PaginationStyles","PageButton","button","ButtonReset","ButtonStyles","black","_ref","_translations$listing","_translations$listing2","currentPage","pageCount","onChange","disabled","translations","isMobile","useMedia","S","onClick","FakeButton","buttonType","iconOnly","ReactPaginate","forcePage","pageRangeDisplayed","marginPagesDisplayed","breakLabel","onPageChange","s","selected","className","SectionWrapperCSS","m","section","SectionWrapperInnerCSS","siteWide","Inner","SectionWrapper","ref","id","children","layout","flush","variant","otherProps","GenericCardStyles","a","attrs","initial","animate","staggerChildren","orange","IconWrapper","Tablet","ImageWrapper","variants","hidden","opacity","visible","bounce","ease","duration","delayChildren","Content","CardTitle","h5","verticalFadeIn","CardContent","contentStyles","paragraphSmall","CtaWrapper","FeaturedTag","title","summary","downloadCta","isDirectDownload","featured","imageSizes","srcs","TabletSmall","download","href","target","loading","alt","altText","role","dangerouslySetInnerHTML","__html","icon","Icon","Download","Arrow","text","defaultEvents","TopFilterBar","SectionWrapperStyles","AvailableText","SortBy","SortByContainer","TabletLarge","SortBySelect","GenericListingStyles","SortByDropdown","ul","pointerEvents","SortByDropdownItem","li","darkStone","ListingWrapper","Listing","_api$data","_translations$generic","_translations$generic2","_api$data2","_api$data3","itemText","sortByOptions","pageContext","pathGuid","sortByOpen","setSortByOpen","sortByRef","setParams","useQueryParams","Object","assign","pageIndex","withDefault","NumberParam","pageSize","sortBy","StringParam","onClickAway","events","savedCallback","event","el","contains","_i","events_1","eventName","on","document","events_2","useClickAway","setTimeout","containerRef","rootMargin","selectedSortBy","find","x","api","API_URLS","downloads","qs","cultureCode","totalItems","e","key","getSvgIcon","Chevron","items","GenericCard","floor","Pagination","hidePageCount","p","_containerRef$current","scrollIntoView","behavior","block","inline","LoadingIndicator","label","obj","args","addEventListener","apply","off","removeEventListener","isBrowser"],"sourceRoot":""}