{"version":3,"sources":["webpack:///./src/components/common/SvgImage/index.tsx","webpack:///./src/components/common/Button/index.tsx","webpack:///./src/components/common/Hero/index.tsx","webpack:///./src/components/common/ImageWithFocalPoint/index.tsx","webpack:///./src/components/common/Link/index.tsx","webpack:///./src/components/common/Overlay/index.tsx","webpack:///./src/components/common/Stats/index.tsx","webpack:///./src/core/config/index.ts","webpack:///./src/contexts/Localizations/index.tsx","webpack:///./src/contexts/Localizations/defaultLocalizations.ts","webpack:///./src/components/common/Tag/index.tsx","webpack:///./src/components/common/Image/index.tsx","webpack:///./src/components/common/ImageObject/index.tsx","webpack:///./src/components/common/UnderlineTitle/index.tsx","webpack:///./src/components/common/Content/index.tsx","webpack:///./src/components/common/Contact/index.tsx","webpack:///./src/components/common/RichText/index.tsx","webpack:///./src/hooks/useHabitat.tsx","webpack:///./src/utilities/browser.ts","webpack:///./src/components/common/JumpList/index.tsx","webpack:///./src/breakpoints.ts","webpack:///./src/components/common/ResponsiveTable/index.tsx","webpack:///./src/components/common/DateCategory/index.tsx","webpack:///./src/components/common/Accordion/index.tsx","webpack:///./src/components/common/ImageBasic/index.tsx","webpack:///./src/components/common/Loader/index.tsx","webpack:///./src/components/common/SocialLinks/index.tsx","webpack:///./src/components/common/TagList/index.tsx","webpack:///./src/components/common/Paginaton/index.tsx","webpack:///./src/hooks/UseOutsideAlerter.ts","webpack:///./src/components/helpers/Container/index.tsx","webpack:///./src/configs.ts","webpack:///./src/utilities/objects.ts","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$"],"names":["title","reference","ariaHidden","className","aria-hidden","xlinkHref","type","style","text","icon","ariaLabel","disabled","showLoader","iconOnly","fullWidth","isProcessing","handleClick","buttonClass","onClick","aria-label","SvgImage","Hero","backLink","children","colorTheme","image","imageSize","isDarkened","isLanding","isForPage","root","classes","push","join","Container","href","url","ImageObject","fitType","useFocalPoint","aspectRatio","aspectRatioMobile","mobileImageTriggerWidth","widthSizes","isLoaded","hasTransparentBackground","focalPoint","setFocalPoint","file","details","xPercentile","x","width","yPercentile","y","height","Image","alt","cropTo","xQuadrant","yQuadrant","setFocalArea","isExternal","isButton","iconAfter","buttonType","buttonColour","target","rel","bodyElm","document","body","handleClose","id","hasCloseRedirect","containerLess","closeOverlay","classList","remove","overlayIsShowing","setTimeout","handleKeyUp","event","keyCode","add","window","addEventListener","removeEventListener","stats","discipline","head","slice","label","value","map","stat","key","config","env","apiUrl","webSettings","baseUrl","webUrl","storybookApi","localizations","shareConfig","shareUrl","mobileOnly","cookieConfig","cookiePolicy","cookiePolicyExpirationDays","xsrfRequestToken","translationsNotation","Object","assign","LocalizationContext","locale","documentElement","lang","translations","expand","mobileImageTriggerWidthDefault","md","aspectRatioMap","undefined","lowQualityWidth","media","data-sizes","data-srcset","widthSize","Math","ceil","parseInt","onLoad","objectPosition","data-src","innerWidth","defaultWidths","noAnimate","srcset","setSrcset","src","size","index","Number","containerTheme","intro","contact","content","link","secondaryLink","downloads","isTitleFloating","Boolean","download","toReadable","phoneNumber","split","replace","addr","length","tel","fax","email","website","facebook","instagram","twitter","dangerouslySetInnerHTML","__html","updateHabitat","insertUrlParam","includeHash","history","pushState","searchParams","URLSearchParams","location","search","set","newurl","protocol","host","pathname","toString","hash","path","getUrlParamValue","entries","hashes","indexOf","params","val","decodeURIComponent","getAllUrlParams","filter","param","isMobile","test","navigator","scrollIntoView","elemToScrollTo","behaviour","MSInputMethodContext","behavior","isPortrait","items","action","selectedValue","theme","useScroller","useSearch","name","disableFirst","withDatePicker","defaultDatePickerValue","onDateChange","includeDates","datePickerLocale","wrapperRef","setValue","isOpen","setIsOpen","options","setOptions","isClosing","setIsClosing","searchValue","setSearchValue","close","mapSelection","item","visible","handleChange","optionIndex","preventDefault","optionsSelection","selected","filteredOptions","option","displayText","toLowerCase","includes","createOption","role","createSearch","placeholder","calendar","searchLabel","onChange","currentTarget","ref","toggle","date","dateIndex","findIndex","format","inline","xxs","xs","sm","ml","lg","xl","xxl","xxxl","xxxxl","headers","rows","stickyCol","moreClassName","headerClassName","rowClassName","cellClassName","nested","isExpanded","setExpanded","rowExpandedStates","setRowExpandedStates","some","row","fromEntries","aria-expanded","header","alwaysVisible","hiddenOnMobile","trim","scope","rowIndex","Table","colIndex","Fragment","toggleExpandRow","colSpan","category","dateFormat","dateTime","AccordionPanel","activeTab","toggleTab","themeColor","isAsync","isResults","setHeight","asyncContentLoaded","setAsyncContentLoaded","wrapper","calculatePanelHeight","panelElement","current","ontransitionend","scrollHeight","requestAnimationFrame","props","onBeforeLoad","panels","panelsInState","setPanelsInState","mappedPanels","panel","useIntrinsicHeight","setIsLoaded","list","tags","tag","defaultProps","pageQueryKey","state","pages","firstPageIndex","lastPageIndex","previousPageIndex","nextPageIndex","currentPage","isFirstPageDisabled","isLastPageDisabled","totalAmountOfPages","isPreviousDisabled","isNextDisabled","maxVisiblePagesMobile","maxVisiblePagesDesktop","maxVisiblePages","componentDidMount","this","handdleMaxVisiblePages","stopPropagation","getPager","componentDidUpdate","prevProps","totalItems","itemsPerPage","setState","generateVisablePages","maxVisibleOffset","startPage","endPage","Array","from","s","l","viewportWidth","changePage","page","retainRoute","String","generateButton","isDisabled","rootLocation","render","handler","handleClickOutside","contains","CSS_CLASSES","isActive","isShowing","navIsShowing","DISCIPLINE","gravel","indoor","para","road","track","trials","other","isIdenticalObject","objectA","objectB","aProps","getOwnPropertyNames","bProps","i","propName","webpackContext","req","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","resolve","module","exports"],"mappings":"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","file":"habitat.3.component.js","sourcesContent":["import * as React from 'react';\r\n\r\ninterface SvgImageProps {\r\n title?: string;\r\n reference: string;\r\n ariaHidden?: boolean;\r\n className?: string;\r\n}\r\n\r\nconst SvgImage = ({\r\n title,\r\n reference,\r\n ariaHidden,\r\n className,\r\n}: SvgImageProps) => (\r\n \r\n {title && (\r\n {title}\r\n )}\r\n \r\n \r\n);\r\n\r\nexport default SvgImage;\r\n","import * as React from 'react';\r\nimport SvgImage from '../SvgImage';\r\nimport './styles.scss';\r\n\r\ninterface ButtonProps {\r\n type: 'button' | 'submit' | 'reset';\r\n style?: 'default' | 'secondary' | 'transparent' | 'uci';\r\n text?: string;\r\n icon?: {\r\n reference: string;\r\n title: string;\r\n } | undefined;\r\n role?: 'button';\r\n ariaLabel?: string;\r\n disabled?: boolean;\r\n showLoader?: boolean;\r\n iconOnly?: boolean;\r\n fullWidth?: boolean;\r\n isProcessing?: boolean;\r\n handleClick?: (event: React.MouseEvent) => void | undefined;\r\n}\r\n\r\nconst Button = ({\r\n type = 'button',\r\n style = 'default',\r\n text,\r\n icon,\r\n ariaLabel,\r\n disabled = false,\r\n showLoader = false,\r\n iconOnly = false,\r\n fullWidth = false,\r\n isProcessing = false,\r\n handleClick,\r\n}: ButtonProps) => {\r\n const buttonClass = `\r\n button\r\n button--${style}\r\n ${text && 'button--has-label'}\r\n ${icon && 'button--has-icon'}\r\n ${iconOnly && 'button--icon-only'}\r\n ${fullWidth && 'button--full-width'}\r\n ${showLoader && 'button--updating'}\r\n ${disabled && 'button--disabled'}\r\n ${isProcessing && 'button--processing'}\r\n `;\r\n\r\n return (\r\n \r\n {icon && (\r\n
\r\n \r\n
\r\n )}\r\n\r\n {text && (\r\n
\r\n {text}\r\n
\r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default Button;\r\n","import * as React from 'react';\r\n\r\nimport Container from '../../helpers/Container';\r\nimport ImageObject from '../ImageObject';\r\nimport SvgImage from '../SvgImage';\r\nimport { HeroBannerProps } from './type';\r\nimport './styles.scss';\r\n\r\nconst HeroBanner = ({\r\n ariaHidden,\r\n backLink,\r\n children,\r\n colorTheme = 'blue',\r\n image,\r\n imageSize = 'half',\r\n isDarkened,\r\n isLanding,\r\n isForPage,\r\n}: HeroBannerProps) => {\r\n const root = 'hero-banner';\r\n const classes = [\r\n root,\r\n `${root}--theme-${colorTheme}`,\r\n ];\r\n if (isDarkened) {\r\n classes.push(`${root}--darkened`);\r\n }\r\n if (image) {\r\n classes.push(`${root}--${imageSize}`);\r\n }\r\n if (!image) {\r\n classes.push(`${root}--no-image`);\r\n }\r\n if (isLanding) {\r\n classes.push(`${root}--landing`);\r\n }\r\n if (isForPage) {\r\n classes.push(`${root}--for-page`);\r\n }\r\n\r\n return (\r\n
\r\n
\r\n
\r\n \r\n
\r\n {backLink ? (\r\n \r\n \r\n {backLink?.title}\r\n \r\n ) : }\r\n
\r\n\r\n
\r\n {children}\r\n
\r\n
\r\n
\r\n
\r\n\r\n {!isLanding && (\r\n
\r\n {image && (\r\n
\r\n
\r\n \r\n
\r\n
\r\n )}\r\n
\r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default HeroBanner;\r\n","import * as React from 'react';\r\nimport { useEffect, useState } from 'react';\r\nimport { Image as ImageType } from '../../../typings';\r\nimport Image from '../Image';\r\n\r\ninterface ImageWithFocalPointProps {\r\n image: ImageType;\r\n aspectRatio: '2x1' | '16x9' | '3x2' | '4x3' | '1x1' | '4x5' | '2x3' | '6x1' | '6x7-promo';\r\n widthSizes?: string[];\r\n aspectRatioMobile?: '2x1' | '16x9' | '3x2' | '4x3' | '1x1' | '4x5' | '2x3' | '6x1' | '6x7-promo';\r\n mobileImageTriggerWidth?: number;\r\n isLoaded?: Function;\r\n hasTransparentBackground?: boolean;\r\n isDarkened?: boolean;\r\n}\r\n\r\nconst ImageWithFocalPoint = ({\r\n image,\r\n aspectRatio,\r\n aspectRatioMobile,\r\n mobileImageTriggerWidth,\r\n widthSizes,\r\n isLoaded,\r\n hasTransparentBackground = false,\r\n isDarkened = false, // passed as percentage 80 etc.\r\n}: ImageWithFocalPointProps) => {\r\n const [focalPoint, setFocalPoint] = useState(null);\r\n /*\r\n Set crop quadrant area as:\r\n 'center' | 'top' | 'right' | 'left' | 'bottom' | 'top_right' |\r\n 'top_left' | 'bottom_right' | 'bottom_left';\r\n Docs: https://www.contentful.com/developers/docs/references/images-api/#/reference/resizing-&-cropping/specify-focus-area\r\n We get x / y coords in pixels so we calculate percentage and\r\n then which area it falls into from there.\r\n */\r\n const setFocalArea = () => {\r\n if (!image.focalPoint) return 'center';\r\n if (!image.file || !image.file.details) return 'center';\r\n\r\n const xPercentile = (image.focalPoint.x / image.file.details.image.width) * 100;\r\n const yPercentile = (image.focalPoint.y / image.file.details.image.height) * 100;\r\n // eslint-disable-next-line no-nested-ternary\r\n const xQuadrant = xPercentile < 33 ? 'left' : xPercentile > 66 ? 'right' : 'center';\r\n // eslint-disable-next-line no-nested-ternary\r\n const yQuadrant = yPercentile < 33 ? 'top' : xPercentile > 66 ? 'bottom' : 'center';\r\n\r\n if (xQuadrant === 'center') {\r\n return yQuadrant;\r\n }\r\n if (yQuadrant === 'center') {\r\n return xQuadrant;\r\n }\r\n\r\n return `${yQuadrant}_${xQuadrant}`;\r\n };\r\n\r\n useEffect(() => {\r\n if (image.focalPoint && image.file.details) {\r\n const xPercentile = (image.focalPoint.x / image.file.details.image.width) * 100;\r\n const yPercentile = (image.focalPoint.y / image.file.details.image.height) * 100;\r\n setFocalPoint(`${xPercentile}% ${yPercentile}%`);\r\n }\r\n }, [image]);\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default ImageWithFocalPoint;\r\n","import * as React from 'react';\r\nimport SvgImage from '../SvgImage';\r\nimport { Link as LinkType } from '../../../typings';\r\nimport './styles.scss';\r\n\r\nconst Link = ({\r\n title,\r\n url,\r\n isExternal = false,\r\n isButton = false,\r\n icon,\r\n iconAfter,\r\n className = '',\r\n ariaLabel,\r\n buttonType = 'text-link',\r\n buttonColour = 'white',\r\n}: LinkType) => {\r\n const isDisabled = () => (\r\n url === null || url === ''\r\n );\r\n\r\n const root = 'link';\r\n const classes = [root, className];\r\n\r\n if (icon || iconAfter) {\r\n classes.push(`${root}--has-icon`);\r\n }\r\n\r\n if (isButton) {\r\n classes.push('button');\r\n }\r\n\r\n if (isDisabled()) {\r\n classes.push(`${root}--disabled`);\r\n }\r\n\r\n if (buttonType) {\r\n classes.push(buttonType);\r\n }\r\n\r\n if (buttonColour) {\r\n classes.push(`${root}--${buttonColour}`);\r\n }\r\n\r\n return (\r\n \r\n {icon && (\r\n
\r\n \r\n
\r\n )}\r\n {title}\r\n {iconAfter && (\r\n
\r\n \r\n
\r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default Link;\r\n","import * as React from 'react';\r\nimport { useEffect } from 'react';\r\nimport SvgImage from '../SvgImage';\r\nimport { CSS_CLASSES } from '../../../configs';\r\nimport './styles.scss';\r\n\r\nconst bodyElm = document.body;\r\n\r\ninterface OverlayProps {\r\n children: JSX.Element | JSX.Element[];\r\n handleClose: Function;\r\n style?: string;\r\n id?: string;\r\n hasCloseRedirect?: boolean;\r\n containerLess?: boolean;\r\n}\r\n\r\nconst Overlay = ({\r\n children,\r\n handleClose,\r\n style,\r\n id,\r\n hasCloseRedirect,\r\n containerLess,\r\n}: OverlayProps) => {\r\n const closeOverlay = () => {\r\n bodyElm.classList.remove(CSS_CLASSES.overlayIsShowing);\r\n /* timeout to allow animations to complete. */\r\n if (hasCloseRedirect) {\r\n handleClose();\r\n return;\r\n }\r\n setTimeout(() => {\r\n handleClose();\r\n }, 100);\r\n };\r\n\r\n const handleKeyUp = (event: React.KeyboardEvent) => {\r\n if (event.keyCode === 27) {\r\n closeOverlay();\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n bodyElm.classList.add(CSS_CLASSES.overlayIsShowing);\r\n /**\r\n * This needs some rework - note quite sure why it's built this way tbh\r\n */\r\n // @ts-ignore\r\n window.addEventListener('keyup', handleKeyUp);\r\n // @ts-ignore\r\n return () => window.removeEventListener('keyup', handleKeyUp);\r\n }, []);\r\n\r\n return (\r\n
\r\n
\r\n \r\n
\r\n {children}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Overlay;\r\n","import * as React from 'react';\r\nimport { Discipline } from '../../../core/typings';\r\nimport './styles.scss';\r\n\r\ntype Stat = {\r\n label: string;\r\n value: string;\r\n};\r\n\r\ninterface StatsProps {\r\n stats: Stat[];\r\n text?: string;\r\n discipline?: Discipline;\r\n}\r\n\r\nconst Stats = ({\r\n stats,\r\n text,\r\n discipline,\r\n}: StatsProps) => {\r\n const head = stats[0];\r\n const body = stats.slice(1);\r\n\r\n return (\r\n
\r\n
\r\n {text && (\r\n
{text}
\r\n )}\r\n\r\n
{head.label}
\r\n
{head.value}
\r\n\r\n {text && (\r\n
{text}
\r\n )}\r\n
\r\n
    \r\n {body.map((stat: Stat) => (\r\n \r\n
  • \r\n
    {stat.label}
    \r\n
    {stat.value}
    \r\n
  • \r\n
    \r\n ))}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Stats;\r\n","import LocalizationsState from '../typings/localization';\r\n\r\ndeclare const Config: AppConfiguration;\r\n\r\ndeclare const webSettings: {\r\n baseUrl: string;\r\n localizations: LocalizationsState;\r\n};\r\nexport interface AppConfiguration {\r\n env: string;\r\n apiUrl: string;\r\n webUrl: string;\r\n storybookApi?: string;\r\n localizations: LocalizationsState;\r\n}\r\n\r\nexport interface SharePlatformDetail {\r\n key: number;\r\n id: string;\r\n shareUrl: string | null;\r\n mobileOnly: boolean;\r\n}\r\n\r\nexport const config: AppConfiguration = {\r\n env: Config.env,\r\n apiUrl: `${webSettings.baseUrl}${Config.apiUrl}`,\r\n webUrl: webSettings.baseUrl,\r\n storybookApi: Config.storybookApi ? Config.storybookApi : undefined,\r\n localizations: webSettings.localizations,\r\n};\r\n\r\nexport interface CookieConfig {\r\n cookiePolicy: string;\r\n cookiePolicyExpirationDays: number;\r\n xsrfRequestToken: string;\r\n}\r\n\r\nexport const shareConfig: SharePlatformDetail[] = [\r\n {\r\n key: 1,\r\n id: 'facebook',\r\n shareUrl: 'https://www.facebook.com/sharer/sharer.php?u=',\r\n mobileOnly: false,\r\n },\r\n {\r\n key: 2,\r\n id: 'twitter',\r\n shareUrl: 'https://twitter.com/intent/tweet?url=',\r\n mobileOnly: false,\r\n },\r\n {\r\n key: 3,\r\n id: 'whatsapp',\r\n shareUrl: 'whatsapp://send?text=',\r\n mobileOnly: true,\r\n },\r\n {\r\n key: 4,\r\n id: 'copylink',\r\n shareUrl: null,\r\n mobileOnly: false,\r\n },\r\n];\r\n\r\nexport const cookieConfig: CookieConfig = {\r\n cookiePolicy: 'c_policy',\r\n cookiePolicyExpirationDays: 60,\r\n xsrfRequestToken: 'XSRF-REQUEST-TOKEN',\r\n};\r\n","import 'moment/locale/fr';\r\nimport { Notation } from 'notation';\r\nimport { createContext } from 'react';\r\nimport { config } from '../../core/config';\r\nimport LocalizationsState from '../../core/typings/localization';\r\nimport defaultLocalizations from './defaultLocalizations';\r\n\r\ninterface LocalizationsContextType {\r\n locale: string;\r\n translations: LocalizationsState;\r\n setTranslations: (TranslationsState: LocalizationsState) => void;\r\n}\r\n\r\n/**\r\n * Create a notation instance in order to use the notation\r\n * exapand method to mutate the translations to a nested\r\n * object rather than using the dot notation in the keys\r\n * set by the backend. Merge config.localizations with\r\n * defaultLocalizations to avoid missing labels\r\n */\r\nconst translationsNotation = new Notation(\r\n Object.assign(defaultLocalizations, config.localizations),\r\n);\r\n\r\nconst LocalizationContext = createContext(\r\n {\r\n locale: document.documentElement.lang,\r\n translations: translationsNotation.expand().value,\r\n } as LocalizationsContextType,\r\n);\r\n\r\nexport default LocalizationContext;\r\n","export default {\r\n 'cookieBanner.title': 'cookieBanner.title',\r\n 'cookieBanner.acceptText': 'cookieBanner.acceptText',\r\n 'header.forLabel': 'header.forLabel',\r\n 'header.usefulLinksLabel': 'header.usefulLinksLabel',\r\n 'footer.partnersLabel': 'footer.partnersLabel',\r\n 'footer.worldCyclingPartnersLabel': 'footer.worldCyclingPartnersLabel',\r\n 'footer.officialSupplierLabel': 'footer.officialSupplierLabel',\r\n 'relatedContent.title': 'relatedContent.title',\r\n 'competition.racesLabel': 'competition.racesLabel',\r\n 'competition.classLabel': 'competition.classLabel',\r\n 'competition.websiteLabel': 'competition.websiteLabel',\r\n 'competition.emailLabel': 'competition.emailLabel',\r\n 'competition.addressLabel': 'competition.addressLabel',\r\n 'competition.assignmentsLabel': 'competition.assignmentsLabel',\r\n 'competition.appointedByLabel': 'competition.appointedByLabel',\r\n 'calendar.latestLabel': 'calendar.latestLabel',\r\n 'calendar.upcomingLabel': 'calendar.upcomingLabel',\r\n 'calendar.pastLabel': 'calendar.pastLabel',\r\n 'calendar.raceHubLinkLabel': 'calendar.raceHubLinkLabel',\r\n 'calendar.raceCategoryLabel': 'calendar.raceCategoryLabel',\r\n 'calendar.raceTypeLabel': 'calendar.raceTypeLabel',\r\n 'calendar.raceClassLabel': 'calendar.raceClassLabel',\r\n 'calendar.eventTypeLabel': 'calendar.eventTypeLabel',\r\n 'calendar.disciplineLabel': 'calendar.disciplineLabel',\r\n 'calendar.raceYearLabel': 'calendar.raceYearLabel',\r\n 'calendar.searchLabel': 'calendar.searchLabel',\r\n 'calendar.searchText': 'calendar.searchText',\r\n 'calendar.noResults': 'calendar.noResults',\r\n 'calendar.viewMoreLabel': 'calendar.viewMoreLabel',\r\n 'calendar.moreFiltersLabel': 'calendar.moreFiltersLabel',\r\n 'calendar.noSearchResults': 'calendar.noSearchResults',\r\n 'calendar.applyFiltersLabel': 'calendar.applyFiltersLabel',\r\n 'calendar.downloadLabel': 'calendar.downloadLabel',\r\n 'calendar.downloadSelectionLabel': 'calendar.downloadSelectionLabel',\r\n 'calendar.downloadSeasonLabel': 'calendar.downloadSeasonLabel',\r\n 'calendar.downloadHelpText': 'calendar.downloadHelpText',\r\n 'competitionDetails.classLabel': 'competitionDetails.classLabel',\r\n 'competitionDetails.websiteLabel': 'competitionDetails.websiteLabel',\r\n 'competitionDetails.emailLabel': 'competitionDetails.emailLabel',\r\n 'competitionDetails.scheduleTitle': 'competitionDetails.scheduleTitle',\r\n 'competitionDetails.commissiaryTitle': 'competitionDetails.commissiaryTitle',\r\n 'competitionDetails.commissiaryAppointedBy': 'competitionDetails.commissiaryAppointedBy',\r\n 'filters.allFilterText': 'filters.allFilterText',\r\n 'filters.allDisciplinesText': 'filters.allDisciplinesText',\r\n 'filters.allSeasonsText': 'filters.allSeasonsText',\r\n 'filters.allCountriesText': 'filters.allCountriesText',\r\n 'filters.countryLabel': 'filters.countryLabel',\r\n 'filters.seasonLabel': 'filters.seasonLabel',\r\n 'filters.disciplineLabel': 'filters.disciplineLabel',\r\n 'discipline.bmx': 'discipline.bmx',\r\n 'discipline.cpt': 'discipline.cpt',\r\n 'discipline.cro': 'discipline.cro',\r\n 'discipline.ind': 'discipline.ind',\r\n 'discipline.mtb': 'discipline.mtb',\r\n 'discipline.par': 'discipline.par',\r\n 'discipline.pis': 'discipline.pis',\r\n 'discipline.roa': 'discipline.roa',\r\n 'discipline.tri': 'discipline.tri',\r\n 'discipline.gra': 'discipline.gra',\r\n 'discipline.bfr': 'discipline.bfr',\r\n 'discipline.ces': 'discipline.ces',\r\n 'event.dayLabel': 'event.dayLabel',\r\n 'event.liveNowLabel': 'event.liveNowLabel',\r\n 'event.fromLabel': 'event.fromLabel',\r\n 'event.upcomingLabel': 'event.upcomingLabel',\r\n 'event.liveStreamLabel': 'event.liveStreamLabel',\r\n 'event.liveScheduleLabel': 'event.liveScheduleLabel',\r\n 'event.todaysEventsLabel': 'event.todaysEventsLabel',\r\n 'event.watchPlaylistTitle': 'event.watchPlaylistTitle',\r\n 'homepage.liveEventLabel': 'homepage.liveEventLabel',\r\n 'riders.teamCategory': 'riders.teamCategory',\r\n 'riders.searchText': 'riders.searchText',\r\n 'riders.resultsLabel': 'riders.resultsLabel',\r\n 'riders.teamsLabel': 'riders.teamsLabel',\r\n 'riders.ridersLabel': 'riders.ridersLabel',\r\n 'riders.dobLabel': 'riders.dobLabel',\r\n 'riders.nationalityLabel': 'riders.nationalityLabel',\r\n 'riders.sanctionsLabel': 'riders.sanctionsLabel',\r\n 'regulations.overviewLabel': 'regulations.overviewLabel',\r\n 'regulations.rulesInForceLabel': 'regulations.rulesInForceLabel',\r\n 'regulations.upcomingAmendmentsLabel': 'regulations.upcomingAmendmentsLabel',\r\n 'regulations.versionOnLabel': 'regulations.versionOnLabel',\r\n 'regulations.inForceFromLabel': 'regulations.inForceFromLabel',\r\n 'news.latest': 'news.latest',\r\n 'news.noResultsText': 'news.noResultsText',\r\n 'raceHub.commentaryViewMore': 'raceHub.commentaryViewMore',\r\n 'search.searchLabel': 'search.searchLabel',\r\n 'contact.title': 'contact.title',\r\n 'contact.addr': 'contact.addr',\r\n 'contact.tel': 'contact.tel',\r\n 'contact.fax': 'contact.fax',\r\n 'contact.email': 'contact.email',\r\n 'contact.website': 'contact.website',\r\n 'contact.twitter': 'contact.twitter',\r\n 'rankingWidget.title': 'rankingWidget.title',\r\n 'rankingWidget.pointsLabel': 'rankingWidget.pointsLabel',\r\n 'rankingWidget.menLabel': 'rankingWidget.menLabel',\r\n 'rankingWidget.womenLabel': 'rankingWidget.womenLabel',\r\n 'rankingWidget.lastUpdatedLabel': 'rankingWidget.lastUpdatedLabel',\r\n 'rankingWidget.noRankingsLabel': 'rankingWidget.noRankingsLabel',\r\n 'technicalRankings.refineResultsLabel': 'technicalRankings.refineResultsLabel',\r\n 'technicalRankings.searchTeamLabel': 'technicalRankings.searchTeamLabel',\r\n 'technicalRankings.notesLabel': 'technicalRankings.notesLabel',\r\n 'technicalRankings.notesMenDisclaimer': 'technicalRankings.notesMenDisclaimer',\r\n 'technicalRankings.notesWomenDisclaimer': 'technicalRankings.notesWomenDisclaimer',\r\n 'technicalRankings.title': 'technicalRankings.title',\r\n 'technicalRankings.tableTotalLabel': 'technicalRankings.tableTotalLabel',\r\n 'technicalRankings.tableTypeLabel': 'technicalRankings.tableTypeLabel',\r\n};\r\n","import * as React from 'react';\r\nimport './styles.scss';\r\n\r\ninterface TagProps {\r\n text: string;\r\n url: string;\r\n}\r\n\r\nconst Tag = ({ text, url }: TagProps) => (\r\n {text}\r\n);\r\n\r\nexport default Tag;\r\n","/*\r\n Responsive image component.\r\n Details in /README.md\r\n */\r\n\r\nimport * as React from 'react';\r\nimport breakpoints from '../../../breakpoints';\r\nimport 'lazysizes';\r\nimport 'lazysizes/plugins/attrchange/ls.attrchange';\r\nimport './styles.scss';\r\n\r\nconst defaultWidth = '1000';\r\nconst defaultLowQualityWidth = '20';\r\nconst defaultAspectRatio = '16x9';\r\nconst mobileImageTriggerWidthDefault = breakpoints.md;\r\nconst imageQuality = 80;\r\n\r\nconst aspectRatioMap = {\r\n '2x1': 0.5,\r\n '16x9': 0.5625,\r\n '3x2': 0.667,\r\n '4x3': 0.75,\r\n '1x1': 1,\r\n '4x5': 1.2,\r\n '2x3': 1.5,\r\n '6x1': 0.59,\r\n '6x7-promo': 1.16,\r\n};\r\n\r\ninterface ImageProps {\r\n url: string;\r\n alt: string;\r\n aspectRatio?: '2x1' | '16x9' | '3x2' | '4x3' | '1x1' | '4x5' | '2x3' | '6x1' | '6x7-promo';\r\n focalPoint?: string | null;\r\n cropTo?: string | undefined;\r\n lowQualityWidth?: string;\r\n widthSizes?: string[];\r\n aspectRatioMobile?: '2x1' | '16x9' | '3x2' | '4x3' | '1x1' | '4x5' | '2x3' | '6x1' | '6x7-promo';\r\n mobileImageTriggerWidth?: number;\r\n isLoaded?: Function;\r\n hasTransparentBackground?: boolean;\r\n isDarkened?: boolean;\r\n}\r\n\r\nconst Image = ({\r\n url,\r\n alt,\r\n aspectRatio = defaultAspectRatio,\r\n aspectRatioMobile,\r\n mobileImageTriggerWidth = mobileImageTriggerWidthDefault,\r\n cropTo = undefined,\r\n widthSizes = [defaultWidth],\r\n lowQualityWidth = defaultLowQualityWidth,\r\n isLoaded,\r\n hasTransparentBackground = false,\r\n focalPoint,\r\n isDarkened = false, // passed as percentage 80 etc.\r\n}: ImageProps) => {\r\n const setAspectRatio = () => {\r\n if (!aspectRatioMobile) return aspectRatio;\r\n return window.innerWidth < mobileImageTriggerWidth ? aspectRatioMobile : aspectRatio;\r\n };\r\n\r\n return (\r\n \r\n {aspectRatioMobile && (\r\n (\r\n // @ts-ignore\r\n `${url}?fit=thumb&q=${imageQuality}&f=${cropTo || ''}&fl=progressive&w=${widthSize}&h=${Math.ceil(parseInt(widthSize, 10) * aspectRatioMap[aspectRatioMobile])} ${widthSize}w`\r\n ))\r\n }\r\n />\r\n )}\r\n\r\n {\r\n if (isLoaded) {\r\n isLoaded();\r\n }\r\n }}\r\n data-sizes=\"auto\"\r\n style={{ objectPosition: focalPoint || 'initial' }}\r\n // @ts-ignore\r\n data-src={`${url}?fit=thumb&w=${lowQualityWidth}&f=${cropTo || ''}&h=${Math.ceil(parseInt(lowQualityWidth, 10) * aspectRatioMap[setAspectRatio()])}`}\r\n data-srcset={\r\n widthSizes.map((widthSize) => (\r\n // @ts-ignore\r\n `${url}?fit=thumb&q=${imageQuality}&f=${cropTo || ''}&fl=progressive&w=${widthSize}&h=${Math.ceil(parseInt(widthSize, 10) * aspectRatioMap[aspectRatio])} ${widthSize}w`\r\n ))\r\n }\r\n className={`lazyload blur-up ${isDarkened ? 'has-opacity' : ''}`}\r\n alt={alt || 'image with no description'}\r\n />\r\n \r\n );\r\n};\r\n\r\nexport default Image;\r\n","import * as React from 'react';\r\nimport { useState, useEffect } from 'react';\r\nimport { Image as ImageType } from '../../../typings';\r\nimport 'lazysizes';\r\nimport 'lazysizes/plugins/attrchange/ls.attrchange';\r\nimport './styles.scss';\r\n\r\nconst defaultWidths = ['400', '800', '1200', '2400', '4000'];\r\n\r\nconst aspectRatioMap: Record = {\r\n '2x1': 0.5,\r\n '16x9': 0.5625,\r\n '3x2': 0.667,\r\n '4x3': 0.75,\r\n '1x1': 1,\r\n '4x5': 1.2,\r\n '2x3': 1.5,\r\n};\r\n\r\ninterface ImageObjectProps {\r\n image: ImageType;\r\n widthSizes?: string[];\r\n isDarkened?: boolean;\r\n useFocalPoint?: boolean;\r\n fitType?: 'contain' | 'cover'\r\n isLoaded?: () => void;\r\n noAnimate?: boolean;\r\n aspectRatio?: string;\r\n}\r\n\r\ninterface FocalStyle {\r\n objectPosition: string;\r\n}\r\n\r\nconst ImageObject = ({\r\n image,\r\n widthSizes = defaultWidths,\r\n aspectRatio,\r\n isDarkened = false,\r\n useFocalPoint = true,\r\n fitType = 'cover',\r\n isLoaded,\r\n noAnimate,\r\n}: ImageObjectProps) => {\r\n const [focalPoint, setFocalPoint] = useState();\r\n const [srcset, setSrcset] = useState();\r\n\r\n useEffect(() => {\r\n if (image.focalPoint) {\r\n // @ts-ignore\r\n const xPercentile = (image.focalPoint.x / image.file.details?.image?.width) * 100;\r\n // @ts-ignore\r\n const yPercentile = (image.focalPoint.y / image.file.details?.image?.height) * 100;\r\n setFocalPoint({\r\n objectPosition: `${xPercentile}% ${yPercentile}%`,\r\n });\r\n }\r\n\r\n const src = widthSizes\r\n .map((size: string, index: number) => `${image.file.url}?fit=thumb&fl=progressive&w=${size}&h=${aspectRatio ? Math.ceil(Number(widthSizes[index]) * aspectRatioMap[aspectRatio]) : ''} ${size}w`);\r\n\r\n setSrcset(src.join(','));\r\n }, [image]);\r\n\r\n const classes = [\r\n 'image-object',\r\n `image-object--${fitType}`,\r\n 'lazyload',\r\n ];\r\n if (isDarkened) {\r\n classes.push('has-opacity');\r\n }\r\n if (noAnimate) {\r\n classes.push('image-object--no-animate');\r\n }\r\n\r\n return (\r\n isLoaded?.()}\r\n data-sizes=\"auto\"\r\n data-srcset={srcset}\r\n data-src={`${image.file.url}?fit=thumb&fl=progressive&w=${widthSizes[0]}&h=${aspectRatio ? Math.ceil(Number(widthSizes[0]) * aspectRatioMap[aspectRatio]) : ''}`}\r\n className={classes.join(' ')}\r\n alt={image.title ? image.title : 'image with no description'}\r\n style={useFocalPoint ? focalPoint : undefined}\r\n />\r\n );\r\n};\r\n\r\nexport default ImageObject;\r\n","import * as React from 'react';\r\nimport './styles.scss';\r\n\r\ninterface UnderlineTitleProps {\r\n title: string;\r\n containerTheme: string;\r\n className?: string;\r\n}\r\n\r\nconst UnderlineTitle = ({\r\n title,\r\n containerTheme,\r\n className,\r\n}: UnderlineTitleProps) => (\r\n

\r\n {title}\r\n

\r\n);\r\n\r\nexport default UnderlineTitle;\r\n","import * as React from 'react';\r\nimport { isEmpty } from 'lodash';\r\nimport useHabitat from '../../../hooks/useHabitat';\r\nimport './styles.scss';\r\nimport SvgImage from '../SvgImage';\r\nimport Contact from '../Contact';\r\nimport RichText from '../RichText';\r\nimport UnderlineTitle from '../UnderlineTitle';\r\nimport { Link, Contacts } from '../../../typings';\r\n\r\ninterface ContentProps {\r\n title?: string;\r\n intro?: string;\r\n contact?: Contacts;\r\n content?: string;\r\n link?: Link;\r\n secondaryLink?: Link;\r\n downloads?: Link[];\r\n containerTheme?: string;\r\n isTitleFloating?: boolean;\r\n}\r\n\r\nconst Content = ({\r\n title,\r\n intro,\r\n contact,\r\n content,\r\n link,\r\n secondaryLink,\r\n downloads,\r\n containerTheme = 'white',\r\n isTitleFloating,\r\n}: ContentProps) => {\r\n useHabitat();\r\n\r\n return (\r\n
\r\n {Boolean(title || contact) && (\r\n
\r\n {title && (\r\n \r\n )}\r\n\r\n {(contact && !isEmpty(contact)) && (\r\n \r\n )}\r\n
\r\n )}\r\n\r\n {!title && (\r\n <>\r\n {intro && (!contact || isEmpty(contact)) && (!title\r\n ?

{intro}

\r\n :

{intro}

)}\r\n \r\n )}\r\n
\r\n {title && (\r\n <>\r\n {intro && (contact || !isEmpty(contact)) && (title\r\n ?

{intro}

\r\n :

{intro}

)}\r\n \r\n )}\r\n\r\n {content && (\r\n \r\n )}\r\n\r\n {downloads && (\r\n
    \r\n {downloads.map((download) => (\r\n
  • \r\n \r\n {download.title}\r\n \r\n \r\n
  • \r\n ))}\r\n
\r\n )}\r\n\r\n {link && (\r\n /* eslint-disable-next-line react/jsx-no-target-blank */\r\n \r\n {link.title}\r\n \r\n \r\n )}\r\n {secondaryLink && (\r\n /* eslint-disable-next-line react/jsx-no-target-blank */\r\n \r\n {secondaryLink.title}\r\n \r\n \r\n )}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Content;\r\n","import * as React from 'react';\r\nimport { useContext } from 'react';\r\nimport SvgImage from '../SvgImage';\r\nimport { Contacts } from '../../../typings';\r\nimport LocalizationContext from '../../../contexts/Localizations';\r\nimport './styles.scss';\r\n\r\ninterface ContactProps {\r\n contact: Contacts;\r\n containerTheme: string;\r\n}\r\n\r\nconst Contact = ({\r\n contact,\r\n containerTheme,\r\n}: ContactProps) => {\r\n const { translations } = useContext(LocalizationContext);\r\n // Adds space between every characters apart from (0)\r\n // Required for screen readers to read phone numbers properly and include all character\r\n const toReadable = (phoneNumber: string): string => phoneNumber\r\n .split(' ')\r\n .join('')\r\n .split('')\r\n .join(' ')\r\n .replace('( 0 )', '(0)');\r\n\r\n return (\r\n
\r\n

\r\n {translations.contact.title}\r\n

\r\n\r\n
    \r\n {(contact.addr && contact.addr.length) && (\r\n
  • \r\n \r\n {`${translations.contact.addr}:`}\r\n \r\n {contact.addr}\r\n
  • \r\n )}\r\n {(contact.tel && contact.tel.length) && (\r\n
  • \r\n \r\n {`${translations.contact.tel}:`}\r\n \r\n \r\n {contact.tel}\r\n \r\n
  • \r\n )}\r\n {(contact.fax && contact.fax.length) && (\r\n
  • \r\n \r\n {`${translations.contact.fax}:`}\r\n \r\n \r\n {contact.fax}\r\n \r\n
  • \r\n )}\r\n {(contact.email && contact.email.length) && (\r\n
  • \r\n \r\n {`${translations.contact.email}:`}\r\n \r\n \r\n {contact.email}\r\n \r\n
  • \r\n )}\r\n {(contact.website && contact.website.length) && (\r\n
  • \r\n \r\n {`${translations.contact.website}:`}\r\n \r\n \r\n {contact.website}\r\n \r\n
  • \r\n )}\r\n
  • \r\n
      \r\n {(contact.facebook && contact.facebook.length) && (\r\n
    • \r\n \r\n \r\n \r\n
    • \r\n )}\r\n {(contact.instagram && contact.instagram.length) && (\r\n
    • \r\n \r\n \r\n \r\n
    • \r\n )}\r\n {(contact.twitter && contact.twitter.length) && (\r\n
    • \r\n \r\n \r\n \r\n
    • \r\n )}\r\n
    \r\n
  • \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Contact;\r\n","import * as React from 'react';\r\nimport './styles.scss';\r\n\r\ninterface RichTextProps {\r\n content: string;\r\n containerTheme: string;\r\n}\r\n\r\nconst RichText = ({\r\n content,\r\n containerTheme,\r\n}: RichTextProps) => (\r\n
\r\n \r\n
\r\n);\r\n\r\nexport default RichText;\r\n","import { useEffect } from 'react';\r\n\r\nconst useHabitat = (): Function => {\r\n useEffect(() => {\r\n if (window.updateHabitat) {\r\n window.updateHabitat();\r\n }\r\n }, []);\r\n\r\n return window.updateHabitat as Function;\r\n};\r\n\r\nexport default useHabitat;\r\n","import { Image } from '../typings/index';\r\n\r\ndeclare global {\r\n interface Document {\r\n documentMode?: any;\r\n }\r\n}\r\n\r\nconst isIE = () => (\r\n !!window.MSInputMethodContext && !!document.documentMode\r\n);\r\n\r\n// Insert url param\r\nconst insertUrlParam = (key: string, value: string, includeHash?: boolean) => {\r\n // @ts-ignore\r\n if (history.pushState) {\r\n const searchParams = new URLSearchParams(window.location.search);\r\n searchParams.set(key, value);\r\n let newurl = `${window.location.protocol}//${window.location.host}${window.location.pathname}?${searchParams.toString()}`;\r\n if (includeHash && window.location.hash) {\r\n newurl = `${newurl}${window.location.hash}`;\r\n }\r\n window.history.pushState({ path: newurl }, '', newurl);\r\n }\r\n};\r\n\r\n// Removes all query string entires\r\nconst removeAllQueryStrings = () => {\r\n const url = window.location.href.replace(/(\\?.*)|(@.*)/g, '');\r\n window.history.pushState({ path: url }, '', url);\r\n};\r\n\r\n// Get All url params\r\nconst getAllUrlParams = (search: string) => {\r\n const hashes = search.slice(search.indexOf('?') + 1).split('&');\r\n const params: { [key: string]: string } = {};\r\n hashes.map((hash) => {\r\n const [key, val] = hash.split('=');\r\n params[key] = decodeURIComponent(val);\r\n return true;\r\n });\r\n return params;\r\n};\r\n\r\n// Get param value\r\nconst getUrlParamValue = (key: any) => {\r\n const search = Object.entries(getAllUrlParams(window.location.href)).filter((param) => (\r\n param[0] === key\r\n ));\r\n return search[0] ? search[0][1] : null;\r\n};\r\n\r\n// Script exists in head of document.\r\n// Taken from: https://github.com/kaimallea/isMobile\r\nconst isMobile = () => (\r\n /Mobi/.test(navigator.userAgent)\r\n);\r\n\r\nconst scrollIntoView = (elemToScrollTo: HTMLElement, behaviour: ScrollBehavior) => {\r\n if (!isIE()) {\r\n elemToScrollTo.scrollIntoView({\r\n behavior: behaviour,\r\n });\r\n }\r\n};\r\n\r\nconst isPortrait = (image: Image) => (\r\n // @ts-ignore\r\n (image.file.details.image.height > image.file.details.image.width)\r\n);\r\n\r\nconst elementInViewport = (el: any) => {\r\n let top = el.offsetTop;\r\n let left = el.offsetLeft;\r\n const width = el.offsetWidth;\r\n const height = el.offsetHeight;\r\n\r\n while (el.offsetParent) {\r\n // eslint-disable-next-line no-param-reassign\r\n el = el.offsetParent;\r\n top += el.offsetTop;\r\n left += el.offsetLeft;\r\n }\r\n\r\n return (\r\n top >= window.pageYOffset\r\n && left >= window.pageXOffset\r\n && (top + height) <= (window.pageYOffset + window.innerHeight)\r\n && (left + width) <= (window.pageXOffset + window.innerWidth)\r\n );\r\n};\r\n\r\nconst toDataURL = (url: string, callback: Function) => {\r\n const xhr = new XMLHttpRequest();\r\n xhr.onload = () => {\r\n const reader = new FileReader();\r\n reader.onloadend = () => {\r\n if (callback) {\r\n callback(reader.result);\r\n }\r\n };\r\n reader.readAsDataURL(xhr.response);\r\n };\r\n xhr.open('GET', url);\r\n xhr.responseType = 'blob';\r\n xhr.send();\r\n};\r\n\r\nexport {\r\n insertUrlParam,\r\n getAllUrlParams,\r\n getUrlParamValue,\r\n removeAllQueryStrings,\r\n isMobile,\r\n scrollIntoView,\r\n isPortrait,\r\n elementInViewport,\r\n toDataURL,\r\n};\r\n","import * as React from 'react';\r\nimport {\r\n useContext, useState, useEffect, useRef,\r\n} from 'react';\r\nimport moment from 'moment';\r\nimport { fr } from 'date-fns/locale/fr';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport PerfectScrollbar from 'react-perfect-scrollbar';\r\nimport DatePicker, { registerLocale } from 'react-datepicker';\r\nimport useOutsideAlerter from '../../../hooks/UseOutsideAlerter';\r\nimport LocalizationContext from '../../../contexts/Localizations';\r\nimport SvgImage from '../SvgImage';\r\nimport './styles.scss';\r\n\r\nregisterLocale('fr', fr);\r\n\r\ninterface JumpListOption {\r\n displayText: string;\r\n value: string;\r\n selectedValue?: boolean;\r\n visible?: boolean;\r\n name?: string;\r\n}\r\n\r\ninterface JumpListProps {\r\n items: JumpListOption[];\r\n selectedValue?: string;\r\n action: Function;\r\n icon?: string;\r\n theme?: string;\r\n useScroller?: boolean;\r\n useSearch?: boolean;\r\n name?: string;\r\n disableFirst?: boolean;\r\n withDatePicker?: boolean;\r\n defaultDatePickerValue?: Date;\r\n onDateChange?: Function;\r\n includeDates?: Date[];\r\n datePickerLocale?: string;\r\n}\r\n\r\nconst JumpList = ({\r\n items,\r\n action,\r\n selectedValue,\r\n icon = 'icon-arrow-down',\r\n theme = 'default',\r\n useScroller = false,\r\n useSearch = false,\r\n name,\r\n disableFirst = false,\r\n withDatePicker = false,\r\n defaultDatePickerValue,\r\n onDateChange,\r\n includeDates,\r\n datePickerLocale,\r\n}: JumpListProps) => {\r\n const wrapperRef = useRef>(null);\r\n const [value, setValue] = useState();\r\n const [isOpen, setIsOpen] = useState(false);\r\n const [options, setOptions] = useState();\r\n const [isClosing, setIsClosing] = useState(false);\r\n const [searchValue, setSearchValue] = useState(null);\r\n const { translations } = useContext(LocalizationContext);\r\n\r\n /**\r\n * Closes the open view\r\n */\r\n const close = () => {\r\n setIsClosing(true);\r\n setTimeout(() => {\r\n setIsClosing(false);\r\n setIsOpen(false);\r\n if (useSearch) {\r\n setSearchValue(null);\r\n }\r\n }, useSearch ? 0 : 300);\r\n };\r\n\r\n /**\r\n * This will tigger the close method when the user\r\n * interacts outside wrapperRef\r\n */\r\n useOutsideAlerter(wrapperRef, () => {\r\n close();\r\n });\r\n\r\n /**\r\n * Toggle open/close\r\n * @param event\r\n * @returns\r\n */\r\n const toggle = (event?: React.MouseEvent) => {\r\n if (event) {\r\n event.preventDefault();\r\n }\r\n\r\n if (disableFirst) {\r\n return null;\r\n }\r\n\r\n if (isOpen) {\r\n return close();\r\n }\r\n\r\n return setIsOpen(!isOpen);\r\n };\r\n\r\n /**\r\n * This remaps the options base of the items and selectedValue\r\n * props.\r\n * @returns\r\n */\r\n const mapSelection = () => items.map((item, index) => ({\r\n ...item,\r\n name,\r\n selectedValue: item.value === selectedValue,\r\n visible: !(withDatePicker && defaultDatePickerValue && index > 4),\r\n }));\r\n\r\n /**\r\n * This handels the change event on the drop down.\r\n * @param event\r\n * @param optionIndex\r\n */\r\n const handleChange = (event: React.MouseEvent, optionIndex: number) => {\r\n event.preventDefault();\r\n setOptions(mapSelection());\r\n setValue(options ? options[optionIndex] : undefined);\r\n close();\r\n\r\n if (action && typeof action === 'function') {\r\n action(options ? options[optionIndex] : undefined);\r\n }\r\n };\r\n\r\n /**\r\n * Component has mounted hook\r\n */\r\n useEffect(() => {\r\n if (items.length) {\r\n const optionsSelection = mapSelection();\r\n setOptions(optionsSelection);\r\n }\r\n }, []);\r\n\r\n /**\r\n * Observe the options state to determine the selected value.\r\n * If a new value is selected with will trigger and setValue in state.\r\n */\r\n useEffect(() => {\r\n if (options) {\r\n const selected: JumpListOption = options.filter(\r\n (item: JumpListOption) => item.value === selectedValue,\r\n )[0];\r\n\r\n setValue(selected || options[0]);\r\n }\r\n }, [options, selectedValue]);\r\n\r\n /**\r\n * Observe the search value term to filter down the visible\r\n * option in the list. This is only applicable if the user\r\n * has turned on useSearch in props.\r\n */\r\n useEffect(() => {\r\n if (options) {\r\n if (searchValue === null || searchValue === '') {\r\n setOptions(mapSelection());\r\n } else {\r\n const filteredOptions: JumpListOption[] = options?.map((option) => ({\r\n ...option,\r\n visible: option.displayText.toLowerCase().includes(searchValue.toLowerCase()),\r\n }));\r\n\r\n setOptions(filteredOptions);\r\n }\r\n }\r\n }, [searchValue, selectedValue, items]);\r\n\r\n /**\r\n * Creates a list option\r\n * @param option\r\n * @param index\r\n * @returns\r\n */\r\n const createOption = (option: JumpListOption, index: number) => (\r\n
  • \r\n handleChange(event, index)}>\r\n {option.displayText}\r\n \r\n
  • \r\n );\r\n\r\n /**\r\n * Creates the search JSX controls. This is only applicable\r\n * if the user has turned on useSearch in props.\r\n * @returns\r\n */\r\n const createSearch = () => (\r\n
    \r\n (\r\n setSearchValue((event.currentTarget as HTMLInputElement).value)\r\n )}\r\n />\r\n {Boolean(!options?.filter((option) => option.visible).length) && (\r\n
    \r\n {`No selection found for ${searchValue}.`}\r\n {/* Needs Laguage label */}\r\n
    \r\n )}\r\n
    \r\n );\r\n\r\n /**\r\n * Creates the option list.\r\n * @returns\r\n */\r\n const createOptions = () => {\r\n if (useScroller) {\r\n return (\r\n
    \r\n {useSearch && createSearch()}\r\n \r\n <>\r\n {options && (\r\n
      \r\n {options?.map((option, key) => option.visible && createOption(option, key))}\r\n
    \r\n )}\r\n\r\n {withDatePicker && defaultDatePickerValue && (\r\n {\r\n if (onDateChange) {\r\n const dateIndex = options?.findIndex((option) => {\r\n const optionMoment = moment(option.value).format('DD-MM-YYYY');\r\n const selectedMoment = moment(date).format('DD-MM-YYYY');\r\n\r\n return optionMoment === selectedMoment;\r\n });\r\n\r\n if (dateIndex !== undefined && dateIndex >= 0) {\r\n onDateChange(date);\r\n\r\n handleChange(event, dateIndex);\r\n }\r\n }\r\n }}\r\n includeDates={includeDates}\r\n inline\r\n locale={datePickerLocale}\r\n />\r\n )}\r\n \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n return (\r\n
    \r\n {useSearch && createSearch()}\r\n {options && (\r\n
      \r\n {options?.map((option, key) => option.visible && createOption(option, key))}\r\n
    \r\n )}\r\n\r\n {withDatePicker && defaultDatePickerValue && (\r\n \r\n )}\r\n
    \r\n );\r\n };\r\n\r\n return (\r\n \r\n
    \r\n {value && (\r\n \r\n )}\r\n
    \r\n
    \r\n \r\n
    \r\n {createOptions()}\r\n \r\n );\r\n};\r\n\r\nexport default JumpList;\r\n","export default {\r\n xxs: 375,\r\n xs: 450,\r\n sm: 620,\r\n md: 768,\r\n ml: 870,\r\n lg: 1024,\r\n xl: 1300,\r\n xxl: 1440,\r\n xxxl: 1740,\r\n xxxxl: 1900,\r\n};\r\n","/* eslint-disable react/no-array-index-key */\r\nimport React, { useState, useEffect, Fragment } from 'react';\r\nimport SvgImage from '../SvgImage';\r\nimport './styles.scss';\r\n\r\ninterface ResponsiveTableProps {\r\n headers: {\r\n alwaysVisible: boolean;\r\n key: string;\r\n label: string;\r\n hiddenOnMobile?: boolean;\r\n }[];\r\n rows: {\r\n row: Record;\r\n Table?: JSX.Element;\r\n }[];\r\n stickyCol?: JSX.Element[];\r\n className?: string;\r\n moreClassName?: string;\r\n headerClassName?: string;\r\n rowClassName?: string;\r\n cellClassName?: string;\r\n nested?: boolean;\r\n}\r\n\r\nconst ResponsiveTable = ({\r\n headers,\r\n rows,\r\n stickyCol,\r\n className,\r\n moreClassName,\r\n headerClassName,\r\n rowClassName,\r\n cellClassName,\r\n nested,\r\n}: ResponsiveTableProps) => {\r\n const [isExpanded, setExpanded] = useState(false);\r\n const [rowExpandedStates, setRowExpandedStates] = useState>({});\r\n\r\n const toggleExpandTable = () => {\r\n setExpanded(!isExpanded);\r\n };\r\n\r\n const toggleExpandRow = (rowIndex: number) => {\r\n setRowExpandedStates({\r\n ...rowExpandedStates,\r\n [rowIndex]: !rowExpandedStates[rowIndex],\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n if (rows.some((row) => row.Table)) {\r\n setRowExpandedStates(Object.fromEntries(Object.entries(rows.map(() => false))));\r\n }\r\n }, []);\r\n\r\n return (\r\n
    \r\n {!nested && (\r\n
    \r\n \r\n Show details\r\n \r\n
    \r\n )}\r\n\r\n
    \r\n \r\n \r\n \r\n {stickyCol && (\r\n \r\n )}\r\n\r\n {headers.map((header) => (\r\n \r\n {header.label}\r\n \r\n ))}\r\n\r\n {rows.some((row) => row.Table) && (\r\n \r\n
    \r\n expand\r\n
    \r\n \r\n )}\r\n \r\n \r\n \r\n {rows.map(({ row, Table }, rowIndex) => (\r\n \r\n \r\n {headers.map((header, colIndex) => (\r\n \r\n {stickyCol && colIndex === 0 && (\r\n {stickyCol[rowIndex]}\r\n )}\r\n \r\n {row[header.key]}\r\n \r\n \r\n ))}\r\n\r\n {Table && (\r\n \r\n toggleExpandRow(rowIndex)}\r\n >\r\n \r\n \r\n \r\n )}\r\n \r\n {Table && (\r\n \r\n \r\n { Table }\r\n \r\n \r\n )}\r\n \r\n ))}\r\n \r\n \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default ResponsiveTable;\r\n","import * as React from 'react';\r\nimport moment from 'moment';\r\nimport { Link as LinkType } from '../../../typings';\r\nimport './styles.scss';\r\n\r\ninterface DateAndCategoryProps {\r\n date?: string;\r\n category?: LinkType;\r\n dateFormat?: string;\r\n}\r\n\r\nconst DateAndCategory = ({ date, category, dateFormat }: DateAndCategoryProps) => (\r\n
    \r\n {category && (\r\n \r\n )}\r\n {date && (\r\n \r\n )}\r\n\r\n
    \r\n);\r\n\r\nexport default DateAndCategory;\r\n","import * as React from 'react';\r\nimport { useState, useEffect, useRef } from 'react';\r\nimport useHabitat from '../../../hooks/useHabitat';\r\nimport Content from '../Content';\r\nimport { Discipline } from '../../../core/typings';\r\nimport './styles.scss';\r\n\r\ninterface AccordionPanelProps {\r\n index: number;\r\n activeTab: boolean;\r\n toggleTab: Function;\r\n label: string | JSX.Element;\r\n content: string | JSX.Element | JSX.Element[];\r\n themeColor: string;\r\n discipline?: string;\r\n isAsync?: boolean;\r\n isResults?: boolean;\r\n}\r\n\r\nconst AccordionPanel = ({\r\n index,\r\n activeTab,\r\n toggleTab,\r\n label,\r\n content,\r\n themeColor,\r\n discipline,\r\n isAsync,\r\n isResults,\r\n}: AccordionPanelProps) => {\r\n const [height, setHeight] = useState('0px');\r\n const [asyncContentLoaded, setAsyncContentLoaded] = useState(false);\r\n const wrapper = useRef(null);\r\n\r\n const calculatePanelHeight = () => {\r\n const panelElement = wrapper.current as HTMLDivElement;\r\n\r\n if (activeTab) {\r\n panelElement.ontransitionend = () => {\r\n setHeight('auto');\r\n };\r\n\r\n setHeight(`${panelElement.scrollHeight}px`);\r\n } else {\r\n panelElement.ontransitionend = null;\r\n\r\n setHeight(`${panelElement.scrollHeight}px`);\r\n\r\n requestAnimationFrame(() => {\r\n setHeight('0px');\r\n });\r\n }\r\n };\r\n\r\n const handleLoadedContent = () => {\r\n setAsyncContentLoaded(true);\r\n calculatePanelHeight();\r\n };\r\n\r\n useEffect(() => {\r\n calculatePanelHeight();\r\n }, [activeTab]);\r\n\r\n return (\r\n
    \r\n toggleTab(index)}\r\n >\r\n {label}\r\n \r\n \r\n {typeof content === 'string' && (\r\n
    \r\n \r\n
    \r\n )}\r\n\r\n {!isAsync && React.isValidElement(content) && content}\r\n\r\n {isAsync && (activeTab || asyncContentLoaded) && React.isValidElement(content) && (\r\n \r\n )}\r\n
    \r\n \r\n );\r\n};\r\n\r\nexport interface AccordionPanelType {\r\n label: string | JSX.Element;\r\n content: string | JSX.Element | JSX.Element[];\r\n}\r\n\r\ninterface AccordionProps {\r\n panels: AccordionPanelType[];\r\n themeColor: string;\r\n discipline?: Discipline;\r\n isResults?: boolean;\r\n}\r\n\r\ninterface PanelsState {\r\n label: string | JSX.Element;\r\n content: string | JSX.Element | JSX.Element[];\r\n activeTab: boolean;\r\n}\r\n\r\nconst Accordion = ({\r\n panels,\r\n themeColor,\r\n discipline,\r\n isResults,\r\n}: AccordionProps) => {\r\n const [panelsInState, setPanelsInState] = useState([]);\r\n useHabitat();\r\n\r\n const toggleTab = (index: number) => {\r\n const current: PanelsState[] = [...panelsInState];\r\n\r\n current[index].activeTab = !panelsInState[index].activeTab;\r\n setPanelsInState(current);\r\n };\r\n\r\n useEffect(() => {\r\n if (panels) {\r\n const mappedPanels: PanelsState[] = panels.map((panel) => ({\r\n ...panel,\r\n activeTab: false,\r\n }));\r\n\r\n setPanelsInState(mappedPanels);\r\n }\r\n }, []);\r\n\r\n return (\r\n
    \r\n {panelsInState && (\r\n <>\r\n {panelsInState.map((panel, index) => (\r\n \r\n ))}\r\n \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nexport default Accordion;\r\n","import * as React from 'react';\r\nimport { useState, useEffect } from 'react';\r\nimport { Image as ImageType } from '../../../typings';\r\nimport 'lazysizes';\r\nimport 'lazysizes/plugins/attrchange/ls.attrchange';\r\n\r\nconst defaultWidths = ['400', '800', '1200', '2400', '4000'];\r\n\r\ninterface ImageBasicProps {\r\n image: ImageType;\r\n widthSizes?: string[];\r\n isDarkened?: boolean;\r\n useIntrinsicHeight?: boolean;\r\n}\r\n\r\nconst ImageBasic = ({\r\n image,\r\n widthSizes = defaultWidths,\r\n isDarkened = false,\r\n useIntrinsicHeight,\r\n}: ImageBasicProps) => {\r\n const [isLoaded, setIsLoaded] = useState(false);\r\n const [srcset, setSrcset] = useState();\r\n\r\n useEffect(() => {\r\n const src = widthSizes\r\n .map((size: string) => `${image.file.url}?fit=thumb&fl=progressive&w=${size} ${size}w`);\r\n\r\n setSrcset(src.join(','));\r\n }, [image]);\r\n\r\n return (\r\n setIsLoaded(true)}\r\n />\r\n );\r\n};\r\n\r\nexport default ImageBasic;\r\n","import * as React from 'react';\r\n\r\nimport './styles.scss';\r\n\r\nconst Loader: React.FC = () => (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n);\r\n\r\nexport default Loader;\r\n","import * as React from 'react';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport SvgImage from '../SvgImage';\r\nimport './styles.scss';\r\n\r\ninterface SocialLinksProps {\r\n list: {\r\n name: string;\r\n url: string;\r\n type: string;\r\n }[];\r\n}\r\n\r\nconst SocialLinks = ({ list }: SocialLinksProps) => (\r\n
    \r\n \r\n
    \r\n);\r\n\r\nexport default SocialLinks;\r\n","import * as React from 'react';\r\nimport Tag from '../Tag';\r\nimport './styles.scss';\r\n\r\ninterface TagProps {\r\n tags: {\r\n text: string;\r\n url: string;\r\n }[];\r\n}\r\n\r\nconst TagList = ({ tags }: TagProps) => (\r\n
      \r\n {tags.map((tag) => (\r\n
    • \r\n \r\n
    • \r\n ))}\r\n
    \r\n);\r\n\r\nexport default TagList;\r\n","import * as React from 'react';\r\nimport { insertUrlParam } from '../../../utilities/browser';\r\nimport { isIdenticalObject } from '../../../utilities/objects';\r\nimport SvgImage from '../SvgImage';\r\nimport './styles.scss';\r\n\r\ninterface PaginationProps {\r\n totalItems: number;\r\n currentPage: number;\r\n itemsPerPage: number;\r\n handleClick?: Function;\r\n pageQueryKey?: string;\r\n retainRoute?: boolean;\r\n style?: string;\r\n}\r\n\r\ninterface PaginationState {\r\n pages: number[];\r\n firstPageIndex: number | undefined;\r\n lastPageIndex: number | undefined;\r\n previousPageIndex: number | undefined;\r\n nextPageIndex: number | undefined;\r\n totalItems?: number | undefined;\r\n currentPage: number | undefined;\r\n totalAmountOfPages: number | undefined;\r\n isFirstPageDisabled: boolean | undefined;\r\n isLastPageDisabled: boolean | undefined;\r\n isPreviousDisabled: boolean | undefined;\r\n isNextDisabled: boolean | undefined;\r\n // The below need to move to props with defaults\r\n maxVisiblePagesMobile: number;\r\n maxVisiblePagesDesktop: number;\r\n maxVisiblePages: number;\r\n}\r\n\r\n// move to prop with default value\r\nconst breakpoint = 620;\r\n\r\nconst defaultProps = {\r\n pageQueryKey: 'page',\r\n};\r\nexport default class Pagination extends React.Component {\r\n // eslint-disable-next-line react/static-property-placement\r\n static defaultProps = defaultProps;\r\n\r\n constructor(props: PaginationProps) {\r\n super(props);\r\n this.state = {\r\n pages: [],\r\n firstPageIndex: undefined,\r\n lastPageIndex: undefined,\r\n previousPageIndex: undefined,\r\n nextPageIndex: undefined,\r\n // totalItems: undefined,\r\n currentPage: undefined,\r\n isFirstPageDisabled: undefined,\r\n isLastPageDisabled: undefined,\r\n totalAmountOfPages: undefined,\r\n isPreviousDisabled: undefined,\r\n isNextDisabled: undefined,\r\n maxVisiblePagesMobile: 3,\r\n maxVisiblePagesDesktop: 5,\r\n maxVisiblePages: 5,\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n await this.handdleMaxVisiblePages(window.innerWidth);\r\n window.addEventListener('resize', async (event) => {\r\n event.stopPropagation();\r\n await this.handdleMaxVisiblePages(window.innerWidth);\r\n });\r\n\r\n this.getPager();\r\n }\r\n\r\n componentDidUpdate(prevProps: PaginationProps) {\r\n const hasPropsUpdated = isIdenticalObject(prevProps, this.props);\r\n if (!hasPropsUpdated) {\r\n this.getPager();\r\n }\r\n }\r\n\r\n /**\r\n * This handles setting the state of the pager.\r\n * Flags toggle display views on pager elements\r\n * and fetches and sets the visable page list\r\n * from generateVisablePages.\r\n */\r\n getPager() {\r\n const {\r\n totalItems,\r\n currentPage,\r\n itemsPerPage,\r\n } = this.props;\r\n\r\n const {\r\n maxVisiblePages,\r\n } = this.state;\r\n\r\n const totalAmountOfPages = Math.ceil(totalItems / itemsPerPage);\r\n const isFirstPageDisabled = (\r\n (!(currentPage > (Math.ceil(maxVisiblePages / 2)))) || totalAmountOfPages <= maxVisiblePages\r\n );\r\n const isLastPageDisabled = currentPage > totalAmountOfPages - Math.ceil(maxVisiblePages / 2)\r\n || totalAmountOfPages <= maxVisiblePages;\r\n const lastPageIndex = totalAmountOfPages;\r\n const previousPageIndex = (currentPage - 1);\r\n const isPreviousDisabled = !(currentPage - 1);\r\n const isNextDisabled = (currentPage + 1) > lastPageIndex;\r\n\r\n this.setState({\r\n pages: this.generateVisablePages(\r\n totalAmountOfPages,\r\n currentPage,\r\n ),\r\n firstPageIndex: 1,\r\n lastPageIndex,\r\n previousPageIndex,\r\n nextPageIndex: (currentPage + 1),\r\n // totalItems,\r\n currentPage,\r\n totalAmountOfPages,\r\n isFirstPageDisabled,\r\n isLastPageDisabled,\r\n isPreviousDisabled,\r\n isNextDisabled,\r\n });\r\n }\r\n\r\n /**\r\n * Generates and returns the list of visible\r\n * pages based on the current page and the\r\n * maxVisiblePages.\r\n * @param totalAmountOfPages\r\n * @param currentPage\r\n */\r\n generateVisablePages(totalAmountOfPages: number, currentPage: number) {\r\n const { maxVisiblePages } = this.state;\r\n const maxVisibleOffset = (maxVisiblePages % 2 === 0) ? 1 : 0.5;\r\n let startPage = 1;\r\n let endPage = (maxVisiblePages + 1);\r\n\r\n if (currentPage > 2) {\r\n startPage = (currentPage - (maxVisiblePages / 2 - maxVisibleOffset));\r\n endPage = (currentPage + (maxVisiblePages / 2 + maxVisibleOffset));\r\n }\r\n\r\n if (currentPage > (totalAmountOfPages - 2)) {\r\n startPage = (totalAmountOfPages - (maxVisiblePages - 1));\r\n endPage = totalAmountOfPages + 1;\r\n }\r\n\r\n if (totalAmountOfPages <= maxVisiblePages) {\r\n startPage = 1;\r\n endPage = totalAmountOfPages + 1;\r\n }\r\n\r\n return Array.from({\r\n length: (endPage - startPage),\r\n }, (s, l) => l + startPage);\r\n }\r\n\r\n /**\r\n * Checks the viewport width to determine the\r\n * maxVisiblePages based on mobile/desktop\r\n * @param viewportWidth\r\n */\r\n async handdleMaxVisiblePages(viewportWidth: number) {\r\n const {\r\n maxVisiblePagesMobile,\r\n maxVisiblePagesDesktop,\r\n totalAmountOfPages,\r\n currentPage,\r\n } = this.state;\r\n\r\n if (viewportWidth < breakpoint) {\r\n await this.setState({\r\n maxVisiblePages: maxVisiblePagesMobile,\r\n });\r\n } else {\r\n await this.setState({\r\n maxVisiblePages: maxVisiblePagesDesktop,\r\n });\r\n }\r\n\r\n this.setState({\r\n pages: this.generateVisablePages(\r\n totalAmountOfPages as number,\r\n currentPage as number,\r\n ),\r\n });\r\n }\r\n\r\n /**\r\n * Change page state handler\r\n * @param event\r\n * @param page\r\n */\r\n changePage(event: React.MouseEvent, page: number) {\r\n const {\r\n pageQueryKey,\r\n retainRoute,\r\n handleClick,\r\n } = this.props;\r\n\r\n event.preventDefault();\r\n insertUrlParam((pageQueryKey || ''), String(page), retainRoute);\r\n if (handleClick) {\r\n handleClick(page);\r\n }\r\n }\r\n\r\n /**\r\n * Generates the page buttons\r\n * @param page\r\n * @param text\r\n * @param isDisabled\r\n */\r\n generateButton(page: number, text: string, isDisabled: boolean) {\r\n const { retainRoute } = this.props;\r\n const rootLocation = retainRoute ? '' : `${window.location.pathname}?page=${page}`;\r\n return (\r\n (!isDisabled ? this.changePage(event, page) : null)}\r\n href={rootLocation}\r\n role=\"button\"\r\n >\r\n {text}\r\n \r\n );\r\n }\r\n\r\n render() {\r\n const {\r\n style,\r\n } = this.props;\r\n\r\n const {\r\n pages,\r\n firstPageIndex,\r\n lastPageIndex,\r\n previousPageIndex,\r\n nextPageIndex,\r\n currentPage,\r\n isFirstPageDisabled,\r\n isLastPageDisabled,\r\n isPreviousDisabled,\r\n isNextDisabled,\r\n totalAmountOfPages,\r\n } = this.state;\r\n\r\n return (\r\n
    \r\n
      \r\n\r\n {/* First page */}\r\n
    • \r\n {this.generateButton(firstPageIndex as number, '1', isFirstPageDisabled as boolean)}\r\n
    • \r\n\r\n {/* Page list */}\r\n {pages.map((item) => (\r\n
    • \r\n {this.generateButton(item, String(item), false)}\r\n
    • \r\n ))}\r\n\r\n {/* Last page */}\r\n
    • \r\n {this.generateButton(lastPageIndex as number, `${totalAmountOfPages}`, isLastPageDisabled as boolean)}\r\n
    • \r\n
    \r\n\r\n \r\n\r\n
    \r\n\r\n );\r\n }\r\n}\r\n","import { useEffect } from 'react';\r\n\r\nconst useOutsideAlerter = (ref: any, handler?: Function) => {\r\n useEffect(() => {\r\n const handleClickOutside = (event: MouseEvent) => {\r\n if (ref.current && !ref.current.contains(event.target)) {\r\n if (handler && typeof handler === 'function') {\r\n handler();\r\n }\r\n }\r\n };\r\n\r\n document.addEventListener('mousedown', handleClickOutside);\r\n return () => {\r\n document.removeEventListener('mousedown', handleClickOutside);\r\n };\r\n }, [ref]);\r\n};\r\n\r\nexport default useOutsideAlerter;\r\n","import * as React from 'react';\r\nimport './styles.scss';\r\n\r\ninterface ContainerProps {\r\n children: JSX.Element | JSX.Element[];\r\n}\r\n\r\nconst Container = ({ children }: ContainerProps) => (\r\n
    \r\n {children}\r\n
    \r\n);\r\n\r\nexport default Container;\r\n","import { Discipline, DisciplineCodes } from 'core/typings';\r\n\r\nimport {\r\n CookieConfig,\r\n SharePlatformDetail,\r\n} from './typings/configs';\r\n\r\nexport const COOKIE_CONFIG: CookieConfig = {\r\n cookiePolicy: 'c_policy',\r\n cookiePolicyExpirationDays: 60,\r\n xsrfRequestToken: 'XSRF-REQUEST-TOKEN',\r\n};\r\n\r\nexport const CSS_CLASSES = {\r\n isActive: 'is-open',\r\n isOpen: 'is-open',\r\n isShowing: 'is-showing',\r\n navIsShowing: 'nav-is-showing',\r\n overlayIsShowing: 'overlay-is-showing',\r\n};\r\n\r\nexport const SHARE_PLATFORM_DETAILS: SharePlatformDetail[] = [\r\n {\r\n id: 'facebook',\r\n shareUrl: 'https://www.facebook.com/sharer/sharer.php?u=',\r\n },\r\n {\r\n id: 'twitter',\r\n shareUrl: 'https://twitter.com/intent/tweet?url=',\r\n },\r\n {\r\n id: 'whatsapp',\r\n shareUrl: 'whatsapp://send?text=',\r\n },\r\n {\r\n id: 'copylink',\r\n shareUrl: null,\r\n },\r\n];\r\n\r\nexport const DISCIPLINE: Record = {\r\n 'bmx-freestyle': 'bfr',\r\n 'bmx-racing': 'bmx',\r\n 'cycling-esport': 'ces',\r\n 'cyclo-cross': 'cro',\r\n gravel: 'gra',\r\n indoor: 'ind',\r\n 'mountain-bike': 'mtb',\r\n para: 'par',\r\n road: 'roa',\r\n track: 'pis',\r\n trials: 'tri',\r\n other: 'cpt',\r\n};\r\n","/**\r\n * Checks if two objects are identical\r\n * This is a good method for prop checking in componentDidUpdate\r\n */\r\nconst isIdenticalObject = (objectA: any, objectB: any) => {\r\n const aProps = Object.getOwnPropertyNames(objectA);\r\n const bProps = Object.getOwnPropertyNames(objectB);\r\n\r\n if (aProps.length !== bProps.length) {\r\n return false;\r\n }\r\n\r\n // eslint-disable-next-line no-plusplus\r\n for (let i = 0; i < aProps.length; i++) {\r\n const propName = aProps[i];\r\n if (objectA[propName] !== objectB[propName]) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n};\r\n\r\n/**\r\n * Breaks arrar into chunks based on a specified size\r\n */\r\nconst arrChunks = (arr: any[], size: number) => {\r\n if (!Array.isArray(arr)) {\r\n throw new Error('Chunk expects argument one to be type of array.');\r\n }\r\n\r\n const len = {\r\n length: Math.ceil(arr.length / size),\r\n };\r\n\r\n return Array.from(len).map((value, index) => (\r\n arr.slice(index * size, (index * size) + size)\r\n ));\r\n};\r\n\r\n// Put asyncForEach into a module\r\nconst asyncForEach = async (array: any[], callback: Function) => {\r\n // eslint-disable-next-line no-plusplus\r\n for (let index = 0; index < array.length; index++) {\r\n // eslint-disable-next-line no-await-in-loop\r\n await callback(array[index], index, array);\r\n }\r\n};\r\n\r\nexport {\r\n isIdenticalObject,\r\n arrChunks,\r\n asyncForEach,\r\n};\r\n","var map = {\n\t\"./af\": 58,\n\t\"./af.js\": 58,\n\t\"./ar\": 59,\n\t\"./ar-dz\": 60,\n\t\"./ar-dz.js\": 60,\n\t\"./ar-kw\": 61,\n\t\"./ar-kw.js\": 61,\n\t\"./ar-ly\": 62,\n\t\"./ar-ly.js\": 62,\n\t\"./ar-ma\": 63,\n\t\"./ar-ma.js\": 63,\n\t\"./ar-sa\": 64,\n\t\"./ar-sa.js\": 64,\n\t\"./ar-tn\": 65,\n\t\"./ar-tn.js\": 65,\n\t\"./ar.js\": 59,\n\t\"./az\": 66,\n\t\"./az.js\": 66,\n\t\"./be\": 67,\n\t\"./be.js\": 67,\n\t\"./bg\": 68,\n\t\"./bg.js\": 68,\n\t\"./bm\": 69,\n\t\"./bm.js\": 69,\n\t\"./bn\": 70,\n\t\"./bn-bd\": 71,\n\t\"./bn-bd.js\": 71,\n\t\"./bn.js\": 70,\n\t\"./bo\": 72,\n\t\"./bo.js\": 72,\n\t\"./br\": 73,\n\t\"./br.js\": 73,\n\t\"./bs\": 74,\n\t\"./bs.js\": 74,\n\t\"./ca\": 75,\n\t\"./ca.js\": 75,\n\t\"./cs\": 76,\n\t\"./cs.js\": 76,\n\t\"./cv\": 77,\n\t\"./cv.js\": 77,\n\t\"./cy\": 78,\n\t\"./cy.js\": 78,\n\t\"./da\": 79,\n\t\"./da.js\": 79,\n\t\"./de\": 80,\n\t\"./de-at\": 81,\n\t\"./de-at.js\": 81,\n\t\"./de-ch\": 82,\n\t\"./de-ch.js\": 82,\n\t\"./de.js\": 80,\n\t\"./dv\": 83,\n\t\"./dv.js\": 83,\n\t\"./el\": 84,\n\t\"./el.js\": 84,\n\t\"./en-au\": 85,\n\t\"./en-au.js\": 85,\n\t\"./en-ca\": 86,\n\t\"./en-ca.js\": 86,\n\t\"./en-gb\": 87,\n\t\"./en-gb.js\": 87,\n\t\"./en-ie\": 88,\n\t\"./en-ie.js\": 88,\n\t\"./en-il\": 89,\n\t\"./en-il.js\": 89,\n\t\"./en-in\": 90,\n\t\"./en-in.js\": 90,\n\t\"./en-nz\": 91,\n\t\"./en-nz.js\": 91,\n\t\"./en-sg\": 92,\n\t\"./en-sg.js\": 92,\n\t\"./eo\": 93,\n\t\"./eo.js\": 93,\n\t\"./es\": 94,\n\t\"./es-do\": 95,\n\t\"./es-do.js\": 95,\n\t\"./es-mx\": 96,\n\t\"./es-mx.js\": 96,\n\t\"./es-us\": 97,\n\t\"./es-us.js\": 97,\n\t\"./es.js\": 94,\n\t\"./et\": 98,\n\t\"./et.js\": 98,\n\t\"./eu\": 99,\n\t\"./eu.js\": 99,\n\t\"./fa\": 100,\n\t\"./fa.js\": 100,\n\t\"./fi\": 101,\n\t\"./fi.js\": 101,\n\t\"./fil\": 102,\n\t\"./fil.js\": 102,\n\t\"./fo\": 103,\n\t\"./fo.js\": 103,\n\t\"./fr\": 40,\n\t\"./fr-ca\": 104,\n\t\"./fr-ca.js\": 104,\n\t\"./fr-ch\": 105,\n\t\"./fr-ch.js\": 105,\n\t\"./fr.js\": 40,\n\t\"./fy\": 106,\n\t\"./fy.js\": 106,\n\t\"./ga\": 107,\n\t\"./ga.js\": 107,\n\t\"./gd\": 108,\n\t\"./gd.js\": 108,\n\t\"./gl\": 109,\n\t\"./gl.js\": 109,\n\t\"./gom-deva\": 110,\n\t\"./gom-deva.js\": 110,\n\t\"./gom-latn\": 111,\n\t\"./gom-latn.js\": 111,\n\t\"./gu\": 112,\n\t\"./gu.js\": 112,\n\t\"./he\": 113,\n\t\"./he.js\": 113,\n\t\"./hi\": 114,\n\t\"./hi.js\": 114,\n\t\"./hr\": 115,\n\t\"./hr.js\": 115,\n\t\"./hu\": 116,\n\t\"./hu.js\": 116,\n\t\"./hy-am\": 117,\n\t\"./hy-am.js\": 117,\n\t\"./id\": 118,\n\t\"./id.js\": 118,\n\t\"./is\": 119,\n\t\"./is.js\": 119,\n\t\"./it\": 120,\n\t\"./it-ch\": 121,\n\t\"./it-ch.js\": 121,\n\t\"./it.js\": 120,\n\t\"./ja\": 122,\n\t\"./ja.js\": 122,\n\t\"./jv\": 123,\n\t\"./jv.js\": 123,\n\t\"./ka\": 124,\n\t\"./ka.js\": 124,\n\t\"./kk\": 125,\n\t\"./kk.js\": 125,\n\t\"./km\": 126,\n\t\"./km.js\": 126,\n\t\"./kn\": 127,\n\t\"./kn.js\": 127,\n\t\"./ko\": 128,\n\t\"./ko.js\": 128,\n\t\"./ku\": 129,\n\t\"./ku.js\": 129,\n\t\"./ky\": 130,\n\t\"./ky.js\": 130,\n\t\"./lb\": 131,\n\t\"./lb.js\": 131,\n\t\"./lo\": 132,\n\t\"./lo.js\": 132,\n\t\"./lt\": 133,\n\t\"./lt.js\": 133,\n\t\"./lv\": 134,\n\t\"./lv.js\": 134,\n\t\"./me\": 135,\n\t\"./me.js\": 135,\n\t\"./mi\": 136,\n\t\"./mi.js\": 136,\n\t\"./mk\": 137,\n\t\"./mk.js\": 137,\n\t\"./ml\": 138,\n\t\"./ml.js\": 138,\n\t\"./mn\": 139,\n\t\"./mn.js\": 139,\n\t\"./mr\": 140,\n\t\"./mr.js\": 140,\n\t\"./ms\": 141,\n\t\"./ms-my\": 142,\n\t\"./ms-my.js\": 142,\n\t\"./ms.js\": 141,\n\t\"./mt\": 143,\n\t\"./mt.js\": 143,\n\t\"./my\": 144,\n\t\"./my.js\": 144,\n\t\"./nb\": 145,\n\t\"./nb.js\": 145,\n\t\"./ne\": 146,\n\t\"./ne.js\": 146,\n\t\"./nl\": 147,\n\t\"./nl-be\": 148,\n\t\"./nl-be.js\": 148,\n\t\"./nl.js\": 147,\n\t\"./nn\": 149,\n\t\"./nn.js\": 149,\n\t\"./oc-lnc\": 150,\n\t\"./oc-lnc.js\": 150,\n\t\"./pa-in\": 151,\n\t\"./pa-in.js\": 151,\n\t\"./pl\": 152,\n\t\"./pl.js\": 152,\n\t\"./pt\": 153,\n\t\"./pt-br\": 154,\n\t\"./pt-br.js\": 154,\n\t\"./pt.js\": 153,\n\t\"./ro\": 155,\n\t\"./ro.js\": 155,\n\t\"./ru\": 156,\n\t\"./ru.js\": 156,\n\t\"./sd\": 157,\n\t\"./sd.js\": 157,\n\t\"./se\": 158,\n\t\"./se.js\": 158,\n\t\"./si\": 159,\n\t\"./si.js\": 159,\n\t\"./sk\": 160,\n\t\"./sk.js\": 160,\n\t\"./sl\": 161,\n\t\"./sl.js\": 161,\n\t\"./sq\": 162,\n\t\"./sq.js\": 162,\n\t\"./sr\": 163,\n\t\"./sr-cyrl\": 164,\n\t\"./sr-cyrl.js\": 164,\n\t\"./sr.js\": 163,\n\t\"./ss\": 165,\n\t\"./ss.js\": 165,\n\t\"./sv\": 166,\n\t\"./sv.js\": 166,\n\t\"./sw\": 167,\n\t\"./sw.js\": 167,\n\t\"./ta\": 168,\n\t\"./ta.js\": 168,\n\t\"./te\": 169,\n\t\"./te.js\": 169,\n\t\"./tet\": 170,\n\t\"./tet.js\": 170,\n\t\"./tg\": 171,\n\t\"./tg.js\": 171,\n\t\"./th\": 172,\n\t\"./th.js\": 172,\n\t\"./tk\": 173,\n\t\"./tk.js\": 173,\n\t\"./tl-ph\": 174,\n\t\"./tl-ph.js\": 174,\n\t\"./tlh\": 175,\n\t\"./tlh.js\": 175,\n\t\"./tr\": 176,\n\t\"./tr.js\": 176,\n\t\"./tzl\": 177,\n\t\"./tzl.js\": 177,\n\t\"./tzm\": 178,\n\t\"./tzm-latn\": 179,\n\t\"./tzm-latn.js\": 179,\n\t\"./tzm.js\": 178,\n\t\"./ug-cn\": 180,\n\t\"./ug-cn.js\": 180,\n\t\"./uk\": 181,\n\t\"./uk.js\": 181,\n\t\"./ur\": 182,\n\t\"./ur.js\": 182,\n\t\"./uz\": 183,\n\t\"./uz-latn\": 184,\n\t\"./uz-latn.js\": 184,\n\t\"./uz.js\": 183,\n\t\"./vi\": 185,\n\t\"./vi.js\": 185,\n\t\"./x-pseudo\": 186,\n\t\"./x-pseudo.js\": 186,\n\t\"./yo\": 187,\n\t\"./yo.js\": 187,\n\t\"./zh-cn\": 188,\n\t\"./zh-cn.js\": 188,\n\t\"./zh-hk\": 189,\n\t\"./zh-hk.js\": 189,\n\t\"./zh-mo\": 190,\n\t\"./zh-mo.js\": 190,\n\t\"./zh-tw\": 191,\n\t\"./zh-tw.js\": 191\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 229;"],"sourceRoot":""}