{"version":3,"file":"5292-c5095933415a31ade48a.js","mappings":"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","sources":["webpack://lcci/./src/img/icons/arrow-right.svg","webpack://lcci/./src/helpers/date.ts","webpack://lcci/./src/hooks/useResize.ts","webpack://lcci/./src/stories/Components/Buttons/CtaLink/CtaLink.styles.ts","webpack://lcci/./src/stories/Components/Buttons/CtaLink/CtaLink.tsx","webpack://lcci/./src/stories/Components/Listings/Pagination/Pagination.styles.ts","webpack://lcci/./src/stories/Components/Listings/Pagination/Pagination.tsx","webpack://lcci/./src/stories/Components/Cards/PublicationCard/PublicationCard.styles.ts","webpack://lcci/./src/stories/Components/Cards/PublicationCard/PublicationCard.tsx","webpack://lcci/./src/stories/Widgets/PublicationsListing/PublicationsListing.styles.ts","webpack://lcci/./src/stories/Widgets/PublicationsListing/PublicationsListing.tsx"],"sourcesContent":["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 SvgArrowRight(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0.04 0 13.16 11.99\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.2 5.999a.986.986 0 00-.254-.619L7.937.28a1.112 1.112 0 00-1.37-.075.91.91 0 00.01 1.313L10.099 5.1H.939a.9.9 0 100 1.8h9.16l-3.522 3.582a.961.961 0 00-.01 1.313 1.1 1.1 0 001.37-.075l5.009-5.1a.847.847 0 00.254-.619z\",\n fill: \"currentColor\"\n })));\n}\n\nexport default SvgArrowRight;","import format from 'date-fns/format';\r\nexport function formatDateISO(value) {\r\n const date = ensureDate(value);\r\n return date.toISOString();\r\n}\r\nexport function formatDate(value, formatString = 'MMMM do yyyy') {\r\n const date = ensureDate(value);\r\n return format(date, formatString);\r\n}\r\nexport function ensureDate(value) {\r\n let date = value;\r\n if (typeof date === 'string') {\r\n date = new Date(date);\r\n }\r\n return date;\r\n}\r\nfunction calculateDiffInDays(a, b) {\r\n const _MS_PER_DAY = 1000 * 60 * 60 * 24;\r\n // Discard the time and time-zone information.\r\n const utc1 = Date.UTC(a.getFullYear(), a.getMonth(), a.getDate());\r\n const utc2 = Date.UTC(b.getFullYear(), b.getMonth(), b.getDate());\r\n return Math.floor((utc2 - utc1) / _MS_PER_DAY);\r\n}\r\nexport function getDateDiff(start, end) {\r\n let diff = calculateDiffInDays(ensureDate(start), ensureDate(end));\r\n const years = Math.floor(diff / 365);\r\n const year_text = years === 1 ? 'year ' : 'years';\r\n diff %= 365;\r\n const months = Math.floor(diff / 30);\r\n const mon_text = months <= 1 ? 'month' : 'months';\r\n const days = diff % 30;\r\n const day_text = days <= 1 ? 'day' : 'days';\r\n return `${years !== 0 ? `${years} ${year_text}` : ''}${months !== 0 ? ` ${months} ${mon_text}` : ''}${days !== 0 ? ` ${days} ${day_text}` : ''}`;\r\n}\r\nexport function equalDates(startDate, endDate) {\r\n const sd = ensureDate(startDate);\r\n const ed = ensureDate(endDate);\r\n return sd.toDateString() === ed.toDateString();\r\n}\r\n","import debounce from 'lodash/debounce';\r\nimport * as React from 'react';\r\nexport function useResize(params) {\r\n const refWindowHeight = React.useRef();\r\n const refWindowWidth = React.useRef();\r\n const onResize = React.useCallback(debounce(() => {\r\n const prevHeight = refWindowHeight.current;\r\n const prevWidth = refWindowWidth.current;\r\n const newHeight = window.innerHeight;\r\n const newWidth = window.innerWidth;\r\n const shouldTrigger = params.on === 'both' ||\r\n (params.on === 'y' && prevHeight !== newHeight) ||\r\n (params.on === 'x' && prevWidth !== newWidth);\r\n if (shouldTrigger) {\r\n params.callback();\r\n }\r\n refWindowHeight.current = newHeight;\r\n refWindowWidth.current = newWidth;\r\n }, params.debounce), [params.debounce, params.on]);\r\n React.useEffect(() => {\r\n if (!params.callback) {\r\n return;\r\n }\r\n if (params.immediate) {\r\n onResize();\r\n }\r\n window.addEventListener('resize', onResize);\r\n return () => {\r\n window.removeEventListener('resize', onResize);\r\n };\r\n }, [params.on]);\r\n}\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, until } from '@helpers/media';\r\nimport styled from 'styled-components';\r\nconst Container = styled.a `\r\n ${ButtonReset};\r\n\r\n position: relative;\r\n display: inline-flex;\r\n align-items: center;\r\n color: var(--fgColor, ${brand.base.blue});\r\n ${fonts.apparat.semiBold}\r\n font-size: ${fluid(18, 26)};\r\n line-height: 1em;\r\n text-decoration: none;\r\n\r\n /* Mobile click styles - button should mimic press */\r\n @media ${until(Device.TabletLarge)} {\r\n ${transition('transform')};\r\n\r\n &:active {\r\n transform: translateY(1.5px);\r\n }\r\n }\r\n\r\n & > span {\r\n position: relative;\r\n }\r\n\r\n & > span::after {\r\n ${transition('transform')}\r\n\r\n content: '';\r\n position: absolute;\r\n bottom: 0;\r\n left: 0;\r\n display: block;\r\n background: var(--fgColor, ${brand.base.blue});\r\n height: 2px;\r\n transform: scaleX(0);\r\n transform-origin: center left;\r\n width: 100%;\r\n }\r\n\r\n svg {\r\n ${transition('transform')}\r\n\r\n display: block;\r\n color: var(--accentColor, ${brand.primary.orange});\r\n margin-left: 8px;\r\n width: 17px;\r\n }\r\n\r\n &:not(span):focus-visible,\r\n &:not(span).focus-ring,\r\n &:not(span):hover {\r\n & > span::after {\r\n transform: scaleX(1);\r\n }\r\n }\r\n\r\n &:not(span).focus-ring {\r\n outline: auto;\r\n outline-offset: 3px;\r\n outline-width: 2px;\r\n outline-style: solid;\r\n outline-color: var(--fgColor, ${brand.base.blue});\r\n }\r\n\r\n &[data-has-arrow='true']:not(span):focus-visible,\r\n &[data-has-arrow='true']:not(span):hover {\r\n svg {\r\n transform: translateX(${fluid(8, 12)});\r\n }\r\n }\r\n\r\n a:focus-visible span&,\r\n a:hover span&,\r\n button:focus-visible span&,\r\n button:hover span& {\r\n & > span::after {\r\n transform: scaleX(1);\r\n }\r\n }\r\n\r\n a:focus-visible span[data-has-arrow='true']&,\r\n a:hover span[data-has-arrow='true']&,\r\n button:focus-visible span[data-has-arrow='true']&,\r\n button:hover span[data-has-arrow='true']& {\r\n svg {\r\n transform: translateX(${fluid(8, 12)});\r\n }\r\n }\r\n`;\r\nconst CtaLinkStyles = {\r\n Container,\r\n};\r\nexport default CtaLinkStyles;\r\n","import { getButtonIcon } from '@helpers/getButtonIcon';\r\nimport SvgArrowRight from '@img/icons/arrow-right.svg';\r\nimport * as React from 'react';\r\nimport { FocusRing } from 'react-aria';\r\nimport S from './CtaLink.styles';\r\nconst CtaLink = ({ as = 'a', hasArrow = true, icon, children, ...props }) => {\r\n return (React.createElement(FocusRing, { focusRingClass: \"focus-ring\" },\r\n React.createElement(S.Container, { as: as, \"data-has-arrow\": !icon && hasArrow, ...props },\r\n React.createElement(\"span\", null, children),\r\n icon ? getButtonIcon(icon) : React.createElement(React.Fragment, null, hasArrow && React.createElement(SvgArrowRight, null)))));\r\n};\r\nexport default CtaLink;\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 { Device, until } from '@helpers/media';\r\nimport ButtonStyles from '@stories/Components/Buttons/Button/Button.styles';\r\nimport styled from 'styled-components';\r\nconst Wrapper = styled.div `\r\n display: block;\r\n user-select: none;\r\n margin-top: 40px;\r\n width: 100%;\r\n overflow: hidden;\r\n\r\n &[data-variant='white'] ul li {\r\n a,\r\n span {\r\n --colorFg: ${brand.white};\r\n --colorBorder: ${brand.white};\r\n\r\n --colorFgActive: ${brand.base.blue};\r\n --colorBgActive: ${brand.white};\r\n --colorBorderActive: ${brand.white};\r\n\r\n --colorFgComplete: ${brand.base.blue};\r\n --colorBgComplete: ${brand.white};\r\n }\r\n }\r\n\r\n ul {\r\n display: flex;\r\n flex-direction: row;\r\n place-content: center;\r\n place-items: center;\r\n width: 100%;\r\n\r\n li {\r\n ${transition('opacity')};\r\n\r\n display: inline-block;\r\n opacity: 1;\r\n padding: 0 6px;\r\n\r\n @media ${until(Device.Tablet)} {\r\n padding: 0 8px;\r\n }\r\n\r\n &:nth-child(2) {\r\n @media ${until(Device.Tablet)} {\r\n flex: 1 1 25%;\r\n display: flex;\r\n justify-content: flex-end;\r\n }\r\n }\r\n\r\n &:nth-last-child(2) {\r\n @media ${until(Device.Tablet)} {\r\n flex: 1 1 25%;\r\n }\r\n }\r\n\r\n a,\r\n span {\r\n ${transition('background-size, border-color, opacity')};\r\n ${fonts.apparat.semiBold};\r\n\r\n --borderWidth: 2px;\r\n\r\n --bgSize: 0% 100%;\r\n --colorFg: ${brand.primary.blue};\r\n --colorBg: transparent;\r\n --colorBorder: ${brand.primary.blue};\r\n\r\n --bgSizeActive: 100% 100%;\r\n --colorFgActive: ${brand.white};\r\n --colorBgActive: ${brand.primary.blue};\r\n --colorBorderActive: ${brand.primary.blue};\r\n\r\n --colorFgComplete: ${brand.white};\r\n --colorBgComplete: ${brand.base.blue};\r\n\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n border: var(--borderWidth, 0) solid var(--colorBorder, var(--colorBg));\r\n border-radius: ${fluid(24, 50)};\r\n background: var(--colorBg);\r\n background-image: linear-gradient(to right, var(--colorBgActive), var(--colorBgActive));\r\n background-repeat: no-repeat;\r\n background-size: var(--bgSize);\r\n color: var(--colorFg);\r\n height: ${fluid(40, 50)};\r\n text-decoration: none;\r\n user-select: none;\r\n width: ${fluid(40, 50)};\r\n position: relative;\r\n background-position: left center;\r\n font-size: ${fluid(16, 18)};\r\n }\r\n\r\n a {\r\n /* Mobile click styles - button should mimic press */\r\n @media ${until(Device.TabletLarge)} {\r\n ${transition('color, background-color, border-color, transform')};\r\n &:active {\r\n transform: translateY(1.5px);\r\n }\r\n }\r\n\r\n @supports selector(:focus-visible) {\r\n &:focus-visible {\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 &:hover {\r\n border-color: var(--colorBorderActive, var(--colorBgActive));\r\n color: var(--colorFgActive);\r\n background-size: var(--bgSizeActive);\r\n }\r\n\r\n &:active {\r\n outline: none;\r\n color: var(--colorFgComplete);\r\n background: var(--colorBgComplete);\r\n }\r\n }\r\n\r\n @supports not selector(:focus-visible) {\r\n &:focus {\r\n outline: none;\r\n }\r\n\r\n &:focus {\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 &:hover {\r\n border-color: var(--colorBorderActive, var(--colorBgActive));\r\n color: var(--colorFgActive);\r\n background-size: var(--bgSizeActive);\r\n }\r\n\r\n &:active {\r\n outline: none;\r\n color: var(--colorFgComplete);\r\n background: var(--colorBgComplete);\r\n }\r\n }\r\n }\r\n\r\n &.previous,\r\n &.next {\r\n @media ${until(Device.Tablet)} {\r\n flex: 1 0 50%;\r\n display: flex;\r\n }\r\n\r\n a {\r\n display: flex;\r\n border: none;\r\n background-color: transparent;\r\n color: var(--fgColour);\r\n border-radius: 5000px;\r\n\r\n &::after {\r\n content: none;\r\n }\r\n }\r\n }\r\n\r\n &.previous {\r\n transform: scaleX(-1);\r\n padding-left: 6px;\r\n padding-right: 6px;\r\n }\r\n\r\n &.next {\r\n padding-right: 0px;\r\n padding-left: 6px;\r\n }\r\n\r\n &.break {\r\n a {\r\n pointer-events: none;\r\n }\r\n }\r\n\r\n &.selected {\r\n a {\r\n color: var(--colorFgComplete);\r\n background: var(--colorBgComplete);\r\n }\r\n }\r\n\r\n &.disabled {\r\n cursor: default;\r\n opacity: 0.5;\r\n pointer-events: none;\r\n }\r\n }\r\n\r\n ${ButtonStyles.IconWrapper} svg {\r\n transform: none;\r\n }\r\n }\r\n`;\r\nexport default {\r\n Wrapper,\r\n};\r\n","import { Device, until } from '@helpers/media';\r\nimport Button from '@stories/Components/Buttons/Button/Button';\r\nimport React from 'react';\r\nimport ReactPaginate from 'react-paginate';\r\nimport { useMedia } from 'react-use';\r\nimport PaginationStyles from './Pagination.styles';\r\nconst Pagination = ({ pageIndex, pageSize, totalCount, onPageChange, variant = 'blue', }) => {\r\n const isMobile = useMedia(until(Device.Tablet), false);\r\n const pageRange = isMobile ? 1 : 3;\r\n return (React.createElement(PaginationStyles.Wrapper, { \"data-variant\": variant },\r\n React.createElement(ReactPaginate, { pageCount: Math.ceil(totalCount / pageSize), pageRangeDisplayed: pageRange, marginPagesDisplayed: 1, previousLabel: React.createElement(Button, { buttonType: variant === 'blue' ? 'blue-outline' : 'white-outline', icon: \"chevron\", iconOnly: true }), nextLabel: React.createElement(Button, { buttonType: variant === 'blue' ? 'blue-outline' : 'white-outline', icon: \"chevron\", iconOnly: true }), forcePage: pageIndex - 1, hrefBuilder: (page, pageCount) => page >= 1 && page <= pageCount ? `?pageIndex=${page}` : '/', hrefAllControls: true, onPageChange: ({ selected }) => {\r\n onPageChange(selected + 1);\r\n } })));\r\n};\r\nexport default Pagination;\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 { imageCoverContainer, imageWrapperPreserveRatio } from '@helpers/image';\r\nimport { Device, from, until } from '@helpers/media';\r\nimport { contentStyles } from '@helpers/typography';\r\nimport CtaLinkStyles from '@stories/Components/Buttons/CtaLink/CtaLink.styles';\r\nimport Image from '@stories/Components/Misc/Image/Image';\r\nimport styled from 'styled-components';\r\nconst Container = styled.article `\r\n --bgColor: ${brand.secondary.lightGrey};\r\n --borderColor: ${brand.primary.blueGrey};\r\n --fgColor: ${brand.base.blue};\r\n\r\n display: grid;\r\n gap: ${fluid(12, 24)};\r\n background-color: var(--bgColor);\r\n padding: ${fluid(28, 44)} ${fluid(20, 32)};\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n grid-template-columns: min(40%, 232px) 1fr;\r\n }\r\n`;\r\nconst ImageWrapper = styled.div `\r\n ${imageWrapperPreserveRatio(232, 306)};\r\n\r\n border: 1px solid var(--borderColor);\r\n max-width: 232px;\r\n\r\n @media ${until(Device.TabletLarge)} {\r\n width: 40%;\r\n }\r\n`;\r\nconst Img = styled(Image) `\r\n ${imageCoverContainer()}\r\n`;\r\nconst ContentWrapper = styled.div `\r\n display: flex;\r\n flex-direction: column;\r\n color: var(--fgColor);\r\n`;\r\nconst Date = styled.time `\r\n ${fonts.apparat.light};\r\n\r\n display: inline-block;\r\n font-size: ${fluid(12, 16)};\r\n line-height: 26px;\r\n margin: 0 0 18px;\r\n`;\r\nconst Title = styled.h3 `\r\n ${fonts.apparat.semiBold};\r\n\r\n font-size: ${fluid(18, 22)};\r\n line-height: ${fluid(24, 32)};\r\n margin: 0 0 18px;\r\n`;\r\nconst Content = styled.div `\r\n ${contentStyles};\r\n\r\n --lineHeight: ${fluid(26, 28)};\r\n --maxLines: 3;\r\n\r\n color: currentColor;\r\n margin: 0 0 22px;\r\n\r\n p {\r\n font-size: ${fluid(16, 18)};\r\n line-height: var(--lineHeight);\r\n }\r\n\r\n @media ${until(Device.TabletLarge)} {\r\n ${transition('max-height', 1)};\r\n\r\n max-height: 500px;\r\n overflow: hidden;\r\n margin-bottom: 18px;\r\n\r\n &[data-expanded='false'] {\r\n max-height: calc(var(--lineHeight) * var(--maxLines));\r\n }\r\n\r\n &[data-expanding='false'] {\r\n display: -webkit-box;\r\n -webkit-line-clamp: var(--maxLines);\r\n -webkit-box-orient: vertical;\r\n }\r\n }\r\n`;\r\nconst ReadMore = styled.div `\r\n ${transition('opacity')};\r\n\r\n visibility: hidden;\r\n opacity: 0;\r\n width: 100%;\r\n margin: 0 0 22px;\r\n\r\n &[data-visible='true'] {\r\n opacity: 1;\r\n visibility: visible;\r\n }\r\n\r\n ${CtaLinkStyles.Container}[data-has-arrow='false'] {\r\n svg {\r\n ${transition('transform')};\r\n\r\n width: 12px;\r\n }\r\n\r\n &:focus-visible,\r\n &:hover {\r\n svg {\r\n transform: translateY(3px);\r\n }\r\n }\r\n }\r\n\r\n &[data-expanded='true'] {\r\n ${CtaLinkStyles.Container}[data-has-arrow='false'] {\r\n svg {\r\n ${transition('transform')};\r\n\r\n transform: rotate(180deg);\r\n }\r\n\r\n &:focus-visible,\r\n &:hover {\r\n svg {\r\n transform: rotate(180deg) translateY(3px);\r\n }\r\n }\r\n }\r\n }\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n display: none;\r\n }\r\n`;\r\nconst SponsorsWrapper = styled.div `\r\n display: grid;\r\n gap: 12px;\r\n grid-template-columns: repeat(2, min(50%, 210px));\r\n border-top: 1px solid var(--borderColor);\r\n margin: auto 0 22px;\r\n padding: 22px 0 0;\r\n\r\n @media ${from(Device.TabletLarge)} {\r\n gap: 8px;\r\n }\r\n`;\r\nconst SponsorsTitle = styled.h4 `\r\n ${fonts.apparat.semiBold};\r\n\r\n grid-column: 1 / span 2;\r\n font-size: ${fluid(12, 18)};\r\n line-height: ${fluid(22, 28)};\r\n opacity: 0.5;\r\n`;\r\nconst Sponsor = styled.a `\r\n ${imageWrapperPreserveRatio(210, 117)};\r\n\r\n display: block;\r\n border: 1px solid var(--borderColor);\r\n border-radius: 8px;\r\n color: currentColor;\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 &.focus-ring,\r\n &:hover {\r\n ${Img} {\r\n transform: scale(1.05);\r\n }\r\n }\r\n\r\n ${Img} {\r\n ${transition('transform')};\r\n }\r\n\r\n /* Mobile click styles - button should mimic press */\r\n @media ${until(Device.TabletLarge)} {\r\n ${transition('transform')};\r\n\r\n &:active {\r\n transform: translateY(1.5px);\r\n }\r\n }\r\n`;\r\nconst ButtonsWrapper = styled.div `\r\n display: flex;\r\n flex-wrap: wrap;\r\n gap: ${fluid(18, 52)};\r\n border-top: 1px solid var(--borderColor);\r\n margin: auto 0 0;\r\n padding: 22px 0 0;\r\n\r\n ${Container}[data-has-sponsors='true'] & {\r\n margin-top: 22px;\r\n }\r\n\r\n ${CtaLinkStyles.Container}[data-has-arrow='false'] {\r\n svg {\r\n width: 22px;\r\n\r\n path:nth-child(2) {\r\n ${transition('transform')};\r\n }\r\n }\r\n\r\n &:focus-visible,\r\n &:hover {\r\n svg path:nth-child(2) {\r\n transform: translateY(3px);\r\n }\r\n }\r\n }\r\n\r\n ${CtaLinkStyles.Container} {\r\n font-size: ${fluid(18, 20)};\r\n line-height: 26px;\r\n\r\n @media ${until(Device.TabletLarge)} {\r\n text-transform: uppercase;\r\n }\r\n }\r\n`;\r\nconst PublicationCardStyles = {\r\n ButtonsWrapper,\r\n Container,\r\n Content,\r\n ContentWrapper,\r\n Date,\r\n ImageWrapper,\r\n Img,\r\n SponsorsTitle,\r\n SponsorsWrapper,\r\n Sponsor,\r\n Title,\r\n ReadMore,\r\n};\r\nexport default PublicationCardStyles;\r\n","import { formatDate, formatDateISO } from '@helpers/date';\r\nimport { getSrcs } from '@helpers/image';\r\nimport { Device, until } from '@helpers/media';\r\nimport { useResize } from '@hooks/useResize';\r\nimport CtaLink from '@stories/Components/Buttons/CtaLink/CtaLink';\r\nimport * as React from 'react';\r\nimport { FocusRing } from 'react-aria';\r\nimport S from './PublicationCard.styles';\r\nimport { linkAria } from '@helpers/utils';\r\nconst PublicationCard = (props) => {\r\n const elementRef = React.useRef(null);\r\n const [showReadMore, setShowReadMore] = React.useState(false);\r\n const [expanded, setExpanded] = React.useState(false);\r\n const [expanding, setExpanding] = React.useState(false);\r\n useResize({\r\n callback: readMoreCheck,\r\n debounce: 100,\r\n immediate: true,\r\n on: 'x',\r\n });\r\n const srcs = getSrcs(props.image, 232, 132, 3, 232 / 306);\r\n const sizes = `${until(Device.Tablet)} 40vw, ${until(Device.DesktopLarge)} 20vw, 232px`;\r\n return (React.createElement(S.Container, { \"data-has-sponsors\": props.sponsors && props.sponsors.length > 0 },\r\n React.createElement(S.ImageWrapper, null,\r\n React.createElement(S.Img, { src: srcs[0].split(' ')[0], srcSet: srcs.join(','), sizes: sizes, alt: props.image?.altText ?? props.title, loading: 'lazy' })),\r\n React.createElement(S.ContentWrapper, null,\r\n props.date && (React.createElement(S.Date, { dateTime: formatDateISO(props.date) }, formatDate(props.date, 'MMMM yyyy'))),\r\n React.createElement(S.Title, null, props.title),\r\n React.createElement(S.Content, { ref: elementRef, \"data-expanded\": expanded, \"data-expanding\": expanding, dangerouslySetInnerHTML: {\r\n __html: props.content,\r\n } }),\r\n React.createElement(S.ReadMore, { \"data-expanded\": expanded, \"data-visible\": showReadMore },\r\n React.createElement(CtaLink, { as: \"button\", onClick: () => {\r\n if (!expanded) {\r\n setExpanding(true);\r\n }\r\n else {\r\n setTimeout(() => {\r\n setExpanding(false);\r\n }, 1000);\r\n }\r\n setExpanded(!expanded);\r\n }, icon: \"chevron-down\" },\r\n \"Read \",\r\n expanded ? 'Less' : 'More')),\r\n props.sponsors && props.sponsors.length > 0 ? (React.createElement(S.SponsorsWrapper, null,\r\n React.createElement(S.SponsorsTitle, null, \"Sponsored By\"),\r\n props.sponsors.map((sponsor) => {\r\n if (!sponsor.cta) {\r\n return;\r\n }\r\n const logoSrcs = getSrcs(sponsor.logo, 210, 157, 3, 210 / 117);\r\n return (React.createElement(FocusRing, { key: sponsor.id, focusRingClass: \"focus-ring\" },\r\n React.createElement(S.Sponsor, { href: sponsor.cta.url, target: sponsor.cta.target, \"aria-label\": linkAria(sponsor.cta.text ?? '', sponsor.cta.target, props.translations && props.translations['lcci.link.newtab']) },\r\n React.createElement(S.Img, { src: logoSrcs[0].split(' ')[0], srcSet: logoSrcs.join(','), sizes: `${until(Device.Tablet)} 50vw, ${until(Device.DesktopLarge)} 30vw, 210px`, alt: sponsor.logo?.altText ?? sponsor.cta.text, loading: 'lazy' }))));\r\n }))) : null,\r\n props.cta || props.downloadUrl ? (React.createElement(S.ButtonsWrapper, null,\r\n props.cta && (React.createElement(CtaLink, { \"aria-label\": linkAria(props.cta.text ?? '', props.cta.target, props.translations && props.translations['lcci.link.newtab']), href: props.cta.url, target: props.cta.target }, props.cta.text)),\r\n props.downloadUrl && (React.createElement(CtaLink, { \"aria-label\": linkAria('Download', '_blank', props.translations && props.translations['lcci.link.newtab']), href: props.downloadUrl, target: \"_blank\", icon: \"download\" }, \"Download\")))) : null)));\r\n function readMoreCheck() {\r\n if (elementRef.current) {\r\n setShowReadMore(elementRef.current.scrollHeight > elementRef.current.getBoundingClientRect().height);\r\n }\r\n }\r\n};\r\nexport default PublicationCard;\r\n","import { fluid } from '@helpers/fluid';\r\nimport { baseGrid } from '@helpers/grid';\r\nimport { Device, from } from '@helpers/media';\r\nimport { h3, h4, paragraphLarge } from '@helpers/typography';\r\nimport PublicationCardStyles from '@stories/Components/Cards/PublicationCard/PublicationCard.styles';\r\nimport SectionWrapper from '@stories/Components/Misc/SectionWrapper/SectionWrapper';\r\nimport styled from 'styled-components';\r\nconst Container = styled(SectionWrapper) ``;\r\nconst Title = styled.h2 `\r\n ${h4};\r\n\r\n margin: 0 0 ${fluid(30, 56)} !important;\r\n\r\n h1& {\r\n ${h3};\r\n }\r\n`;\r\nconst ResultsContainer = styled.div `\r\n ${baseGrid};\r\n\r\n row-gap: var(--gutterWidth);\r\n\r\n ${PublicationCardStyles.Container} {\r\n grid-column: span 24;\r\n\r\n @media ${from(Device.Tablet)} {\r\n grid-column: span 12;\r\n }\r\n }\r\n`;\r\nconst NoResultsText = styled.p `\r\n ${paragraphLarge};\r\n\r\n grid-column: span 24;\r\n text-align: center;\r\n margin-top: ${fluid(16, 24)};\r\n`;\r\nconst PublicationsListingStyles = {\r\n Container,\r\n ResultsContainer,\r\n NoResultsText,\r\n Title,\r\n};\r\nexport default PublicationsListingStyles;\r\n","import { API_URLS } from '@helpers/api';\r\nimport { withQueryParams } from '@hoc/withQueryParams';\r\nimport { useApi } from '@hooks/useApi';\r\nimport PublicationCard from '@stories/Components/Cards/PublicationCard/PublicationCard';\r\nimport Filters from '@stories/Components/Listings/Filters/Filters';\r\nimport Pagination from '@stories/Components/Listings/Pagination/Pagination';\r\nimport LoadingIndicator from '@stories/Components/Misc/LoadingIndicator/LoadingIndicator';\r\nimport qs from 'query-string';\r\nimport * as React from 'react';\r\nimport { NumberParam, StringParam, useQueryParams, withDefault } from 'use-query-params';\r\nimport S from './PublicationsListing.styles';\r\nconst PublicationsListing = (props) => {\r\n const resultsRef = React.useRef(null);\r\n const [params, setParams] = useQueryParams(Object.assign({\r\n location: withDefault(StringParam, props.initialData.location ?? ''),\r\n pageIndex: withDefault(NumberParam, 1),\r\n pageSize: withDefault(NumberParam, 8),\r\n sortBy: withDefault(StringParam, props.sortOptions.value),\r\n }));\r\n const result = useApi({\r\n initialData: props.initialData,\r\n url: `${API_URLS.GET_PUBLICATIONS}?${qs.stringify(params)}`,\r\n });\r\n const sortOptions = {\r\n ...props.sortOptions,\r\n value: params.sortBy,\r\n onChange: (value) => {\r\n setParams({ sortBy: value, pageIndex: 1 }, 'pushIn');\r\n scrollToTop();\r\n },\r\n };\r\n return (React.createElement(S.Container, { id: props.anchorId },\r\n React.createElement(S.Title, { ...(props.titleType && props.titleType === 'h1' ? { as: 'h1' } : {}) }, props.title),\r\n React.createElement(Filters, { sortOptions: sortOptions, viewButtonLabel: \"\" }),\r\n result.data && (React.createElement(React.Fragment, null,\r\n renderResults(),\r\n result.data?.items?.length > 0 && (React.createElement(Pagination, { pageIndex: params.pageIndex, pageSize: params.pageSize, totalCount: result.data.totalCount, onPageChange: (value) => {\r\n setParams({ pageIndex: value }, 'pushIn');\r\n scrollToTop();\r\n } })))),\r\n result.status === 'loading' && React.createElement(LoadingIndicator, { label: \"Loading\\u2026\", layout: \"fixed\" })));\r\n function renderResults() {\r\n return (React.createElement(S.ResultsContainer, { ref: resultsRef }, !result.data?.items?.length ? (React.createElement(S.NoResultsText, null, \"No results found.\")) : (React.createElement(React.Fragment, null, result.data.items.map((item) => (React.createElement(PublicationCard, { key: item.id, ...item, translations: props.translations })))))));\r\n }\r\n function scrollToTop() {\r\n /** timeout required to ensure scrolling occurs on prev/next buttons */\r\n setTimeout(() => resultsRef.current?.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'start',\r\n inline: 'start',\r\n }), 50);\r\n }\r\n};\r\nexport default withQueryParams(PublicationsListing);\r\n"],"names":["_path","_extends","Object","assign","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","this","props","xmlns","viewBox","d","fill","formatDateISO","value","ensureDate","toISOString","formatDate","formatString","date","format","Date","getDateDiff","start","end","diff","a","b","utc1","UTC","getFullYear","getMonth","getDate","utc2","Math","floor","calculateDiffInDays","years","year_text","months","days","equalDates","startDate","endDate","sd","ed","toDateString","useResize","params","refWindowHeight","React","refWindowWidth","onResize","debounce","prevHeight","current","prevWidth","newHeight","window","innerHeight","newWidth","innerWidth","on","callback","immediate","addEventListener","removeEventListener","Container","styled","ButtonReset","brand","fonts","fluid","until","Device","transition","as","hasArrow","icon","children","FocusRing","focusRingClass","S","getButtonIcon","SvgArrowRight","Wrapper","ButtonStyles","pageIndex","pageSize","totalCount","onPageChange","variant","pageRange","useMedia","PaginationStyles","ReactPaginate","pageCount","ceil","pageRangeDisplayed","marginPagesDisplayed","previousLabel","Button","buttonType","iconOnly","nextLabel","forcePage","hrefBuilder","page","hrefAllControls","selected","from","ImageWrapper","imageWrapperPreserveRatio","Img","Image","imageCoverContainer","ContentWrapper","Title","Content","contentStyles","ReadMore","CtaLinkStyles","SponsorsWrapper","SponsorsTitle","Sponsor","ButtonsWrapper","elementRef","showReadMore","setShowReadMore","expanded","setExpanded","expanding","setExpanding","scrollHeight","getBoundingClientRect","height","srcs","getSrcs","image","sizes","sponsors","src","split","srcSet","join","alt","altText","title","loading","dateTime","ref","dangerouslySetInnerHTML","__html","content","CtaLink","onClick","setTimeout","map","sponsor","cta","logoSrcs","logo","id","href","url","linkAria","text","translations","downloadUrl","SectionWrapper","h4","h3","ResultsContainer","baseGrid","PublicationCardStyles","NoResultsText","paragraphLarge","withQueryParams","resultsRef","setParams","useQueryParams","location","withDefault","StringParam","initialData","NumberParam","sortBy","sortOptions","result","useApi","API_URLS","qs","onChange","scrollToTop","anchorId","titleType","Filters","viewButtonLabel","data","items","item","PublicationCard","Pagination","status","LoadingIndicator","label","layout","scrollIntoView","behavior","block","inline"],"sourceRoot":""}