{"version":3,"sources":["webpack:///./src/components/helpers/Container/index.tsx","webpack:///./src/configs.ts","webpack:///./src/utilities/objects.ts","webpack:///./node_modules/react-reveal/globals.js","webpack:///./node_modules/react-reveal/wrap.js","webpack:///./src/components/Carousel/index.tsx","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./node_modules/react-sticky-el/lib/render-props-version.js","webpack:///./src/core/api/models/index.ts","webpack:///./src/core/api/models/endpoints/news.ts","webpack:///./src/core/api/models/endpoints/contact.ts","webpack:///./src/core/api/models/endpoints/calendar.ts","webpack:///./src/core/api/models/endpoints/racehub.ts","webpack:///./src/core/api/models/endpoints/riders.ts","webpack:///./src/core/api/models/endpoints/rankings.ts","webpack:///./src/core/api/models/constants.ts","webpack:///./src/components/common/SvgImage/index.tsx","webpack:///./node_modules/react-reveal/Fade.js","webpack:///./node_modules/react-reveal/RevealBase.js","webpack:///./node_modules/react-reveal/Reveal.js","webpack:///./src/mutators/index.ts","webpack:///./node_modules/axios/lib/helpers/bind.js","webpack:///./node_modules/axios/lib/helpers/buildURL.js","webpack:///./node_modules/axios/lib/cancel/isCancel.js","webpack:///./node_modules/axios/lib/defaults.js","webpack:///./node_modules/axios/lib/adapters/xhr.js","webpack:///./node_modules/axios/lib/core/createError.js","webpack:///./node_modules/axios/lib/core/mergeConfig.js","webpack:///./node_modules/axios/lib/cancel/Cancel.js","webpack:///./node_modules/react-sticky-el/lib/index.js","webpack:///./node_modules/react-sticky-el/lib/helpers/events.js","webpack:///./node_modules/react-sticky-el/lib/helpers/find.js","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:///./node_modules/react-sticky-el/lib/helpers/getClosestTransformedParent.js","webpack:///./node_modules/react-sticky-el/lib/helpers/rect.js","webpack:///./node_modules/react-sticky-el/lib/basic-version.js","webpack:///./src/components/FlatFilterList/index.tsx","webpack:///./src/components/common/SearchField/index.tsx","webpack:///./src/components/FiltersPanel/index.tsx","webpack:///./src/core/config/index.ts","webpack:///./node_modules/axios/lib/axios.js","webpack:///./node_modules/axios/lib/core/Axios.js","webpack:///./node_modules/axios/lib/core/InterceptorManager.js","webpack:///./node_modules/axios/lib/core/dispatchRequest.js","webpack:///./node_modules/axios/lib/core/transformData.js","webpack:///./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack:///./node_modules/axios/lib/core/settle.js","webpack:///./node_modules/axios/lib/core/enhanceError.js","webpack:///./src/contexts/Localizations/index.tsx","webpack:///./src/contexts/Localizations/defaultLocalizations.ts","webpack:///./node_modules/axios/lib/helpers/cookies.js","webpack:///./node_modules/axios/lib/core/buildFullPath.js","webpack:///./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack:///./node_modules/axios/lib/helpers/combineURLs.js","webpack:///./node_modules/axios/lib/helpers/parseHeaders.js","webpack:///./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack:///./node_modules/axios/lib/cancel/CancelToken.js","webpack:///./node_modules/axios/lib/helpers/spread.js","webpack:///./node_modules/axios/lib/helpers/isAxiosError.js","webpack:///./src/components/CalendarItem/index.tsx","webpack:///./src/components/common/Tag/index.tsx","webpack:///./src/components/PageHeader/index.tsx","webpack:///./src/utilities/events.ts","webpack:///./src/components/CalendarMonth/index.tsx","webpack:///./src/components/common/Image/index.tsx","webpack:///./src/modules/Calendar/methods.ts","webpack:///./src/components/CompetitionCard/index.tsx","webpack:///./src/components/CompetitionCarousel/index.tsx","webpack:///./src/hooks/useTwitter.tsx","webpack:///./src/components/common/Tabs/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/Calendar/index.tsx","webpack:///./node_modules/js-file-download/file-download.js","webpack:///./src/components/common/Contact/index.tsx","webpack:///./src/components/CalendarItemsList/index.tsx","webpack:///./src/components/Sponsors/index.tsx","webpack:///./src/components/common/RichText/index.tsx","webpack:///./node_modules/axios/index.js","webpack:///./node_modules/axios/lib/utils.js","webpack:///./src/components/FeaturedCompetitionsList/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/components/helpers/Grid/index.tsx","webpack:///./src/hooks/UseOutsideAlerter.ts","webpack:///./src/modules/Discipline/index.tsx"],"names":["children","className","CSS_CLASSES","isActive","isOpen","isShowing","navIsShowing","overlayIsShowing","DISCIPLINE","gravel","indoor","para","road","track","trials","other","isIdenticalObject","objectA","objectB","aProps","Object","getOwnPropertyNames","bProps","length","i","propName","insertRule","e","sheet","cssRules","console","warn","hideAll","globalHide","exports","window","removeEventListener","namespace","document","defineProperty","value","cascade","n","t","o","r","s","Math","log","a","exp","animation","name","counter","effectMap","default","ssrFadeout","fadeOutEnabled","ssr","defaults","duration","delay","count","observerMode","raf","setTimeout","disableSsr","arguments","collapseend","ie10","floor","random","navigator","IntersectionObserverEntry","prototype","test","IntersectionObserver","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","querySelectorAll","appVersion","indexOf","performance","timing","domLoading","Date","now","createEvent","initEvent","element","createElement","head","appendChild","addEventListener","_interopRequireDefault","__esModule","_extends","assign","hasOwnProperty","call","when","in","_react2","Children","_RevealBase2","inEffect","outEffect","map","Fragment","module","title","slickConfig","large","containerTheme","viewMoreLink","controlInline","slider","sliderBody","hasSetPosition","setHasSetPosition","nextIsDisabled","setNextIsDisabled","previousIsDisabled","setPreviousIsDisabled","arrowsAreHidden","setArrowsAreHidden","checkSlickDisabled","slickNextButton","current","querySelector","slickPreviousButton","classList","contains","defaultSlickSettings","accessibility","dots","infinite","speed","slidesToShow","slidesToScroll","initialSlide","arrows","useTransform","responsive","breakpoint","settings","onInit","afterChange","paddleIcon","slickGoTo","type","disabled","onClick","slickPrev","aria-label","ariaHidden","reference","slickNext","iconAfter","ref","aria-hidden","webpackContext","req","id","webpackContextResolve","__webpack_require__","Error","code","keys","resolve","_react","_events","_find","_getClosestTransformedParent","_rect","obj","target","source","key","apply","this","_assertThisInitialized","self","ReferenceError","_setPrototypeOf","p","setPrototypeOf","__proto__","buildTopStyles","container","props","bottomOffset","hideOnBoundaryHit","top","height","width","boundaryBottom","position","bottom","buildBottomStyles","boundaryTop","buildStickyStyle","mode","isEqual","obj1","obj2","styles1","wrapperStyles","styles2","isFixed","field","Sticky","_Component","subClass","superClass","_this","_len","args","Array","_key","concat","holderEl","wrapperEl","el","scrollEl","boundaryEl","checkPositionIntervalId","lastMinHeight","state","holderStyles","holderRef","wrapperRef","updateScrollEl","updateBoundaryEl","checkPosition","_assertThisInitialize","_this$props","onFixedToggle","offsetTransforms","isIOSFixEnabled","dontUpdateHolderHeightWhenSticky","setState","getBoundingClientRect","holderRect","wrapperRect","boundaryRect","getRect","infiniteRect","scrollRect","offsets","closestTransformedParent","minHeight","iosRenderingFixStyles","transform","WebkitTransform","newState","error","create","constructor","_proto","_this$props2","topOffset","isIntersecting","hideOffset","unlisten","scrollElement","listen","boundaryElement","initialize","_this$props3","positionRecheckInterval","setInterval","componentDidUpdate","_ref","componentDidMount","componentWillUnmount","clearInterval","render","_this$state","Component","defaultProps","_default","news","contact","calendar","racehub","riders","rankings","getNews","pageIndex","pageSize","featuredArticleId","newsCategoryId","tag","get","apiUrl","params","postMail","entryId","email","phone","message","getUpcoming","discipline","raceCategory","raceType","raceClass","country","year","seasonId","getPast","getResult","eventCode","disciplineCode","raceName","getCwc","downloadCalendar","url","bearerToken","post","responseType","headers","Authorization","getCommentary","eventId","lastCommentId","getCompetitionRiders","page","countryCode","search","getRiders","category","getTeams","getRankings","currentYear","transition","DEFAULT","getFullYear","month","day","transitionDate","getRankingYear","getTechnicalRankings","CRO","ROA","xlinkHref","_objectWithoutProperties","make","distance","left","right","up","l","down","u","big","mirror","d","opposite","_","toString","lookup","f","y","b","v","c","_globals","Fade","out","forever","timeout","style","animationFillMode","reverse","_wrap2","_propTypes","_wrap","propTypes","bool","number","string","_typeof","Symbol","iterator","_slicedToArray","isArray","next","done","push","return","TypeError","_createClass","enumerable","configurable","writable","inOut","shape","func","isRequired","object","collapse","collapseEl","wait","force","appear","enter","exit","fraction","refProp","innerRef","onReveal","unmountOnExit","mountOnEnter","oneOfType","oneOf","ssrReveal","collapseOnly","contextTypes","transitionGroup","RevealBase","_classCallCheck","_possibleConstructorReturn","getPrototypeOf","isOn","getInitialCollapseStyle","opacity","savedChild","isShown","handleObserve","bind","revealHandler","makeHandler","reveal","resizeHandler","resize","saveRef","_inherits","childRef","observe","hasExited","visibility","dispatchEvent","animationEndTimeout","offsetHeight","parseInt","getComputedStyle","getPropertyValue","getDimensionValue","animationDuration","animationDelay","overflow","animationName","hasAppeared","animationIterationCount","cloneElement","getChild","animationEnd","invisible","onRevealTimeout","clearTimeout","intersectionRatio","disconnect","observer","threshold","spy","inViewport","animate","context","isMounting","getTop","pageYOffset","innerHeight","split","display","whiteSpace","toArray","round","onExited","only","_defineProperty","h","ticking","hidden","min","isListener","passive","offsetTop","parentNode","offsetParent","displayName","Reveal","durationOut","delayOut","countOut","foreverOut","effect","effectOut","O","_Fade2","filterItems","filteredCountries","filter","item","removeCountries","mappedItems","displayText","text","selectedValue","selected","fn","thisArg","utils","encode","val","encodeURIComponent","replace","paramsSerializer","serializedParams","isURLSearchParams","parts","forEach","isDate","toISOString","isObject","JSON","stringify","join","hashmarkIndex","slice","__CANCEL__","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","isUndefined","adapter","XMLHttpRequest","process","transformRequest","data","isFormData","isArrayBuffer","isBuffer","isStream","isFile","isBlob","isArrayBufferView","buffer","transformResponse","parse","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","validateStatus","status","common","method","merge","settle","cookies","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","createError","config","Promise","reject","requestData","requestHeaders","request","auth","username","password","unescape","btoa","fullPath","baseURL","open","toUpperCase","onreadystatechange","readyState","responseURL","responseHeaders","getAllResponseHeaders","response","responseText","statusText","onabort","onerror","ontimeout","timeoutErrorMessage","isStandardBrowserEnv","xsrfValue","withCredentials","read","undefined","toLowerCase","setRequestHeader","onDownloadProgress","onUploadProgress","upload","cancelToken","promise","then","cancel","abort","send","enhanceError","config1","config2","valueFromConfig2Keys","mergeDeepPropertiesKeys","defaultToConfig2Keys","directMergeKeys","getMergedValue","isPlainObject","mergeDeepProperties","prop","axiosKeys","otherKeys","Cancel","_renderPropsVersion","RenderPropSticky","events","cb","addListener","removeListener","elementsWithListeners","registeredListeners","event","idx","callbacks","realCallbacks","realListenersCnt","createListener","listener","addCallback","splice","removeCallback","selector","basicSelectors","getElementById","matchesMethodName","temp","parentElement","body","matches","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","icon","ariaLabel","showLoader","iconOnly","fullWidth","isProcessing","handleClick","buttonClass","SvgImage","Hero","backLink","colorTheme","image","imageSize","isDarkened","isLanding","isForPage","root","classes","Container","href","ImageObject","fitType","useFocalPoint","aspectRatio","aspectRatioMobile","mobileImageTriggerWidth","widthSizes","isLoaded","hasTransparentBackground","focalPoint","setFocalPoint","file","details","xPercentile","x","yPercentile","Image","alt","cropTo","xQuadrant","yQuadrant","setFocalArea","isExternal","isButton","buttonType","buttonColour","rel","bodyElm","handleClose","hasCloseRedirect","containerLess","closeOverlay","remove","handleKeyUp","keyCode","add","stats","label","stat","webkitTransform","nodeType","innerWidth","r1","r2","r1Top","r1Bottom","Infinity","wrapperClassName","stickyClassName","stickyStyle","rest","excluded","sourceKeys","_objectWithoutPropertiesLoose","queryParam","items","viewMoreLabel","action","allowMultipleSelection","cutOffIndex","setCutOffIndex","isViewMore","setIsViewmore","options","setOptions","values","setValues","mapSelection","mappedOptions","newValue","isSelected","findIndex","visible","handleCutOffIndex","screenWidth","outerWidth","breakpoints","md","optionsSelection","option","index","optionIndex","preventDefault","getNewState","selectedOption","isAllSelected","startsWith","existingIndex","opt","removedSelectionAll","handleChange","viewMoreAction","placeholder","callback","onSearchClear","onChange","currentTarget","htmlFor","hasSearch","visibleFilters","additionalFilters","visibleFilterCallback","additionalFilterCallback","searchLabel","searchPlaceholder","additionalFiltersApplyButtonLabel","additionalFiltersLabel","searchFieldCallback","searchTerm","disableSticky","disableFirst","themeColour","defaultDatePickerValue","onDateChange","includeDates","datePickerLocale","filters","isMobile","setIsMobile","isOverlayActive","setIsOverlayActive","selectedValues","setSelectedValues","selectedAdditionalValues","setSelectedAdditionalValues","handleIsMobile","checkForQueryParamValue","additional","queryStringParam","documentElement","querystringValue","filterItem","theme","entry","newSelection","handleSelection","useScroller","useSearch","withDatePicker","additionalFilter","Boolean","reduce","acc","handleMultipleSelection","env","webSettings","baseUrl","webUrl","storybookApi","localizations","shareConfig","shareUrl","mobileOnly","cookieConfig","cookiePolicy","cookiePolicyExpirationDays","xsrfRequestToken","Axios","mergeConfig","createInstance","defaultConfig","instance","extend","axios","instanceConfig","CancelToken","isCancel","all","promises","spread","isAxiosError","InterceptorManager","dispatchRequest","interceptors","chain","interceptor","unshift","fulfilled","rejected","shift","getUri","handlers","use","eject","transformData","throwIfCancellationRequested","throwIfRequested","reason","fns","normalizedName","toJSON","description","fileName","lineNumber","columnNumber","stack","translationsNotation","LocalizationContext","locale","lang","translations","expand","write","expires","path","domain","secure","cookie","isNumber","toGMTString","isString","match","RegExp","decodeURIComponent","isAbsoluteURL","combineURLs","requestedURL","relativeURL","ignoreDuplicateOf","parsed","line","trim","substr","originURL","msie","userAgent","urlParsingNode","resolveURL","setAttribute","protocol","host","hash","hostname","port","pathname","charAt","location","requestURL","executor","resolvePromise","token","arr","payload","colourCode","dates","detailsLink","raceHubLink","venue","continentCode","isUciEvent","links","heroImage","link","linksContainer","moreLinksContainer","linksTotalWidth","setLinksTotalWidth","hasResizeListener","setHasResizeListener","windowResized","setWindowResized","navOffset","setNavOffset","showDropdown","setShowDropdown","handleOverflow","containerWidth","clientWidth","handleNavOffset","lg","xl","eventType","throttled","margin","childNodes","total","childElement","offsetWidth","data-url","data-title","monthName","mobileImageTriggerWidthDefault","aspectRatioMap","lowQualityWidth","media","data-sizes","data-srcset","widthSize","ceil","onLoad","objectPosition","data-src","queryStringParamsKeyMap","mapQueryStringParams","mappedQueryParams","urlQueryParms","fromEntries","URLSearchParams","entries","includes","resetQueryString","searchParams","delete","history","pushState","generateQueryString","param","set","disciplineLink","isDownload","isPublished","publishingDate","isLive","cards","competitions","themeColor","standalone","Carousel","live","liveLabel","latest","latestLabel","upcoming","upcomingLabel","setIsLoaded","script","src","onload","isTwitterLoaded","tabId","useHabitat","role","tabIndex","aria-labelledby","Tab","date","aria-selected","nested","changeTabCallBack","isCalendar","isEvent","withScrollPaddles","scrollPaddlesShowing","setScrollPaddlesShowing","tabScrollContainer","tabScrollContent","tabPaddles","tabs","flat","child","tabPanels","find","tab","selectedTab","setSelectedTab","tabsRef","handlePaddleOnClick","direction","scrollValue","scrollLeft","scroll","behavior","scrollWidth","tabsWithDate","some","selectTab","onKeyDown","tabRefs","prevIndex","modulo","focus","nextIndex","navigateTabs","panel","defaultWidths","noAnimate","srcset","setSrcset","size","Number","disableUppercase","intro","content","secondaryLink","downloads","isTitleFloating","download","isPast","isCwcResult","calendarDownloadOptions","apiEndpoint","isFetchingData","setIsFetchingData","isDownloading","setIsDownloading","calendarMonths","setCalendarMonths","endPointFilters","setEndpointFilters","selectedMonthIndex","setSelectedMonthIndex","searchResults","setSearchResults","setSearchTerm","years","setYears","selectedYear","setSelectedYear","apiQueryParams","setApiQueryParams","apiError","setApiError","downloadOptions","setDownloadOptions","downloadParams","setDownloadParams","currentYearValue","nextYearValue","yearAfterNextValue","handleSearch","keyword","results","toLocaleLowerCase","handleFilterChange","upcomingPastData","cwcData","yearFilter","augustItems","pastCwcRaces","competitionDate","isBefore","selectedYearValue","downloadButtons","dataYear","validatedYear","checkedYear","IsGrouped","Language","Query","competitionClass","ReportTitle","String","isAll","restApiQueryParams","isMultipleSelected","defaultDownloadOptions","downloadSelectionLabel","downloadSeasonLabel","downloadPdfUrl","downloadXlsUrl","nextYearOptions","futureYear","nextTwoYearOptions","combinedDownloadOptions","Year","Country","Discipline","Category","RaceType","CompetitionClass","SeasonId","searchText","moreFiltersLabel","applyFiltersLabel","fileType","isFutureYear","futureYearValue","futureYearParams","handleDownload","downloadLabel","downloadHelpText","noResults","noSearchResults","filename","mime","bom","blob","Blob","msSaveBlob","blobURL","URL","createObjectURL","webkitURL","tempLink","click","removeChild","revokeObjectURL","toReadable","phoneNumber","addr","tel","fax","website","facebook","instagram","twitter","sponsors","logo","dangerouslySetInnerHTML","__html","isFunction","FormData","ArrayBuffer","isView","pipe","product","result","assignValue","str","stripBOM","charCodeAt","defaultCutOffIndex","nextScrollToId","setNextScrollToId","scrollToElement","updateHabitat","insertUrlParam","includeHash","newurl","getUrlParamValue","hashes","getAllUrlParams","scrollIntoView","elemToScrollTo","behaviour","MSInputMethodContext","isPortrait","setValue","setIsOpen","isClosing","setIsClosing","searchValue","setSearchValue","close","filteredOptions","createOption","createSearch","toggle","dateIndex","format","inline","xxs","xs","sm","ml","xxl","xxxl","xxxxl","rows","stickyCol","moreClassName","headerClassName","rowClassName","cellClassName","isExpanded","setExpanded","rowExpandedStates","setRowExpandedStates","row","aria-expanded","header","alwaysVisible","hiddenOnMobile","scope","rowIndex","Table","colIndex","toggleExpandRow","colSpan","dateFormat","dateTime","AccordionPanel","activeTab","toggleTab","isAsync","isResults","setHeight","asyncContentLoaded","setAsyncContentLoaded","wrapper","calculatePanelHeight","panelElement","ontransitionend","scrollHeight","onBeforeLoad","panels","panelsInState","setPanelsInState","mappedPanels","useIntrinsicHeight","list","tags","pageQueryKey","pages","firstPageIndex","lastPageIndex","previousPageIndex","nextPageIndex","currentPage","isFirstPageDisabled","isLastPageDisabled","totalAmountOfPages","isPreviousDisabled","isNextDisabled","maxVisiblePagesMobile","maxVisiblePagesDesktop","maxVisiblePages","handdleMaxVisiblePages","stopPropagation","getPager","prevProps","totalItems","itemsPerPage","generateVisablePages","maxVisibleOffset","startPage","endPage","from","viewportWidth","changePage","retainRoute","generateButton","isDisabled","rootLocation","overflowHidden","Column","isFlush","handler","handleClickOutside","disciplineIdMap","carousel","featuredCompetitions","hasRankings","disciplineId","pastLabel"],"mappings":"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","file":"habitat.8.component.js","sourcesContent":["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","\"use strict\";function insertRule(e){try{return sheet.insertRule(e,sheet.cssRules.length)}catch(e){console.warn(\"react-reveal - animation failed\")}}function cascade(e,n,t,o,r){var s=Math.log(o),i=Math.log(r),a=(i-s)/(t-n);return Math.exp(s+a*(e-n))}function animation(e){if(!sheet)return\"\";var n=\"@keyframes \"+(name+counter)+\"{\"+e+\"}\",t=effectMap[e];return t?\"\"+name+t:(sheet.insertRule(n,sheet.cssRules.length),effectMap[e]=counter,\"\"+name+counter++)}function hideAll(){globalHide||(exports.globalHide=globalHide=!0,window.removeEventListener(\"scroll\",hideAll,!0),insertRule(\".\"+namespace+\" { opacity: 0; }\"),window.removeEventListener(\"orientationchange\",hideAll,!0),window.document.removeEventListener(\"visibilitychange\",hideAll))}function config(e){var n=e.ssrFadeout;exports.fadeOutEnabled=fadeOutEnabled=n}Object.defineProperty(exports,\"__esModule\",{value:!0}),exports.insertRule=insertRule,exports.cascade=cascade,exports.animation=animation,exports.hideAll=hideAll,exports.default=config;var namespace=exports.namespace=\"react-reveal\",defaults=exports.defaults={duration:1e3,delay:0,count:1},ssr=exports.ssr=!0,observerMode=exports.observerMode=!1,raf=exports.raf=function(e){return window.setTimeout(e,66)},disableSsr=exports.disableSsr=function(){return exports.ssr=ssr=!1},fadeOutEnabled=exports.fadeOutEnabled=!1,ssrFadeout=exports.ssrFadeout=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return exports.fadeOutEnabled=fadeOutEnabled=e},globalHide=exports.globalHide=!1,ie10=exports.ie10=!1,collapseend=exports.collapseend=void 0,counter=1,effectMap={},sheet=!1,name=namespace+\"-\"+Math.floor(1e15*Math.random())+\"-\";if(\"undefined\"!=typeof window&&\"nodejs\"!==window.name&&window.document&&\"undefined\"!=typeof navigator){exports.observerMode=observerMode=\"IntersectionObserver\"in window&&\"IntersectionObserverEntry\"in window&&\"intersectionRatio\"in window.IntersectionObserverEntry.prototype&&/\\{\\s*\\[native code\\]\\s*\\}/.test(\"\"+IntersectionObserver),exports.raf=raf=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||raf,exports.ssr=ssr=window.document.querySelectorAll(\"div[data-reactroot]\").length>0,-1!==navigator.appVersion.indexOf(\"MSIE 10\")&&(exports.ie10=ie10=!0),ssr&&\"performance\"in window&&\"timing\"in window.performance&&\"domContentLoadedEventEnd\"in window.performance.timing&&window.performance.timing.domLoading&&Date.now()-window.performance.timing.domLoading<300&&(exports.ssr=ssr=!1),ssr&&window.setTimeout(disableSsr,1500),observerMode||(exports.collapseend=collapseend=document.createEvent(\"Event\"),collapseend.initEvent(\"collapseend\",!0,!0));var element=document.createElement(\"style\");document.head.appendChild(element),element.sheet&&element.sheet.cssRules&&element.sheet.insertRule&&(sheet=element.sheet,window.addEventListener(\"scroll\",hideAll,!0),window.addEventListener(\"orientationchange\",hideAll,!0),window.document.addEventListener(\"visibilitychange\",hideAll))}","\"use strict\";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function wrap(e,t,a,r){return\"in\"in e&&(e.when=e.in),_react2.default.Children.count(r)<2?_react2.default.createElement(_RevealBase2.default,_extends({},e,{inEffect:t,outEffect:a,children:r})):(r=_react2.default.Children.map(r,function(r){return _react2.default.createElement(_RevealBase2.default,_extends({},e,{inEffect:t,outEffect:a,children:r}))}),\"Fragment\"in _react2.default?_react2.default.createElement(_react2.default.Fragment,null,r):_react2.default.createElement(\"span\",null,r))}Object.defineProperty(exports,\"__esModule\",{value:!0});var _extends=Object.assign||function(e){for(var t=1;t {\r\n const slider = useRef(null);\r\n const sliderBody = useRef(null);\r\n const [hasSetPosition, setHasSetPosition] = useState(false); // fix for initialSlide !== 0\r\n const [nextIsDisabled, setNextIsDisabled] = useState(true);\r\n const [previousIsDisabled, setPreviousIsDisabled] = useState(true);\r\n const [arrowsAreHidden, setArrowsAreHidden] = useState(false);\r\n\r\n /**\r\n * Checks for the disabled slick controls in order to set\r\n * the state accordingly to enable/disable custom next/previous\r\n * buttons.\r\n */\r\n const checkSlickDisabled = () => {\r\n const slickNextButton = sliderBody.current?.querySelector('.slick-next') as HTMLButtonElement;\r\n const slickPreviousButton = sliderBody.current?.querySelector('.slick-prev') as HTMLButtonElement;\r\n if (slickNextButton) {\r\n setNextIsDisabled(\r\n slickNextButton.classList.contains('slick-disabled'),\r\n );\r\n }\r\n\r\n if (slickPreviousButton) {\r\n setPreviousIsDisabled(\r\n slickPreviousButton.classList.contains('slick-disabled'),\r\n );\r\n }\r\n };\r\n\r\n // Default slick settings\r\n const defaultSlickSettings: SlickConfig = {\r\n accessibility: true,\r\n dots: false,\r\n infinite: false,\r\n speed: 500,\r\n slidesToShow: 5.15,\r\n slidesToScroll: 1,\r\n initialSlide: 0,\r\n arrows: true,\r\n useTransform: false,\r\n responsive: [\r\n {\r\n breakpoint: 1600,\r\n settings: {\r\n slidesToShow: 4.1,\r\n arrows: true,\r\n },\r\n },\r\n {\r\n breakpoint: 1400,\r\n settings: {\r\n slidesToShow: 3.5,\r\n arrows: true,\r\n },\r\n },\r\n {\r\n breakpoint: 1200,\r\n settings: {\r\n slidesToShow: 3.1,\r\n arrows: true,\r\n },\r\n },\r\n {\r\n breakpoint: 950,\r\n settings: {\r\n slidesToShow: 2.5,\r\n arrows: true,\r\n },\r\n },\r\n {\r\n breakpoint: 750,\r\n settings: {\r\n slidesToShow: 2.1,\r\n arrows: true,\r\n },\r\n },\r\n {\r\n breakpoint: 550,\r\n settings: {\r\n slidesToShow: 1.5,\r\n },\r\n },\r\n {\r\n breakpoint: 400,\r\n settings: {\r\n arrows: false,\r\n slidesToShow: 1.1,\r\n },\r\n },\r\n ],\r\n onInit: () => {\r\n setTimeout(() => checkSlickDisabled(), 1500);\r\n },\r\n afterChange: () => {\r\n checkSlickDisabled();\r\n },\r\n };\r\n\r\n // Merge the any settings passed in via props with the default settings.\r\n const [settings] = useState(\r\n slickConfig ? Object.assign(defaultSlickSettings, slickConfig) : defaultSlickSettings,\r\n );\r\n\r\n useEffect(() => {\r\n checkSlickDisabled();\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (previousIsDisabled && nextIsDisabled) {\r\n setArrowsAreHidden(true);\r\n } else {\r\n setArrowsAreHidden(false);\r\n }\r\n }, [previousIsDisabled, nextIsDisabled]);\r\n\r\n const paddleIcon = large\r\n ? '#icon-right-paddle-light'\r\n : '#icon-right-paddle';\r\n\r\n useEffect(() => {\r\n if (slider.current && !hasSetPosition) {\r\n slider.current?.slickGoTo(settings.initialSlide || 0);\r\n setHasSetPosition(true);\r\n }\r\n }, [settings.initialSlide, hasSetPosition, slider]);\r\n\r\n return (\r\n
\r\n
\r\n {title && (\r\n

{title}

\r\n )}\r\n {!controlInline && (\r\n
\r\n slider.current?.slickPrev()}\r\n aria-label=\"previous\"\r\n >\r\n \r\n \r\n slider.current?.slickNext()}\r\n aria-label=\"next\"\r\n >\r\n \r\n \r\n {viewMoreLink && (\r\n
\r\n \r\n
\r\n )}\r\n
\r\n )}\r\n
\r\n
\r\n \r\n {children}\r\n \r\n
\r\n {controlInline && (\r\n
\r\n slider.current?.slickPrev()}\r\n aria-label=\"previous\"\r\n >\r\n \r\n \r\n slider.current?.slickNext()}\r\n aria-label=\"next\"\r\n >\r\n \r\n \r\n {viewMoreLink && (\r\n
\r\n \r\n
\r\n )}\r\n
\r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default Carousel;\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;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _react = require(\"react\");\n\nvar _events = require(\"./helpers/events\");\n\nvar _find = _interopRequireDefault(require(\"./helpers/find\"));\n\nvar _getClosestTransformedParent = _interopRequireDefault(require(\"./helpers/getClosestTransformedParent\"));\n\nvar _rect = require(\"./helpers/rect\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\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\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar buildTopStyles = function buildTopStyles(container, props) {\n var bottomOffset = props.bottomOffset,\n hideOnBoundaryHit = props.hideOnBoundaryHit;\n var top = container.top,\n height = container.height,\n width = container.width,\n boundaryBottom = container.boundaryBottom; // above boundary\n\n if (hideOnBoundaryHit || top + height + bottomOffset < boundaryBottom) {\n return {\n top: top + \"px\",\n width: width + \"px\",\n position: 'fixed'\n };\n } // reaching boundary\n\n\n if (!hideOnBoundaryHit && boundaryBottom > 0) {\n return {\n top: boundaryBottom - height - bottomOffset + \"px\",\n width: width + \"px\",\n position: 'fixed'\n };\n } // below boundary\n\n\n return {\n width: width + \"px\",\n bottom: bottomOffset + \"px\",\n position: 'absolute'\n };\n};\n\nvar buildBottomStyles = function buildBottomStyles(container, props) {\n var bottomOffset = props.bottomOffset,\n hideOnBoundaryHit = props.hideOnBoundaryHit;\n var bottom = container.bottom,\n height = container.height,\n width = container.width,\n boundaryTop = container.boundaryTop;\n\n if (hideOnBoundaryHit || bottom - height - bottomOffset > boundaryTop) {\n return {\n width: width + \"px\",\n top: bottom - height + \"px\",\n position: 'fixed'\n };\n }\n\n return {\n width: width + \"px\",\n top: bottomOffset + \"px\",\n position: 'absolute'\n };\n};\n\nvar buildStickyStyle = function buildStickyStyle(mode, props, container) {\n return (mode === 'top' ? buildTopStyles : buildBottomStyles)(container, props);\n};\n\nvar isEqual = function isEqual(obj1, obj2) {\n var styles1 = obj1.wrapperStyles;\n var styles2 = obj2.wrapperStyles;\n\n if (obj1.isFixed !== obj2.isFixed || obj1.height !== obj2.height || !styles1 && styles2 || styles1 && !styles2) {\n return false;\n }\n\n if (!styles2) {\n // we need this condition to make Flow happy\n return true;\n }\n\n for (var field in styles1) {\n if (styles1.hasOwnProperty(field) && styles1[field] !== styles2[field]) {\n return false;\n }\n }\n\n return true;\n};\n\nvar Sticky = /*#__PURE__*/function (_Component) {\n _inheritsLoose(Sticky, _Component);\n\n function Sticky() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n _this.holderEl = null;\n _this.wrapperEl = null;\n _this.el = null;\n _this.scrollEl = null;\n _this.boundaryEl = null;\n _this.disabled = false;\n _this.checkPositionIntervalId = void 0;\n _this.lastMinHeight = void 0;\n _this.state = {\n isFixed: false,\n wrapperStyles: null,\n holderStyles: null,\n height: 0\n };\n\n _this.holderRef = function (holderEl) {\n if (holderEl === _this.holderEl) {\n return;\n }\n\n _this.holderEl = holderEl;\n };\n\n _this.wrapperRef = function (wrapperEl) {\n if (wrapperEl === _this.wrapperEl) {\n return;\n }\n\n _this.wrapperEl = wrapperEl;\n\n _this.updateScrollEl();\n\n _this.updateBoundaryEl();\n };\n\n _this.checkPosition = function () {\n var _assertThisInitialize = _assertThisInitialized(_this),\n holderEl = _assertThisInitialize.holderEl,\n wrapperEl = _assertThisInitialize.wrapperEl,\n boundaryEl = _assertThisInitialize.boundaryEl,\n scrollEl = _assertThisInitialize.scrollEl,\n disabled = _assertThisInitialize.disabled;\n\n if (!scrollEl || !holderEl || !wrapperEl) {\n console.error(\"Missing required elements:\", {\n scrollEl: scrollEl,\n holderEl: holderEl,\n wrapperEl: wrapperEl\n });\n return;\n }\n\n var _this$props = _this.props,\n mode = _this$props.mode,\n onFixedToggle = _this$props.onFixedToggle,\n offsetTransforms = _this$props.offsetTransforms,\n isIOSFixEnabled = _this$props.isIOSFixEnabled,\n dontUpdateHolderHeightWhenSticky = _this$props.dontUpdateHolderHeightWhenSticky;\n\n if (disabled) {\n if (_this.state.isFixed) {\n _this.setState({\n isFixed: false,\n wrapperStyles: {}\n });\n }\n\n return;\n }\n\n if (!holderEl.getBoundingClientRect || !wrapperEl.getBoundingClientRect) {\n return;\n }\n\n var holderRect = holderEl.getBoundingClientRect();\n var wrapperRect = wrapperEl.getBoundingClientRect();\n var boundaryRect = boundaryEl ? (0, _rect.getRect)(boundaryEl) : _rect.infiniteRect;\n var scrollRect = (0, _rect.getRect)(scrollEl);\n\n var isFixed = _this.isFixed(holderRect, wrapperRect, boundaryRect, scrollRect);\n\n var offsets = null;\n\n if (offsetTransforms && isFixed) {\n var closestTransformedParent = (0, _getClosestTransformedParent.default)(scrollEl);\n\n if (closestTransformedParent) {\n offsets = (0, _rect.getRect)(closestTransformedParent);\n }\n }\n\n var minHeight = _this.state.isFixed && dontUpdateHolderHeightWhenSticky && _this.lastMinHeight ? _this.lastMinHeight : wrapperRect.height;\n _this.lastMinHeight = minHeight; // To ensure that this component becomes sticky immediately on mobile devices instead\n // of disappearing until the scroll event completes, we add `transform: translateZ(0)`\n // to 'kick' rendering of this element to the GPU\n // @see http://stackoverflow.com/questions/32875046\n\n var iosRenderingFixStyles = isIOSFixEnabled ? {\n transform: 'translateZ(0)',\n WebkitTransform: 'translateZ(0)'\n } : null;\n var newState = {\n isFixed: isFixed,\n height: wrapperRect.height,\n holderStyles: {\n minHeight: minHeight + \"px\"\n },\n wrapperStyles: isFixed ? _extends({}, iosRenderingFixStyles, buildStickyStyle(mode, _this.props, {\n boundaryTop: mode === 'bottom' ? boundaryRect.top : 0,\n boundaryBottom: mode === 'top' ? boundaryRect.bottom : 0,\n top: mode === 'top' ? scrollRect.top - (offsets ? offsets.top : 0) : 0,\n bottom: mode === 'bottom' ? scrollRect.bottom - (offsets ? offsets.bottom : 0) : 0,\n width: holderRect.width,\n height: wrapperRect.height\n })) : iosRenderingFixStyles\n };\n\n if (isFixed !== _this.state.isFixed && onFixedToggle && typeof onFixedToggle === 'function') {\n onFixedToggle(isFixed);\n }\n\n if (!isEqual(_this.state, newState)) {\n _this.setState(newState);\n }\n };\n\n return _this;\n }\n\n var _proto = Sticky.prototype;\n\n _proto.isFixed = function isFixed(holderRect, wrapperRect, boundaryRect, scrollRect) {\n var _this$props2 = this.props,\n hideOnBoundaryHit = _this$props2.hideOnBoundaryHit,\n bottomOffset = _this$props2.bottomOffset,\n topOffset = _this$props2.topOffset,\n mode = _this$props2.mode;\n\n if (this.disabled) {\n return false;\n }\n\n if (hideOnBoundaryHit && boundaryRect && !(0, _rect.isIntersecting)(boundaryRect, scrollRect, topOffset, bottomOffset)) {\n return false;\n }\n\n var hideOffset = hideOnBoundaryHit ? wrapperRect.height + bottomOffset : 0;\n\n if (mode === 'top') {\n return holderRect.top + topOffset < scrollRect.top && scrollRect.top + hideOffset <= boundaryRect.bottom;\n }\n\n return holderRect.bottom - topOffset > scrollRect.bottom && scrollRect.bottom - hideOffset >= boundaryRect.top;\n };\n\n _proto.updateScrollEl = function updateScrollEl() {\n if (!this.wrapperEl) {\n return;\n }\n\n if (this.scrollEl) {\n (0, _events.unlisten)(this.scrollEl, ['scroll'], this.checkPosition);\n this.scrollEl = null;\n }\n\n var scrollElement = this.props.scrollElement;\n\n if (typeof scrollElement === 'string') {\n this.scrollEl = (0, _find.default)(scrollElement, this.wrapperEl);\n } else {\n this.scrollEl = scrollElement;\n }\n\n if (this.scrollEl) {\n (0, _events.listen)(this.scrollEl, ['scroll'], this.checkPosition);\n } else {\n console.error('Cannot find scrollElement ' + (typeof scrollElement === 'string' ? scrollElement : 'unknown'));\n }\n };\n\n _proto.updateBoundaryEl = function updateBoundaryEl() {\n if (!this.wrapperEl) {\n return;\n }\n\n var boundaryElement = this.props.boundaryElement;\n this.boundaryEl = (0, _find.default)(boundaryElement, this.wrapperEl);\n\n if (this.boundaryEl === window || this.boundaryEl === document) {\n // such objects can't be used as boundary\n // and in fact there is no point in such a case\n this.boundaryEl = null;\n }\n };\n\n _proto.initialize = function initialize() {\n var _this$props3 = this.props,\n positionRecheckInterval = _this$props3.positionRecheckInterval,\n disabled = _this$props3.disabled;\n this.disabled = disabled; // we should always listen to window events because they will affect the layout of the whole page\n\n (0, _events.listen)(window, ['scroll', 'resize', 'pageshow', 'load'], this.checkPosition);\n this.checkPosition();\n\n if (positionRecheckInterval) {\n this.checkPositionIntervalId = setInterval(this.checkPosition, positionRecheckInterval);\n }\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(_ref) {\n var scrollElement = _ref.scrollElement,\n boundaryElement = _ref.boundaryElement,\n disabled = _ref.disabled;\n\n if (scrollElement !== this.props.scrollElement) {\n this.updateScrollEl();\n }\n\n if (boundaryElement !== this.props.boundaryElement) {\n this.updateBoundaryEl();\n }\n\n if (disabled !== this.props.disabled) {\n this.disabled = this.props.disabled;\n this.checkPosition();\n }\n };\n\n _proto.componentDidMount = function componentDidMount() {\n this.initialize();\n\n if (this.wrapperEl === null) {\n console.error(\"Wrapper element is missing, please make sure that you have assigned refs correctly\");\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this.scrollEl) {\n (0, _events.unlisten)(this.scrollEl, ['scroll'], this.checkPosition);\n }\n\n (0, _events.unlisten)(window, ['scroll', 'resize', 'pageshow', 'load'], this.checkPosition);\n this.boundaryEl = null;\n this.scrollEl = null;\n clearInterval(this.checkPositionIntervalId);\n };\n\n _proto.render = function render() {\n var holderRef = this.holderRef,\n wrapperRef = this.wrapperRef;\n var _this$state = this.state,\n isFixed = _this$state.isFixed,\n wrapperStyles = _this$state.wrapperStyles,\n holderStyles = _this$state.holderStyles;\n return this.props.children({\n holderRef: holderRef,\n wrapperRef: wrapperRef,\n isFixed: isFixed,\n wrapperStyles: wrapperStyles,\n holderStyles: holderStyles\n });\n };\n\n return Sticky;\n}(_react.Component);\n\nSticky.defaultProps = {\n mode: 'top',\n topOffset: 0,\n bottomOffset: 0,\n isIOSFixEnabled: true,\n disabled: false,\n onFixedToggle: null,\n boundaryElement: null,\n scrollElement: 'window',\n dontUpdateHolderHeightWhenSticky: false\n};\nvar _default = Sticky;\nexports.default = _default;\nmodule.exports = exports.default;","import * as news from './endpoints/news';\r\nimport * as contact from './endpoints/contact';\r\nimport * as calendar from './endpoints/calendar';\r\nimport * as racehub from './endpoints/racehub';\r\nimport * as riders from './endpoints/riders';\r\nimport * as rankings from './endpoints/rankings';\r\n\r\nexport default {\r\n news,\r\n contact,\r\n calendar,\r\n racehub,\r\n riders,\r\n rankings,\r\n};\r\n","import Axios, { AxiosResponse } from 'axios';\r\nimport { config } from '../../../config';\r\n\r\n// eslint-disable-next-line import/prefer-default-export\r\nexport const getNews = async (\r\n pageIndex?: number,\r\n pageSize?: number,\r\n featuredArticleId?: string,\r\n newsCategoryId?: string,\r\n type?: string,\r\n tag?: string,\r\n) => {\r\n const { data }: AxiosResponse = await Axios.get(`${config.apiUrl}/news/listing`, {\r\n params: {\r\n newsCategoryId,\r\n pageIndex,\r\n pageSize,\r\n type,\r\n featuredArticleId,\r\n tag,\r\n },\r\n });\r\n\r\n return data;\r\n};\r\n","import Axios, { AxiosResponse } from 'axios';\r\nimport { config } from '../../../config';\r\n\r\n// eslint-disable-next-line import/prefer-default-export\r\nexport const postMail = async (\r\n entryId: string,\r\n name: string,\r\n email: string,\r\n phone: string,\r\n message: string,\r\n) => {\r\n const { data }: AxiosResponse = await Axios.get(`${config.apiUrl}/news/listing`, {\r\n params: {\r\n entryId,\r\n name,\r\n email,\r\n phone,\r\n message,\r\n },\r\n });\r\n\r\n return data;\r\n};\r\n","import Axios, { AxiosResponse } from 'axios';\r\nimport { config } from '../../../config';\r\nimport {\r\n CalendarApiQueryParams,\r\n CalendarResultParams,\r\n CalendarDownloadApiParams,\r\n} from '../../../typings/api';\r\n\r\nexport const getUpcoming = async ({\r\n discipline,\r\n raceCategory,\r\n raceType,\r\n raceClass,\r\n country,\r\n year,\r\n seasonId,\r\n}: CalendarApiQueryParams) => {\r\n const { data }: AxiosResponse = await Axios.get(`${config.apiUrl}/calendar/upcoming`, {\r\n params: {\r\n discipline,\r\n raceCategory,\r\n raceType,\r\n raceClass,\r\n country,\r\n year,\r\n seasonId,\r\n },\r\n });\r\n\r\n return data;\r\n};\r\n\r\nexport const getPast = async ({\r\n discipline,\r\n raceCategory,\r\n raceType,\r\n raceClass,\r\n country,\r\n seasonId,\r\n year,\r\n}: CalendarApiQueryParams) => {\r\n const { data }: AxiosResponse = await Axios.get(`${config.apiUrl}/calendar/past`, {\r\n params: {\r\n discipline,\r\n raceCategory,\r\n raceType,\r\n raceClass,\r\n country,\r\n seasonId,\r\n year,\r\n },\r\n });\r\n\r\n return data;\r\n};\r\n\r\nexport const getResult = async ({\r\n eventCode,\r\n raceType,\r\n disciplineCode,\r\n raceName,\r\n}: CalendarResultParams) => {\r\n const { data }: AxiosResponse = await Axios.get(`${config.apiUrl}/calendar/results/${eventCode}`, {\r\n params: {\r\n discipline: disciplineCode,\r\n raceType,\r\n raceName,\r\n },\r\n });\r\n\r\n return data;\r\n};\r\n\r\nexport const getCwc = async (discipline: string) => {\r\n const { data }: AxiosResponse = await Axios.get(`${config.apiUrl}/calendar/cwc`, {\r\n params: { discipline: discipline || '' },\r\n });\r\n\r\n return data;\r\n};\r\n\r\nexport const downloadCalendar = async (\r\n url: string,\r\n bearerToken: string,\r\n params: CalendarDownloadApiParams,\r\n) => {\r\n const response: AxiosResponse = await Axios.post(url, params, {\r\n responseType: 'blob',\r\n headers: { Authorization: `Bearer ${bearerToken}` },\r\n });\r\n\r\n return response;\r\n};\r\n","import Axios, { AxiosResponse } from 'axios';\r\nimport { config } from '../../../config';\r\n\r\n// eslint-disable-next-line import/prefer-default-export\r\nexport const getCommentary = async (\r\n eventId: number,\r\n lastCommentId: number,\r\n) => {\r\n const { data }: AxiosResponse = await Axios.get(`${config.apiUrl}/race-hub/commentary/${eventId}`, {\r\n params: {\r\n lastCommentId,\r\n },\r\n });\r\n\r\n return data;\r\n};\r\n","import Axios, { AxiosResponse } from 'axios';\r\nimport { config } from '../../../config';\r\nimport { RidersApiParams } from '../../../typings/api';\r\n\r\nexport const getCompetitionRiders = async ({\r\n id,\r\n page,\r\n countryCode,\r\n search,\r\n}: RidersApiParams) => {\r\n const { data }: AxiosResponse = await Axios.get(`${config.apiUrl}/competition-hub/riders/${id}`, {\r\n params: {\r\n page,\r\n countryCode,\r\n search,\r\n },\r\n });\r\n\r\n return data;\r\n};\r\n\r\nexport const getRiders = async ({\r\n page,\r\n countryCode,\r\n discipline,\r\n category,\r\n year,\r\n search,\r\n}: RidersApiParams) => {\r\n const { data }: AxiosResponse = await Axios.get(`${config.apiUrl}/riders/${discipline}/${year}`, {\r\n params: {\r\n page,\r\n country: countryCode,\r\n category,\r\n search,\r\n },\r\n });\r\n\r\n return data;\r\n};\r\n\r\nexport const getTeams = async ({\r\n page,\r\n countryCode,\r\n discipline,\r\n category,\r\n year,\r\n search,\r\n}: RidersApiParams) => {\r\n const { data }: AxiosResponse = await Axios.get(`${config.apiUrl}/teams/${discipline}/${year}`, {\r\n params: {\r\n page,\r\n country: countryCode,\r\n category,\r\n search,\r\n },\r\n });\r\n\r\n return data;\r\n};\r\n","import Axios, { AxiosResponse } from 'axios';\r\nimport { config } from '../../../config';\r\nimport { RankingsApiParams } from '../../../typings/api';\r\nimport RANKING_YEAR_TRANSITIONS from '../constants';\r\n\r\nconst getRankingYear = (discipline: string): number => {\r\n const now = new Date();\r\n const transition = RANKING_YEAR_TRANSITIONS[discipline] || RANKING_YEAR_TRANSITIONS.DEFAULT;\r\n\r\n if (transition === RANKING_YEAR_TRANSITIONS.DEFAULT) {\r\n return now.getFullYear();\r\n }\r\n\r\n const { month, day } = transition;\r\n const transitionDate = new Date(now.getFullYear(), month - 1, day);\r\n\r\n return now >= transitionDate ? now.getFullYear() + 1 : now.getFullYear();\r\n};\r\n\r\n// eslint-disable-next-line import/prefer-default-export\r\nexport const getRankings = async ({\r\n discipline,\r\n category,\r\n type,\r\n id,\r\n}: RankingsApiParams) => {\r\n const currentYear = getRankingYear(discipline ?? 'DEFAULT');\r\n const { data }: AxiosResponse = await Axios.get(\r\n `${config.apiUrl}/rankings/details?DisciplineCode=${discipline}&SeasonYear=${currentYear}&Category=${category}&rankingType=${type}&rankingId=${id}`,\r\n );\r\n\r\n return data;\r\n};\r\n\r\nexport const getTechnicalRankings = async () => {\r\n const { data }: AxiosResponse = await Axios.get(`${config.apiUrl}/rankings/technical`);\r\n\r\n return data;\r\n};\r\n","const RANKING_YEAR_TRANSITIONS: Record = {\r\n CRO: { month: 8, day: 1 },\r\n ROA: { month: 10, day: 20 },\r\n DEFAULT: { month: 1, day: 1 },\r\n};\r\n\r\nexport default RANKING_YEAR_TRANSITIONS;\r\n","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","\"use strict\";function _interopRequireDefault(o){return o&&o.__esModule?o:{default:o}}function _objectWithoutProperties(o,e){var r={};for(var t in o)e.indexOf(t)>=0||Object.prototype.hasOwnProperty.call(o,t)&&(r[t]=o[t]);return r}function make(o,e){var r=e.distance,t=e.left,p=e.right,a=e.up,l=e.down,i=e.top,u=e.bottom,n=e.big,s=e.mirror,d=e.opposite,_=(r?r.toString():0)+((t?1:0)|(p?2:0)|(i||l?4:0)|(u||a?8:0)|(s?16:0)|(d?32:0)|(o?64:0)|(n?128:0));if(lookup.hasOwnProperty(_))return lookup[_];var f=t||p||a||l||i||u,y=void 0,b=void 0;if(f){if(!s!=!(o&&d)){var v=[p,t,u,i,l,a];t=v[0],p=v[1],i=v[2],u=v[3],a=v[4],l=v[5]}var c=r||(n?\"2000px\":\"100%\");y=t?\"-\"+c:p?c:\"0\",b=l||i?\"-\"+c:a||u?c:\"0\"}return lookup[_]=(0,_globals.animation)((o?\"to\":\"from\")+\" {opacity: 0;\"+(f?\" transform: translate3d(\"+y+\", \"+b+\", 0);\":\"\")+\"}\\n \"+(o?\"from\":\"to\")+\" {opacity: 1;transform: none;} \"),lookup[_]}function Fade(){var o=arguments.length>0&&void 0!==arguments[0]?arguments[0]:_globals.defaults,e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=o.children,t=(o.out,o.forever),p=o.timeout,a=o.duration,l=void 0===a?_globals.defaults.duration:a,i=o.delay,u=void 0===i?_globals.defaults.delay:i,n=o.count,s=void 0===n?_globals.defaults.count:n,d=_objectWithoutProperties(o,[\"children\",\"out\",\"forever\",\"timeout\",\"duration\",\"delay\",\"count\"]),_={make:make,duration:void 0===p?l:p,delay:u,forever:t,count:s,style:{animationFillMode:\"both\"},reverse:d.left};return e?(0,_wrap2.default)(d,_,_,r):_}Object.defineProperty(exports,\"__esModule\",{value:!0});var _propTypes=require(\"prop-types\"),_globals=require(\"./globals\"),_wrap=require(\"./wrap\"),_wrap2=_interopRequireDefault(_wrap),propTypes={out:_propTypes.bool,left:_propTypes.bool,right:_propTypes.bool,top:_propTypes.bool,bottom:_propTypes.bool,big:_propTypes.bool,mirror:_propTypes.bool,opposite:_propTypes.bool,duration:_propTypes.number,timeout:_propTypes.number,distance:_propTypes.string,delay:_propTypes.number,count:_propTypes.number,forever:_propTypes.bool},lookup={};Fade.propTypes=propTypes,exports.default=Fade,module.exports=exports.default;","\"use strict\";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _defineProperty(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}function _possibleConstructorReturn(e,t){if(!e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!t||\"object\"!=typeof t&&\"function\"!=typeof t?e:t}function _inherits(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(exports,\"__esModule\",{value:!0});var _typeof=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},_slicedToArray=function(){function e(e,t){var i=[],s=!0,o=!1,n=void 0;try{for(var r,a=e[Symbol.iterator]();!(s=(r=a.next()).done)&&(i.push(r.value),!t||i.length!==t);s=!0);}catch(e){o=!0,n=e}finally{try{!s&&a.return&&a.return()}finally{if(o)throw n}}return i}return function(t,i){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,i);throw new TypeError(\"Invalid attempt to destructure non-iterable instance\")}}(),_extends=Object.assign||function(e){for(var t=1;t>2,l=a>>1;n=a,r=i.delay+(this.isOn?0:s-a-l),e.style.animationDuration=s-a+(this.isOn?l:-l)+\"ms\",e.style.animationDelay=i.delay+(this.isOn?a-l:0)+\"ms\"}return e.collapse={height:o,transition:\"height \"+n+\"ms ease \"+r+\"ms\",overflow:t.collapseOnly?\"hidden\":void 0},e}},{key:\"animate\",value:function(e){if(this&&this.el&&(this.unlisten(),this.isShown!==this.isOn)){this.isShown=this.isOn;var t=!this.isOn&&e.outEffect,i=e[t?\"outEffect\":\"inEffect\"],s=\"style\"in i&&i.style.animationName||void 0,o=void 0;e.collapseOnly?o={hasAppeared:!0,hasExited:!1,style:{opacity:1}}:((e.outEffect||this.isOn)&&i.make&&(s=i.make),o={hasAppeared:!0,hasExited:!1,collapse:void 0,style:_extends({},i.style,{animationDuration:i.duration+\"ms\",animationDelay:i.delay+\"ms\",animationIterationCount:i.forever?\"infinite\":i.count,opacity:1,animationName:s}),className:i.className}),this.setState(e.collapse?this.collapse(o,e,i):o),t?(this.savedChild=_react2.default.cloneElement(this.getChild()),this.animationEnd(this.invisible,e.cascade,i)):this.savedChild=!1,this.onReveal(e)}}},{key:\"onReveal\",value:function(e){e.onReveal&&this.isOn&&(this.onRevealTimeout&&(this.onRevealTimeout=window.clearTimeout(this.onRevealTimeout)),e.wait?this.onRevealTimeout=window.setTimeout(e.onReveal,e.wait):e.onReveal())}},{key:\"componentWillUnmount\",value:function(){this.unlisten(),_globals.ssr&&(0,_globals.disableSsr)()}},{key:\"handleObserve\",value:function(e,t){_slicedToArray(e,1)[0].intersectionRatio>0&&(t.disconnect(),this.observer=null,this.reveal(this.props,!0))}},{key:\"observe\",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(this.el&&_globals.observerMode){if(this.observer){if(!t)return;this.observer.disconnect()}else if(t)return;this.observer=new IntersectionObserver(this.handleObserve,{threshold:e.fraction}),this.observer.observe(this.el)}}},{key:\"reveal\",value:function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]&&arguments[1];_globals.globalHide||(0,_globals.hideAll)(),this&&this.el&&(e||(e=this.props),_globals.ssr&&(0,_globals.disableSsr)(),this.isOn&&this.isShown&&void 0!==e.spy?(this.isShown=!1,this.setState({style:{}}),window.setTimeout(function(){return t.reveal(e)},200)):i||this.inViewport(e)||e.force?this.animate(e):_globals.observerMode?this.observe(e):this.listen())}},{key:\"componentDidMount\",value:function(){var e=this;if(this.el&&!this.props.disabled){this.props.collapseOnly||(\"make\"in this.props.inEffect&&this.props.inEffect.make(!1,this.props),void 0!==this.props.when&&this.props.outEffect&&\"make\"in this.props.outEffect&&this.props.outEffect.make(!0,this.props));var i=this.context.transitionGroup,s=i&&!i.isMounting?!(\"enter\"in this.props&&!1===this.props.enter):this.props.appear;return this.isOn&&((void 0!==this.props.when||void 0!==this.props.spy)&&!s||_globals.ssr&&!_globals.fadeOutEnabled&&!this.props.ssrFadeout&&this.props.outEffect&&!this.props.ssrReveal&&t.getTop(this.el)o-window.innerHeight&&s=0||Object.prototype.hasOwnProperty.call(e,o)&&(r[o]=e[o]);return r}function Reveal(e){function t(e){return e?_?{duration:n,delay:f,count:s,forever:d,className:_,style:{}}:y:i?{duration:void 0===o?u:o,delay:p,count:a,forever:l,className:i,style:{}}:c}var r=e.children,o=e.timeout,u=e.duration,p=e.delay,a=e.count,l=e.forever,n=e.durationOut,f=e.delayOut,s=e.countOut,d=e.foreverOut,i=e.effect,_=e.effectOut,c=e.inEffect,y=e.outEffect,O=_objectWithoutProperties(e,[\"children\",\"timeout\",\"duration\",\"delay\",\"count\",\"forever\",\"durationOut\",\"delayOut\",\"countOut\",\"foreverOut\",\"effect\",\"effectOut\",\"inEffect\",\"outEffect\"]);return(0,_wrap2.default)(O,t(!1),t(!0),r)}Object.defineProperty(exports,\"__esModule\",{value:!0});var _extends=Object.assign||function(e){for(var t=1;t (\r\n filterItems.filter((item) => item.code !== 'RUS' && item.code !== 'BLR')\r\n);\r\n\r\n/**\r\n * Map the current model to the JumpListOption type\r\n * @param filterItems\r\n * @returns\r\n */\r\nconst mapFilterType = (filterItems: Filter[]) => {\r\n const filteredCountries = removeCountries(filterItems);\r\n const mappedItems: JumpListOption[] = [];\r\n filteredCountries.map((item) => (\r\n mappedItems.push({\r\n displayText: item.text,\r\n value: item.code,\r\n selectedValue: item.selected,\r\n })\r\n ));\r\n return mappedItems;\r\n};\r\n\r\nexport default mapFilterType;\r\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nvar defaults = {\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data)) {\n setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n return JSON.stringify(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n /*eslint no-param-reassign:0*/\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (e) { /* Ignore */ }\n }\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n // Listen for ready state\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n };\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(timeoutErrorMessage, config, 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (config.responseType) {\n try {\n request.responseType = config.responseType;\n } catch (e) {\n // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.\n if (config.responseType !== 'json') {\n throw e;\n }\n }\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n var valueFromConfig2Keys = ['url', 'method', 'data'];\n var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params'];\n var defaultToConfig2Keys = [\n 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress',\n 'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent',\n 'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding'\n ];\n var directMergeKeys = ['validateStatus'];\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n }\n\n utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n }\n });\n\n utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties);\n\n utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n utils.forEach(directMergeKeys, function merge(prop) {\n if (prop in config2) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n var axiosKeys = valueFromConfig2Keys\n .concat(mergeDeepPropertiesKeys)\n .concat(defaultToConfig2Keys)\n .concat(directMergeKeys);\n\n var otherKeys = Object\n .keys(config1)\n .concat(Object.keys(config2))\n .filter(function filterAxiosKeys(key) {\n return axiosKeys.indexOf(key) === -1;\n });\n\n utils.forEach(otherKeys, mergeDeepProperties);\n\n return config;\n};\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _renderPropsVersion = _interopRequireDefault(require(\"./render-props-version\"));\n\nexports.RenderPropSticky = _renderPropsVersion.default;\n\nvar _basicVersion = _interopRequireDefault(require(\"./basic-version\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _default = _basicVersion.default;\nexports.default = _default;","\"use strict\";\n\nexports.__esModule = true;\nexports.listen = listen;\nexports.unlisten = unlisten;\n////////////////////////////////////////////////////////////////////////////////////////\n// Small helpers that provide an easy and efficient way to add/remove event listeners //\n////////////////////////////////////////////////////////////////////////////////////////\nvar elementsWithListeners = [];\nvar registeredListeners = [];\n\nfunction createListener(el) {\n return {\n el: el,\n callbacks: {},\n realCallbacks: {},\n realListenersCnt: 0\n };\n}\n\nfunction addCallback(listener, event, cb) {\n if (listener.callbacks[event]) {\n if (listener.callbacks[event].indexOf(cb) === -1) {\n listener.callbacks[event].push(cb);\n }\n\n return;\n }\n\n listener.callbacks[event] = [cb];\n\n listener.realCallbacks[event] = function (e) {\n for (var i = 0, l = listener.callbacks[event].length; i < l; i += 1) {\n listener.callbacks[event][i](e);\n }\n };\n\n listener.el.addEventListener(event, listener.realCallbacks[event]);\n listener.realListenersCnt += 1;\n}\n\nfunction removeCallback(listener, event, cb) {\n if (!listener.callbacks[event]) {\n return;\n }\n\n var idx = listener.callbacks[event].indexOf(cb);\n\n if (idx === -1) {\n return;\n }\n\n listener.callbacks[event].splice(idx, 1);\n\n if (listener.callbacks[event].length > 0) {\n return;\n } // no more listeners, lets clean up\n\n\n listener.el.removeEventListener(event, listener.realCallbacks[event]);\n delete listener.callbacks[event];\n delete listener.realCallbacks[event];\n listener.realListenersCnt -= 1;\n}\n\nfunction addListener(el, event, cb) {\n var idx = elementsWithListeners.indexOf(el);\n\n if (idx === -1) {\n idx = elementsWithListeners.length;\n elementsWithListeners.push(el);\n registeredListeners.push(createListener(el));\n }\n\n var listener = registeredListeners[idx];\n addCallback(listener, event, cb);\n}\n\nfunction removeListener(el, event, cb) {\n var idx = elementsWithListeners.indexOf(el);\n\n if (idx === -1) {\n return;\n }\n\n var listener = registeredListeners[idx];\n removeCallback(listener, event, cb);\n\n if (listener.realListenersCnt > 0) {\n return;\n } // no more listeners lets clean up\n\n\n elementsWithListeners.splice(idx, 1);\n registeredListeners.splice(idx, 1);\n}\n/**\n * Subscribe cb to events list\n * @param {HTMLElement} el target element\n * @param {Array} events array of event names\n * @param {Function} cb callback that should be called\n */\n\n\nfunction listen(el, events, cb) {\n for (var i = 0, l = events.length; i < l; i += 1) {\n addListener(el, events[i], cb);\n }\n}\n/**\n * Unsubscribe cb from events list\n * @param {HTMLElement} el target element\n * @param {Array} events array of event names\n * @param {Function} cb callback that should be unsubscribed\n */\n\n\nfunction unlisten(el, events, cb) {\n for (var i = 0, l = events.length; i < l; i += 1) {\n removeListener(el, events[i], cb);\n }\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.default = find;\nvar basicSelectors = {};\n\nif (typeof document !== 'undefined') {\n basicSelectors.body = document.body;\n basicSelectors.window = window;\n basicSelectors.document = document;\n}\n\nvar matchesMethodName = function () {\n if (typeof document !== 'undefined' && document.body) {\n var body = document.body;\n return typeof body.matches === 'function' ? 'matches' : // $FlowFixMe - flow doesn't like vendors, so do I, but we have to support such case\n typeof body.webkitMatchesSelector === 'function' ? 'webkitMatchesSelector' : //webkit\n // $FlowFixMe - see above\n typeof body.mozMatchesSelector === 'function' ? 'mozMatchesSelector' : //mozilla\n // $FlowFixMe - see above\n typeof body.msMatchesSelector === 'function' ? 'msMatchesSelector' : //ie\n // $FlowFixMe - see above\n typeof body.oMatchesSelector === 'function' ? 'oMatchesSelector' : //old opera\n null;\n }\n\n return null;\n}();\n\nfunction find(selector, el) {\n if (!selector) {\n return null;\n }\n\n if (basicSelectors.hasOwnProperty(selector)) {\n return basicSelectors[selector];\n } // select by id\n\n\n if (selector[0] === '#') {\n return document.getElementById(selector.slice(1));\n }\n\n if (matchesMethodName === null) {\n return null;\n }\n\n var temp = el; // eslint-disable-next-line no-cond-assign\n\n while (temp = temp.parentElement) {\n // $FlowFixMe - flow does not approve it, but it works fine :)\n if (temp[matchesMethodName](selector)) {\n return temp || null;\n }\n } // nothing has been found :(\n\n\n return null;\n}\n\nmodule.exports = exports.default;","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","\"use strict\";\n\nexports.__esModule = true;\nexports.default = getClosestTransformedParent;\n\nfunction getClosestTransformedParent(el) {\n do {\n var style = window.getComputedStyle(el);\n if (style.transform !== 'none' || style.webkitTransform !== 'none') return el; // $FlowFixMe - it's fine\n\n el = el.parentElement || el.parentNode;\n } while (el !== null && el.nodeType === 1);\n\n return null;\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports.getRect = getRect;\nexports.isIntersecting = isIntersecting;\nexports.infiniteRect = void 0;\nvar infiniteRect = {\n top: -Infinity,\n bottom: Infinity,\n height: Infinity,\n left: -Infinity,\n right: Infinity,\n width: Infinity\n};\nexports.infiniteRect = infiniteRect;\n\nfunction getRect(el) {\n if (el && typeof el.getBoundingClientRect === 'function') {\n return el.getBoundingClientRect();\n }\n\n if (el === window || el === document) {\n return {\n top: 0,\n left: 0,\n bottom: window.innerHeight,\n height: window.innerHeight,\n width: window.innerWidth,\n right: window.innerWidth\n };\n }\n\n return {\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n width: 0,\n height: 0\n };\n}\n\nfunction isIntersecting(r1, r2, topOffset, bottomOffset) {\n var r1Top = r1.top + topOffset,\n r1Bottom = r1.bottom + bottomOffset;\n return r1Top >= r2.top && r1Top <= r2.bottom || r1Bottom >= r2.top && r1Bottom <= r2.bottom || r1Bottom >= r2.bottom && r1Top <= r2.top;\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _renderPropsVersion = _interopRequireDefault(require(\"./render-props-version\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\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\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction Sticky(props) {\n var mode = props.mode,\n onFixedToggle = props.onFixedToggle,\n hideOnBoundaryHit = props.hideOnBoundaryHit,\n offsetTransforms = props.offsetTransforms,\n disabled = props.disabled,\n boundaryElement = props.boundaryElement,\n scrollElement = props.scrollElement,\n bottomOffset = props.bottomOffset,\n topOffset = props.topOffset,\n positionRecheckInterval = props.positionRecheckInterval,\n children = props.children,\n isIOSFixEnabled = props.isIOSFixEnabled,\n dontUpdateHolderHeightWhenSticky = props.dontUpdateHolderHeightWhenSticky,\n wrapperClassName = props.wrapperClassName,\n stickyClassName = props.stickyClassName,\n stickyStyle = props.stickyStyle,\n rest = _objectWithoutPropertiesLoose(props, [\"mode\", \"onFixedToggle\", \"hideOnBoundaryHit\", \"offsetTransforms\", \"disabled\", \"boundaryElement\", \"scrollElement\", \"bottomOffset\", \"topOffset\", \"positionRecheckInterval\", \"children\", \"isIOSFixEnabled\", \"dontUpdateHolderHeightWhenSticky\", \"wrapperClassName\", \"stickyClassName\", \"stickyStyle\"]);\n\n return /*#__PURE__*/_react.default.createElement(_renderPropsVersion.default, {\n mode: mode,\n onFixedToggle: onFixedToggle,\n hideOnBoundaryHit: hideOnBoundaryHit,\n offsetTransforms: offsetTransforms,\n disabled: disabled,\n boundaryElement: boundaryElement,\n scrollElement: scrollElement,\n bottomOffset: bottomOffset,\n topOffset: topOffset,\n positionRecheckInterval: positionRecheckInterval,\n isIOSFixEnabled: isIOSFixEnabled,\n dontUpdateHolderHeightWhenSticky: dontUpdateHolderHeightWhenSticky\n }, function (_ref) {\n var isFixed = _ref.isFixed,\n wrapperStyles = _ref.wrapperStyles,\n wrapperRef = _ref.wrapperRef,\n holderStyles = _ref.holderStyles,\n holderRef = _ref.holderRef;\n return /*#__PURE__*/_react.default.createElement(\"div\", _extends({}, rest, {\n ref: holderRef,\n style: holderStyles\n }), /*#__PURE__*/_react.default.createElement(\"div\", _extends({}, rest, {\n className: wrapperClassName + \" \" + (isFixed ? stickyClassName : ''),\n style: // $FlowFixMe - flow does not like when we merge 2 inexact objects\n isFixed ? _extends({}, wrapperStyles, stickyStyle) : wrapperStyles,\n ref: wrapperRef\n }), children));\n });\n}\n\nSticky.defaultProps = {\n stickyClassName: 'sticky',\n wrapperClassName: '',\n stickyStyle: {}\n};\nvar _default = Sticky;\nexports.default = _default;\nmodule.exports = exports.default;","import * as React from 'react';\r\nimport { useState, useEffect } from 'react';\r\nimport { SvgImage } from '../common';\r\nimport FlatFilterListProps, { FlatFilterListOption } from './type';\r\nimport breakpoints from '../../breakpoints';\r\nimport './styles.scss';\r\n\r\nconst FlatFilterList = ({\r\n name,\r\n queryParam,\r\n items,\r\n selectedValue,\r\n viewMoreLabel,\r\n action,\r\n allowMultipleSelection = false,\r\n}: FlatFilterListProps) => {\r\n const defaultCutOffIndex = 5;\r\n const [cutOffIndex, setCutOffIndex] = useState(defaultCutOffIndex);\r\n const [isViewMore, setIsViewmore] = useState(\r\n (items.length - 1) >= cutOffIndex,\r\n );\r\n const [options, setOptions] = useState();\r\n const [values, setValues] = useState();\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 = () => {\r\n const mappedOptions: FlatFilterListOption[] = [];\r\n\r\n items.forEach((item) => {\r\n // Check for selected state for the filter with multiple selection\r\n const isArray = Array.isArray(selectedValue);\r\n const newValue = isArray ? selectedValue : selectedValue?.split(',');\r\n const isSelected = newValue?.findIndex((filter) => filter === item.value);\r\n\r\n mappedOptions.push(\r\n Object.assign(item, {\r\n name: queryParam,\r\n selectedValue: isSelected! >= 0,\r\n visible: true,\r\n }),\r\n );\r\n });\r\n\r\n return mappedOptions;\r\n };\r\n\r\n /**\r\n * Handles options change events\r\n * Triggers callback prop\r\n * @param event\r\n */\r\n const handleChange = (event: React.MouseEvent, optionIndex: number) => {\r\n event.preventDefault();\r\n setOptions(mapSelection());\r\n\r\n const getNewState = () => {\r\n if (!options) return undefined;\r\n\r\n const newState = values || [];\r\n\r\n const selectedOption = options[optionIndex];\r\n\r\n const isAllSelected = selectedOption.displayText.toLowerCase().startsWith('all');\r\n\r\n const existingIndex = newState.findIndex((opt) => (\r\n opt.displayText === selectedOption.displayText\r\n ));\r\n\r\n if (isAllSelected || !allowMultipleSelection || (!existingIndex && newState.length === 1)) {\r\n return [selectedOption];\r\n }\r\n\r\n if (existingIndex >= 0 && newState.length > 1) {\r\n return newState.filter((_, index) => index !== existingIndex);\r\n }\r\n\r\n const removedSelectionAll = newState.filter((s) => !s.displayText.toLowerCase().startsWith('all'));\r\n\r\n return [...removedSelectionAll, options[optionIndex]];\r\n };\r\n\r\n setValues(getNewState());\r\n\r\n if (action && typeof action === 'function') {\r\n action(getNewState());\r\n }\r\n };\r\n\r\n /**\r\n * View more action\r\n * @param event\r\n */\r\n const viewMoreAction = (event: React.MouseEvent) => {\r\n event.preventDefault();\r\n if (items.length > cutOffIndex) {\r\n setCutOffIndex(cutOffIndex + defaultCutOffIndex);\r\n }\r\n };\r\n\r\n /**\r\n * Handles the cutOffIndex value\r\n */\r\n const handleCutOffIndex = () => {\r\n const screenWidth = window.outerWidth;\r\n setCutOffIndex(\r\n screenWidth <= breakpoints.md ? defaultCutOffIndex : items.length,\r\n );\r\n };\r\n\r\n /**\r\n * Triggers the handleCutOffIndex\r\n */\r\n useEffect(() => {\r\n if (items.length) {\r\n handleCutOffIndex();\r\n window.addEventListener('resize', () => handleCutOffIndex());\r\n }\r\n\r\n return () => {\r\n window.removeEventListener('resize', () => handleCutOffIndex);\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n const optionsSelection = mapSelection();\r\n setOptions(optionsSelection);\r\n }, [selectedValue]);\r\n\r\n /**\r\n * Handles the isViewMore option.\r\n */\r\n useEffect(() => {\r\n setIsViewmore((items.length - 1) >= cutOffIndex);\r\n }, [cutOffIndex]);\r\n\r\n return (\r\n
\r\n
\r\n

{name}

\r\n
\r\n
\r\n {options && (\r\n
    \r\n {options.slice(0, cutOffIndex).map((option, index) => (\r\n
  • \r\n handleChange(event, index)}\r\n >\r\n {option.displayText}\r\n \r\n
  • \r\n ))}\r\n
\r\n )}\r\n
\r\n {isViewMore && (\r\n
\r\n viewMoreAction(event)}\r\n >\r\n {viewMoreLabel}\r\n
\r\n \r\n
\r\n \r\n
\r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default FlatFilterList;\r\n","import * as React from 'react';\r\nimport SvgImage from '../SvgImage';\r\nimport './styles.scss';\r\n\r\ninterface SearchFieldProps {\r\n name?: string;\r\n label: string;\r\n placeholder?: string;\r\n callback?: Function;\r\n value: string;\r\n onSearchClear?: React.MouseEventHandler;\r\n}\r\n\r\nconst SearchField = ({\r\n name = 'search',\r\n label,\r\n placeholder = 'search',\r\n callback,\r\n value,\r\n onSearchClear,\r\n}: SearchFieldProps) => (\r\n
\r\n callback && callback(event.currentTarget.value)}\r\n />\r\n \r\n\r\n {value && onSearchClear ? (\r\n \r\n ) : (\r\n
\r\n \r\n
\r\n )}\r\n
\r\n);\r\n\r\nexport default SearchField;\r\n","import * as React from 'react';\r\nimport { useRef, useState, useEffect } from 'react';\r\nimport Sticky from 'react-sticky-el';\r\nimport { JumpList, SvgImage, Overlay } from '../common';\r\nimport FlatFilterList from '../FlatFilterList';\r\nimport SearchField from '../common/SearchField';\r\nimport breakpoints from '../../breakpoints';\r\nimport FiltersPanelProps from './type';\r\nimport mapFilterType from '../../mutators';\r\nimport { getUrlParamValue } from '../../utilities/browser';\r\nimport './styles.scss';\r\n\r\ninterface JumpListOption {\r\n displayText: string;\r\n value: string;\r\n selectedValue?: boolean;\r\n name?: string;\r\n}\r\n\r\ninterface SelectedValues {\r\n length: number;\r\n selected: any;\r\n}\r\n\r\nconst FiltersPanel = ({\r\n hasSearch,\r\n visibleFilters,\r\n additionalFilters,\r\n visibleFilterCallback,\r\n additionalFilterCallback,\r\n searchLabel,\r\n searchPlaceholder,\r\n additionalFiltersApplyButtonLabel,\r\n additionalFiltersLabel,\r\n searchFieldCallback,\r\n searchTerm,\r\n disableSticky = false,\r\n disableFirst = false,\r\n themeColour = 'default',\r\n allowMultipleSelection = false,\r\n defaultDatePickerValue,\r\n onDateChange,\r\n includeDates,\r\n datePickerLocale,\r\n onSearchClear,\r\n}: FiltersPanelProps) => {\r\n const filters = useRef(null);\r\n const [isMobile, setIsMobile] = useState(false);\r\n const [isOverlayActive, setIsOverlayActive] = useState(false);\r\n const [selectedValues, setSelectedValues] = useState();\r\n const [selectedAdditionalValues, setSelectedAdditionalValues] = useState();\r\n\r\n /**\r\n * For now we dont want the sticky nav to be show\r\n * on mobile view or small tablet.\r\n */\r\n const handleIsMobile = () => {\r\n const screenWidth = window.outerWidth;\r\n setIsMobile(screenWidth <= breakpoints.md);\r\n };\r\n\r\n /**\r\n * Probably could of simplified this tbh.\r\n * Essentialy adding and removing selected\r\n * filters from the visible filters and the\r\n * additional filters.\r\n * @param event\r\n * @param additional\r\n */\r\n const handleSelection = (event: JumpListOption) => {\r\n const entry: any = {};\r\n entry[`${event.name}`] = event.value;\r\n const selected = Object.assign(\r\n selectedValues?.selected || {},\r\n entry,\r\n );\r\n const newSelection: SelectedValues = {\r\n length: Object.keys(selected).length,\r\n selected,\r\n };\r\n\r\n setSelectedValues(newSelection);\r\n };\r\n\r\n const handleMultipleSelection = (events: JumpListOption[]) => {\r\n const entry = events.reduce((acc, event) => {\r\n if (event?.name) {\r\n if (!acc[event.name]) {\r\n acc[event.name] = event.value;\r\n } else {\r\n acc[event.name] = `${acc[event.name]},${event.value}`;\r\n }\r\n }\r\n\r\n return acc;\r\n }, {} as any);\r\n\r\n const selected = Object.assign(\r\n selectedAdditionalValues?.selected || {},\r\n entry,\r\n );\r\n\r\n const newSelection: SelectedValues = {\r\n length: Object.keys(selected).length,\r\n selected,\r\n };\r\n\r\n setSelectedAdditionalValues(newSelection);\r\n };\r\n\r\n const checkForQueryParamValue = (key: string, additional = false) => {\r\n const queryStringParam = getUrlParamValue(key);\r\n\r\n if (!additional) {\r\n return queryStringParam || selectedValues?.selected[key];\r\n }\r\n return queryStringParam || selectedAdditionalValues?.selected[key];\r\n };\r\n\r\n /**\r\n * Triggering the visibleFilterCallback whenever\r\n * selected values are updated.\r\n */\r\n useEffect(() => {\r\n if (visibleFilterCallback && selectedValues) {\r\n visibleFilterCallback(selectedValues);\r\n }\r\n }, [selectedValues]);\r\n\r\n /**\r\n * Add resize event listener to handle isMobile state\r\n */\r\n useEffect(() => {\r\n handleIsMobile();\r\n window.addEventListener('resize', () => handleIsMobile());\r\n return () => {\r\n window.removeEventListener('resize', () => handleIsMobile);\r\n };\r\n }, []);\r\n\r\n /**\r\n * Disable scroll on html element\r\n */\r\n useEffect(() => {\r\n if (isOverlayActive) {\r\n document.documentElement.classList.add('noscroll');\r\n } else {\r\n document.documentElement.classList.remove('noscroll');\r\n }\r\n }, [isOverlayActive]);\r\n\r\n /**\r\n * Check for current selections in the additional filters items.\r\n */\r\n useEffect(() => {\r\n if (additionalFilters) {\r\n const selected: any = {};\r\n additionalFilters.map((item) => {\r\n const querystringValue = checkForQueryParamValue(item.queryParam);\r\n if (querystringValue) {\r\n selected[item.queryParam] = querystringValue;\r\n }\r\n return false;\r\n });\r\n\r\n setSelectedAdditionalValues({\r\n length: selected.length,\r\n selected,\r\n });\r\n }\r\n }, [additionalFilters]);\r\n\r\n return (\r\n <>\r\n \r\n
\r\n
\r\n {hasSearch && (\r\n
\r\n
\r\n \r\n
\r\n
\r\n )}\r\n\r\n {visibleFilters && visibleFilters.map((filterItem, index) => (\r\n
\r\n handleSelection(event)}\r\n selectedValue={checkForQueryParamValue(filterItem.queryParam)}\r\n useScroller\r\n useSearch={hasSearch}\r\n disableFirst={disableFirst && !index}\r\n withDatePicker={filterItem.withDatePicker}\r\n defaultDatePickerValue={defaultDatePickerValue}\r\n onDateChange={onDateChange}\r\n includeDates={includeDates}\r\n datePickerLocale={datePickerLocale}\r\n />\r\n
\r\n ))}\r\n\r\n {additionalFilters && (\r\n
\r\n \r\n
\r\n )}\r\n
\r\n
\r\n \r\n\r\n {isOverlayActive && (\r\n setIsOverlayActive(false)}>\r\n
\r\n {additionalFilters && additionalFiltersLabel && (\r\n <>\r\n
\r\n {additionalFilters?.map((additionalFilter) => (\r\n <>\r\n {Boolean(additionalFilter.items.length) && (\r\n handleMultipleSelection(events)}\r\n selectedValue={\r\n selectedAdditionalValues?.selected[additionalFilter?.queryParam]\r\n || additionalFilter.items[0].code\r\n }\r\n allowMultipleSelection={allowMultipleSelection}\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\n )}\r\n \r\n );\r\n};\r\n\r\nexport default FiltersPanel;\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","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n // Hook up interceptors middleware\n var chain = [dispatchRequest, undefined];\n var promise = Promise.resolve(config);\n\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n chain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n chain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData(\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData(\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData(\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn(data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\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","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return (typeof payload === 'object') && (payload.isAxiosError === true);\n};\n","import * as React from 'react';\r\nimport {\r\n CalendarItem as CalendarItemProps,\r\n} from '../../core/typings/api';\r\nimport './styles.scss';\r\n\r\nconst CalendarItem = ({\r\n colourCode,\r\n country,\r\n dates,\r\n detailsLink,\r\n raceHubLink,\r\n name,\r\n venue,\r\n continentCode,\r\n isUciEvent,\r\n}: CalendarItemProps) => (\r\n
\r\n \r\n
\r\n {venue && (\r\n \r\n {venue}\r\n  \r\n |\r\n  \r\n \r\n )}\r\n {country}\r\n {continentCode && (\r\n \r\n  \r\n |\r\n  \r\n {continentCode}\r\n  \r\n \r\n )}\r\n
\r\n
\r\n {dates}\r\n
\r\n {raceHubLink && (\r\n \r\n )}\r\n
\r\n);\r\n\r\nexport default CalendarItem;\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","import * as React from 'react';\r\nimport { useEffect, useState, useRef } from 'react';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport PerfectScrollbar from 'react-perfect-scrollbar';\r\nimport { Container } from '../helpers/Grid';\r\nimport { SvgImage, ImageObject } from '../common';\r\nimport useOutsideAlerter from '../../hooks/UseOutsideAlerter';\r\nimport PageHeaderProps from './type';\r\nimport trottle from '../../utilities/events';\r\nimport breakpoints from '../../breakpoints';\r\nimport './styles.scss';\r\n\r\nconst navOffsetMobile: number = 80;\r\nconst navOffsetTablet: number = 150;\r\nconst navOffsetLargeTablet: number = 200;\r\nconst navOffsetDesktop: number = 220;\r\n\r\nconst PageHeader = ({\r\n title,\r\n links,\r\n heroImage,\r\n link,\r\n}: PageHeaderProps) => {\r\n const linksContainer = useRef(null);\r\n const moreLinksContainer = useRef(null);\r\n const [linksTotalWidth, setLinksTotalWidth] = useState(0);\r\n const [hasResizeListener, setHasResizeListener] = useState(false);\r\n const [cutOffIndex, setCutOffIndex] = useState(links?.length);\r\n const [windowResized, setWindowResized] = useState(false);\r\n const [navOffset, setNavOffset] = useState(150);\r\n const [showDropdown, setShowDropdown] = useState(false);\r\n\r\n /**\r\n * Calculates the overall width of all child nodes within\r\n * a container element.\r\n * @param container\r\n * @param margin\r\n * @returns Number\r\n */\r\n const calculateWidthOfChildren = (container: HTMLUListElement, margin: number) => (\r\n Object.values(container.childNodes).reduce(\r\n (total, childElement: any) => total + (childElement.offsetWidth + margin), 0,\r\n )\r\n );\r\n\r\n /**\r\n * Handles the offset cut off of the navigation overflow. The offset\r\n * is used to cap the amount of visible link in view and determine\r\n * that we display in the view more menue.\r\n */\r\n const handleOverflow = () => {\r\n const { current } = linksContainer;\r\n\r\n if (current) {\r\n const containerWidth = current.clientWidth;\r\n\r\n if (linksTotalWidth > containerWidth) {\r\n setCutOffIndex((cutOffIndex - 1));\r\n } else if (linksTotalWidth <= (containerWidth - 200)) {\r\n setCutOffIndex((cutOffIndex + 1));\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Change the navOffset based on the current screen-size.\r\n */\r\n const handleNavOffset = () => {\r\n console.log('navOffset', navOffset);\r\n if (window.innerWidth >= breakpoints.md) {\r\n setNavOffset(navOffsetTablet);\r\n } else if (window.innerWidth >= breakpoints.lg) {\r\n setNavOffset(navOffsetLargeTablet);\r\n } else if (window.innerWidth >= breakpoints.xl) {\r\n setNavOffset(navOffsetDesktop);\r\n } else {\r\n setNavOffset(navOffsetMobile);\r\n }\r\n };\r\n\r\n /**\r\n * We observe the linkTotalWidth to trigger the handleOverflow method.\r\n * We also set an event listener to the window to manage the overflow\r\n * when the window is being resized. To make the resize listener as\r\n * smooth as possible we update a state prop (windowResized) so we can\r\n * trigger actions once the resize even has finished. This helps stop\r\n * event propagation. We also use a event trottle for the same reason.\r\n */\r\n useEffect(() => {\r\n if (linksTotalWidth) {\r\n handleOverflow();\r\n handleNavOffset();\r\n if (!hasResizeListener) {\r\n const eventListenerCallback = () => {\r\n setWindowResized(true);\r\n };\r\n\r\n trottle(window, 'resize', 50, eventListenerCallback);\r\n }\r\n }\r\n }, [linksTotalWidth]);\r\n\r\n /**\r\n * Here we are observing windowResized so that we can trigger the\r\n * handleOverflow methods. Once these are triggered we reset\r\n * windowResized.\r\n */\r\n useEffect(() => {\r\n if (windowResized) {\r\n handleOverflow();\r\n setHasResizeListener(true);\r\n setWindowResized(false);\r\n handleNavOffset();\r\n }\r\n }, [windowResized]);\r\n\r\n /**\r\n * Here we are recalculating the overall width of the links in view.\r\n * Each link has a margin-right of 24px that we also add into the\r\n * calulation.\r\n */\r\n useEffect(() => {\r\n if (linksContainer.current) {\r\n const linkMargin: number = 20;\r\n\r\n setLinksTotalWidth(\r\n calculateWidthOfChildren(linksContainer.current, linkMargin),\r\n );\r\n }\r\n }, [linksContainer, cutOffIndex]);\r\n\r\n /**\r\n * Handle dropdown toggle when clicking outside of filter.\r\n */\r\n useOutsideAlerter(moreLinksContainer, () => {\r\n setShowDropdown(false);\r\n });\r\n\r\n return (\r\n \r\n {heroImage && (\r\n
\r\n \r\n
\r\n )}\r\n\r\n {link && (\r\n \r\n )}\r\n\r\n \r\n
\r\n {title && (\r\n
\r\n

{title}

\r\n
\r\n )}\r\n\r\n \r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default PageHeader;\r\n","export default (\r\n element: Window | HTMLElement,\r\n eventType: 'resize' | 'click',\r\n delay: number,\r\n action: Function,\r\n) => {\r\n let throttled = false;\r\n\r\n element.addEventListener(eventType, () => {\r\n if (!throttled) {\r\n action();\r\n throttled = true;\r\n setTimeout(() => {\r\n throttled = false;\r\n }, delay);\r\n }\r\n });\r\n};\r\n","import * as React from 'react';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport Reveal from 'react-reveal/Reveal';\r\nimport CalendarItem from '../CalendarItem';\r\nimport {\r\n CalendarMonth as CalendarMonthProps,\r\n} from '../../core/typings/api';\r\nimport './styles.scss';\r\n\r\nconst CalendarMonth = ({\r\n items,\r\n monthName,\r\n}: CalendarMonthProps) => (\r\n
\r\n
\r\n {monthName}\r\n
\r\n {items && (\r\n
\r\n {items.map((day) => (\r\n
\r\n
\r\n {day.day}\r\n
\r\n
\r\n {day.items.map((event, index) => (\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 CalendarMonth;\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 { QueryStringObject } from '../../core/typings/api';\r\n\r\n/**\r\n * Calendar filters query string key map.\r\n */\r\nexport const queryStringParamsKeyMap: string[] = [\r\n 'discipline',\r\n 'raceCategory',\r\n 'raceType',\r\n 'raceClass',\r\n 'country',\r\n 'year',\r\n 'seasonId',\r\n];\r\n\r\n/**\r\n * Extracts all relivent querystring params\r\n * @returns\r\n */\r\nexport const mapQueryStringParams = (disciplineCode: string) => {\r\n const mappedQueryParams: QueryStringObject = {};\r\n const urlQueryParms = Object.fromEntries(\r\n new URLSearchParams(location.search),\r\n );\r\n\r\n Object.entries(urlQueryParms).forEach(\r\n ([key, value]) => {\r\n if (queryStringParamsKeyMap.includes(key)) {\r\n mappedQueryParams[key] = value;\r\n }\r\n },\r\n );\r\n return {\r\n discipline: disciplineCode,\r\n ...mappedQueryParams,\r\n };\r\n};\r\n\r\n/**\r\n * Resets the querystring by removing all related\r\n * qyery key listed in quertStringParamsKeyMap.\r\n */\r\nexport const resetQueryString = () => {\r\n const searchParams = new URLSearchParams(location.search);\r\n const urlQueryParms = Object.fromEntries(\r\n searchParams,\r\n );\r\n Object.entries(urlQueryParms).forEach(\r\n ([key]) => {\r\n if (queryStringParamsKeyMap.includes(key)) {\r\n searchParams.delete(key);\r\n }\r\n },\r\n );\r\n history.pushState(\r\n null,\r\n '',\r\n `${window.location.pathname}?${searchParams.toString()}`,\r\n );\r\n};\r\n\r\n/**\r\n * Generate querystring based on passed object. This\r\n * updates querystring entries and removes them if\r\n * passed in as undefined or as an empty string.\r\n * @param params\r\n */\r\nexport const generateQueryString = (params: QueryStringObject) => {\r\n const searchParams = new URLSearchParams(window.location.search);\r\n\r\n Object.keys(params).map((param) => {\r\n if (params[param] !== undefined && params[param] !== '') {\r\n return searchParams.set(param, params[param]);\r\n }\r\n return searchParams.delete(param);\r\n });\r\n\r\n history.pushState(\r\n null,\r\n '',\r\n `${window.location.pathname}?${searchParams.toString()}`,\r\n );\r\n};\r\n","import * as React from 'react';\r\nimport CompetitionCardProps from './type';\r\nimport { DateAndCategory, Link, SvgImage } from '../common';\r\nimport './styles.scss';\r\n\r\nconst CompetitionCard = ({\r\n colourCode,\r\n dates,\r\n name,\r\n raceHubLink,\r\n venue,\r\n disciplineLink,\r\n label,\r\n isDownload,\r\n isPublished,\r\n publishingDate,\r\n isUciEvent,\r\n isLive,\r\n}: CompetitionCardProps) => (\r\n
\r\n
\r\n {isUciEvent && (\r\n
\r\n \r\n
\r\n )}\r\n {label && (\r\n
\r\n {label}\r\n
\r\n )}\r\n
\r\n
\r\n \r\n
\r\n
\r\n {name}\r\n
\r\n
\r\n
\r\n
\r\n {dates}\r\n
\r\n
\r\n {venue}\r\n
\r\n {isDownload && isPublished && (\r\n
\r\n Published\r\n
\r\n )}\r\n {isDownload && publishingDate && (\r\n
\r\n {publishingDate}\r\n
\r\n )}\r\n {raceHubLink && (\r\n
\r\n \r\n
\r\n )}\r\n
\r\n
\r\n
\r\n);\r\n\r\nexport default CompetitionCard;\r\n","/* eslint-disable react/no-array-index-key */\r\nimport React, { useContext } from 'react';\r\nimport { Link } from '../common';\r\nimport LocalizationContext from '../../contexts/Localizations';\r\nimport CompetitionCard from '../CompetitionCard';\r\nimport Carousel from '../Carousel';\r\nimport CompetitionCarouselProps from './type';\r\nimport './styles.scss';\r\n\r\nconst CompetitionCarousel = ({\r\n cards,\r\n competitions,\r\n themeColor,\r\n slickConfig,\r\n standalone,\r\n viewMoreLink,\r\n title,\r\n}: CompetitionCarouselProps) => {\r\n const { translations } = useContext(LocalizationContext);\r\n\r\n return (\r\n
\r\n {title && (\r\n

\r\n {title}\r\n

\r\n )}\r\n\r\n
\r\n \r\n {cards?.live?.map((item, index) => (\r\n
\r\n \r\n
\r\n ))}\r\n\r\n {cards?.latest && (\r\n
\r\n \r\n
\r\n )}\r\n\r\n {cards?.upcoming?.map((item, index) => (\r\n
\r\n \r\n
\r\n ))}\r\n\r\n {competitions?.map((item, index) => (\r\n
\r\n \r\n
\r\n ))}\r\n \r\n
\r\n {viewMoreLink && (\r\n
\r\n \r\n
\r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default CompetitionCarousel;\r\n","import { useState, useEffect } from 'react';\r\n\r\ninterface UseTwitterProps {\r\n isTwitterLoaded: boolean;\r\n}\r\nconst useTwitter = (source: string): UseTwitterProps => {\r\n const [isLoaded, setIsLoaded] = useState(false);\r\n\r\n useEffect(() => {\r\n const script = document.createElement('script');\r\n script.type = 'text/javascript';\r\n script.src = source;\r\n document.body.appendChild(script);\r\n script.onload = () => setIsLoaded(true);\r\n });\r\n\r\n return {\r\n isTwitterLoaded: isLoaded,\r\n };\r\n};\r\n\r\nexport default useTwitter;\r\n","import * as React from 'react';\r\nimport { useState, useRef, useEffect } from 'react';\r\nimport SvgImage from '../SvgImage';\r\nimport useHabitat from '../../../hooks/useHabitat';\r\nimport { insertUrlParam, getUrlParamValue } from '../../../utilities/browser';\r\nimport TabsProps, { TabProps, TabPanelProps } from './type';\r\nimport './styles.scss';\r\nimport useTwitter from '../../../hooks/useTwitter';\r\n\r\nconst TabPanel = ({\r\n children,\r\n tabId,\r\n}: TabPanelProps) => {\r\n useTwitter('https://platform.twitter.com/widgets.js');\r\n useHabitat();\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nconst Tab = React.forwardRef(({\r\n id,\r\n label,\r\n date,\r\n selected,\r\n ...props\r\n}: TabProps, ref: any) => (\r\n \r\n {label}\r\n {date && (\r\n {date}\r\n )}\r\n \r\n));\r\n\r\nconst Tabs = ({\r\n ariaLabel,\r\n discipline,\r\n nested,\r\n children,\r\n changeTabCallBack,\r\n isCalendar,\r\n isEvent = false,\r\n withScrollPaddles,\r\n}: TabsProps) => {\r\n const [previousIsDisabled, setPreviousIsDisabled] = useState(true);\r\n const [nextIsDisabled, setNextIsDisabled] = useState(false);\r\n const [scrollPaddlesShowing, setScrollPaddlesShowing] = useState(false);\r\n const tabScrollContainer = useRef(null);\r\n const tabScrollContent = useRef(null);\r\n const tabPaddles = useRef(null);\r\n\r\n const root = 'tabs';\r\n const classes = [\r\n root,\r\n `${root}--${discipline}`,\r\n ];\r\n if (nested) {\r\n classes.push(`${root}--nested`);\r\n }\r\n if (isCalendar) {\r\n classes.push(`${root}--calendar`);\r\n }\r\n if (isEvent) {\r\n classes.push(`${root}--event`);\r\n }\r\n\r\n // @ts-ignore\r\n const tabs = children?.flat()\r\n .filter((child: JSX.Element) => child.type.displayName === 'Tab');\r\n // @ts-ignore\r\n const tabPanels = children?.flat()\r\n .filter((child: JSX.Element) => child.type.displayName === 'TabPanel');\r\n\r\n const getLoadingSelectedTabIndex = () => {\r\n if (!nested) {\r\n const urlSlug = getUrlParamValue('tab');\r\n\r\n const selected = tabs.find((tab: JSX.Element) => tab.props.id === urlSlug)\r\n || tabs.find((tab: JSX.Element) => tab.props.selected === true);\r\n\r\n return selected ? tabs.indexOf(selected) : 0;\r\n }\r\n\r\n return 0;\r\n };\r\n\r\n const [selectedTab, setSelectedTab] = useState(getLoadingSelectedTabIndex);\r\n const tabsRef = useRef([]);\r\n\r\n const selectTab = (index: number): void => {\r\n setSelectedTab(index);\r\n\r\n if (!nested) {\r\n insertUrlParam('tab', tabs[index].props.id);\r\n }\r\n };\r\n\r\n const navigateTabs = (\r\n event: React.KeyboardEvent,\r\n tabRefs: HTMLButtonElement[],\r\n ): void => {\r\n if (event.key === 'ArrowLeft') {\r\n const prevIndex = tabRefs\r\n .findIndex((tab) => tab === document.activeElement) - 1;\r\n const modulo = tabRefs.length;\r\n const prevTabIndex = ((prevIndex % modulo) + modulo) % modulo;\r\n\r\n tabRefs[prevTabIndex].focus();\r\n } else if (event.key === 'ArrowRight') {\r\n const nextIndex = tabRefs\r\n .findIndex((tab) => tab === document.activeElement) + 1;\r\n const modulo = tabRefs.length;\r\n const nextTabIndex = nextIndex % modulo;\r\n\r\n tabRefs[nextTabIndex].focus();\r\n }\r\n };\r\n\r\n const handlePaddleOnClick = (direction: 'previous' | 'next') => {\r\n if (tabScrollContainer.current && tabScrollContent.current) {\r\n const scrollIncrement = 400;\r\n let scrollValue = tabScrollContainer.current.scrollLeft;\r\n if (direction === 'previous') {\r\n setNextIsDisabled(false);\r\n scrollValue -= scrollIncrement;\r\n }\r\n if (direction === 'next') {\r\n setPreviousIsDisabled(false);\r\n scrollValue += scrollIncrement;\r\n }\r\n tabScrollContainer.current.scroll({\r\n left: scrollValue,\r\n behavior: 'smooth',\r\n });\r\n\r\n if (scrollValue < 1) {\r\n setPreviousIsDisabled(true);\r\n }\r\n if (scrollValue >= tabScrollContent.current.scrollWidth - window.innerWidth) {\r\n setNextIsDisabled(true);\r\n }\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (tabScrollContainer.current && tabScrollContent.current) {\r\n if (tabScrollContent.current.scrollWidth > tabScrollContainer.current.offsetWidth) {\r\n setScrollPaddlesShowing(true);\r\n }\r\n }\r\n }, []);\r\n\r\n const tabsWithDate = tabs.some((tab: JSX.Element) => !!tab.props.date);\r\n\r\n return (\r\n
\r\n
\r\n \r\n \r\n {tabs && tabs.map((tab: JSX.Element, index: number) => (\r\n {\r\n tabsRef.current[index] = element;\r\n }}\r\n id={`tab-${tab.props.id}`}\r\n label={tab.props.label}\r\n date={tab.props.date}\r\n selected={index === selectedTab}\r\n onClick={() => {\r\n selectTab(index);\r\n if (changeTabCallBack) {\r\n changeTabCallBack();\r\n }\r\n }}\r\n onKeyDown={(event) => navigateTabs(event, tabsRef.current)}\r\n />\r\n ))}\r\n
\r\n
\r\n {withScrollPaddles && scrollPaddlesShowing && (\r\n
\r\n handlePaddleOnClick('previous')}\r\n aria-label=\"previous\"\r\n >\r\n \r\n \r\n handlePaddleOnClick('next')}\r\n aria-label=\"next\"\r\n >\r\n \r\n \r\n
\r\n )}\r\n\r\n \r\n {tabPanels && tabPanels\r\n .find((panel: JSX.Element) => tabs[selectedTab].props.id === panel.props.tabId)}\r\n \r\n );\r\n};\r\n\r\nTab.displayName = 'Tab';\r\nTabPanel.displayName = 'TabPanel';\r\n\r\nexport { Tab, TabPanel };\r\nexport default Tabs;\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 disableUppercase?: boolean;\r\n}\r\n\r\nconst UnderlineTitle = ({\r\n title,\r\n containerTheme,\r\n className,\r\n disableUppercase,\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 disableUppercase?: 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 disableUppercase,\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 moment from 'moment';\r\nimport { useEffect, useState, useContext } from 'react';\r\nimport FileDownload from 'js-file-download';\r\nimport { Container } from '../helpers/Grid';\r\nimport CalendarProps from './type';\r\nimport { Loader, SvgImage } from '../common';\r\nimport FiltersPanel from '../FiltersPanel';\r\nimport CalendarMonth from '../CalendarMonth';\r\nimport JumpList from '../common/JumpList';\r\nimport CalendarItemsList from '../CalendarItemsList';\r\nimport mapFilterType from '../../mutators';\r\nimport LocalizationContext from '../../contexts/Localizations';\r\nimport breakpoints from '../../breakpoints';\r\nimport { getUrlParamValue } from '../../utilities/browser';\r\nimport {\r\n QueryStringObject,\r\n CalendarApiQueryParams,\r\n CalendarItem,\r\n CalendarApiResponse,\r\n CalendarDownloadApiParams,\r\n ApiFilter,\r\n CalendarMonth as CalendarMonths,\r\n} from '../../core/typings/api';\r\nimport {\r\n mapQueryStringParams,\r\n generateQueryString,\r\n} from '../../modules/Calendar/methods';\r\nimport api from '../../core/api/models';\r\nimport './styles.scss';\r\n\r\ninterface FilterOption {\r\n displayText: string;\r\n selectedValue: boolean;\r\n value: string;\r\n futureYear?: number;\r\n}\r\n\r\nconst Calendar = ({\r\n filters,\r\n disciplineCode,\r\n isPast = false,\r\n bearerToken,\r\n allowMultipleSelection,\r\n isCwcResult,\r\n calendarDownloadOptions,\r\n}: CalendarProps) => {\r\n const apiEndpoint = isPast ? api.calendar.getPast : api.calendar.getUpcoming;\r\n\r\n const [isFetchingData, setIsFetchingData] = useState(false);\r\n const [isDownloading, setIsDownloading] = useState(false);\r\n const [calendarMonths, setCalendarMonths] = useState([]);\r\n const [endPointFilters, setEndpointFilters] = useState();\r\n const [selectedMonthIndex, setSelectedMonthIndex] = useState(0);\r\n const [searchResults, setSearchResults] = useState();\r\n const [searchTerm, setSearchTerm] = useState(\r\n getUrlParamValue('searchTerm') || '',\r\n );\r\n const [years, setYears] = useState();\r\n const [selectedYear, setSelectedYear] = useState(\r\n getUrlParamValue('year') || '',\r\n );\r\n const [isMobile, setIsMobile] = useState(window.outerWidth < breakpoints.lg);\r\n const [apiQueryParams, setApiQueryParams] = useState(\r\n mapQueryStringParams(disciplineCode),\r\n );\r\n const [apiError, setApiError] = useState();\r\n const [downloadOptions, setDownloadOptions] = useState();\r\n const [downloadParams, setDownloadParams] = useState();\r\n const currentYearValue = new Date().getFullYear();\r\n const nextYearValue = currentYearValue + 1;\r\n const yearAfterNextValue = currentYearValue + 2;\r\n const { translations } = useContext(LocalizationContext);\r\n\r\n /**\r\n * Handles the download calendar\r\n */\r\n const handleDownload = (event: any, token: string) => {\r\n const url = event.value;\r\n const fileType = event.displayText;\r\n setIsDownloading(true);\r\n const isFutureYear = event.futureYear && downloadParams?.Query.year;\r\n const futureYearValue = event.futureYear;\r\n const futureYearParams = isFutureYear ? {\r\n ...downloadParams,\r\n Query: {\r\n ...downloadParams.Query,\r\n year: futureYearValue?.toString(),\r\n country: downloadParams?.Query?.country,\r\n discipline: downloadParams?.Query?.discipline,\r\n raceCategory: downloadParams?.Query?.category,\r\n raceType: downloadParams?.Query?.raceType,\r\n raceClass: downloadParams?.Query?.competitionClass,\r\n seasonId: downloadParams?.Query?.seasonId,\r\n },\r\n ReportTitle: `${disciplineCode || apiQueryParams.discipline} - ${futureYearValue}`,\r\n } : null;\r\n\r\n api.calendar.downloadCalendar(\r\n url,\r\n token,\r\n isFutureYear ? futureYearParams as CalendarDownloadApiParams\r\n : downloadParams as CalendarDownloadApiParams,\r\n ).then((response) => {\r\n FileDownload(\r\n response.data,\r\n `UCICompetitions_${downloadParams?.Query.discipline}_${\r\n (isFutureYear ? futureYearParams?.Query.year : downloadParams?.Query.year)}.${fileType}`,\r\n );\r\n setIsDownloading(false);\r\n });\r\n };\r\n\r\n /**\r\n * Fetch Calendar data from endpoint and set data\r\n * to state.\r\n */\r\n const fetchCalendarData = async () => {\r\n setIsFetchingData(true);\r\n\r\n try {\r\n const upcomingPastData: CalendarApiResponse = await apiEndpoint(\r\n apiQueryParams,\r\n );\r\n const cwcData: CalendarApiResponse = await api.calendar.getCwc(apiQueryParams.discipline || '');\r\n\r\n const data = isCwcResult ? cwcData : upcomingPastData;\r\n\r\n const yearFilter = data.filters?.find((filter) => (\r\n filter.queryParam === 'year'\r\n ));\r\n\r\n setIsFetchingData(false);\r\n\r\n if (data.items) {\r\n if (isCwcResult) {\r\n const augustItems = data.items.find((item) => item.year === 2023 && item.month === 8);\r\n const pastCwcRaces = augustItems?.items\r\n .filter((item) => moment(item.competitionDate).isBefore(moment()));\r\n const items = pastCwcRaces?.length ? [{ ...augustItems, items: pastCwcRaces }] : [];\r\n\r\n setCalendarMonths(items as CalendarMonths[]);\r\n setSelectedMonthIndex(0);\r\n } else if (isPast) {\r\n setCalendarMonths(data.items.reverse());\r\n setSelectedMonthIndex(data.items.length - 1);\r\n } else {\r\n setCalendarMonths(data.items);\r\n setSelectedMonthIndex(0);\r\n }\r\n }\r\n\r\n if (data.filters) {\r\n setEndpointFilters(isCwcResult ? undefined : data.filters);\r\n }\r\n\r\n if (yearFilter) {\r\n const selectedYearValue = yearFilter.items.find((year) => year.selected);\r\n setYears(yearFilter);\r\n if (selectedYearValue) {\r\n setSelectedYear(selectedYearValue.code.toString());\r\n }\r\n }\r\n\r\n if (data.downloadButtons) {\r\n const currentYear = new Date().getFullYear();\r\n const dataYear = Number(data.downloadButtons.year);\r\n const validatedYear = dataYear <= currentYear ? dataYear : currentYear;\r\n\r\n // Special case for CRO which runs in a bespoke way and must be updated manually.\r\n const checkedYear = apiQueryParams.discipline === 'CRO' ? '2025' : validatedYear;\r\n\r\n setDownloadParams(\r\n {\r\n IsGrouped: true,\r\n Language: 'En',\r\n Query: {\r\n discipline: apiQueryParams.discipline || disciplineCode,\r\n year: `${apiQueryParams.year || checkedYear}`,\r\n country: apiQueryParams.country,\r\n category: apiQueryParams.raceCategory,\r\n raceType: apiQueryParams.raceType,\r\n competitionClass: apiQueryParams.raceClass,\r\n seasonId: apiQueryParams.seasonId,\r\n },\r\n ReportTitle: `${disciplineCode || apiQueryParams.discipline} - ${String(apiQueryParams.year || checkedYear)}`,\r\n },\r\n );\r\n\r\n const isAll = window.location.pathname.startsWith('/calendar/all');\r\n\r\n const { discipline, ...restApiQueryParams } = apiQueryParams;\r\n\r\n const isMultipleSelected = Object.values(isAll ? apiQueryParams : restApiQueryParams)\r\n .some((param) => param);\r\n\r\n const defaultDownloadOptions = [\r\n {\r\n displayText: isMultipleSelected\r\n ? translations.calendar.downloadSelectionLabel\r\n : translations.calendar.downloadSeasonLabel,\r\n selectedValue: true,\r\n value: '',\r\n },\r\n {\r\n displayText: 'pdf',\r\n selectedValue: false,\r\n value: data.downloadButtons.downloadPdfUrl,\r\n },\r\n {\r\n displayText: 'xls',\r\n selectedValue: false,\r\n value: data.downloadButtons.downloadXlsUrl,\r\n },\r\n ];\r\n\r\n const nextYearOptions = [\r\n {\r\n displayText: 'pdf',\r\n selectedValue: false,\r\n value: data.downloadButtons.downloadPdfUrl,\r\n futureYear: nextYearValue,\r\n },\r\n {\r\n displayText: 'xls',\r\n selectedValue: false,\r\n value: data.downloadButtons.downloadXlsUrl,\r\n futureYear: nextYearValue,\r\n },\r\n ];\r\n\r\n const nextTwoYearOptions = [\r\n {\r\n displayText: 'pdf',\r\n selectedValue: false,\r\n value: data.downloadButtons.downloadPdfUrl,\r\n futureYear: nextYearValue,\r\n },\r\n {\r\n displayText: 'xls',\r\n selectedValue: false,\r\n value: data.downloadButtons.downloadXlsUrl,\r\n futureYear: nextYearValue,\r\n },\r\n {\r\n displayText: 'pdf',\r\n selectedValue: false,\r\n value: data.downloadButtons.downloadPdfUrl,\r\n futureYear: yearAfterNextValue,\r\n },\r\n {\r\n displayText: 'xls',\r\n selectedValue: false,\r\n value: data.downloadButtons.downloadXlsUrl,\r\n futureYear: yearAfterNextValue,\r\n },\r\n ];\r\n\r\n let combinedDownloadOptions = [...defaultDownloadOptions];\r\n\r\n if (calendarDownloadOptions === 'Current and Next') {\r\n combinedDownloadOptions = [\r\n ...combinedDownloadOptions,\r\n ...nextYearOptions,\r\n ];\r\n } else if (calendarDownloadOptions === 'Current and Next Two') {\r\n combinedDownloadOptions = [\r\n ...combinedDownloadOptions,\r\n ...nextTwoYearOptions,\r\n ];\r\n }\r\n\r\n setDownloadOptions(combinedDownloadOptions);\r\n }\r\n } catch (error) {\r\n setApiError(error as string);\r\n }\r\n };\r\n\r\n /**\r\n * Reset search term and results.\r\n */\r\n const resetSearch = () => {\r\n setSearchResults(undefined);\r\n setSearchTerm('');\r\n };\r\n\r\n /**\r\n * Runs though all months and data stored in state\r\n * and returns a list of events if the name or\r\n * venue string inclue the keyword.\r\n *\r\n * We also want this to persist so we append/remove\r\n * it from the querystring accordingly.\r\n * @param keyword\r\n */\r\n const handleSearch = (keyword: string) => {\r\n setSearchTerm(keyword);\r\n generateQueryString({\r\n searchTerm: keyword,\r\n });\r\n if (keyword.length < 1) {\r\n setSearchResults(undefined);\r\n return;\r\n }\r\n let results: CalendarItem[] = [];\r\n calendarMonths.forEach((month) => {\r\n month.items.forEach((day) => {\r\n results = [\r\n ...results,\r\n ...day.items.filter((event) => (\r\n event.name?.toLocaleLowerCase().includes(\r\n keyword.toLocaleLowerCase(),\r\n ) || event.venue?.toLocaleLowerCase().includes(\r\n keyword.toLocaleLowerCase(),\r\n )\r\n )),\r\n ];\r\n });\r\n });\r\n setSearchResults(results);\r\n };\r\n\r\n /**\r\n * Handles next calendar month\r\n */\r\n const handleNextMonth = () => {\r\n if (selectedMonthIndex < (calendarMonths.length - 1)) {\r\n setSelectedMonthIndex(selectedMonthIndex + 1);\r\n }\r\n };\r\n\r\n /**\r\n * Handles previous calendar month\r\n */\r\n const handlePreviousMonth = () => {\r\n if (selectedMonthIndex !== 0 && calendarMonths.length !== 0) {\r\n setSelectedMonthIndex(selectedMonthIndex - 1);\r\n }\r\n };\r\n\r\n /**\r\n * Updates the apiQueryParams\r\n * @param params\r\n */\r\n const handleFilterChange = (params: any) => {\r\n resetSearch();\r\n setTimeout(() => {\r\n const state = { ...apiQueryParams, ...params.selected };\r\n\r\n if (state.discipline === 'CRO') {\r\n state.year = '2025';\r\n }\r\n\r\n setApiQueryParams(state);\r\n setIsDownloading(false);\r\n }, 100);\r\n };\r\n\r\n /**\r\n * Set resize event listener to check if breakpoint\r\n * is below lg. We use the isMobile varible to if we\r\n * need to push the year filter through to the\r\n * FilterPanel (visibleFilters).\r\n */\r\n useEffect(() => {\r\n if (years) {\r\n window.addEventListener('resize', () => {\r\n setIsMobile(window.outerWidth < breakpoints.lg);\r\n });\r\n }\r\n }, [years]);\r\n\r\n /**\r\n * Fetch Calendar data whenever the apiQueryParams\r\n * updates.\r\n */\r\n useEffect(() => {\r\n if (apiQueryParams) {\r\n generateQueryString(\r\n apiQueryParams as QueryStringObject,\r\n );\r\n }\r\n fetchCalendarData();\r\n }, [apiQueryParams]);\r\n\r\n /**\r\n * We get the searchterm from the query string\r\n * when the component mounts. At this point the\r\n * calendar items have not yet been loaded so\r\n * we need to wait until we recieve calendarMonths\r\n * in state then trigger a handleSeach.\r\n */\r\n useEffect(() => {\r\n if (calendarMonths\r\n && searchTerm !== ''\r\n && !isFetchingData) {\r\n handleSearch(searchTerm || '');\r\n }\r\n }, [calendarMonths, isFetchingData]);\r\n\r\n /**\r\n * Updates the year of the download query object\r\n */\r\n useEffect(() => {\r\n if (selectedYear) {\r\n if (downloadParams?.Query?.discipline === 'CRO') {\r\n setSelectedYear(nextYearValue.toString());\r\n }\r\n\r\n setDownloadParams({\r\n ...downloadParams,\r\n ReportTitle: `${disciplineCode} - ${selectedYear}`,\r\n\r\n Query: {\r\n ...downloadParams?.Query,\r\n Year: Number(selectedYear),\r\n Country: downloadParams?.Query?.country,\r\n Discipline: downloadParams?.Query?.discipline,\r\n Category: downloadParams?.Query?.category,\r\n RaceType: downloadParams?.Query?.raceType,\r\n CompetitionClass: downloadParams?.Query?.competitionClass,\r\n SeasonId: downloadParams?.Query?.seasonId,\r\n },\r\n } as CalendarDownloadApiParams);\r\n }\r\n }, [selectedYear]);\r\n\r\n return (\r\n
\r\n \r\n <>\r\n
\r\n {filters && (\r\n handleFilterChange(params)\r\n }\r\n visibleFilterCallback={\r\n (params: CalendarApiQueryParams) => handleFilterChange(params)\r\n }\r\n searchLabel={translations.calendar.searchText}\r\n searchPlaceholder={translations.calendar.searchLabel}\r\n additionalFiltersLabel={translations.calendar.moreFiltersLabel}\r\n additionalFiltersApplyButtonLabel={translations.calendar.applyFiltersLabel}\r\n searchFieldCallback={handleSearch}\r\n searchTerm={searchTerm || ''}\r\n allowMultipleSelection={allowMultipleSelection}\r\n />\r\n )}\r\n
\r\n {(downloadOptions && apiQueryParams.discipline && !isCwcResult) && (\r\n
\r\n {\r\n handleDownload(event, bearerToken);\r\n }}\r\n disableFirst={\r\n Boolean(!isFetchingData && !calendarMonths.length) || isDownloading\r\n }\r\n />\r\n\r\n {isDownloading && }\r\n
\r\n )}\r\n {(!apiQueryParams.discipline && !isCwcResult) && (\r\n
\r\n null}\r\n disableFirst\r\n />\r\n

{translations.calendar.downloadHelpText}

\r\n
\r\n )}\r\n {years && (\r\n
\r\n {\r\n setSelectedYear(event.value);\r\n handleFilterChange({\r\n selected: {\r\n year: event.value,\r\n },\r\n });\r\n }}\r\n />\r\n
\r\n )}\r\n
\r\n
\r\n\r\n
\r\n {isFetchingData && (\r\n
\r\n \r\n
\r\n )}\r\n\r\n {Boolean(!isFetchingData && !calendarMonths.length) && (\r\n
\r\n

\r\n {translations.calendar.noResults}\r\n

\r\n
\r\n )}\r\n\r\n {Boolean(apiError) && (\r\n
\r\n

\r\n {apiError}\r\n

\r\n
\r\n )}\r\n\r\n {searchResults && !isFetchingData && (\r\n
\r\n {Boolean(searchResults.length) && (\r\n \r\n )}\r\n {Boolean(searchResults.length) === false && (\r\n
\r\n

\r\n {translations.calendar.noSearchResults}\r\n

\r\n
\r\n )}\r\n
\r\n )}\r\n\r\n {Boolean(calendarMonths.length && !isFetchingData && !searchResults) && (\r\n <>\r\n
\r\n handlePreviousMonth()}\r\n disabled={selectedMonthIndex === 0}\r\n >\r\n \r\n \r\n handleNextMonth()}\r\n disabled={selectedMonthIndex === (calendarMonths.length - 1)}\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\n\r\nexport default Calendar;\r\n","module.exports = function(data, filename, mime, bom) {\n var blobData = (typeof bom !== 'undefined') ? [bom, data] : [data]\n var blob = new Blob(blobData, {type: mime || 'application/octet-stream'});\n if (typeof window.navigator.msSaveBlob !== 'undefined') {\n // IE workaround for \"HTML7007: One or more blob URLs were\n // revoked by closing the blob for which they were created.\n // These URLs will no longer resolve as the data backing\n // the URL has been freed.\"\n window.navigator.msSaveBlob(blob, filename);\n }\n else {\n var blobURL = (window.URL && window.URL.createObjectURL) ? window.URL.createObjectURL(blob) : window.webkitURL.createObjectURL(blob);\n var tempLink = document.createElement('a');\n tempLink.style.display = 'none';\n tempLink.href = blobURL;\n tempLink.setAttribute('download', filename);\n\n // Safari thinks _blank anchor are pop ups. We only want to set _blank\n // target if the browser does not support the HTML5 download attribute.\n // This allows you to download files in desktop safari if pop up blocking\n // is enabled.\n if (typeof tempLink.download === 'undefined') {\n tempLink.setAttribute('target', '_blank');\n }\n\n document.body.appendChild(tempLink);\n tempLink.click();\n\n // Fixes \"webkit blob resource error 1\"\n setTimeout(function() {\n document.body.removeChild(tempLink);\n window.URL.revokeObjectURL(blobURL);\n }, 200)\n }\n}\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 { CalendarItem as CalendarItemType } from '../../core/typings/api';\r\nimport CalendarItem from '../CalendarItem';\r\nimport './styles.scss';\r\n\r\ninterface CalendarItemsListProps {\r\n items: CalendarItemType[];\r\n}\r\n\r\nconst CalendarItemsList = ({\r\n items,\r\n}: CalendarItemsListProps) => (\r\n
\r\n {items.map((item) => )}\r\n
\r\n);\r\n\r\nexport default CalendarItemsList;\r\n","import React from 'react';\r\nimport { Container } from '../helpers/Grid';\r\nimport { Image, UnderlineTitle } from '../common';\r\nimport SponsorsProps from './type';\r\nimport './styles.scss';\r\n\r\nconst Sponsors = ({\r\n title,\r\n sponsors,\r\n}: SponsorsProps) => (\r\n
\r\n \r\n \r\n\r\n
    \r\n {sponsors.map(({ logo, link }) => (\r\n
  • \r\n {/* eslint-disable-next-line react/jsx-no-target-blank */}\r\n \r\n {logo.title}\r\n \r\n
  • \r\n ))}\r\n
\r\n
\r\n
\r\n);\r\n\r\nexport default Sponsors;\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","module.exports = require('./lib/axios');","'use strict';\n\nvar bind = require('./helpers/bind');\n\n/*global toString:true*/\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n","import * as React from 'react';\r\nimport { useEffect, useState, useRef } from 'react';\r\nimport { SvgImage } from '../common';\r\nimport { Container } from '../helpers/Grid';\r\nimport FeaturedCompetitionsListProps from './type';\r\nimport { scrollIntoView } from '../../utilities/browser';\r\nimport './styles.scss';\r\n\r\nconst defaultCutOffIndex: number = 4;\r\nconst scrollToIdRef: string = '#featured-competitions-list-item-';\r\n\r\nconst FeaturedCompetitionsList = ({\r\n links,\r\n discipline,\r\n viewMoreLabel,\r\n}: FeaturedCompetitionsListProps) => {\r\n const linksContainer = useRef(null);\r\n const [cutOffIndex, setCutOffIndex] = useState(defaultCutOffIndex);\r\n const [nextScrollToId, setNextScrollToId] = useState(defaultCutOffIndex + 1);\r\n const [isViewMore, setIsViewmore] = useState(\r\n (links.length - 1) >= cutOffIndex,\r\n );\r\n\r\n const viewMoreAction = (event: React.MouseEvent) => {\r\n event.preventDefault();\r\n if (links.length > cutOffIndex) {\r\n setCutOffIndex(cutOffIndex + defaultCutOffIndex);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n setIsViewmore((links.length - 1) >= cutOffIndex);\r\n // we add x2 to the cutOffIndex this accounts for the\r\n // index offset and the next element.\r\n setNextScrollToId(cutOffIndex);\r\n if (linksContainer.current) {\r\n const scrollToElement = linksContainer.current.querySelector(\r\n `${scrollToIdRef}${nextScrollToId}`,\r\n );\r\n\r\n if (scrollToElement) {\r\n scrollIntoView((scrollToElement as HTMLElement), 'smooth');\r\n }\r\n }\r\n }, [cutOffIndex]);\r\n\r\n return (\r\n
\r\n \r\n
\r\n \r\n {isViewMore && (\r\n \r\n )}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default FeaturedCompetitionsList;\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 * as React from 'react';\r\n\r\ninterface ContainerProps {\r\n className?: string;\r\n children: JSX.Element | JSX.Element[];\r\n overflowHidden?: boolean;\r\n}\r\n\r\ninterface ColumnProps {\r\n sm?: number;\r\n md?: number;\r\n lg?: number;\r\n xl?: number;\r\n className?: string;\r\n children: React.ReactNode;\r\n}\r\n\r\ninterface GridProps {\r\n isFlush?: boolean;\r\n className?: string;\r\n}\r\n\r\nexport const Container = ({\r\n children,\r\n className,\r\n overflowHidden = false,\r\n}: ContainerProps) => (\r\n
    \r\n {children}\r\n
    \r\n);\r\n\r\nconst Column = ({\r\n sm = 6,\r\n md = 6,\r\n lg = 12,\r\n xl,\r\n className,\r\n children,\r\n}: ColumnProps) => (\r\n
    \r\n {children}\r\n
    \r\n);\r\n\r\nexport class Grid extends React.Component {\r\n static container = Container;\r\n\r\n static Column = Column;\r\n\r\n render() {\r\n const {\r\n children,\r\n isFlush,\r\n className,\r\n } = this.props;\r\n return (\r\n
    \r\n {children}\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 React, { useContext } from 'react';\r\nimport { Container } from '../../components/helpers/Grid';\r\nimport useHabitat from '../../hooks/useHabitat';\r\nimport PageHeader from '../../components/PageHeader';\r\nimport CompetitionCarousel from '../../components/CompetitionCarousel';\r\nimport FeaturedCompetitionsList from '../../components/FeaturedCompetitionsList';\r\nimport Sponsors from '../../components/Sponsors';\r\nimport Tabs, { Tab, TabPanel } from '../../components/common/Tabs';\r\nimport Calendar from '../../components/Calendar';\r\nimport LocalizationContext from '../../contexts/Localizations';\r\nimport DisciplineModuleProps from './type';\r\nimport { resetQueryString } from '../Calendar/methods';\r\nimport './styles.scss';\r\n\r\nconst disciplineIdMap = {\r\n track: 9,\r\n road: 10,\r\n trials: 12,\r\n indoor: 5,\r\n para: 8,\r\n 'bmx-racing': 1,\r\n 'cyclo-cross': 3,\r\n 'mountain-bike': 7,\r\n 'bmx-freestyle': 13,\r\n gravel: 15,\r\n};\r\n\r\nconst DisciplineModule = ({\r\n header,\r\n carousel,\r\n featuredCompetitions,\r\n activeTab,\r\n content,\r\n discipline,\r\n sponsors,\r\n calendar,\r\n hasRankings,\r\n calendarDownloadOptions,\r\n bearerToken,\r\n}: DisciplineModuleProps) => {\r\n const { translations } = useContext(LocalizationContext);\r\n // @ts-ignore\r\n const disciplineId = disciplineIdMap[discipline.replace(/\\s+/g, '-').toLowerCase()];\r\n useHabitat();\r\n\r\n return (\r\n
    \r\n {header && (\r\n \r\n )}\r\n\r\n {(carousel?.latest || !!carousel?.upcoming?.length) && (\r\n \r\n
    \r\n \r\n
    \r\n \r\n )}\r\n\r\n {featuredCompetitions && featuredCompetitions.length && activeTab !== 'TechnicalRankings' && activeTab !== 'YellowCards' && (\r\n \r\n )}\r\n\r\n {!calendar && content && (\r\n // eslint-disable-next-line react/no-danger\r\n
    \r\n )}\r\n\r\n {!content && calendar && calendar.isPast && (\r\n \r\n )}\r\n\r\n {!content && calendar && !calendar.isPast && (\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\n {Boolean(hasRankings && disciplineId) && (\r\n
    \r\n \r\n