{"version":3,"sources":["webpack:///./src/components/common/SvgImage/index.tsx","webpack:///./src/components/common/Button/index.tsx","webpack:///./src/components/common/Hero/index.tsx","webpack:///./src/components/common/ImageWithFocalPoint/index.tsx","webpack:///./src/components/common/Link/index.tsx","webpack:///./src/components/common/Overlay/index.tsx","webpack:///./src/components/common/Stats/index.tsx","webpack:///./src/core/config/index.ts","webpack:///./src/contexts/Localizations/index.tsx","webpack:///./src/contexts/Localizations/defaultLocalizations.ts","webpack:///./src/components/common/Tag/index.tsx","webpack:///./src/components/common/Image/index.tsx","webpack:///./src/components/common/ImageObject/index.tsx","webpack:///./src/components/common/UnderlineTitle/index.tsx","webpack:///./src/components/common/Content/index.tsx","webpack:///./src/components/common/Contact/index.tsx","webpack:///./src/components/common/RichText/index.tsx","webpack:///./node_modules/axios/index.js","webpack:///./node_modules/axios/lib/utils.js","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/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:///./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:///./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/constants.ts","webpack:///./src/components/VideoObject/index.tsx","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:///./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/Countdown/index.tsx","webpack:///./node_modules/moment-timezone/index.js","webpack:///./src/components/CalendarMonth/index.tsx","webpack:///./src/components/Watch/index.tsx","webpack:///./src/modules/Calendar/methods.ts","webpack:///./src/hooks/useTwitter.tsx","webpack:///./src/components/common/Tabs/index.tsx","webpack:///./src/components/HeroCarousel/index.tsx","webpack:///./src/components/HomepageHeader/index.tsx","webpack:///./node_modules/moment-timezone/moment-timezone.js","webpack:///./src/components/Calendar/index.tsx","webpack:///./node_modules/js-file-download/file-download.js","webpack:///./src/components/CalendarItemsList/index.tsx","webpack:///./src/components/Sponsors/index.tsx","webpack:///./src/components/CountdownModule/index.tsx","webpack:///./src/components/EventHeader/components/LiveEventsCarousel.tsx","webpack:///./src/components/EventHeader/components/HubEventsCarousel.tsx","webpack:///./src/components/EventHeader/index.tsx","webpack:///./src/components/CompetitionHeader/index.tsx","webpack:///./src/components/EventDate/index.tsx","webpack:///./src/components/EventLocation/index.tsx","webpack:///./src/components/RaceHeader/index.tsx","webpack:///./src/modules/Hubs/index.tsx"],"names":["title","reference","ariaHidden","className","aria-hidden","xlinkHref","type","style","text","icon","ariaLabel","disabled","showLoader","iconOnly","fullWidth","isProcessing","handleClick","buttonClass","onClick","aria-label","SvgImage","Hero","backLink","children","colorTheme","image","imageSize","isDarkened","isLanding","isForPage","root","classes","push","join","Container","href","url","ImageObject","fitType","useFocalPoint","aspectRatio","aspectRatioMobile","mobileImageTriggerWidth","widthSizes","isLoaded","hasTransparentBackground","focalPoint","setFocalPoint","file","details","xPercentile","x","width","yPercentile","y","height","Image","alt","cropTo","xQuadrant","yQuadrant","setFocalArea","isExternal","isButton","iconAfter","buttonType","buttonColour","target","rel","bodyElm","document","body","handleClose","id","hasCloseRedirect","containerLess","closeOverlay","classList","remove","overlayIsShowing","setTimeout","handleKeyUp","event","keyCode","add","window","addEventListener","removeEventListener","stats","discipline","head","slice","label","value","map","stat","key","config","env","apiUrl","webSettings","baseUrl","webUrl","storybookApi","localizations","shareConfig","shareUrl","mobileOnly","cookieConfig","cookiePolicy","cookiePolicyExpirationDays","xsrfRequestToken","translationsNotation","Object","assign","LocalizationContext","locale","documentElement","lang","translations","expand","mobileImageTriggerWidthDefault","md","aspectRatioMap","undefined","lowQualityWidth","media","data-sizes","data-srcset","widthSize","Math","ceil","parseInt","onLoad","objectPosition","data-src","innerWidth","defaultWidths","noAnimate","srcset","setSrcset","src","size","index","Number","containerTheme","disableUppercase","intro","contact","content","link","secondaryLink","downloads","isTitleFloating","Boolean","download","toReadable","phoneNumber","split","replace","addr","length","tel","fax","email","website","facebook","instagram","twitter","dangerouslySetInnerHTML","__html","module","exports","bind","toString","prototype","isArray","val","call","isUndefined","isObject","isPlainObject","getPrototypeOf","isFunction","forEach","obj","fn","i","l","hasOwnProperty","isArrayBuffer","isBuffer","constructor","isFormData","FormData","isArrayBufferView","ArrayBuffer","isView","buffer","isString","isNumber","isDate","isFile","isBlob","isStream","pipe","isURLSearchParams","URLSearchParams","isStandardBrowserEnv","navigator","product","merge","result","assignValue","arguments","extend","a","b","thisArg","trim","str","stripBOM","charCodeAt","updateHabitat","insertUrlParam","includeHash","history","pushState","searchParams","location","search","set","newurl","protocol","host","pathname","hash","path","getUrlParamValue","entries","hashes","indexOf","params","decodeURIComponent","getAllUrlParams","filter","param","isMobile","test","scrollIntoView","elemToScrollTo","behaviour","MSInputMethodContext","behavior","isPortrait","items","action","selectedValue","theme","useScroller","useSearch","name","disableFirst","withDatePicker","defaultDatePickerValue","onDateChange","includeDates","datePickerLocale","wrapperRef","setValue","isOpen","setIsOpen","options","setOptions","isClosing","setIsClosing","searchValue","setSearchValue","close","mapSelection","item","visible","handleChange","optionIndex","preventDefault","optionsSelection","selected","filteredOptions","option","displayText","toLowerCase","includes","createOption","role","createSearch","placeholder","calendar","searchLabel","onChange","currentTarget","ref","toggle","date","dateIndex","findIndex","format","inline","xxs","xs","sm","ml","lg","xl","xxl","xxxl","xxxxl","headers","rows","stickyCol","moreClassName","headerClassName","rowClassName","cellClassName","nested","isExpanded","setExpanded","rowExpandedStates","setRowExpandedStates","some","row","fromEntries","aria-expanded","header","alwaysVisible","hiddenOnMobile","scope","rowIndex","Table","colIndex","Fragment","toggleExpandRow","colSpan","category","dateFormat","dateTime","AccordionPanel","activeTab","toggleTab","themeColor","isAsync","isResults","setHeight","asyncContentLoaded","setAsyncContentLoaded","wrapper","calculatePanelHeight","panelElement","current","ontransitionend","scrollHeight","requestAnimationFrame","props","onBeforeLoad","panels","panelsInState","setPanelsInState","mappedPanels","panel","useIntrinsicHeight","setIsLoaded","list","tags","tag","defaultProps","pageQueryKey","state","pages","firstPageIndex","lastPageIndex","previousPageIndex","nextPageIndex","currentPage","isFirstPageDisabled","isLastPageDisabled","totalAmountOfPages","isPreviousDisabled","isNextDisabled","maxVisiblePagesMobile","maxVisiblePagesDesktop","maxVisiblePages","componentDidMount","this","handdleMaxVisiblePages","stopPropagation","getPager","componentDidUpdate","prevProps","totalItems","itemsPerPage","setState","generateVisablePages","maxVisibleOffset","startPage","endPage","Array","from","s","viewportWidth","changePage","page","retainRoute","String","generateButton","isDisabled","rootLocation","render","overflowHidden","Column","isFlush","container","handler","handleClickOutside","contains","CSS_CLASSES","isActive","isShowing","navIsShowing","DISCIPLINE","gravel","indoor","para","road","track","trials","other","isIdenticalObject","objectA","objectB","aProps","getOwnPropertyNames","bProps","propName","insertRule","e","sheet","cssRules","console","warn","hideAll","globalHide","namespace","defineProperty","cascade","n","t","o","r","log","exp","animation","counter","effectMap","default","ssrFadeout","fadeOutEnabled","ssr","defaults","duration","delay","count","observerMode","raf","disableSsr","collapseend","ie10","floor","random","IntersectionObserverEntry","IntersectionObserver","webkitRequestAnimationFrame","mozRequestAnimationFrame","querySelectorAll","appVersion","performance","timing","domLoading","Date","now","createEvent","initEvent","element","createElement","appendChild","_interopRequireDefault","__esModule","_extends","when","in","_react2","Children","_RevealBase2","inEffect","outEffect","slickConfig","large","viewMoreLink","controlInline","slider","sliderBody","hasSetPosition","setHasSetPosition","nextIsDisabled","setNextIsDisabled","previousIsDisabled","setPreviousIsDisabled","arrowsAreHidden","setArrowsAreHidden","checkSlickDisabled","slickNextButton","querySelector","slickPreviousButton","defaultSlickSettings","accessibility","dots","infinite","speed","slidesToShow","slidesToScroll","initialSlide","arrows","useTransform","responsive","breakpoint","settings","onInit","afterChange","paddleIcon","slickGoTo","slickPrev","slickNext","webpackContext","req","webpackContextResolve","__webpack_require__","Error","code","keys","resolve","_react","_events","_find","_getClosestTransformedParent","_rect","source","apply","_assertThisInitialized","self","ReferenceError","_setPrototypeOf","p","setPrototypeOf","__proto__","buildTopStyles","bottomOffset","hideOnBoundaryHit","top","boundaryBottom","position","bottom","buildBottomStyles","boundaryTop","buildStickyStyle","mode","isEqual","obj1","obj2","styles1","wrapperStyles","styles2","isFixed","field","Sticky","_Component","subClass","superClass","_this","_len","args","_key","concat","holderEl","wrapperEl","el","scrollEl","boundaryEl","checkPositionIntervalId","lastMinHeight","holderStyles","holderRef","updateScrollEl","updateBoundaryEl","checkPosition","_assertThisInitialize","_this$props","onFixedToggle","offsetTransforms","isIOSFixEnabled","dontUpdateHolderHeightWhenSticky","getBoundingClientRect","holderRect","wrapperRect","boundaryRect","getRect","infiniteRect","scrollRect","offsets","closestTransformedParent","minHeight","iosRenderingFixStyles","transform","WebkitTransform","newState","error","create","_proto","_this$props2","topOffset","isIntersecting","hideOffset","unlisten","scrollElement","listen","boundaryElement","initialize","_this$props3","positionRecheckInterval","setInterval","_ref","componentWillUnmount","clearInterval","_this$state","Component","_default","news","racehub","riders","rankings","getNews","pageIndex","pageSize","featuredArticleId","newsCategoryId","get","postMail","entryId","phone","message","getUpcoming","raceCategory","raceType","raceClass","country","year","seasonId","getPast","getResult","eventCode","disciplineCode","raceName","getCwc","downloadCalendar","bearerToken","post","responseType","Authorization","getCommentary","eventId","lastCommentId","getCompetitionRiders","countryCode","getRiders","getTeams","getRankings","currentYear","transition","DEFAULT","getFullYear","month","day","transitionDate","getRankingYear","getTechnicalRankings","CRO","ROA","_objectWithoutProperties","make","distance","left","right","up","down","u","big","mirror","d","opposite","_","lookup","f","v","c","_globals","Fade","out","forever","timeout","animationFillMode","reverse","_wrap2","_propTypes","_wrap","propTypes","bool","number","string","_typeof","Symbol","iterator","_slicedToArray","next","done","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","isOn","getInitialCollapseStyle","opacity","savedChild","isShown","handleObserve","revealHandler","makeHandler","reveal","resizeHandler","resize","saveRef","_inherits","childRef","observe","hasExited","visibility","dispatchEvent","animationEndTimeout","offsetHeight","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","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","removeCountries","mappedItems","utils","encode","encodeURIComponent","paramsSerializer","serializedParams","parts","toISOString","JSON","stringify","hashmarkIndex","__CANCEL__","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","adapter","XMLHttpRequest","process","transformRequest","data","transformResponse","parse","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","validateStatus","status","common","method","settle","cookies","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","createError","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","xsrfValue","withCredentials","read","setRequestHeader","onDownloadProgress","onUploadProgress","upload","cancelToken","promise","then","cancel","abort","send","enhanceError","config1","config2","valueFromConfig2Keys","mergeDeepPropertiesKeys","defaultToConfig2Keys","directMergeKeys","getMergedValue","mergeDeepProperties","prop","axiosKeys","otherKeys","Cancel","_renderPropsVersion","RenderPropSticky","events","cb","addListener","removeListener","elementsWithListeners","registeredListeners","idx","callbacks","realCallbacks","realListenersCnt","createListener","listener","addCallback","splice","removeCallback","selector","basicSelectors","getElementById","matchesMethodName","temp","parentElement","matches","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitTransform","nodeType","r1","r2","r1Top","r1Bottom","Infinity","wrapperClassName","stickyClassName","stickyStyle","rest","excluded","sourceKeys","_objectWithoutPropertiesLoose","queryParam","viewMoreLabel","allowMultipleSelection","cutOffIndex","setCutOffIndex","isViewMore","setIsViewmore","values","setValues","mappedOptions","newValue","isSelected","handleCutOffIndex","screenWidth","outerWidth","breakpoints","getNewState","selectedOption","isAllSelected","startsWith","existingIndex","opt","removedSelectionAll","viewMoreAction","callback","onSearchClear","htmlFor","hasSearch","visibleFilters","additionalFilters","visibleFilterCallback","additionalFilterCallback","searchPlaceholder","additionalFiltersApplyButtonLabel","additionalFiltersLabel","searchFieldCallback","searchTerm","disableSticky","themeColour","filters","setIsMobile","isOverlayActive","setIsOverlayActive","selectedValues","setSelectedValues","selectedAdditionalValues","setSelectedAdditionalValues","handleIsMobile","checkForQueryParamValue","additional","queryStringParam","querystringValue","filterItem","entry","newSelection","handleSelection","additionalFilter","reduce","acc","handleMultipleSelection","VIDEO_PROVIDERS","playerVars","autoplay","component","autostart","mute","thumbnailImageUrl","provider","description","autoPlay","eventHub","isLive","setVideoPlaying","triggeredVideo","closeVideo","setCloseVideo","player","setPlayer","active","setActive","match","find","handlePlayTrigger","handleCloseVideoWidget","videoId","onReady","focus","Axios","mergeConfig","createInstance","defaultConfig","instance","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","fileName","lineNumber","columnNumber","stack","write","expires","domain","secure","cookie","toGMTString","RegExp","isAbsoluteURL","combineURLs","requestedURL","relativeURL","ignoreDuplicateOf","parsed","line","substr","originURL","msie","userAgent","urlParsingNode","resolveURL","setAttribute","hostname","port","charAt","requestURL","executor","resolvePromise","token","arr","payload","colourCode","dates","detailsLink","raceHubLink","venue","continentCode","isUciEvent","timestamp","areUnitsShortened","tissotCountdownLogo","onElapse","utc","durationRemaining","setDurationRemaining","countdown","daysLabel","hoursLabel","minutesLabel","secondsLabel","diff","max","days","asDays","hours","minutes","seconds","isDayZero","isHourZero","isMinuteZero","aria-live","tz","load","monthName","Broadcast","WatchOn","playlist","scrollBarRef","selectedVideo","setSelectedVideo","updateScroll","liveScheduleLabel","video","disciplineTitle","selectVideo","startTime","sponsor","broadcasts","raceMode","broadcast","queryStringParamsKeyMap","mapQueryStringParams","mappedQueryParams","urlQueryParms","resetQueryString","delete","generateQueryString","script","onload","isTwitterLoaded","tabId","useHabitat","tabIndex","aria-labelledby","Tab","aria-selected","changeTabCallBack","isCalendar","isEvent","withScrollPaddles","scrollPaddlesShowing","setScrollPaddlesShowing","tabScrollContainer","tabScrollContent","tabPaddles","tabs","flat","child","tabPanels","tab","selectedTab","setSelectedTab","tabsRef","handlePaddleOnClick","direction","scrollValue","scrollLeft","scroll","scrollWidth","offsetWidth","tabsWithDate","selectTab","onKeyDown","tabRefs","prevIndex","modulo","nextIndex","navigateTabs","onItemClick","ev","onScrollEnd","selectedIndex","scrollRef","onScroll","firstElementChild","itemWidth","clientWidth","leading","scrollTo","offsetLeft","headerTitle","sections","currentSlide","setCurrentSlide","isVideoPlaying","setTriggeredVideo","cycle","section","VideoObject","heroImage","factory","moment","version","cachedGuess","zones","links","countries","names","guesses","logError","momentVersion","major","minor","charCodeToInt","charCode","unpackBase60","whole","fractional","multiplier","sign","arrayToInt","array","mapIndices","indices","unpack","untils","intToUntil","abbrs","population","Zone","packedString","_set","Country","country_name","zone_names","OffsetAt","at","timeString","toTimeString","abbr","offset","getTimezoneOffset","ZoneScore","zone","offsetScore","abbrScore","findChange","low","high","mid","sortZoneScores","localeCompare","addToGuesses","guessesForUserOffsets","j","guessesOffset","offsetsLength","filteredGuesses","rebuildGuess","intlName","Intl","DateTimeFormat","resolvedOptions","timeZone","normalizeName","zoneScore","change","startYear","last","userOffsets","zoneScores","getZone","scoreOffsetAt","sort","addZone","packed","normalized","caller","addLink","aliases","alias","normal0","normal1","needsOffset","m","isUnixTimestamp","_f","_a","_tzm","input","isMoment","unpacked","_index","zone_name","country_code","offsetNext","offsetPrev","moveAmbiguousForward","moveInvalidForward","mom","utcOffset","offsetAt","abs","dataVersion","_zones","_links","_names","_countries","country_zones","addCountries","zoneExists","didShowError","guess","ignoreCache","zonesForCountry","with_offset","old","abbrWrap","_z","resetZoneWrap","defaultZone","updateOffset","keepTime","_isUTC","_d","z","zoneName","zoneAbbr","local","setDefault","momentProperties","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","isAll","restApiQueryParams","isMultipleSelected","defaultDownloadOptions","downloadSelectionLabel","downloadSeasonLabel","downloadPdfUrl","downloadXlsUrl","nextYearOptions","futureYear","nextTwoYearOptions","combinedDownloadOptions","Year","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","sponsors","logo","patternImageTop","patternImageBottom","countdownLogo","countdownTitle","countdownDate","linkOne","linkTwo","sponsorLogo","mobileLinkOn","liveNowLabel","isFrench","Carousel","vertical","autoplaySpeed","racePicker","nameFra","nameEng","eventCategoryName","timezone","sectionTitle","disciplineClass","momentTz","isUpcoming","liveStream","liveStreamEndTime","liveStreamStartTime","upcomingLabel","homepage","liveEventLabel","raceStartTime","liveStreamLabel","fromLabel","raceHub","raceHubLinkLabel","pastEvents","liveEvents","upcomingEvents","carouselTitle","liveOrUpcomingEventsCount","getSlidesToShow","idealSlidesToShowValue","variableWidth","eventTitle","patternImageTopLeft","patternImageTopRight","patternImageBottomLeft","patternImageBottomRight","eventLogoHomepage","eventLogoEventHub","eventDates","eventStartDate","eventLocation","eventTime","homepageCarousel","eventHubImage","isHomepage","raceItems","eventHasFinished","liveStreamPlaylist","setLiveStreamPlaylist","time","setTime","currentMoment","eventDayCount","intervalId","sortedRaces","organisedEvents","startDate","endDate","raceEndTime","isBetween","eventsWithLivestream","videoPicker","isAfter","endTime","liveOrUpcomingEvents","isSingleDigit","isOnlyOneLink","displayLivePlaylist","withLiveEvents","dayLabel","todaysEventsLabel","HomepageHeader","Watch","watchPlaylistTitle","broadcasterLogoImage","competitionLogo","competitionTitle","latestEvent","nextEvent","nextEventMoment","latestEventMoment","dateDay","dateMonth","disciplineName","startMoment","endMoment","startFormatted","endFormatted","startLocation","endLocation","competitionImage","raceTitle","raceStartDate","raceEndDate","raceStartLocation","raceEndLocation","timekeeperLogoImage","watchOverlay","showWatchOverlay","setShowWatchOverlay","closeOverlayBtnRef","Grid","Countdown","raceHubHeader","competitionHubHeader","eventHubHeader","tissotCountdown","headerModule","liveEventHeaderModule","CountdownModule","EventHeader","Tabs","slug","isResult","Calendar","subTabs","subTab","Sponsors"],"mappings":"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","file":"habitat.7.component.js","sourcesContent":["import * as React from 'react';\r\n\r\ninterface SvgImageProps {\r\n title?: string;\r\n reference: string;\r\n ariaHidden?: boolean;\r\n className?: string;\r\n}\r\n\r\nconst SvgImage = ({\r\n title,\r\n reference,\r\n ariaHidden,\r\n className,\r\n}: SvgImageProps) => (\r\n \r\n {title && (\r\n {title}\r\n )}\r\n \r\n \r\n);\r\n\r\nexport default SvgImage;\r\n","import * as React from 'react';\r\nimport SvgImage from '../SvgImage';\r\nimport './styles.scss';\r\n\r\ninterface ButtonProps {\r\n type: 'button' | 'submit' | 'reset';\r\n style?: 'default' | 'secondary' | 'transparent' | 'uci';\r\n text?: string;\r\n icon?: {\r\n reference: string;\r\n title: string;\r\n } | undefined;\r\n role?: 'button';\r\n ariaLabel?: string;\r\n disabled?: boolean;\r\n showLoader?: boolean;\r\n iconOnly?: boolean;\r\n fullWidth?: boolean;\r\n isProcessing?: boolean;\r\n handleClick?: (event: React.MouseEvent) => void | undefined;\r\n}\r\n\r\nconst Button = ({\r\n type = 'button',\r\n style = 'default',\r\n text,\r\n icon,\r\n ariaLabel,\r\n disabled = false,\r\n showLoader = false,\r\n iconOnly = false,\r\n fullWidth = false,\r\n isProcessing = false,\r\n handleClick,\r\n}: ButtonProps) => {\r\n const buttonClass = `\r\n button\r\n button--${style}\r\n ${text && 'button--has-label'}\r\n ${icon && 'button--has-icon'}\r\n ${iconOnly && 'button--icon-only'}\r\n ${fullWidth && 'button--full-width'}\r\n ${showLoader && 'button--updating'}\r\n ${disabled && 'button--disabled'}\r\n ${isProcessing && 'button--processing'}\r\n `;\r\n\r\n return (\r\n \r\n {icon && (\r\n
\r\n \r\n
\r\n )}\r\n\r\n {text && (\r\n
\r\n {text}\r\n
\r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default Button;\r\n","import * as React from 'react';\r\n\r\nimport Container from '../../helpers/Container';\r\nimport ImageObject from '../ImageObject';\r\nimport SvgImage from '../SvgImage';\r\nimport { HeroBannerProps } from './type';\r\nimport './styles.scss';\r\n\r\nconst HeroBanner = ({\r\n ariaHidden,\r\n backLink,\r\n children,\r\n colorTheme = 'blue',\r\n image,\r\n imageSize = 'half',\r\n isDarkened,\r\n isLanding,\r\n isForPage,\r\n}: HeroBannerProps) => {\r\n const root = 'hero-banner';\r\n const classes = [\r\n root,\r\n `${root}--theme-${colorTheme}`,\r\n ];\r\n if (isDarkened) {\r\n classes.push(`${root}--darkened`);\r\n }\r\n if (image) {\r\n classes.push(`${root}--${imageSize}`);\r\n }\r\n if (!image) {\r\n classes.push(`${root}--no-image`);\r\n }\r\n if (isLanding) {\r\n classes.push(`${root}--landing`);\r\n }\r\n if (isForPage) {\r\n classes.push(`${root}--for-page`);\r\n }\r\n\r\n return (\r\n
\r\n
\r\n
\r\n \r\n
\r\n {backLink ? (\r\n \r\n \r\n {backLink?.title}\r\n \r\n ) : }\r\n
\r\n\r\n
\r\n {children}\r\n
\r\n
\r\n
\r\n
\r\n\r\n {!isLanding && (\r\n
\r\n {image && (\r\n
\r\n
\r\n \r\n
\r\n
\r\n )}\r\n
\r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default HeroBanner;\r\n","import * as React from 'react';\r\nimport { useEffect, useState } from 'react';\r\nimport { Image as ImageType } from '../../../typings';\r\nimport Image from '../Image';\r\n\r\ninterface ImageWithFocalPointProps {\r\n image: ImageType;\r\n aspectRatio: '2x1' | '16x9' | '3x2' | '4x3' | '1x1' | '4x5' | '2x3' | '6x1' | '6x7-promo';\r\n widthSizes?: string[];\r\n aspectRatioMobile?: '2x1' | '16x9' | '3x2' | '4x3' | '1x1' | '4x5' | '2x3' | '6x1' | '6x7-promo';\r\n mobileImageTriggerWidth?: number;\r\n isLoaded?: Function;\r\n hasTransparentBackground?: boolean;\r\n isDarkened?: boolean;\r\n}\r\n\r\nconst ImageWithFocalPoint = ({\r\n image,\r\n aspectRatio,\r\n aspectRatioMobile,\r\n mobileImageTriggerWidth,\r\n widthSizes,\r\n isLoaded,\r\n hasTransparentBackground = false,\r\n isDarkened = false, // passed as percentage 80 etc.\r\n}: ImageWithFocalPointProps) => {\r\n const [focalPoint, setFocalPoint] = useState(null);\r\n /*\r\n Set crop quadrant area as:\r\n 'center' | 'top' | 'right' | 'left' | 'bottom' | 'top_right' |\r\n 'top_left' | 'bottom_right' | 'bottom_left';\r\n Docs: https://www.contentful.com/developers/docs/references/images-api/#/reference/resizing-&-cropping/specify-focus-area\r\n We get x / y coords in pixels so we calculate percentage and\r\n then which area it falls into from there.\r\n */\r\n const setFocalArea = () => {\r\n if (!image.focalPoint) return 'center';\r\n if (!image.file || !image.file.details) return 'center';\r\n\r\n const xPercentile = (image.focalPoint.x / image.file.details.image.width) * 100;\r\n const yPercentile = (image.focalPoint.y / image.file.details.image.height) * 100;\r\n // eslint-disable-next-line no-nested-ternary\r\n const xQuadrant = xPercentile < 33 ? 'left' : xPercentile > 66 ? 'right' : 'center';\r\n // eslint-disable-next-line no-nested-ternary\r\n const yQuadrant = yPercentile < 33 ? 'top' : xPercentile > 66 ? 'bottom' : 'center';\r\n\r\n if (xQuadrant === 'center') {\r\n return yQuadrant;\r\n }\r\n if (yQuadrant === 'center') {\r\n return xQuadrant;\r\n }\r\n\r\n return `${yQuadrant}_${xQuadrant}`;\r\n };\r\n\r\n useEffect(() => {\r\n if (image.focalPoint && image.file.details) {\r\n const xPercentile = (image.focalPoint.x / image.file.details.image.width) * 100;\r\n const yPercentile = (image.focalPoint.y / image.file.details.image.height) * 100;\r\n setFocalPoint(`${xPercentile}% ${yPercentile}%`);\r\n }\r\n }, [image]);\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default ImageWithFocalPoint;\r\n","import * as React from 'react';\r\nimport SvgImage from '../SvgImage';\r\nimport { Link as LinkType } from '../../../typings';\r\nimport './styles.scss';\r\n\r\nconst Link = ({\r\n title,\r\n url,\r\n isExternal = false,\r\n isButton = false,\r\n icon,\r\n iconAfter,\r\n className = '',\r\n ariaLabel,\r\n buttonType = 'text-link',\r\n buttonColour = 'white',\r\n}: LinkType) => {\r\n const isDisabled = () => (\r\n url === null || url === ''\r\n );\r\n\r\n const root = 'link';\r\n const classes = [root, className];\r\n\r\n if (icon || iconAfter) {\r\n classes.push(`${root}--has-icon`);\r\n }\r\n\r\n if (isButton) {\r\n classes.push('button');\r\n }\r\n\r\n if (isDisabled()) {\r\n classes.push(`${root}--disabled`);\r\n }\r\n\r\n if (buttonType) {\r\n classes.push(buttonType);\r\n }\r\n\r\n if (buttonColour) {\r\n classes.push(`${root}--${buttonColour}`);\r\n }\r\n\r\n return (\r\n \r\n {icon && (\r\n
\r\n \r\n
\r\n )}\r\n {title}\r\n {iconAfter && (\r\n
\r\n \r\n
\r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default Link;\r\n","import * as React from 'react';\r\nimport { useEffect } from 'react';\r\nimport SvgImage from '../SvgImage';\r\nimport { CSS_CLASSES } from '../../../configs';\r\nimport './styles.scss';\r\n\r\nconst bodyElm = document.body;\r\n\r\ninterface OverlayProps {\r\n children: JSX.Element | JSX.Element[];\r\n handleClose: Function;\r\n style?: string;\r\n id?: string;\r\n hasCloseRedirect?: boolean;\r\n containerLess?: boolean;\r\n}\r\n\r\nconst Overlay = ({\r\n children,\r\n handleClose,\r\n style,\r\n id,\r\n hasCloseRedirect,\r\n containerLess,\r\n}: OverlayProps) => {\r\n const closeOverlay = () => {\r\n bodyElm.classList.remove(CSS_CLASSES.overlayIsShowing);\r\n /* timeout to allow animations to complete. */\r\n if (hasCloseRedirect) {\r\n handleClose();\r\n return;\r\n }\r\n setTimeout(() => {\r\n handleClose();\r\n }, 100);\r\n };\r\n\r\n const handleKeyUp = (event: React.KeyboardEvent) => {\r\n if (event.keyCode === 27) {\r\n closeOverlay();\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n bodyElm.classList.add(CSS_CLASSES.overlayIsShowing);\r\n /**\r\n * This needs some rework - note quite sure why it's built this way tbh\r\n */\r\n // @ts-ignore\r\n window.addEventListener('keyup', handleKeyUp);\r\n // @ts-ignore\r\n return () => window.removeEventListener('keyup', handleKeyUp);\r\n }, []);\r\n\r\n return (\r\n
\r\n
\r\n \r\n
\r\n {children}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Overlay;\r\n","import * as React from 'react';\r\nimport { Discipline } from '../../../core/typings';\r\nimport './styles.scss';\r\n\r\ntype Stat = {\r\n label: string;\r\n value: string;\r\n};\r\n\r\ninterface StatsProps {\r\n stats: Stat[];\r\n text?: string;\r\n discipline?: Discipline;\r\n}\r\n\r\nconst Stats = ({\r\n stats,\r\n text,\r\n discipline,\r\n}: StatsProps) => {\r\n const head = stats[0];\r\n const body = stats.slice(1);\r\n\r\n return (\r\n
\r\n
\r\n {text && (\r\n
{text}
\r\n )}\r\n\r\n
{head.label}
\r\n
{head.value}
\r\n\r\n {text && (\r\n
{text}
\r\n )}\r\n
\r\n
    \r\n {body.map((stat: Stat) => (\r\n \r\n
  • \r\n
    {stat.label}
    \r\n
    {stat.value}
    \r\n
  • \r\n
    \r\n ))}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Stats;\r\n","import LocalizationsState from '../typings/localization';\r\n\r\ndeclare const Config: AppConfiguration;\r\n\r\ndeclare const webSettings: {\r\n baseUrl: string;\r\n localizations: LocalizationsState;\r\n};\r\nexport interface AppConfiguration {\r\n env: string;\r\n apiUrl: string;\r\n webUrl: string;\r\n storybookApi?: string;\r\n localizations: LocalizationsState;\r\n}\r\n\r\nexport interface SharePlatformDetail {\r\n key: number;\r\n id: string;\r\n shareUrl: string | null;\r\n mobileOnly: boolean;\r\n}\r\n\r\nexport const config: AppConfiguration = {\r\n env: Config.env,\r\n apiUrl: `${webSettings.baseUrl}${Config.apiUrl}`,\r\n webUrl: webSettings.baseUrl,\r\n storybookApi: Config.storybookApi ? Config.storybookApi : undefined,\r\n localizations: webSettings.localizations,\r\n};\r\n\r\nexport interface CookieConfig {\r\n cookiePolicy: string;\r\n cookiePolicyExpirationDays: number;\r\n xsrfRequestToken: string;\r\n}\r\n\r\nexport const shareConfig: SharePlatformDetail[] = [\r\n {\r\n key: 1,\r\n id: 'facebook',\r\n shareUrl: 'https://www.facebook.com/sharer/sharer.php?u=',\r\n mobileOnly: false,\r\n },\r\n {\r\n key: 2,\r\n id: 'twitter',\r\n shareUrl: 'https://twitter.com/intent/tweet?url=',\r\n mobileOnly: false,\r\n },\r\n {\r\n key: 3,\r\n id: 'whatsapp',\r\n shareUrl: 'whatsapp://send?text=',\r\n mobileOnly: true,\r\n },\r\n {\r\n key: 4,\r\n id: 'copylink',\r\n shareUrl: null,\r\n mobileOnly: false,\r\n },\r\n];\r\n\r\nexport const cookieConfig: CookieConfig = {\r\n cookiePolicy: 'c_policy',\r\n cookiePolicyExpirationDays: 60,\r\n xsrfRequestToken: 'XSRF-REQUEST-TOKEN',\r\n};\r\n","import 'moment/locale/fr';\r\nimport { Notation } from 'notation';\r\nimport { createContext } from 'react';\r\nimport { config } from '../../core/config';\r\nimport LocalizationsState from '../../core/typings/localization';\r\nimport defaultLocalizations from './defaultLocalizations';\r\n\r\ninterface LocalizationsContextType {\r\n locale: string;\r\n translations: LocalizationsState;\r\n setTranslations: (TranslationsState: LocalizationsState) => void;\r\n}\r\n\r\n/**\r\n * Create a notation instance in order to use the notation\r\n * exapand method to mutate the translations to a nested\r\n * object rather than using the dot notation in the keys\r\n * set by the backend. Merge config.localizations with\r\n * defaultLocalizations to avoid missing labels\r\n */\r\nconst translationsNotation = new Notation(\r\n Object.assign(defaultLocalizations, config.localizations),\r\n);\r\n\r\nconst LocalizationContext = createContext(\r\n {\r\n locale: document.documentElement.lang,\r\n translations: translationsNotation.expand().value,\r\n } as LocalizationsContextType,\r\n);\r\n\r\nexport default LocalizationContext;\r\n","export default {\r\n 'cookieBanner.title': 'cookieBanner.title',\r\n 'cookieBanner.acceptText': 'cookieBanner.acceptText',\r\n 'header.forLabel': 'header.forLabel',\r\n 'header.usefulLinksLabel': 'header.usefulLinksLabel',\r\n 'footer.partnersLabel': 'footer.partnersLabel',\r\n 'footer.worldCyclingPartnersLabel': 'footer.worldCyclingPartnersLabel',\r\n 'footer.officialSupplierLabel': 'footer.officialSupplierLabel',\r\n 'relatedContent.title': 'relatedContent.title',\r\n 'competition.racesLabel': 'competition.racesLabel',\r\n 'competition.classLabel': 'competition.classLabel',\r\n 'competition.websiteLabel': 'competition.websiteLabel',\r\n 'competition.emailLabel': 'competition.emailLabel',\r\n 'competition.addressLabel': 'competition.addressLabel',\r\n 'competition.assignmentsLabel': 'competition.assignmentsLabel',\r\n 'competition.appointedByLabel': 'competition.appointedByLabel',\r\n 'calendar.latestLabel': 'calendar.latestLabel',\r\n 'calendar.upcomingLabel': 'calendar.upcomingLabel',\r\n 'calendar.pastLabel': 'calendar.pastLabel',\r\n 'calendar.raceHubLinkLabel': 'calendar.raceHubLinkLabel',\r\n 'calendar.raceCategoryLabel': 'calendar.raceCategoryLabel',\r\n 'calendar.raceTypeLabel': 'calendar.raceTypeLabel',\r\n 'calendar.raceClassLabel': 'calendar.raceClassLabel',\r\n 'calendar.eventTypeLabel': 'calendar.eventTypeLabel',\r\n 'calendar.disciplineLabel': 'calendar.disciplineLabel',\r\n 'calendar.raceYearLabel': 'calendar.raceYearLabel',\r\n 'calendar.searchLabel': 'calendar.searchLabel',\r\n 'calendar.searchText': 'calendar.searchText',\r\n 'calendar.noResults': 'calendar.noResults',\r\n 'calendar.viewMoreLabel': 'calendar.viewMoreLabel',\r\n 'calendar.moreFiltersLabel': 'calendar.moreFiltersLabel',\r\n 'calendar.noSearchResults': 'calendar.noSearchResults',\r\n 'calendar.applyFiltersLabel': 'calendar.applyFiltersLabel',\r\n 'calendar.downloadLabel': 'calendar.downloadLabel',\r\n 'calendar.downloadSelectionLabel': 'calendar.downloadSelectionLabel',\r\n 'calendar.downloadSeasonLabel': 'calendar.downloadSeasonLabel',\r\n 'calendar.downloadHelpText': 'calendar.downloadHelpText',\r\n 'competitionDetails.classLabel': 'competitionDetails.classLabel',\r\n 'competitionDetails.websiteLabel': 'competitionDetails.websiteLabel',\r\n 'competitionDetails.emailLabel': 'competitionDetails.emailLabel',\r\n 'competitionDetails.scheduleTitle': 'competitionDetails.scheduleTitle',\r\n 'competitionDetails.commissiaryTitle': 'competitionDetails.commissiaryTitle',\r\n 'competitionDetails.commissiaryAppointedBy': 'competitionDetails.commissiaryAppointedBy',\r\n 'filters.allFilterText': 'filters.allFilterText',\r\n 'filters.allDisciplinesText': 'filters.allDisciplinesText',\r\n 'filters.allSeasonsText': 'filters.allSeasonsText',\r\n 'filters.allCountriesText': 'filters.allCountriesText',\r\n 'filters.countryLabel': 'filters.countryLabel',\r\n 'filters.seasonLabel': 'filters.seasonLabel',\r\n 'filters.disciplineLabel': 'filters.disciplineLabel',\r\n 'discipline.bmx': 'discipline.bmx',\r\n 'discipline.cpt': 'discipline.cpt',\r\n 'discipline.cro': 'discipline.cro',\r\n 'discipline.ind': 'discipline.ind',\r\n 'discipline.mtb': 'discipline.mtb',\r\n 'discipline.par': 'discipline.par',\r\n 'discipline.pis': 'discipline.pis',\r\n 'discipline.roa': 'discipline.roa',\r\n 'discipline.tri': 'discipline.tri',\r\n 'discipline.gra': 'discipline.gra',\r\n 'discipline.bfr': 'discipline.bfr',\r\n 'discipline.ces': 'discipline.ces',\r\n 'event.dayLabel': 'event.dayLabel',\r\n 'event.liveNowLabel': 'event.liveNowLabel',\r\n 'event.fromLabel': 'event.fromLabel',\r\n 'event.upcomingLabel': 'event.upcomingLabel',\r\n 'event.liveStreamLabel': 'event.liveStreamLabel',\r\n 'event.liveScheduleLabel': 'event.liveScheduleLabel',\r\n 'event.todaysEventsLabel': 'event.todaysEventsLabel',\r\n 'event.watchPlaylistTitle': 'event.watchPlaylistTitle',\r\n 'homepage.liveEventLabel': 'homepage.liveEventLabel',\r\n 'riders.teamCategory': 'riders.teamCategory',\r\n 'riders.searchText': 'riders.searchText',\r\n 'riders.resultsLabel': 'riders.resultsLabel',\r\n 'riders.teamsLabel': 'riders.teamsLabel',\r\n 'riders.ridersLabel': 'riders.ridersLabel',\r\n 'riders.dobLabel': 'riders.dobLabel',\r\n 'riders.nationalityLabel': 'riders.nationalityLabel',\r\n 'riders.sanctionsLabel': 'riders.sanctionsLabel',\r\n 'regulations.overviewLabel': 'regulations.overviewLabel',\r\n 'regulations.rulesInForceLabel': 'regulations.rulesInForceLabel',\r\n 'regulations.upcomingAmendmentsLabel': 'regulations.upcomingAmendmentsLabel',\r\n 'regulations.versionOnLabel': 'regulations.versionOnLabel',\r\n 'regulations.inForceFromLabel': 'regulations.inForceFromLabel',\r\n 'news.latest': 'news.latest',\r\n 'news.noResultsText': 'news.noResultsText',\r\n 'raceHub.commentaryViewMore': 'raceHub.commentaryViewMore',\r\n 'search.searchLabel': 'search.searchLabel',\r\n 'contact.title': 'contact.title',\r\n 'contact.addr': 'contact.addr',\r\n 'contact.tel': 'contact.tel',\r\n 'contact.fax': 'contact.fax',\r\n 'contact.email': 'contact.email',\r\n 'contact.website': 'contact.website',\r\n 'contact.twitter': 'contact.twitter',\r\n 'rankingWidget.title': 'rankingWidget.title',\r\n 'rankingWidget.pointsLabel': 'rankingWidget.pointsLabel',\r\n 'rankingWidget.menLabel': 'rankingWidget.menLabel',\r\n 'rankingWidget.womenLabel': 'rankingWidget.womenLabel',\r\n 'rankingWidget.lastUpdatedLabel': 'rankingWidget.lastUpdatedLabel',\r\n 'rankingWidget.noRankingsLabel': 'rankingWidget.noRankingsLabel',\r\n 'technicalRankings.refineResultsLabel': 'technicalRankings.refineResultsLabel',\r\n 'technicalRankings.searchTeamLabel': 'technicalRankings.searchTeamLabel',\r\n 'technicalRankings.notesLabel': 'technicalRankings.notesLabel',\r\n 'technicalRankings.notesMenDisclaimer': 'technicalRankings.notesMenDisclaimer',\r\n 'technicalRankings.notesWomenDisclaimer': 'technicalRankings.notesWomenDisclaimer',\r\n 'technicalRankings.title': 'technicalRankings.title',\r\n 'technicalRankings.tableTotalLabel': 'technicalRankings.tableTotalLabel',\r\n 'technicalRankings.tableTypeLabel': 'technicalRankings.tableTypeLabel',\r\n};\r\n","import * as React from 'react';\r\nimport './styles.scss';\r\n\r\ninterface TagProps {\r\n text: string;\r\n url: string;\r\n}\r\n\r\nconst Tag = ({ text, url }: TagProps) => (\r\n {text}\r\n);\r\n\r\nexport default Tag;\r\n","/*\r\n Responsive image component.\r\n Details in /README.md\r\n */\r\n\r\nimport * as React from 'react';\r\nimport breakpoints from '../../../breakpoints';\r\nimport 'lazysizes';\r\nimport 'lazysizes/plugins/attrchange/ls.attrchange';\r\nimport './styles.scss';\r\n\r\nconst defaultWidth = '1000';\r\nconst defaultLowQualityWidth = '20';\r\nconst defaultAspectRatio = '16x9';\r\nconst mobileImageTriggerWidthDefault = breakpoints.md;\r\nconst imageQuality = 80;\r\n\r\nconst aspectRatioMap = {\r\n '2x1': 0.5,\r\n '16x9': 0.5625,\r\n '3x2': 0.667,\r\n '4x3': 0.75,\r\n '1x1': 1,\r\n '4x5': 1.2,\r\n '2x3': 1.5,\r\n '6x1': 0.59,\r\n '6x7-promo': 1.16,\r\n};\r\n\r\ninterface ImageProps {\r\n url: string;\r\n alt: string;\r\n aspectRatio?: '2x1' | '16x9' | '3x2' | '4x3' | '1x1' | '4x5' | '2x3' | '6x1' | '6x7-promo';\r\n focalPoint?: string | null;\r\n cropTo?: string | undefined;\r\n lowQualityWidth?: string;\r\n widthSizes?: string[];\r\n aspectRatioMobile?: '2x1' | '16x9' | '3x2' | '4x3' | '1x1' | '4x5' | '2x3' | '6x1' | '6x7-promo';\r\n mobileImageTriggerWidth?: number;\r\n isLoaded?: Function;\r\n hasTransparentBackground?: boolean;\r\n isDarkened?: boolean;\r\n}\r\n\r\nconst Image = ({\r\n url,\r\n alt,\r\n aspectRatio = defaultAspectRatio,\r\n aspectRatioMobile,\r\n mobileImageTriggerWidth = mobileImageTriggerWidthDefault,\r\n cropTo = undefined,\r\n widthSizes = [defaultWidth],\r\n lowQualityWidth = defaultLowQualityWidth,\r\n isLoaded,\r\n hasTransparentBackground = false,\r\n focalPoint,\r\n isDarkened = false, // passed as percentage 80 etc.\r\n}: ImageProps) => {\r\n const setAspectRatio = () => {\r\n if (!aspectRatioMobile) return aspectRatio;\r\n return window.innerWidth < mobileImageTriggerWidth ? aspectRatioMobile : aspectRatio;\r\n };\r\n\r\n return (\r\n \r\n {aspectRatioMobile && (\r\n (\r\n // @ts-ignore\r\n `${url}?fit=thumb&q=${imageQuality}&f=${cropTo || ''}&fl=progressive&w=${widthSize}&h=${Math.ceil(parseInt(widthSize, 10) * aspectRatioMap[aspectRatioMobile])} ${widthSize}w`\r\n ))\r\n }\r\n />\r\n )}\r\n\r\n {\r\n if (isLoaded) {\r\n isLoaded();\r\n }\r\n }}\r\n data-sizes=\"auto\"\r\n style={{ objectPosition: focalPoint || 'initial' }}\r\n // @ts-ignore\r\n data-src={`${url}?fit=thumb&w=${lowQualityWidth}&f=${cropTo || ''}&h=${Math.ceil(parseInt(lowQualityWidth, 10) * aspectRatioMap[setAspectRatio()])}`}\r\n data-srcset={\r\n widthSizes.map((widthSize) => (\r\n // @ts-ignore\r\n `${url}?fit=thumb&q=${imageQuality}&f=${cropTo || ''}&fl=progressive&w=${widthSize}&h=${Math.ceil(parseInt(widthSize, 10) * aspectRatioMap[aspectRatio])} ${widthSize}w`\r\n ))\r\n }\r\n className={`lazyload blur-up ${isDarkened ? 'has-opacity' : ''}`}\r\n alt={alt || 'image with no description'}\r\n />\r\n \r\n );\r\n};\r\n\r\nexport default Image;\r\n","import * as React from 'react';\r\nimport { useState, useEffect } from 'react';\r\nimport { Image as ImageType } from '../../../typings';\r\nimport 'lazysizes';\r\nimport 'lazysizes/plugins/attrchange/ls.attrchange';\r\nimport './styles.scss';\r\n\r\nconst defaultWidths = ['400', '800', '1200', '2400', '4000'];\r\n\r\nconst aspectRatioMap: Record = {\r\n '2x1': 0.5,\r\n '16x9': 0.5625,\r\n '3x2': 0.667,\r\n '4x3': 0.75,\r\n '1x1': 1,\r\n '4x5': 1.2,\r\n '2x3': 1.5,\r\n};\r\n\r\ninterface ImageObjectProps {\r\n image: ImageType;\r\n widthSizes?: string[];\r\n isDarkened?: boolean;\r\n useFocalPoint?: boolean;\r\n fitType?: 'contain' | 'cover'\r\n isLoaded?: () => void;\r\n noAnimate?: boolean;\r\n aspectRatio?: string;\r\n}\r\n\r\ninterface FocalStyle {\r\n objectPosition: string;\r\n}\r\n\r\nconst ImageObject = ({\r\n image,\r\n widthSizes = defaultWidths,\r\n aspectRatio,\r\n isDarkened = false,\r\n useFocalPoint = true,\r\n fitType = 'cover',\r\n isLoaded,\r\n noAnimate,\r\n}: ImageObjectProps) => {\r\n const [focalPoint, setFocalPoint] = useState();\r\n const [srcset, setSrcset] = useState();\r\n\r\n useEffect(() => {\r\n if (image.focalPoint) {\r\n // @ts-ignore\r\n const xPercentile = (image.focalPoint.x / image.file.details?.image?.width) * 100;\r\n // @ts-ignore\r\n const yPercentile = (image.focalPoint.y / image.file.details?.image?.height) * 100;\r\n setFocalPoint({\r\n objectPosition: `${xPercentile}% ${yPercentile}%`,\r\n });\r\n }\r\n\r\n const src = widthSizes\r\n .map((size: string, index: number) => `${image.file.url}?fit=thumb&fl=progressive&w=${size}&h=${aspectRatio ? Math.ceil(Number(widthSizes[index]) * aspectRatioMap[aspectRatio]) : ''} ${size}w`);\r\n\r\n setSrcset(src.join(','));\r\n }, [image]);\r\n\r\n const classes = [\r\n 'image-object',\r\n `image-object--${fitType}`,\r\n 'lazyload',\r\n ];\r\n if (isDarkened) {\r\n classes.push('has-opacity');\r\n }\r\n if (noAnimate) {\r\n classes.push('image-object--no-animate');\r\n }\r\n\r\n return (\r\n isLoaded?.()}\r\n data-sizes=\"auto\"\r\n data-srcset={srcset}\r\n data-src={`${image.file.url}?fit=thumb&fl=progressive&w=${widthSizes[0]}&h=${aspectRatio ? Math.ceil(Number(widthSizes[0]) * aspectRatioMap[aspectRatio]) : ''}`}\r\n className={classes.join(' ')}\r\n alt={image.title ? image.title : 'image with no description'}\r\n style={useFocalPoint ? focalPoint : undefined}\r\n />\r\n );\r\n};\r\n\r\nexport default ImageObject;\r\n","import * as React from 'react';\r\nimport './styles.scss';\r\n\r\ninterface UnderlineTitleProps {\r\n title: string;\r\n containerTheme: string;\r\n className?: string;\r\n 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 { useContext } from 'react';\r\nimport SvgImage from '../SvgImage';\r\nimport { Contacts } from '../../../typings';\r\nimport LocalizationContext from '../../../contexts/Localizations';\r\nimport './styles.scss';\r\n\r\ninterface ContactProps {\r\n contact: Contacts;\r\n containerTheme: string;\r\n}\r\n\r\nconst Contact = ({\r\n contact,\r\n containerTheme,\r\n}: ContactProps) => {\r\n const { translations } = useContext(LocalizationContext);\r\n // Adds space between every characters apart from (0)\r\n // Required for screen readers to read phone numbers properly and include all character\r\n const toReadable = (phoneNumber: string): string => phoneNumber\r\n .split(' ')\r\n .join('')\r\n .split('')\r\n .join(' ')\r\n .replace('( 0 )', '(0)');\r\n\r\n return (\r\n
\r\n

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

\r\n\r\n
    \r\n {(contact.addr && contact.addr.length) && (\r\n
  • \r\n \r\n {`${translations.contact.addr}:`}\r\n \r\n {contact.addr}\r\n
  • \r\n )}\r\n {(contact.tel && contact.tel.length) && (\r\n
  • \r\n \r\n {`${translations.contact.tel}:`}\r\n \r\n \r\n {contact.tel}\r\n \r\n
  • \r\n )}\r\n {(contact.fax && contact.fax.length) && (\r\n
  • \r\n \r\n {`${translations.contact.fax}:`}\r\n \r\n \r\n {contact.fax}\r\n \r\n
  • \r\n )}\r\n {(contact.email && contact.email.length) && (\r\n
  • \r\n \r\n {`${translations.contact.email}:`}\r\n \r\n \r\n {contact.email}\r\n \r\n
  • \r\n )}\r\n {(contact.website && contact.website.length) && (\r\n
  • \r\n \r\n {`${translations.contact.website}:`}\r\n \r\n \r\n {contact.website}\r\n \r\n
  • \r\n )}\r\n
  • \r\n
      \r\n {(contact.facebook && contact.facebook.length) && (\r\n
    • \r\n \r\n \r\n \r\n
    • \r\n )}\r\n {(contact.instagram && contact.instagram.length) && (\r\n
    • \r\n \r\n \r\n \r\n
    • \r\n )}\r\n {(contact.twitter && contact.twitter.length) && (\r\n
    • \r\n \r\n \r\n \r\n
    • \r\n )}\r\n
    \r\n
  • \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Contact;\r\n","import * as React from 'react';\r\nimport './styles.scss';\r\n\r\ninterface RichTextProps {\r\n content: string;\r\n containerTheme: string;\r\n}\r\n\r\nconst RichText = ({\r\n content,\r\n containerTheme,\r\n}: RichTextProps) => (\r\n
\r\n \r\n
\r\n);\r\n\r\nexport default RichText;\r\n","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 { 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 * 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","\"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;","\"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","export const VIDEO_PROVIDERS = [\r\n {\r\n name: 'youtube',\r\n config: {\r\n playerVars: {\r\n autoplay: 1,\r\n },\r\n },\r\n // @ts-ignore\r\n component: () => import('./components/YouTubeVideo/index'),\r\n },\r\n {\r\n name: 'jwplayer',\r\n config: {\r\n autostart: true,\r\n mute: true,\r\n },\r\n // @ts-ignore\r\n component: () => import('./components/JwPlayer/index'),\r\n },\r\n];\r\n\r\nexport const SHARE_PLATFORMS = [\r\n {\r\n id: 'facebook',\r\n name: 'Share on Facebook',\r\n },\r\n {\r\n id: 'twitter',\r\n name: 'Share on Twitter',\r\n },\r\n {\r\n id: 'whatsapp',\r\n name: 'Share on WhatsApp',\r\n mobileOnly: true,\r\n },\r\n {\r\n id: 'copylink',\r\n name: 'Copy Link',\r\n },\r\n];\r\n","import React, { useState, useEffect } from 'react';\r\nimport { SvgImage, Image, Button } from '../common';\r\nimport VideoObjectProps from './type';\r\nimport { VIDEO_PROVIDERS } from '../../constants';\r\nimport './styles.scss';\r\n\r\nconst VideoObject = ({\r\n id,\r\n thumbnailImageUrl,\r\n provider,\r\n title,\r\n description,\r\n autoPlay,\r\n containerTheme = 'white',\r\n container,\r\n eventHub,\r\n isLive,\r\n setVideoPlaying,\r\n triggeredVideo,\r\n closeVideo,\r\n setCloseVideo,\r\n}: VideoObjectProps) => {\r\n const [player, setPlayer] = useState(null);\r\n const [active, setActive] = useState(false);\r\n\r\n useEffect(() => {\r\n const match = VIDEO_PROVIDERS.find((item) => item.name === provider);\r\n\r\n if (match) {\r\n match.component().then((module) => {\r\n // @ts-ignore\r\n setPlayer({\r\n // @ts-ignore\r\n config: match.config,\r\n component: module.default,\r\n });\r\n });\r\n }\r\n }, []);\r\n\r\n const focusPlayer = (event: any) => {\r\n event.target.h.focus();\r\n };\r\n\r\n const root = 'video-object';\r\n const classes = [\r\n root,\r\n container ? 'video-object--container' : '',\r\n eventHub ? 'video-object--event-hub' : '',\r\n ];\r\n if (containerTheme) {\r\n classes.push(`${root}--theme-${containerTheme}`);\r\n }\r\n if (triggeredVideo !== undefined) {\r\n classes.push(`${root}--homepage-header`);\r\n }\r\n\r\n const handlePlayTrigger = () => {\r\n setActive(true);\r\n\r\n if (setVideoPlaying !== undefined) {\r\n setVideoPlaying(true);\r\n }\r\n };\r\n\r\n const handleCloseVideoWidget = () => {\r\n setActive(false);\r\n\r\n if (setVideoPlaying) {\r\n setVideoPlaying(false);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (triggeredVideo) {\r\n handlePlayTrigger();\r\n }\r\n }, [triggeredVideo]);\r\n\r\n useEffect(() => {\r\n if (closeVideo) {\r\n handleCloseVideoWidget();\r\n\r\n if (setCloseVideo) {\r\n setCloseVideo(false);\r\n }\r\n }\r\n }, [closeVideo]);\r\n\r\n return (\r\n
    \r\n {!active && !autoPlay && (\r\n
    \r\n {(isLive && triggeredVideo === undefined) && (\r\n
    Live
    \r\n )}\r\n \"video\r\n\r\n \r\n
    \r\n )}\r\n\r\n {player && (active || autoPlay) && (\r\n
    \r\n {triggeredVideo !== undefined && (\r\n
    \r\n \r\n
    \r\n )}\r\n\r\n {provider && (\r\n \r\n )}\r\n
    \r\n )}\r\n\r\n {(title || description) && (\r\n
    \r\n
    \r\n \r\n {title}\r\n
    \r\n\r\n
    {description}
    \r\n
    \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nexport default VideoObject;\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","'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 moment from 'moment';\r\nimport React, {\r\n useContext, useEffect, useMemo, useState,\r\n} from 'react';\r\nimport { Discipline } from 'core/typings';\r\nimport { Image } from '../../typings';\r\nimport './styles.scss';\r\nimport LocalizationContext from '../../contexts/Localizations';\r\nimport { ImageBasic } from '../common';\r\n\r\ninterface CountdownProps {\r\n discipline?: Discipline | null;\r\n timestamp: string;\r\n areUnitsShortened?: boolean;\r\n tissotCountdownLogo?: Image | null;\r\n onElapse?: (() => void) | null;\r\n}\r\n\r\nconst Countdown = ({\r\n discipline, timestamp, areUnitsShortened, tissotCountdownLogo, onElapse,\r\n}: CountdownProps) => {\r\n const then = useMemo(() => moment.utc(timestamp), [timestamp]);\r\n const [durationRemaining, setDurationRemaining] = useState(null);\r\n const { translations } = useContext(LocalizationContext);\r\n const {\r\n daysLabel,\r\n hoursLabel,\r\n minutesLabel,\r\n secondsLabel,\r\n } = translations.countdown;\r\n\r\n useEffect(() => {\r\n const t = setInterval(() => {\r\n const now = moment.utc();\r\n const diff = Math.max(then.diff(now), 0);\r\n\r\n setDurationRemaining(moment.duration(diff));\r\n\r\n if (diff === 0) {\r\n clearInterval(t);\r\n onElapse?.();\r\n }\r\n }, 1000);\r\n\r\n return () => clearInterval(t);\r\n }, [timestamp]);\r\n\r\n const days = durationRemaining ? Math.floor(durationRemaining.asDays()) : '-';\r\n const hours = durationRemaining?.hours() ?? '-';\r\n const minutes = durationRemaining?.minutes() ?? '-';\r\n const seconds = durationRemaining?.seconds() ?? '-';\r\n\r\n const isDayZero = () => days === 0;\r\n const isHourZero = () => isDayZero() && hours === 0;\r\n const isMinuteZero = () => isHourZero() && minutes === 0;\r\n const isSecondZero = () => isMinuteZero() && seconds === 0;\r\n\r\n // TODO: l10n days/hours/minutes/seconds\r\n return (\r\n <>\r\n \r\n {tissotCountdownLogo && (\r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n
    \r\n
    \r\n {days}\r\n
    \r\n
    \r\n {areUnitsShortened ? daysLabel[0] : daysLabel}\r\n
    \r\n
    \r\n
    \r\n
    \r\n {hours}\r\n
    \r\n
    \r\n {areUnitsShortened ? hoursLabel[0] : hoursLabel}\r\n
    \r\n
    \r\n
    \r\n
    \r\n {minutes}\r\n
    \r\n
    \r\n {areUnitsShortened ? minutesLabel[0] : minutesLabel}\r\n
    \r\n
    \r\n
    \r\n
    \r\n {seconds}\r\n
    \r\n
    \r\n {areUnitsShortened ? secondsLabel[0] : secondsLabel}\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default Countdown;\r\n","var moment = module.exports = require(\"./moment-timezone\");\nmoment.tz.load(require('./data/packed/latest.json'));\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","import React, {\r\n useContext, useEffect, useMemo, useRef, useState,\r\n} from 'react';\r\nimport moment from 'moment';\r\nimport PerfectScrollbar from 'react-perfect-scrollbar';\r\nimport WatchProps, { BroadcastProps, PlaylistItem } from './type';\r\nimport { RichText, Image, UnderlineTitle } from '../common';\r\nimport LocalizationContext from '../../contexts/Localizations';\r\nimport VideoObject from '../VideoObject';\r\nimport './styles.scss';\r\n\r\nconst Broadcast = ({\r\n event,\r\n date,\r\n tz,\r\n}: BroadcastProps) => {\r\n const { locale } = useContext(LocalizationContext);\r\n const dateTime = useMemo(() => moment(date).locale(locale), [date]);\r\n\r\n return (\r\n
  • \r\n

    {event}

    \r\n
    \r\n {dateTime.format('dddd DD MMM')}\r\n \r\n {dateTime.format('HH:mm')}\r\n  \r\n {tz}\r\n \r\n
    \r\n
  • \r\n );\r\n};\r\n\r\nconst WatchOn = ({\r\n playlist,\r\n eventHub,\r\n}: { playlist: PlaylistItem[], eventHub?: boolean }) => {\r\n const { translations } = useContext(LocalizationContext);\r\n const scrollBarRef = useRef(null);\r\n const [selectedVideo, setSelectedVideo] = useState(playlist[0]);\r\n const [closeVideo, setCloseVideo] = useState(false);\r\n\r\n const selectVideo = (event: React.MouseEvent, video: PlaylistItem) => {\r\n event.preventDefault();\r\n\r\n setCloseVideo(true);\r\n setSelectedVideo(video);\r\n };\r\n\r\n useEffect(() => {\r\n setTimeout(() => {\r\n if (scrollBarRef.current) {\r\n scrollBarRef.current.updateScroll();\r\n }\r\n }, 100);\r\n }, []);\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {eventHub && (\r\n
    \r\n {translations.event.liveScheduleLabel}\r\n
    \r\n )}\r\n \r\n
      \r\n {playlist.map((video) => {\r\n const disciplineTitle = video.title?.toLowerCase().split(' ').join('-');\r\n return (\r\n
    • \r\n selectVideo(event, video)}\r\n >\r\n
      \r\n {video.isLive && (\r\n
      Live
      \r\n )}\r\n {(!video.isLive && eventHub) && (\r\n
      {video.startTime}
      \r\n )}\r\n\r\n {!eventHub && (\r\n {video.description\r\n )}\r\n
      \r\n
      \r\n {video.title}\r\n
      \r\n {eventHub && (\r\n
      \r\n {video.description}\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\nconst Watch = ({\r\n title,\r\n content,\r\n sponsor,\r\n broadcasts,\r\n raceMode,\r\n playlist,\r\n eventHub,\r\n}: WatchProps) => (\r\n
    \r\n
    \r\n
    \r\n \r\n\r\n {sponsor && (\r\n
    \r\n {sponsor.title}\r\n
    \r\n )}\r\n
    \r\n\r\n {!raceMode && (\r\n
    \r\n {content && (\r\n
    \r\n \r\n
    \r\n )}\r\n\r\n {broadcasts && (\r\n
      \r\n {broadcasts.map((broadcast) => (\r\n \r\n ))}\r\n
    \r\n )}\r\n
    \r\n )}\r\n\r\n {(raceMode || eventHub) && playlist && (\r\n \r\n )}\r\n
    \r\n
    \r\n);\r\n\r\nexport default Watch;\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 { 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 React, {\r\n SyntheticEvent, useCallback, useEffect, useRef,\r\n} from 'react';\r\nimport { debounce } from 'lodash';\r\nimport { Link } from 'core/typings';\r\nimport './styles.scss';\r\n\r\ninterface AnchorProps {\r\n isSelected?: boolean;\r\n link: Link;\r\n root: string;\r\n}\r\nconst Anchor = ({ isSelected, link, root }: AnchorProps) => {\r\n const classes = [`${root}__item__link`];\r\n if (isSelected) {\r\n classes.push(`${root}__item__link--selected`);\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n {link.title}\r\n \r\n \r\n );\r\n};\r\n\r\ninterface ButtonProps extends AnchorProps {\r\n onItemClick: (ev: SyntheticEvent) => void;\r\n}\r\nconst Button = ({\r\n isSelected,\r\n link,\r\n onItemClick,\r\n root,\r\n}: ButtonProps) => {\r\n const classes = [`${root}__item__link`, `${root}__item__link--button`];\r\n if (isSelected) {\r\n classes.push(`${root}__item__link--selected`);\r\n }\r\n\r\n return (\r\n onItemClick(ev)}\r\n >\r\n \r\n \r\n {link.title}\r\n \r\n \r\n );\r\n};\r\n\r\ninterface HeroCarouselProps {\r\n items: Link[];\r\n mode?: 'link' | 'button';\r\n onItemClick?: (index: number) => void;\r\n onScrollEnd?: (index: number) => void;\r\n selectedIndex?: number;\r\n}\r\nconst HeroCarousel = ({\r\n items,\r\n mode = 'link',\r\n onItemClick,\r\n onScrollEnd,\r\n selectedIndex,\r\n}: HeroCarouselProps) => {\r\n const root = 'hero-carousel';\r\n const scrollRef = useRef(null);\r\n const onScroll = useCallback(\r\n debounce(() => {\r\n if (scrollRef.current) {\r\n const { firstElementChild, scrollLeft } = scrollRef.current;\r\n const itemWidth = (firstElementChild?.clientWidth ?? 1);\r\n const index = Math.round(scrollLeft / itemWidth);\r\n onScrollEnd?.(index);\r\n }\r\n }, 100, {\r\n leading: false,\r\n }),\r\n [scrollRef.current],\r\n );\r\n\r\n useEffect(() => {\r\n if (scrollRef.current && selectedIndex !== undefined) {\r\n const element = scrollRef.current.children[selectedIndex] as HTMLLIElement;\r\n\r\n if (selectedIndex) {\r\n scrollRef.current?.scrollTo({ left: element?.offsetLeft, behavior: 'smooth' });\r\n } else {\r\n scrollRef.current?.scrollTo({ left: 0 - element?.offsetLeft, behavior: 'smooth' });\r\n }\r\n }\r\n }, [selectedIndex]);\r\n\r\n return (\r\n
    \r\n
      \r\n {items.map((link, i) => (\r\n
    1. \r\n {mode === 'link' ? (\r\n \r\n ) : (\r\n {\r\n const el = ev.currentTarget;\r\n scrollRef.current?.scrollTo({ left: el?.offsetLeft, behavior: 'smooth' });\r\n onItemClick?.(i);\r\n }}\r\n root={root}\r\n isSelected={selectedIndex === i}\r\n />\r\n )}\r\n
    2. \r\n ))}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default HeroCarousel;\r\n","import React, { useState, useEffect } from 'react';\r\nimport Fade from 'react-reveal/Fade';\r\nimport { ImageObject, SvgImage } from '../common';\r\nimport HeroCarousel from '../HeroCarousel';\r\nimport VideoObject from '../VideoObject';\r\nimport VideoObjectProps from '../VideoObject/type';\r\nimport { Image, Link } from '../../typings';\r\nimport './styles.scss';\r\n\r\ninterface HomepageHeaderSection {\r\n title: string;\r\n link: Link;\r\n heroImage: Image;\r\n video?: VideoObjectProps;\r\n}\r\n\r\nexport interface HomepageHeaderProps {\r\n headerTitle: string;\r\n sections: HomepageHeaderSection[];\r\n}\r\n\r\nconst HomepageHeader = ({\r\n headerTitle,\r\n sections,\r\n}: HomepageHeaderProps) => {\r\n const root = 'homepage-header';\r\n\r\n const [currentSlide, setCurrentSlide] = useState(0);\r\n const [isVideoPlaying, setVideoPlaying] = useState(false);\r\n const [triggeredVideo, setTriggeredVideo] = useState(false);\r\n\r\n useEffect(() => {\r\n const cycle = setInterval(() => {\r\n if (isVideoPlaying) {\r\n clearInterval(cycle);\r\n return;\r\n }\r\n setCurrentSlide((currentSlide + 1) % sections.length);\r\n }, 8000);\r\n\r\n return () => clearInterval(cycle);\r\n }, [currentSlide, isVideoPlaying]);\r\n\r\n useEffect(() => {\r\n if (!isVideoPlaying) {\r\n setTriggeredVideo(false);\r\n }\r\n }, [isVideoPlaying]);\r\n\r\n return (\r\n
    \r\n
    \r\n {sections.map((section, index) => (\r\n \r\n
    \r\n {section.video ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
    \r\n
    \r\n ))}\r\n
    \r\n
    \r\n\r\n {!isVideoPlaying && (\r\n \r\n )}\r\n\r\n {!isVideoPlaying && (\r\n s.link)}\r\n mode=\"button\"\r\n selectedIndex={currentSlide}\r\n onItemClick={(i) => setCurrentSlide(i)}\r\n onScrollEnd={(i) => setCurrentSlide(i)}\r\n />\r\n )}\r\n
    \r\n );\r\n};\r\n\r\nexport default HomepageHeader;\r\n","//! moment-timezone.js\n//! version : 0.5.43\n//! Copyright (c) JS Foundation and other contributors\n//! license : MIT\n//! github.com/moment/moment-timezone\n\n(function (root, factory) {\n\t\"use strict\";\n\n\t/*global define*/\n\tif (typeof module === 'object' && module.exports) {\n\t\tmodule.exports = factory(require('moment')); // Node\n\t} else if (typeof define === 'function' && define.amd) {\n\t\tdefine(['moment'], factory); // AMD\n\t} else {\n\t\tfactory(root.moment); // Browser\n\t}\n}(this, function (moment) {\n\t\"use strict\";\n\n\t// Resolves es6 module loading issue\n\tif (moment.version === undefined && moment.default) {\n\t\tmoment = moment.default;\n\t}\n\n\t// Do not load moment-timezone a second time.\n\t// if (moment.tz !== undefined) {\n\t// \tlogError('Moment Timezone ' + moment.tz.version + ' was already loaded ' + (moment.tz.dataVersion ? 'with data from ' : 'without any data') + moment.tz.dataVersion);\n\t// \treturn moment;\n\t// }\n\n\tvar VERSION = \"0.5.43\",\n\t\tzones = {},\n\t\tlinks = {},\n\t\tcountries = {},\n\t\tnames = {},\n\t\tguesses = {},\n\t\tcachedGuess;\n\n\tif (!moment || typeof moment.version !== 'string') {\n\t\tlogError('Moment Timezone requires Moment.js. See https://momentjs.com/timezone/docs/#/use-it/browser/');\n\t}\n\n\tvar momentVersion = moment.version.split('.'),\n\t\tmajor = +momentVersion[0],\n\t\tminor = +momentVersion[1];\n\n\t// Moment.js version check\n\tif (major < 2 || (major === 2 && minor < 6)) {\n\t\tlogError('Moment Timezone requires Moment.js >= 2.6.0. You are using Moment.js ' + moment.version + '. See momentjs.com');\n\t}\n\n\t/************************************\n\t\tUnpacking\n\t************************************/\n\n\tfunction charCodeToInt(charCode) {\n\t\tif (charCode > 96) {\n\t\t\treturn charCode - 87;\n\t\t} else if (charCode > 64) {\n\t\t\treturn charCode - 29;\n\t\t}\n\t\treturn charCode - 48;\n\t}\n\n\tfunction unpackBase60(string) {\n\t\tvar i = 0,\n\t\t\tparts = string.split('.'),\n\t\t\twhole = parts[0],\n\t\t\tfractional = parts[1] || '',\n\t\t\tmultiplier = 1,\n\t\t\tnum,\n\t\t\tout = 0,\n\t\t\tsign = 1;\n\n\t\t// handle negative numbers\n\t\tif (string.charCodeAt(0) === 45) {\n\t\t\ti = 1;\n\t\t\tsign = -1;\n\t\t}\n\n\t\t// handle digits before the decimal\n\t\tfor (i; i < whole.length; i++) {\n\t\t\tnum = charCodeToInt(whole.charCodeAt(i));\n\t\t\tout = 60 * out + num;\n\t\t}\n\n\t\t// handle digits after the decimal\n\t\tfor (i = 0; i < fractional.length; i++) {\n\t\t\tmultiplier = multiplier / 60;\n\t\t\tnum = charCodeToInt(fractional.charCodeAt(i));\n\t\t\tout += num * multiplier;\n\t\t}\n\n\t\treturn out * sign;\n\t}\n\n\tfunction arrayToInt (array) {\n\t\tfor (var i = 0; i < array.length; i++) {\n\t\t\tarray[i] = unpackBase60(array[i]);\n\t\t}\n\t}\n\n\tfunction intToUntil (array, length) {\n\t\tfor (var i = 0; i < length; i++) {\n\t\t\tarray[i] = Math.round((array[i - 1] || 0) + (array[i] * 60000)); // minutes to milliseconds\n\t\t}\n\n\t\tarray[length - 1] = Infinity;\n\t}\n\n\tfunction mapIndices (source, indices) {\n\t\tvar out = [], i;\n\n\t\tfor (i = 0; i < indices.length; i++) {\n\t\t\tout[i] = source[indices[i]];\n\t\t}\n\n\t\treturn out;\n\t}\n\n\tfunction unpack (string) {\n\t\tvar data = string.split('|'),\n\t\t\toffsets = data[2].split(' '),\n\t\t\tindices = data[3].split(''),\n\t\t\tuntils = data[4].split(' ');\n\n\t\tarrayToInt(offsets);\n\t\tarrayToInt(indices);\n\t\tarrayToInt(untils);\n\n\t\tintToUntil(untils, indices.length);\n\n\t\treturn {\n\t\t\tname : data[0],\n\t\t\tabbrs : mapIndices(data[1].split(' '), indices),\n\t\t\toffsets : mapIndices(offsets, indices),\n\t\t\tuntils : untils,\n\t\t\tpopulation : data[5] | 0\n\t\t};\n\t}\n\n\t/************************************\n\t\tZone object\n\t************************************/\n\n\tfunction Zone (packedString) {\n\t\tif (packedString) {\n\t\t\tthis._set(unpack(packedString));\n\t\t}\n\t}\n\n\tZone.prototype = {\n\t\t_set : function (unpacked) {\n\t\t\tthis.name = unpacked.name;\n\t\t\tthis.abbrs = unpacked.abbrs;\n\t\t\tthis.untils = unpacked.untils;\n\t\t\tthis.offsets = unpacked.offsets;\n\t\t\tthis.population = unpacked.population;\n\t\t},\n\n\t\t_index : function (timestamp) {\n\t\t\tvar target = +timestamp,\n\t\t\t\tuntils = this.untils,\n\t\t\t\ti;\n\n\t\t\tfor (i = 0; i < untils.length; i++) {\n\t\t\t\tif (target < untils[i]) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tcountries : function () {\n\t\t\tvar zone_name = this.name;\n\t\t\treturn Object.keys(countries).filter(function (country_code) {\n\t\t\t\treturn countries[country_code].zones.indexOf(zone_name) !== -1;\n\t\t\t});\n\t\t},\n\n\t\tparse : function (timestamp) {\n\t\t\tvar target = +timestamp,\n\t\t\t\toffsets = this.offsets,\n\t\t\t\tuntils = this.untils,\n\t\t\t\tmax = untils.length - 1,\n\t\t\t\toffset, offsetNext, offsetPrev, i;\n\n\t\t\tfor (i = 0; i < max; i++) {\n\t\t\t\toffset = offsets[i];\n\t\t\t\toffsetNext = offsets[i + 1];\n\t\t\t\toffsetPrev = offsets[i ? i - 1 : i];\n\n\t\t\t\tif (offset < offsetNext && tz.moveAmbiguousForward) {\n\t\t\t\t\toffset = offsetNext;\n\t\t\t\t} else if (offset > offsetPrev && tz.moveInvalidForward) {\n\t\t\t\t\toffset = offsetPrev;\n\t\t\t\t}\n\n\t\t\t\tif (target < untils[i] - (offset * 60000)) {\n\t\t\t\t\treturn offsets[i];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn offsets[max];\n\t\t},\n\n\t\tabbr : function (mom) {\n\t\t\treturn this.abbrs[this._index(mom)];\n\t\t},\n\n\t\toffset : function (mom) {\n\t\t\tlogError(\"zone.offset has been deprecated in favor of zone.utcOffset\");\n\t\t\treturn this.offsets[this._index(mom)];\n\t\t},\n\n\t\tutcOffset : function (mom) {\n\t\t\treturn this.offsets[this._index(mom)];\n\t\t}\n\t};\n\n\t/************************************\n\t\tCountry object\n\t************************************/\n\n\tfunction Country (country_name, zone_names) {\n\t\tthis.name = country_name;\n\t\tthis.zones = zone_names;\n\t}\n\n\t/************************************\n\t\tCurrent Timezone\n\t************************************/\n\n\tfunction OffsetAt(at) {\n\t\tvar timeString = at.toTimeString();\n\t\tvar abbr = timeString.match(/\\([a-z ]+\\)/i);\n\t\tif (abbr && abbr[0]) {\n\t\t\t// 17:56:31 GMT-0600 (CST)\n\t\t\t// 17:56:31 GMT-0600 (Central Standard Time)\n\t\t\tabbr = abbr[0].match(/[A-Z]/g);\n\t\t\tabbr = abbr ? abbr.join('') : undefined;\n\t\t} else {\n\t\t\t// 17:56:31 CST\n\t\t\t// 17:56:31 GMT+0800 (台北標準時間)\n\t\t\tabbr = timeString.match(/[A-Z]{3,5}/g);\n\t\t\tabbr = abbr ? abbr[0] : undefined;\n\t\t}\n\n\t\tif (abbr === 'GMT') {\n\t\t\tabbr = undefined;\n\t\t}\n\n\t\tthis.at = +at;\n\t\tthis.abbr = abbr;\n\t\tthis.offset = at.getTimezoneOffset();\n\t}\n\n\tfunction ZoneScore(zone) {\n\t\tthis.zone = zone;\n\t\tthis.offsetScore = 0;\n\t\tthis.abbrScore = 0;\n\t}\n\n\tZoneScore.prototype.scoreOffsetAt = function (offsetAt) {\n\t\tthis.offsetScore += Math.abs(this.zone.utcOffset(offsetAt.at) - offsetAt.offset);\n\t\tif (this.zone.abbr(offsetAt.at).replace(/[^A-Z]/g, '') !== offsetAt.abbr) {\n\t\t\tthis.abbrScore++;\n\t\t}\n\t};\n\n\tfunction findChange(low, high) {\n\t\tvar mid, diff;\n\n\t\twhile ((diff = ((high.at - low.at) / 12e4 | 0) * 6e4)) {\n\t\t\tmid = new OffsetAt(new Date(low.at + diff));\n\t\t\tif (mid.offset === low.offset) {\n\t\t\t\tlow = mid;\n\t\t\t} else {\n\t\t\t\thigh = mid;\n\t\t\t}\n\t\t}\n\n\t\treturn low;\n\t}\n\n\tfunction userOffsets() {\n\t\tvar startYear = new Date().getFullYear() - 2,\n\t\t\tlast = new OffsetAt(new Date(startYear, 0, 1)),\n\t\t\toffsets = [last],\n\t\t\tchange, next, i;\n\n\t\tfor (i = 1; i < 48; i++) {\n\t\t\tnext = new OffsetAt(new Date(startYear, i, 1));\n\t\t\tif (next.offset !== last.offset) {\n\t\t\t\tchange = findChange(last, next);\n\t\t\t\toffsets.push(change);\n\t\t\t\toffsets.push(new OffsetAt(new Date(change.at + 6e4)));\n\t\t\t}\n\t\t\tlast = next;\n\t\t}\n\n\t\tfor (i = 0; i < 4; i++) {\n\t\t\toffsets.push(new OffsetAt(new Date(startYear + i, 0, 1)));\n\t\t\toffsets.push(new OffsetAt(new Date(startYear + i, 6, 1)));\n\t\t}\n\n\t\treturn offsets;\n\t}\n\n\tfunction sortZoneScores (a, b) {\n\t\tif (a.offsetScore !== b.offsetScore) {\n\t\t\treturn a.offsetScore - b.offsetScore;\n\t\t}\n\t\tif (a.abbrScore !== b.abbrScore) {\n\t\t\treturn a.abbrScore - b.abbrScore;\n\t\t}\n\t\tif (a.zone.population !== b.zone.population) {\n\t\t\treturn b.zone.population - a.zone.population;\n\t\t}\n\t\treturn b.zone.name.localeCompare(a.zone.name);\n\t}\n\n\tfunction addToGuesses (name, offsets) {\n\t\tvar i, offset;\n\t\tarrayToInt(offsets);\n\t\tfor (i = 0; i < offsets.length; i++) {\n\t\t\toffset = offsets[i];\n\t\t\tguesses[offset] = guesses[offset] || {};\n\t\t\tguesses[offset][name] = true;\n\t\t}\n\t}\n\n\tfunction guessesForUserOffsets (offsets) {\n\t\tvar offsetsLength = offsets.length,\n\t\t\tfilteredGuesses = {},\n\t\t\tout = [],\n\t\t\ti, j, guessesOffset;\n\n\t\tfor (i = 0; i < offsetsLength; i++) {\n\t\t\tguessesOffset = guesses[offsets[i].offset] || {};\n\t\t\tfor (j in guessesOffset) {\n\t\t\t\tif (guessesOffset.hasOwnProperty(j)) {\n\t\t\t\t\tfilteredGuesses[j] = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor (i in filteredGuesses) {\n\t\t\tif (filteredGuesses.hasOwnProperty(i)) {\n\t\t\t\tout.push(names[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn out;\n\t}\n\n\tfunction rebuildGuess () {\n\n\t\t// use Intl API when available and returning valid time zone\n\t\ttry {\n\t\t\tvar intlName = Intl.DateTimeFormat().resolvedOptions().timeZone;\n\t\t\tif (intlName && intlName.length > 3) {\n\t\t\t\tvar name = names[normalizeName(intlName)];\n\t\t\t\tif (name) {\n\t\t\t\t\treturn name;\n\t\t\t\t}\n\t\t\t\tlogError(\"Moment Timezone found \" + intlName + \" from the Intl api, but did not have that data loaded.\");\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t// Intl unavailable, fall back to manual guessing.\n\t\t}\n\n\t\tvar offsets = userOffsets(),\n\t\t\toffsetsLength = offsets.length,\n\t\t\tguesses = guessesForUserOffsets(offsets),\n\t\t\tzoneScores = [],\n\t\t\tzoneScore, i, j;\n\n\t\tfor (i = 0; i < guesses.length; i++) {\n\t\t\tzoneScore = new ZoneScore(getZone(guesses[i]), offsetsLength);\n\t\t\tfor (j = 0; j < offsetsLength; j++) {\n\t\t\t\tzoneScore.scoreOffsetAt(offsets[j]);\n\t\t\t}\n\t\t\tzoneScores.push(zoneScore);\n\t\t}\n\n\t\tzoneScores.sort(sortZoneScores);\n\n\t\treturn zoneScores.length > 0 ? zoneScores[0].zone.name : undefined;\n\t}\n\n\tfunction guess (ignoreCache) {\n\t\tif (!cachedGuess || ignoreCache) {\n\t\t\tcachedGuess = rebuildGuess();\n\t\t}\n\t\treturn cachedGuess;\n\t}\n\n\t/************************************\n\t\tGlobal Methods\n\t************************************/\n\n\tfunction normalizeName (name) {\n\t\treturn (name || '').toLowerCase().replace(/\\//g, '_');\n\t}\n\n\tfunction addZone (packed) {\n\t\tvar i, name, split, normalized;\n\n\t\tif (typeof packed === \"string\") {\n\t\t\tpacked = [packed];\n\t\t}\n\n\t\tfor (i = 0; i < packed.length; i++) {\n\t\t\tsplit = packed[i].split('|');\n\t\t\tname = split[0];\n\t\t\tnormalized = normalizeName(name);\n\t\t\tzones[normalized] = packed[i];\n\t\t\tnames[normalized] = name;\n\t\t\taddToGuesses(normalized, split[2].split(' '));\n\t\t}\n\t}\n\n\tfunction getZone (name, caller) {\n\n\t\tname = normalizeName(name);\n\n\t\tvar zone = zones[name];\n\t\tvar link;\n\n\t\tif (zone instanceof Zone) {\n\t\t\treturn zone;\n\t\t}\n\n\t\tif (typeof zone === 'string') {\n\t\t\tzone = new Zone(zone);\n\t\t\tzones[name] = zone;\n\t\t\treturn zone;\n\t\t}\n\n\t\t// Pass getZone to prevent recursion more than 1 level deep\n\t\tif (links[name] && caller !== getZone && (link = getZone(links[name], getZone))) {\n\t\t\tzone = zones[name] = new Zone();\n\t\t\tzone._set(link);\n\t\t\tzone.name = names[name];\n\t\t\treturn zone;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tfunction getNames () {\n\t\tvar i, out = [];\n\n\t\tfor (i in names) {\n\t\t\tif (names.hasOwnProperty(i) && (zones[i] || zones[links[i]]) && names[i]) {\n\t\t\t\tout.push(names[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn out.sort();\n\t}\n\n\tfunction getCountryNames () {\n\t\treturn Object.keys(countries);\n\t}\n\n\tfunction addLink (aliases) {\n\t\tvar i, alias, normal0, normal1;\n\n\t\tif (typeof aliases === \"string\") {\n\t\t\taliases = [aliases];\n\t\t}\n\n\t\tfor (i = 0; i < aliases.length; i++) {\n\t\t\talias = aliases[i].split('|');\n\n\t\t\tnormal0 = normalizeName(alias[0]);\n\t\t\tnormal1 = normalizeName(alias[1]);\n\n\t\t\tlinks[normal0] = normal1;\n\t\t\tnames[normal0] = alias[0];\n\n\t\t\tlinks[normal1] = normal0;\n\t\t\tnames[normal1] = alias[1];\n\t\t}\n\t}\n\n\tfunction addCountries (data) {\n\t\tvar i, country_code, country_zones, split;\n\t\tif (!data || !data.length) return;\n\t\tfor (i = 0; i < data.length; i++) {\n\t\t\tsplit = data[i].split('|');\n\t\t\tcountry_code = split[0].toUpperCase();\n\t\t\tcountry_zones = split[1].split(' ');\n\t\t\tcountries[country_code] = new Country(\n\t\t\t\tcountry_code,\n\t\t\t\tcountry_zones\n\t\t\t);\n\t\t}\n\t}\n\n\tfunction getCountry (name) {\n\t\tname = name.toUpperCase();\n\t\treturn countries[name] || null;\n\t}\n\n\tfunction zonesForCountry(country, with_offset) {\n\t\tcountry = getCountry(country);\n\n\t\tif (!country) return null;\n\n\t\tvar zones = country.zones.sort();\n\n\t\tif (with_offset) {\n\t\t\treturn zones.map(function (zone_name) {\n\t\t\t\tvar zone = getZone(zone_name);\n\t\t\t\treturn {\n\t\t\t\t\tname: zone_name,\n\t\t\t\t\toffset: zone.utcOffset(new Date())\n\t\t\t\t};\n\t\t\t});\n\t\t}\n\n\t\treturn zones;\n\t}\n\n\tfunction loadData (data) {\n\t\taddZone(data.zones);\n\t\taddLink(data.links);\n\t\taddCountries(data.countries);\n\t\ttz.dataVersion = data.version;\n\t}\n\n\tfunction zoneExists (name) {\n\t\tif (!zoneExists.didShowError) {\n\t\t\tzoneExists.didShowError = true;\n\t\t\t\tlogError(\"moment.tz.zoneExists('\" + name + \"') has been deprecated in favor of !moment.tz.zone('\" + name + \"')\");\n\t\t}\n\t\treturn !!getZone(name);\n\t}\n\n\tfunction needsOffset (m) {\n\t\tvar isUnixTimestamp = (m._f === 'X' || m._f === 'x');\n\t\treturn !!(m._a && (m._tzm === undefined) && !isUnixTimestamp);\n\t}\n\n\tfunction logError (message) {\n\t\tif (typeof console !== 'undefined' && typeof console.error === 'function') {\n\t\t\tconsole.error(message);\n\t\t}\n\t}\n\n\t/************************************\n\t\tmoment.tz namespace\n\t************************************/\n\n\tfunction tz (input) {\n\t\tvar args = Array.prototype.slice.call(arguments, 0, -1),\n\t\t\tname = arguments[arguments.length - 1],\n\t\t\tzone = getZone(name),\n\t\t\tout = moment.utc.apply(null, args);\n\n\t\tif (zone && !moment.isMoment(input) && needsOffset(out)) {\n\t\t\tout.add(zone.parse(out), 'minutes');\n\t\t}\n\n\t\tout.tz(name);\n\n\t\treturn out;\n\t}\n\n\ttz.version = VERSION;\n\ttz.dataVersion = '';\n\ttz._zones = zones;\n\ttz._links = links;\n\ttz._names = names;\n\ttz._countries\t= countries;\n\ttz.add = addZone;\n\ttz.link = addLink;\n\ttz.load = loadData;\n\ttz.zone = getZone;\n\ttz.zoneExists = zoneExists; // deprecated in 0.1.0\n\ttz.guess = guess;\n\ttz.names = getNames;\n\ttz.Zone = Zone;\n\ttz.unpack = unpack;\n\ttz.unpackBase60 = unpackBase60;\n\ttz.needsOffset = needsOffset;\n\ttz.moveInvalidForward = true;\n\ttz.moveAmbiguousForward = false;\n\ttz.countries = getCountryNames;\n\ttz.zonesForCountry = zonesForCountry;\n\n\t/************************************\n\t\tInterface with Moment.js\n\t************************************/\n\n\tvar fn = moment.fn;\n\n\tmoment.tz = tz;\n\n\tmoment.defaultZone = null;\n\n\tmoment.updateOffset = function (mom, keepTime) {\n\t\tvar zone = moment.defaultZone,\n\t\t\toffset;\n\n\t\tif (mom._z === undefined) {\n\t\t\tif (zone && needsOffset(mom) && !mom._isUTC) {\n\t\t\t\tmom._d = moment.utc(mom._a)._d;\n\t\t\t\tmom.utc().add(zone.parse(mom), 'minutes');\n\t\t\t}\n\t\t\tmom._z = zone;\n\t\t}\n\t\tif (mom._z) {\n\t\t\toffset = mom._z.utcOffset(mom);\n\t\t\tif (Math.abs(offset) < 16) {\n\t\t\t\toffset = offset / 60;\n\t\t\t}\n\t\t\tif (mom.utcOffset !== undefined) {\n\t\t\t\tvar z = mom._z;\n\t\t\t\tmom.utcOffset(-offset, keepTime);\n\t\t\t\tmom._z = z;\n\t\t\t} else {\n\t\t\t\tmom.zone(offset, keepTime);\n\t\t\t}\n\t\t}\n\t};\n\n\tfn.tz = function (name, keepTime) {\n\t\tif (name) {\n\t\t\tif (typeof name !== 'string') {\n\t\t\t\tthrow new Error('Time zone name must be a string, got ' + name + ' [' + typeof name + ']');\n\t\t\t}\n\t\t\tthis._z = getZone(name);\n\t\t\tif (this._z) {\n\t\t\t\tmoment.updateOffset(this, keepTime);\n\t\t\t} else {\n\t\t\t\tlogError(\"Moment Timezone has no data for \" + name + \". See http://momentjs.com/timezone/docs/#/data-loading/.\");\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif (this._z) { return this._z.name; }\n\t};\n\n\tfunction abbrWrap (old) {\n\t\treturn function () {\n\t\t\tif (this._z) { return this._z.abbr(this); }\n\t\t\treturn old.call(this);\n\t\t};\n\t}\n\n\tfunction resetZoneWrap (old) {\n\t\treturn function () {\n\t\t\tthis._z = null;\n\t\t\treturn old.apply(this, arguments);\n\t\t};\n\t}\n\n\tfunction resetZoneWrap2 (old) {\n\t\treturn function () {\n\t\t\tif (arguments.length > 0) this._z = null;\n\t\t\treturn old.apply(this, arguments);\n\t\t};\n\t}\n\n\tfn.zoneName = abbrWrap(fn.zoneName);\n\tfn.zoneAbbr = abbrWrap(fn.zoneAbbr);\n\tfn.utc = resetZoneWrap(fn.utc);\n\tfn.local = resetZoneWrap(fn.local);\n\tfn.utcOffset = resetZoneWrap2(fn.utcOffset);\n\n\tmoment.tz.setDefault = function(name) {\n\t\tif (major < 2 || (major === 2 && minor < 9)) {\n\t\t\tlogError('Moment Timezone setDefault() requires Moment.js >= 2.9.0. You are using Moment.js ' + moment.version + '.');\n\t\t}\n\t\tmoment.defaultZone = name ? getZone(name) : null;\n\t\treturn moment;\n\t};\n\n\t// Cloning a moment should include the _z property.\n\tvar momentProperties = moment.momentProperties;\n\tif (Object.prototype.toString.call(momentProperties) === '[object Array]') {\n\t\t// moment 2.8.1+\n\t\tmomentProperties.push('_z');\n\t\tmomentProperties.push('_a');\n\t} else if (momentProperties) {\n\t\t// moment 2.7.0\n\t\tmomentProperties._z = null;\n\t}\n\n\t// INJECT DATA\n\n\treturn moment;\n}));\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 { 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 React from 'react';\r\nimport './styles.scss';\r\nimport { Container } from '../helpers/Grid';\r\nimport { ImageBasic, Link } from '../common';\r\nimport Countdown from '../Countdown';\r\nimport CountdownModuleProps from './type';\r\n\r\nconst CountdownModule = ({\r\n patternImageTop,\r\n patternImageBottom,\r\n countdownLogo,\r\n countdownTitle,\r\n countdownDate,\r\n countdown,\r\n linkOne,\r\n linkTwo,\r\n sponsorLogo,\r\n mobileLinkOn,\r\n}: CountdownModuleProps) => (\r\n
    \r\n {(linkOne && mobileLinkOn) && (\r\n \r\n \r\n \r\n )}\r\n {patternImageTop && (\r\n \r\n \r\n \r\n )}\r\n\r\n {patternImageBottom && (\r\n \r\n \r\n \r\n )}\r\n\r\n \r\n
    \r\n {countdownLogo && (\r\n
    \r\n \r\n
    \r\n )}\r\n {countdownTitle && (\r\n

    \r\n {countdownTitle}\r\n

    \r\n )}\r\n {countdownDate && (\r\n
    \r\n {countdownDate}\r\n
    \r\n )}\r\n\r\n {(linkOne || linkTwo) && (\r\n
    \r\n {linkOne && (\r\n \r\n \r\n \r\n )}\r\n\r\n {linkTwo && (\r\n \r\n \r\n \r\n )}\r\n
    \r\n )}\r\n
    \r\n\r\n
    \r\n \r\n\r\n {sponsorLogo && (\r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n
    \r\n
    \r\n);\r\n\r\nexport default CountdownModule;\r\n","import React, { useContext } from 'react';\r\nimport LocalizationContext from '../../../contexts/Localizations';\r\nimport Carousel from '../../Carousel';\r\nimport { LiveEventsCarouselProps } from '../type';\r\nimport './liveEvents.scss';\r\n\r\nconst LiveEventsCarousel = ({ events, liveNowLabel }: LiveEventsCarouselProps) => {\r\n const slickSettings = {\r\n vertical: false,\r\n arrows: false,\r\n slidesToShow: 1,\r\n slidesToScroll: 1,\r\n autoplay: true,\r\n autoplaySpeed: 5000,\r\n speed: 500,\r\n infinite: true,\r\n responsive: [],\r\n };\r\n\r\n const { locale } = useContext(LocalizationContext);\r\n\r\n const isFrench = locale === 'fr-fr';\r\n\r\n return (\r\n
    \r\n \r\n {events.map((event) => {\r\n const raceName = isFrench ? event?.racePicker?.nameFra : event?.racePicker?.nameEng;\r\n const eventCategoryName = isFrench ? event?.racePicker?.events[0]?.nameFra\r\n : event?.racePicker?.events[0]?.nameEng;\r\n\r\n return (\r\n
    \r\n
    {liveNowLabel}
    \r\n
    {raceName}
    \r\n
    {eventCategoryName}
    \r\n
    \r\n );\r\n })}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default LiveEventsCarousel;\r\n","import React, { Fragment, useContext } from 'react';\r\nimport moment from 'moment-timezone';\r\nimport { HubEventsCarouselProps, HubEventsItemProps } from '../type';\r\nimport LocalizationContext from '../../../contexts/Localizations';\r\nimport { Link, SvgImage } from '../../common';\r\nimport Carousel from '../../Carousel';\r\nimport './hubEvents.scss';\r\n\r\nconst HubEventItem = ({\r\n index, event, timezone, sectionTitle,\r\n}: HubEventsItemProps) => {\r\n const { translations, locale } = useContext(LocalizationContext);\r\n const disciplineClass = event?.discipline?.toLowerCase().split(' ').join('-');\r\n const momentTz = timezone === 'BST' || timezone === 'GMT' ? 'GMT' : timezone;\r\n\r\n const isLive = sectionTitle === 'live';\r\n const isUpcoming = sectionTitle === 'upcoming';\r\n const liveStream = moment().tz(momentTz!).isBefore(event?.liveStreamEndTime)\r\n && event.liveStreamStartTime;\r\n\r\n const isFrench = locale === 'fr-fr';\r\n const raceName = isFrench ? event?.racePicker?.nameFra : event.racePicker?.nameEng;\r\n const eventCategoryName = isFrench ? event?.racePicker?.events[0]?.nameFra\r\n : event?.racePicker?.events[0]?.nameEng;\r\n\r\n return (\r\n
    \r\n {!index && (\r\n
    \r\n {isLive && translations.event.liveNowLabel}\r\n {isUpcoming && translations.event.upcomingLabel}\r\n
    \r\n )}\r\n
    \r\n {isLive ? (\r\n
    \r\n {translations.homepage.liveEventLabel}\r\n
    \r\n ) : (\r\n
    \r\n {event.raceStartTime.slice(11, 16)}\r\n {timezone}\r\n
    \r\n )}\r\n\r\n
    \r\n
    \r\n {event.discipline}\r\n
    \r\n
    \r\n {raceName || event.title}\r\n {eventCategoryName && (\r\n \r\n {' - '}\r\n {eventCategoryName}\r\n \r\n )}\r\n
    \r\n\r\n {Boolean(liveStream) && (\r\n
    \r\n \r\n {translations.event.liveStreamLabel}\r\n \r\n {translations.event.fromLabel}\r\n {' '}\r\n {event.liveStreamStartTime.slice(11, 16)}\r\n \r\n
    \r\n )}\r\n\r\n {event.raceHub && (\r\n \r\n )}\r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nconst HubEventsCarousel = ({\r\n pastEvents,\r\n liveEvents,\r\n upcomingEvents,\r\n timezone,\r\n carouselTitle,\r\n liveOrUpcomingEventsCount,\r\n}: HubEventsCarouselProps) => {\r\n const getSlidesToShow = (idealSlidesToShowValue: number) => (\r\n idealSlidesToShowValue > liveOrUpcomingEventsCount\r\n ? liveOrUpcomingEventsCount\r\n : idealSlidesToShowValue\r\n );\r\n\r\n return (\r\n
    \r\n \r\n\r\n {pastEvents?.map((event, index) => (\r\n \r\n \r\n \r\n ))}\r\n {liveEvents?.map((event, index) => (\r\n \r\n \r\n \r\n ))}\r\n {upcomingEvents?.map((event, index) => (\r\n \r\n \r\n \r\n ))}\r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default HubEventsCarousel;\r\n","import React, { useContext, useEffect, useState } from 'react';\r\nimport moment from 'moment-timezone';\r\nimport LocalizationContext from '../../contexts/Localizations';\r\nimport { ImageBasic, ImageWithFocalPoint, Link } from '../common';\r\nimport Watch from '../Watch';\r\nimport { PlaylistItem } from '../Watch/type';\r\nimport HomepageHeader from '../HomepageHeader';\r\nimport { EventHeaderProps, Events } from './type';\r\nimport LiveEventsCarousel from './components/LiveEventsCarousel';\r\nimport HubEventsCarousel from './components/HubEventsCarousel';\r\nimport './styles.scss';\r\n\r\nconst EventHeader = ({\r\n eventTitle,\r\n patternImageTopLeft,\r\n patternImageTopRight,\r\n patternImageBottomLeft,\r\n patternImageBottomRight,\r\n eventLogoHomepage,\r\n eventLogoEventHub,\r\n eventDates,\r\n eventStartDate,\r\n eventLocation,\r\n eventTime,\r\n linkOne,\r\n linkTwo,\r\n homepageCarousel,\r\n eventHubImage,\r\n isHomepage,\r\n raceItems,\r\n eventHasFinished,\r\n}: EventHeaderProps) => {\r\n const timezone = eventTime === 'BST' || eventTime === 'GMT' ? 'Europe/London' : eventTime;\r\n\r\n const { translations, locale } = useContext(LocalizationContext);\r\n\r\n const [liveStreamPlaylist, setLiveStreamPlaylist] = useState();\r\n const [time, setTime] = useState(moment().tz(timezone || 'CET').format('HH:mm'));\r\n\r\n const currentMoment = moment();\r\n const eventDayCount = moment(eventStartDate) <= currentMoment\r\n ? currentMoment.diff(moment(eventStartDate), 'days') + 1\r\n : currentMoment.diff(moment(eventStartDate), 'days') - 1;\r\n\r\n useEffect(() => {\r\n const intervalId = setInterval(() => {\r\n setTime(moment().tz(timezone || 'CET').format('HH:mm'));\r\n }, 1000);\r\n\r\n return () => clearInterval(intervalId);\r\n }, []);\r\n\r\n const sortedRaces = raceItems?.filter((item) => item.racePicker)\r\n .sort((a, b) => a.raceStartTime.localeCompare(b.raceStartTime)\r\n || a.racePicker?.nameEng?.localeCompare(b?.racePicker?.nameEng));\r\n\r\n const organisedEvents = sortedRaces?.reduce((acc, event) => {\r\n const startDate = moment(event.raceStartTime);\r\n const endDate = moment(event.raceEndTime);\r\n\r\n const isPast = endDate.isBefore(currentMoment);\r\n const isBetween = currentMoment.isBetween(startDate, endDate);\r\n const isUpcoming = currentMoment.isBefore(startDate);\r\n\r\n if (isPast) {\r\n acc.pastEvents.push(event);\r\n } else if (isBetween) {\r\n acc.liveEvents.push(event);\r\n } else if (isUpcoming) {\r\n acc.upcomingEvents.push(event);\r\n }\r\n return acc;\r\n }, {\r\n pastEvents: [],\r\n liveEvents: [],\r\n upcomingEvents: [],\r\n } as Events);\r\n\r\n useEffect(() => {\r\n if (sortedRaces) {\r\n const eventsWithLivestream = sortedRaces.filter((item) => item.liveStreamEndTime\r\n && item.liveStreamStartTime && item.videoPicker\r\n && moment(item.liveStreamEndTime).isAfter(currentMoment))\r\n .sort((a, b) => a.liveStreamStartTime?.localeCompare(b.liveStreamStartTime));\r\n\r\n const playlist = eventsWithLivestream?.map((event) => {\r\n const {\r\n liveStreamEndTime, liveStreamStartTime, videoPicker, racePicker, discipline,\r\n } = event;\r\n\r\n const startTime = moment(liveStreamStartTime);\r\n const endTime = moment(liveStreamEndTime);\r\n const isLive = currentMoment.isBetween(startTime, endTime);\r\n\r\n return {\r\n ...videoPicker,\r\n description: locale === 'fr-fr' ? racePicker?.nameFra : racePicker?.nameEng,\r\n title: discipline,\r\n isLive,\r\n startTime: liveStreamStartTime.slice(11, 16),\r\n endTime: liveStreamEndTime.slice(11, 16),\r\n };\r\n }) as PlaylistItem[];\r\n\r\n setLiveStreamPlaylist(playlist);\r\n }\r\n }, []);\r\n\r\n const liveOrUpcomingEvents = [\r\n ...organisedEvents?.liveEvents || [], ...organisedEvents?.upcomingEvents || [],\r\n ].length;\r\n\r\n const isSingleDigit = eventDayCount > 0 && eventDayCount < 10;\r\n\r\n const isOnlyOneLink = (linkOne || linkTwo) && !(linkOne && linkTwo);\r\n const displayLivePlaylist = !isHomepage && !!liveOrUpcomingEvents && liveStreamPlaylist?.length;\r\n const withLiveEvents = Boolean(organisedEvents?.liveEvents.length);\r\n\r\n return (\r\n
    \r\n {patternImageTopLeft && (\r\n \r\n \r\n \r\n )}\r\n\r\n {patternImageTopRight && (\r\n \r\n \r\n \r\n )}\r\n\r\n {patternImageBottomLeft && (\r\n \r\n \r\n \r\n )}\r\n\r\n {patternImageBottomRight && (\r\n \r\n \r\n \r\n )}\r\n\r\n
    \r\n {(eventHubImage && !isHomepage) && (\r\n
    \r\n \r\n
    \r\n )}\r\n\r\n
    \r\n {isHomepage\r\n ? eventLogoHomepage && (\r\n \r\n )\r\n : eventLogoEventHub && (\r\n \r\n )}\r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n {eventTitle && (\r\n

    {eventTitle}

    \r\n )}\r\n {eventDates && (\r\n
    {eventDates}
    \r\n )}\r\n
    \r\n\r\n {(eventStartDate && !eventHasFinished) && (\r\n
    \r\n {translations.event.dayLabel}\r\n \r\n {isSingleDigit && '0'}\r\n {eventDayCount}\r\n \r\n
    \r\n )}\r\n\r\n {(eventLocation && !isHomepage && !eventHasFinished) && (\r\n
    \r\n \r\n {eventLocation}\r\n \r\n\r\n \r\n {time}\r\n \r\n
    \r\n )}\r\n\r\n {(isHomepage && organisedEvents && withLiveEvents && !eventHasFinished) && (\r\n \r\n )}\r\n
    \r\n\r\n {(!isHomepage && organisedEvents && !!raceItems?.length && !eventHasFinished) && (\r\n \r\n )}\r\n\r\n {((linkOne || linkTwo) && isHomepage) && (\r\n
    \r\n {linkOne && (\r\n \r\n \r\n \r\n )}\r\n\r\n {linkTwo && (\r\n \r\n \r\n \r\n )}\r\n
    \r\n )}\r\n
    \r\n\r\n {(isHomepage && homepageCarousel) && (\r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n\r\n {(displayLivePlaylist && !eventHasFinished) && (\r\n \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nexport default EventHeader;\r\n","import moment from 'moment';\r\nimport React, { useMemo } from 'react';\r\nimport { Discipline, TissotCountdown } from '../../core/typings';\r\nimport { Image, Link } from '../../typings';\r\nimport { HeroBanner, ImageObject, SvgImage } from '../common';\r\nimport './styles.scss';\r\n\r\ninterface RaceEvent {\r\n date: string;\r\n dateDay: string;\r\n dateMonth: string;\r\n disciplineName: string;\r\n link: Link;\r\n location: string;\r\n title: string;\r\n}\r\n\r\nexport interface CompetitionHeaderProps {\r\n backLink?: Link | null;\r\n broadcasterLogoImage?: Image | null;\r\n competitionLogo?: Image | null;\r\n competitionTitle: string;\r\n discipline?: Discipline | null;\r\n heroImage: Image;\r\n latestEvent?: RaceEvent;\r\n nextEvent?: RaceEvent;\r\n tissotCountdown?: TissotCountdown;\r\n}\r\n\r\nconst CompetitionHeader = ({\r\n backLink,\r\n broadcasterLogoImage,\r\n competitionLogo,\r\n competitionTitle,\r\n discipline,\r\n heroImage,\r\n latestEvent,\r\n nextEvent,\r\n}: CompetitionHeaderProps) => {\r\n const root = 'competition-header';\r\n const classes = [root];\r\n if (discipline) {\r\n classes.push(`${root}--discipline-${discipline}`);\r\n }\r\n const nextEventMoment = useMemo(\r\n () => (nextEvent ? moment(nextEvent.date) : null),\r\n [nextEvent],\r\n );\r\n const latestEventMoment = useMemo(\r\n () => (latestEvent ? moment(latestEvent.date) : null),\r\n [latestEvent],\r\n );\r\n\r\n // TODO: l10n \"latest\" / \"next up\" / \"watch on\"\r\n return (\r\n
    \r\n \r\n {competitionLogo && (\r\n
    \r\n \r\n
    \r\n )}\r\n\r\n
    \r\n

    {competitionTitle}

    \r\n
    \r\n\r\n {latestEvent && (\r\n
    \r\n

    Latest

    \r\n
    \r\n
    \r\n \r\n \r\n {latestEvent.dateDay}\r\n \r\n {' '}\r\n \r\n {latestEvent.dateMonth}\r\n \r\n \r\n\r\n
    \r\n

    \r\n {latestEvent.title}\r\n

    \r\n\r\n

    \r\n \r\n {latestEvent.disciplineName}\r\n \r\n  \r\n \r\n {latestEvent.location}\r\n \r\n

    \r\n
    \r\n
    \r\n
    \r\n {latestEvent.link && (\r\n \r\n )}\r\n
    \r\n )}\r\n\r\n {nextEvent && (\r\n
    \r\n

    Next up

    \r\n
    \r\n
    \r\n \r\n \r\n {nextEvent.dateDay}\r\n \r\n {' '}\r\n \r\n {nextEvent.dateMonth}\r\n \r\n \r\n\r\n
    \r\n

    \r\n {nextEvent.title}\r\n

    \r\n\r\n

    \r\n \r\n {nextEvent.disciplineName}\r\n \r\n {' '}\r\n \r\n {nextEvent.location}\r\n \r\n

    \r\n
    \r\n
    \r\n
    \r\n\r\n {nextEvent.link && (\r\n \r\n )}\r\n\r\n
    \r\n )}\r\n\r\n {broadcasterLogoImage && (\r\n
    \r\n

    Watch on

    \r\n \r\n
    \r\n )}\r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default CompetitionHeader;\r\n","import moment from 'moment';\r\nimport React, { useContext, useMemo } from 'react';\r\nimport LocalizationContext from '../../contexts/Localizations';\r\nimport './styles.scss';\r\n\r\ninterface EventDateProps {\r\n startDate: string;\r\n endDate?: string;\r\n}\r\n\r\nconst EventDate = ({\r\n startDate,\r\n endDate,\r\n}: EventDateProps) => {\r\n const { locale } = useContext(LocalizationContext);\r\n const startMoment = useMemo(() => moment(startDate).locale(locale), [startDate]);\r\n const endMoment = useMemo(() => endDate && moment(endDate).locale(locale), [endDate]);\r\n const format = 'DD MMMM YYYY';\r\n let startFormatted = startMoment.format(format);\r\n let endFormatted = '';\r\n\r\n if (endMoment && startMoment.format(format) !== endMoment.format(format)) {\r\n endFormatted = endMoment.format(format);\r\n\r\n if (startMoment.year() === endMoment.year()) {\r\n if (startMoment.month() !== endMoment.month()) {\r\n startFormatted = startMoment.format('DD MMMM');\r\n } else if (startMoment.date() !== endMoment.date()) {\r\n startFormatted = startMoment.format('DD');\r\n }\r\n }\r\n }\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default EventDate;\r\n","import React from 'react';\r\nimport { SvgImage } from '../common';\r\nimport './styles.scss';\r\n\r\ninterface EventLocationProps {\r\n startLocation: string;\r\n endLocation?: string;\r\n}\r\n\r\nconst EventLocation = ({\r\n startLocation,\r\n endLocation,\r\n}: EventLocationProps) => (\r\n
    \r\n
    \r\n \r\n {startLocation}\r\n
    \r\n {endLocation && (\r\n
    \r\n \r\n {endLocation}\r\n
    \r\n )}\r\n
    \r\n);\r\n\r\nexport default EventLocation;\r\n","import React, { useEffect, useRef, useState } from 'react';\r\n\r\nimport { Discipline } from '../../core/typings';\r\nimport Countdown from '../Countdown';\r\nimport EventDate from '../EventDate';\r\nimport EventLocation from '../EventLocation';\r\nimport { Grid } from '../helpers/Grid';\r\nimport WatchProps from '../Watch/type';\r\nimport Watch from '../Watch';\r\nimport { Image, Link } from '../../typings';\r\nimport { HeroBanner, ImageObject, SvgImage } from '../common';\r\nimport './styles.scss';\r\n\r\nexport interface RaceHeaderProps {\r\n backLink?: Link | null;\r\n broadcasterLogoImage?: Image | null;\r\n competitionImage?: Image | null;\r\n competitionTitle?: string;\r\n countdownDate?: string;\r\n discipline?: Discipline | null;\r\n heroImage: Image;\r\n raceTitle: string;\r\n raceStartDate?: string;\r\n raceEndDate?: string | null;\r\n raceStartLocation: string;\r\n raceEndLocation?: string | null;\r\n state: 'pre' | 'live' | 'post';\r\n timekeeperLogoImage?: Image | null;\r\n watchOverlay?: WatchProps;\r\n}\r\n\r\nconst RaceHeader = ({\r\n backLink,\r\n broadcasterLogoImage,\r\n competitionImage,\r\n competitionTitle,\r\n countdownDate,\r\n discipline,\r\n heroImage,\r\n raceTitle,\r\n raceStartDate,\r\n raceEndDate,\r\n raceStartLocation,\r\n raceEndLocation,\r\n state,\r\n timekeeperLogoImage,\r\n watchOverlay,\r\n}: RaceHeaderProps) => {\r\n const root = 'race-header';\r\n const classes = [\r\n root,\r\n `${root}--${state}`,\r\n ];\r\n if (discipline) {\r\n classes.push(`${root}--discipline-${discipline}`);\r\n }\r\n\r\n const [showWatchOverlay, setShowWatchOverlay] = useState(false);\r\n const closeOverlayBtnRef = useRef(null);\r\n\r\n useEffect(() => {\r\n if (showWatchOverlay) {\r\n closeOverlayBtnRef.current?.focus();\r\n }\r\n }, [showWatchOverlay]);\r\n\r\n if (showWatchOverlay) {\r\n classes.push(`${root}--has-overlay`);\r\n }\r\n\r\n // TODO: l10n \"watch on\" / \"watch live\" / \"highlights\"\r\n return (\r\n
    \r\n \r\n {competitionImage && (\r\n
    \r\n \r\n
    \r\n )}\r\n\r\n
    \r\n {!!competitionTitle && (\r\n

    \r\n {competitionTitle}\r\n

    \r\n )}\r\n

    \r\n {raceTitle}\r\n

    \r\n\r\n {raceStartDate && (\r\n \r\n )}\r\n\r\n
    \r\n {state === 'live' && watchOverlay && (\r\n setShowWatchOverlay(true)}\r\n >\r\n \r\n Watch live\r\n \r\n )}\r\n {state === 'post' && watchOverlay && (\r\n setShowWatchOverlay(true)}\r\n >\r\n \r\n Highlights\r\n \r\n )}\r\n
    \r\n\r\n
    \r\n \r\n \r\n \r\n \r\n {state === 'pre' && countdownDate && (\r\n \r\n \r\n
    \r\n {timekeeperLogoImage && }\r\n
    \r\n
    \r\n )}\r\n
    \r\n\r\n {broadcasterLogoImage && (\r\n
    \r\n

    Watch on

    \r\n \r\n
    \r\n )}\r\n
    \r\n
    \r\n \r\n\r\n
    \r\n setShowWatchOverlay(false)}\r\n ref={closeOverlayBtnRef}\r\n >\r\n \r\n \r\n\r\n
    \r\n {watchOverlay && }\r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default RaceHeader;\r\n","import * as React from 'react';\r\nimport useHabitat from '../../hooks/useHabitat';\r\nimport HubsModuleProps from './type';\r\nimport { Discipline } from '../../core/typings';\r\nimport CompetitionHeader from '../../components/CompetitionHeader';\r\nimport Countdown from '../../components/Countdown';\r\nimport CountdownModule from '../../components/CountdownModule';\r\nimport EventHeader from '../../components/EventHeader';\r\nimport RaceHeader from '../../components/RaceHeader';\r\nimport Sponsors from '../../components/Sponsors';\r\nimport Tabs, { Tab, TabPanel } from '../../components/common/Tabs';\r\nimport Calendar from '../../components/Calendar';\r\nimport './styles.scss';\r\n\r\nconst HubsModule = ({\r\n raceHubHeader,\r\n competitionHubHeader,\r\n eventHubHeader,\r\n tabs,\r\n sponsors,\r\n}: HubsModuleProps) => {\r\n useHabitat();\r\n\r\n return (\r\n
    \r\n {raceHubHeader && (\r\n \r\n )}\r\n\r\n {competitionHubHeader && competitionHubHeader.tissotCountdown && (\r\n \r\n )}\r\n\r\n {competitionHubHeader && (\r\n \r\n )}\r\n\r\n {(eventHubHeader?.headerModule && !eventHubHeader?.liveEventHeaderModule) && (\r\n \r\n )}\r\n\r\n {eventHubHeader?.liveEventHeaderModule && (\r\n \r\n )}\r\n\r\n {tabs && tabs.tabs.length === 1 && (\r\n \r\n )}\r\n\r\n {tabs && tabs.tabs.length > 1 && (\r\n
    \r\n \r\n {tabs.tabs.map((tab) => (\r\n \r\n ))}\r\n {tabs.tabs.map((tab) => (\r\n \r\n {(tab.content && !tab.isResult) && (\r\n \r\n )}\r\n {(tab.isResult && tab.bearerToken && tab.filters) && (\r\n \r\n )}\r\n {tab.subTabs && (\r\n \r\n {tab.subTabs.map((subTab) => (\r\n \r\n ))}\r\n {tab.subTabs.map((subTab) => (\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 {sponsors && (\r\n \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nexport default HubsModule;\r\n"],"sourceRoot":""}