{"version":3,"sources":["../webpack/bootstrap","components/Meta/ico/favicon.png","store/modules/epi.ts","api/epiApi.ts","store/modules/model.ts","store/index.ts","components/Text/Text.tsx","components/Text/index.ts","theme/icons/icon-chevron.svg","theme/icons/icon-arrow.svg","theme/icons/icon-plus.svg","theme/icons/icon-search.svg","theme/icons/icon-menu.svg","theme/icons/icon-volumeup.svg","theme/icons/icon-volumedown.svg","theme/icons/icon-play.svg","theme/icons/icon-spinner.svg","theme/icons/icon-check.svg","theme/icons/icon-exclamation.svg","theme/icons/icon-info.svg","theme/icons/index.ts","components/Icon/Icon.tsx","components/Image/ImageDescription.tsx","components/Image/Image.tsx","theme/media-queries.ts","components/Image/index.ts","components/ImageInfoBlock/ImageInfoBlock.tsx","components/Carousel/CarouselToggleFullscreen.tsx","components/Carousel/CarouselNormal.tsx","components/Carousel/Carousel.tsx","components/Button/Button.tsx","components/ActivitesPuff/ActivitesPuff.tsx","components/CurrentInformationBlock/CurrentInformationBlock.tsx","components/CurrentInformationBlock/InfoBlock.tsx","components/Grid/CssHelper.ts","components/Grid/Grid.tsx","hooks/useModal.tsx","components/Instagram/InstagramModal.tsx","components/RichText/RichText.tsx","components/EpiForms/EpiForms.dependencies.ts","components/EpiForms/EpiForms.actions.ts","components/Form/hooks/useFieldValidation.ts","components/Form/context/Form.context.tsx","components/Form/fields/Field.tsx","components/Form/fields/TextArea.tsx","components/Form/fields/Checkbox.tsx","components/Form/fields/RadioButton.tsx","components/Form/fields/Select.tsx","components/Form/fields/Multiselect.tsx","components/Form/fields/Button.tsx","components/Tooltip/Tooltip.tsx","components/Form/Labels.tsx","components/Form/fields/Fieldset.tsx","components/EpiForms/FormButtons.tsx","components/EpiForms/FormStep.tsx","components/Form/hooks/useChildClones.ts","components/Form/Form.tsx","components/Form/FormComponent.tsx","hooks/useFormRenderer.tsx","hooks/usePrevious.ts","hooks/useScript.ts","hooks/useFirstRender.ts","components/EpiForms/EpiForms.helpers.ts","components/EpiForms/EpiForms.submit.ts","components/EpiForms/FormMessage.tsx","components/EpiForms/EpiForms.tsx","components/EpiForms/index.tsx","hooks/useForceUpdate.ts","components/ResponsiveIframe/ResponsiveIframe.tsx","components/VideoBlock/VideoBlock.tsx","components/EditableField/EditableField.tsx","components/EpiFragments/EpiFragments.tsx","components/Instagram/Instagram.tsx","components/Link/Link.tsx","components/NewsletterPuff/NewsletterPuff.tsx","components/ParkInformation/ParkInformation.tsx","components/ParkListing/list/park.tsx","components/ParkListing/list/listsearch.tsx","components/ParkListing/map/area.tsx","components/ParkListing/map/park.tsx","components/ParkListing/map/parklist.tsx","components/ParkListing/map/map.tsx","components/ParkListing/ParkListing.tsx","hooks/useWebpSupport.ts","components/Puff/Puff.tsx","components/PuffWithImage/PuffWithImage.tsx","components/StandardBlock/StandardBlock.tsx","components/EpiContentArea/EpiContentArea.tsx","components/ReadSpeaker/ReadSpeaker.tsx","components/Share/ShareArea.tsx","components/Share/index.tsx","pages/StartPage/StartPage.tsx","components/Breadcrumbs/Breadcrumbs.tsx","components/Breadcrumbs/Crumb.tsx","components/Breadcrumbs/index.tsx","pages/ErrorPage404/ErrorPage404.tsx","components/ActivityInfo/ActivityInfo.tsx","components/Menu/MenuItem.tsx","components/Menu/LargeMenuItem.tsx","components/Menu/Menu.tsx","pages/ArticlePage/ArticlePage.tsx","components/Notification/Notification.tsx","pages/ResetPasswordPage/ResetPasswordPage.tsx","components/ActivityStandardBlock/ActivityStandardBlock.tsx","components/ActivityList/ActivityList.tsx","pages/ActivitiesPage/ActivitiesPage.tsx","pages/ParkListingPage/ParkListingPage.tsx","pages/ParkPage/ParkPage.tsx","components/SearchField/SearchField.tsx","components/SearchField/SearchFieldLarge.tsx","components/AutoComplete/AutoComplete.tsx","hooks/useAutoComplete.ts","components/Loader/Loader.tsx","components/Pager/PagerBtn.tsx","components/Pager/Pager.tsx","components/SearchResults/Result.tsx","components/SearchResults/SearchResults.tsx","pages/SearchPage/SearchPage.tsx","hooks/useUrlQuery.ts","components/Home/Home.tsx","components/Home/index.tsx","components/Navigation/Navigation.tsx","components/Navigation/index.tsx","components/Languages/Languages.tsx","components/Languages/index.tsx","components/TopLinks/TopLinks.tsx","components/TopLinks/index.tsx","components/DesktopHeader/DesktopHeader.tsx","components/GoTopButton/GoTopButton.tsx","components/Meta/Meta.tsx","components/SkipToMain/SkipToMain.tsx","components/SkipToMain/index.tsx","components/MobileMenu/MobileMenu.Li.tsx","theme/utils.ts","components/MobileMenu/MobileMenu.Ul.tsx","components/MobileMenu/MobileMenu.tsx","components/MobileMenu/index.tsx","components/MobileHeader/MobileHeader.tsx","components/MobileHeader/index.tsx","components/PageFooter/PageFooterLink.tsx","components/PageFooter/PageFooter.tsx","layouts/index.tsx","pages/index.tsx","pages/FormContainerPage/FormContainerPage.tsx","pages/PreviewBlockPage/PreviewBlockPage.tsx","routeHandler.tsx","hooks/useEpiContextAndSavedEvent.ts","App.tsx","hooks/useTabFocus.ts","index.tsx","store/modules/react.ts","types/epi.ts"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","0","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","this","oldJsonpFunction","slice","createSlice","initialState","isEditable","inEditMode","inPreviewMode","ready","reducers","updateEpi","state","action","payload","selectEpi","epi","actions","getEpiPage","apiUrl","route","a","indexOf","index","query","substring","endsWith","url","axios","getPageContentWithContentLink","contentLink","error","loading","model","content","undefined","getModelStart","getModelSuccess","getModelFailed","updateContent","selectModel","selectContent","selectLocalization","languageSelector","selectResponsible","responsible","selectFooterLinks","footerLinks","selectNavigation","navigation","selectBreadcrumbs","breadcrumbs","selectShare","share","selectSearch","search","selectMetadata","metadata","selectReadSpeaker","readSpeaker","selectHome","home","selectLanguages","selectSkipToMain","skipToMain","selectSkipToTop","skipToTop","selectTopLinks","topLinks","selectMenu","menu","rootReducer","combineReducers","epiReducer","react","reactReducer","modelReducer","tagMapper","h1","h2","h3","h4","h5","h6","preamble","span","div","screenReader","xl2","xl3","xl4","h1hero","typographyClasses","typographyMarginClasses","Text","children","text","styleAs","as","margin","className","htmlAttributes","Component","clsx","_extends","assign","target","arguments","source","_objectWithoutProperties","excluded","sourceKeys","keys","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","createElement","stroke","strokeWidth","fill","fillRule","transform","_ref","svgRef","title","props","width","height","viewBox","ref","ForwardRef","forwardRef","x1","y1","x2","y2","strokeLinecap","strokeLinejoin","chevron","arrow","plus","volUp","volDown","play","spinner","check","exclamation","info","getSize","size","getRotation","direction","Icon","icon","animate","expanded","IconSvg","icons","ImageDesctiption","description","_properties","Image","src","alt","figClassName","figCaption","link","decoding","srcSet","fetchpriority","srcSetSizes","isVideo","photographer","renderPlayBtn","id","rel","href","sizes","ImageDescription","MinBreakpoint","breakpointsNumber","breakpoints","desktop","tablet","phone","math","ImageInfoBlock","infoBlock","openInfoBlock","handleClick","heading","posX","posY","teaserImage","teaserPosition","teaserHorizontalPosition","teaserLink","teaserLinkText","teaserText","style","left","toString","bottom","top","onClick","tabIndex","aria-label","CarouselToggleFullScreen","slides","fullscreenOpenLabel","fullscreenCloseLabel","isDesktop","useMediaQuery","minWidth","isTablet","maxWidth","useState","isFullscreen","setIsFullscreenMode","setOpenInfoBlock","handleToggleFullscreen","settings","dots","arrows","infinite","speed","slidesToShow","slidesToScroll","appendDots","activeIndex","findIndex","dot","image","aria-hidden","customPaging","handleInfoBlock","map","slide","imageInfos","item","modelType","CarouselNormal","fade","activeSlide","to","coordinates","Carousel","fullScreenMode","button","Button","variant","disabled","displayWidth","isSubmit","type","ActivitesPuff","buttonText","colorTheme","CurrentInformationBlock","itemContainerClassName","InfoBlock","date","layout","imageHeight","setImageHeight","aria-labelledby","onLoad","event","clientHeight","widthClassInGrid","getWidthClass","getWidthClassTablet","getWidthClassDesktop","renderChildren","React","Children","child","cloneElement","Grid","padding","Cell","useModal","isEnglish","useLocation","pathname","startsWith","dialogRef","useRef","open","setOpen","openModal","useCallback","document","documentElement","classList","add","closeModal","remove","useEffect","clickEscape","e","addEventListener","removeEventListener","handleFullscreenChange","current","focus","el","showModal","close","Modal","noCloseButton","noModalPadding","role","aria-modal","isValidElement","InstagramModal","goToUser","btnRef","permalink","caption","allowFullScreen","userUrl","userName","RichText","history","useHistory","useSelector","nodeRef","handleLinkClick","getAttribute","charAt","preventDefault","nodeRefRef","querySelectorAll","forEach","checkFieldConditions","dependency","values","conditions","field","currentFieldValue","fieldName","expectedValue","fieldValue","operator","includes","console","log","checkIfAnyConditionIsTrue","checkIfAllConditionsAreTrue","performAction","checkOperator","dependencyField","compareValue","useFieldValidation","fieldRef","fieldProps","required","pattern","label","validationMessage","patternMessage","single","fieldsetHasOneCheckedInput","allInputs","hasOneValidInput","checked","fieldIsNotValid","checkValidity","requiredFieldIsNotFilledIn","fieldDoesNotMatchPattern","match","singleInputIsNotChecked","message","querySelector","textContent","removeAttribute","setAttribute","FormReducer","validationMessageHasNotChanged","validationMessages","invalidFields","currentInvalidFields","filter","updatedFields","updatedMessages","FormContext","createContext","FormProvider","Provider","useReducer","useFormValue","useContext","Field","placeholder","onFieldChange","autoSubmit","showError","setFocus","visibleFields","noValidate","describedby","defaultValue","resetForm","allProps","dispatch","setValue","valid","setValid","touched","setTouched","validateField","showFieldError","hideFieldError","validatedField","fieldIsValid","describedByAttribute","aria-invalid","onChange","onBlur","aria-describedby","prevValue","Number","TextArea","Checkbox","Array","isArray","shouldBeChecked","setChecked","RadioButton","defaultChecked","Select","options","selectedOption","selectedIndex","Multiselect","isInvalid","opt","htmlFor","propsToTransfer","Tooltip","timer","containerStyle","toolTipStyle","x","y","pos","setPos","show","setShow","timerRef","toolTipRef","toolTipEl","handleMouse","stopPropagation","setTimeout","windowBottom","window","innerHeight","pageYOffset","position","clearTimeout","onMouseOver","onMouseLeave","onMouseMove","clientX","clientY","onMouseOut","onMouseEnter","Label","helpText","ErrorSpan","fieldId","invalid","aria-live","hidden","Fieldset","partOfVisibleFields","NextButton","nextId","isExpanded","aria-controls","aria-expanded","PreviousButton","previousIndex","previousId","onPrevious","color","currentStep","FormStep","step","formId","nrOfSteps","stepId","isFirstStep","isLastStep","nextIndex","useChildClones","formFieldNameCounter","initialValues","renderedChildren","element","isValidFormElement","getUniqueKey","Math","random","substr","Form","method","enctype","onSubmit","sendDataType","defaultSubmit","multiStep","getStepFields","formKey","setFormKey","setShowError","setVisibleFields","formRef","encType","FormData","messages","updatedInvalidFields","formData","stepIndex","currentStepFields","some","reduce","obj","valueIsArray","newValue","FormComponent","useFormRenderer","fields","dependencies","isLoading","fieldActionExists","renderLabel","renderFieldError","renderField","min","max","failedMessage","fieldActions","allActionOutcomes","thenAction","operatorResult","whenValue","attribute","checkFieldActions","renderFieldset","FieldComponent","renderSingleInput","fieldLabel","renderAsFieldset","singleCheckboxOrRadio","conditionsFulFilled","checkDependency","dangerouslySetInnerHTML","__html","typeValue","isBtnTypeResetOrSubmit","usePrevious","useScript","script","async","body","appendChild","removeChild","useFirstRender","isFirstRenderRef","currentStepNode","getElementById","getHiddenFieldValues","getSelectValue","getCheckboxAndRadioValue","getUploadedFiles","getFieldValue","hiddenFieldHolder","append","selected","files","handleResponse","response","nextStep","redirectUrl","IsSuccess","handleServerValidationError","AdditionalParams","__FormField","submissionId","Data","SubmissionId","Message","RedirectUrl","location","successMessage","fieldErrors","InvalidElement","InvalidElementLabel","ValidationMessage","serverValidationError","ErrorSummary","FormMessage","confirmationMessage","hasMessageToShow","messageType","reducer","EpiForms","encodingType","steps","forceUpdate","useForceUpdate","renderFormElement","showForm","formValues","predefinedValue","getInitialFormValues","messageHolderRef","prevInvalidFields","prevStep","successfullySubmitted","formMessageElement","currentValidationMessages","form","set","fetch","cache","headers","credentials","redirect","referrer","then","ok","Error","statusText","json","catch","alert","submitForm","toUpperCase","ResponsiveIframe","ariaLabel","aspectRatio","data-cid","VideoItem","videoUrl","videoTitle","paddingBottom","EditableField","inline","cssClass","data-epi-edit","getHeadingLevel","level","getFragment","fragment","raw","imgData","alignment","videoData","embedUrl","tableData","formContainer","rawData","videoBlockModel","VideoBlock","EpiFragments","fragments","Instagram","posts","pagination","imageAlt","setContent","instagramFeed","setInstagramFeed","itemsRef","instagramBtnId","setInstagramBtnId","pageIsLoaded","setPageIsLoaded","currentPage","page","setPage","setDisabled","setPageLoaded","readyState","getFeed","Axios","params","itemsPerPage","offset","newFeed","isImage","thumbnailUrl","btn","Link","external","NewsletterPuff","facebookLinkText","facebookTeaserText","facebookLink","iconImage","subscribeEmail","subscribeEmailSubject","subscribeEmailLinkText","unsubscribeEmailSubject","unsubscribeEmailLinkText","backgroundImage","ParkInformation","topHeading","linkText","Park","ListSearchView","parks","searchPlaceholderText","submitText","setQuery","columnWidth","gutter","fitWidth","resize","toLowerCase","park","imageMapCoordinates","Area","handleMouseEnter","handleMouseLeave","handleClickArea","data-original-radius","shape","coords","data-name","data-display-name","data-image-src","canHoverOverlay","border","showSmallImage","isPhone","strokeDasharray","points","ParkList","parkListHeading","onFocus","Map","showParkList","showOverlay","setShowOverlay","overlayPosition","setOverlayPosition","overlayClassName","setOverlayClassName","currentPark","setCurrentPark","setCanHoverOverlay","overlayRef","handleResetCurrentPark","override","validPark","clickOutsideOverlay","tagName","contains","closest","overlayHeight","scrollHeight","cor","split","trim","parseInt","cn","useMap","ParkListing","showListViewText","showMapViewText","disableResponsiveSwitch","showListView","toggleShowListView","isWebpSupported","useWebp","canvas","getContext","toDataURL","useWebpSupport","Puff","urlText","PuffWithImage","StandardBlock","when","isPark","renderContent","block","items","activities","articles","activity","EpiContentArea","ReadSpeaker","onRsVisibilityChanged","containerClassName","showRS","setShowRS","closeRS","closeBtn","mobileCloseBtn","accessKey","onMouseUp","navigationButtonLabel","Components","twitter","facebook","campaignName","campaignSource","campaignMedium","google","mail","subject","ShareArea","shares","Share","StartPage","contentArea","preambleHtml","aboutLink","carousel","metaData","Breadcrumbs","isBigTabletOrDesktop","Crumb","active","isActive","ErrorPage404","imageUrl","ActivityInfo","booking","specialEquipment","otherInformation","onPageEditHtmlAttributes","checkIfLocationHasLongLatImage","locationImage","locationLatitude","locationLongitude","linkCaption","startDate","stopDate","wholeYearText","locationName","MenuItem","LargeMenuItem","Menu","ArticlePage","aboutText","topImage","activityInfo","parkName","isBigTablet","isFormContainer","isRsVisible","setIsRsVisible","mainImage","isVisible","Notification","theme","useMemo","PasswordResetResult","ResetPasswordPage","requestState","setRequestState","passwordResetSuccessMessage","resultMessage","setResultMessage","email","currentTarget","elements","post","res","status","passwordRequestFailMessage","notificationTheme","queryString","statusParam","URLSearchParams","minHeight","resetPasswordLabelText","resetPasswordButtonText","passwordRequestSentMessage","ActivityStandardBlock","TitleLevel","ActivityList","groups","showMoreText","group","ActivitiesPage","ParkListingPage","parkListing","ParkPage","contentAreaAboveMap","puffHeading","secondHeading","linkUrl","parkMapHtml","parkMapScript","SearchField","autoComplete","SearchFieldLarge","labelProps","Autocomplete","autocompleteApiUrl","largeSearch","autocompleteSearchUrl","isFirstRender","suggestions","setSuggestions","setError","setLoading","baseUrl","origin","process","err","useAutoComplete","handleClearSuggestions","handleSubmit","textValue","join","onInputValueChange","inputValue","stateAndItems","selectedItem","Downshift","stateChangeTypes","changeInput","clearSelection","clickItem","keyDownEnter","itemToString","initialInputValue","getLabelProps","getMenuProps","getInputProps","getItemProps","openMenu","closeMenu","isOpen","highlightedIndex","html","Loader","PagerBtn","buttonKey","Pager","nrOfPages","showFirstBtn","showLastBtn","onPageClick","pageNumbers","numbers","sort","b","getPageNumbers","shouldRenderJumpToFirstPageBtn","shouldRenderPreviousBtn","shouldRenderNextBtn","shouldRenderJumpToLastPageBtn","itemClasses","activeClasses","number","Result","excerpt","SearchResults","startNumber","start","SearchPage","searchResult","translations","results","allResults","setResults","setCurrentPage","pageCount","setPageCount","setValues","setResponse","newQuery","objectToQuery","pushState","str","val","encodeURIComponent","useUrlQuery","pn","updateQuery","searchResultsPhrase","AutoComplete","inputId","searchPageUrl","searchScreenReaderLabel","searchLabel","queryName","language","numberOfHits","emptySearchListLabel","languageLabel","webpageLabel","documentId","Home","logo","Navigation","accessibilityDescription","isNavigationRoot","getFlag","culture","Languages","languages","onLanguageClick","LanguagesForMobile","forMobile","TopLinks","TopLinksForMobile","DesktopHeader","placeholderText","GoTopButton","buttonName","footerHeight","fh","showGoTop","setShowGoTop","endOfThePage","setEndOfThePage","handleButtonState","translateYcoord","totalPageHeight","offsetHeight","scrollPoint","handleScrollUp","scrollTo","behavior","transition","Meta","localizationData","mappedMetaData","keywords","googleSiteVerificationTag","ogSiteName","openGraph","siteName","ogType","ogTitle","ogUrl","ogDescription","ogImage","twitterCard","card","twitterTitle","twitterDescription","twitterImage","Helmet","lang","currentCulture","img","http-equiv","favicon","SkipToMain","Li","sizeInPx","onClose","onLinkClick","openNavigationItemLabel","closeNavigationItemLabel","linkLevel","activeChildren","setActiveChildren","setChild","setActiveChildrens","childLinks","links","isChild","doesLinkHaveChildren","isLinkChildActive","paddingLeft","px","handleSetActiveChildren","Ul","MobileMenu","MobileHeader","menuButtonLabel","searchOpen","setSearchOpen","menuOpen","setMenuOpen","PageFooterLink","PageFooter","fnFooterHeight","targetRef","Layout","setHeight","Fragment","Pages","SNPStartPage","SNPErrorPage404","SNPArticlePage","SNPResetPasswordPage","SNPActivityListingPage","SNPParkListingPage","SNPParkPage","SNPSearchPage","FormContainerPage","PreviewBlockPage","RouteHandler","siteRoute","useParams","ariaLiveRef","emptyFocusDivRef","pageRef","useDispatch","pageContent","selectReact","renderingState","loaderVisible","setLoaderVisible","Page","PagesMapper","routeApiUrl","RenderingStates","ClientSide","updateRenderingState","loaderTimeout","innerHTML","epiNavigator","lastIndexOf","pageEditLink","epiNavigatorMenuItem","outline","useEpiContextAndSavedEvent","handleContentSaved","subscribe","setContextAndEvent","handleSetContextAndEvent","routePatterns","App","Router","getLocation","onKeyUp","keyCode","which","hasAttribute","context","routePattern","path","renderMethod","ReactDOM","render","head","reactInitialState","__model","hydrate","Hydrate","preloadedState","containerId","store","configureStore","BrowserRouter","clientOnly","siteBaseUrl","PUBLIC_URL","apiEditUrl"],"mappings":"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","file":"client/client-main.6dd33f02.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t0: 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/assets/\";\n\n \tvar jsonpArray = this[\"webpackJsonpsnp-2021-frontend.master\"] = this[\"webpackJsonpsnp-2021-frontend.master\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([271,1]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAB71BMVEUAAAD13yT02S3ktiDVlw//8UrZlxL+/X3//3/34jX76WTnuT/epRz04l356GLqvSHZng/qwkHw0EjbohfltyLYnhXmtSbdpRPZoBb55zP22irfqRbboxn13SbYmw7mtBfcoQfUlgjnuhvjsSPYnhXaoRfquhfmsQzhsCDitCfNhwLjtCfktinRjwjTnRDMjQffrSHz2jHnuATpvhbjsyH13kjtxS/txCnktBr02kXwzEHwyj3jsyj98pL+9LX964301V/22kj43Wv43mvktjr432HyyCDuvADquAn86GX+7YX+7pD+7In96YL64m386IL86IT33m/64FH63Tn20Bb40x3wxhzswDP94mD83lb831j63ln42Eb42kf85Wr63DL73j373jfuxR/zz0T510n50z/610j52U352Uz20TjsvyXwxBLstwHtuQTtuQbrtQXlqwHgowDgpgr00B/uvQ3tuwjstgHstwPrtQDstgDtuw3suhHtvRjnthj52zT30Sv0yyHyxhvxwBDwwhPvugXwvgftugzzyB32ziX40iX62DX10Tbwyxn0zBb20CPvxCH54jz0xA3wuQDmrwzuvQ72yg361y/wyzb33C30yRL3zRvothLtyyDktQPktAfgqxDitxHQmQDUnwHVnAr///8Pk6bwAAAAMXRSTlMAYN/fYCAQEBCA799gYN/vgL+/n59Av79AQL+/QJ+fv7+A799gYN/vgCAQEBBg399gjYAV9AAAAAFiS0dEpFm+erkAAAAHdElNRQflCxgQIgI9uuqMAAAA3klEQVQY02NgAANGJmYWBmRgaGRsAuewsjEwmJqZWzAwsHOA+Jxc3DwMllbWNgy8fPwCQAFbO3sHQUcnZxchVzd3D6CAp5e3j6+ff0BgUHBIaBhQQDg8IjIqOiY2Lj4hMUkEZIioWHJKalp6RmaWuATYFkmp7JzcvPyCwiJpGRBftriktKy8ojK3qrqmVg4oUFff0NjU3NLa1t7R2dUNFOjp7euXnzBx0mSFKVOnTQcKKCopqzDMmDlrNoOqmroGyBBNLQaGOXPnzWdg0NaB+2fBwkWLUXyrq6dvAGEBAOOKNKTlWyMHAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIxLTExLTI0VDE2OjM0OjAxKzAwOjAwoqiWCAAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMS0xMS0yNFQxNjozNDowMSswMDowMNP1LrQAAAAASUVORK5CYII=\"","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\r\nimport { EpiEvent } from 'types/epi';\r\nimport { RootState } from 'store';\r\n\r\nlet initialState: EpiEvent = {\r\n\tisEditable: false,\r\n\tinEditMode: false,\r\n\tinPreviewMode: false,\r\n\tready: false\r\n};\r\n\r\nconst slice = createSlice({\r\n\tname: 'epi',\r\n\tinitialState,\r\n\treducers: {\r\n\t\tupdateEpi: (state, action: PayloadAction) => {\r\n\t\t\tstate.isEditable = action.payload.isEditable;\r\n\t\t\tstate.inEditMode = action.payload.inEditMode;\r\n\t\t\tstate.inPreviewMode = action.payload.inPreviewMode;\r\n\t\t\tstate.ready = action.payload.ready;\r\n\t\t},\r\n\t},\r\n});\r\n\r\nexport const selectEpi = (state: RootState) => state.epi;\r\nexport const { updateEpi } = slice.actions;\r\n\r\nexport default slice.reducer;\r\n","import axios from 'axios';\r\nimport { ContentLinkResponse, Model } from 'types/epi';\r\n\r\nexport const getEpiPage = async (apiUrl: string, route: string) => {\r\n\tconst appendUrl = '.json';\r\n\r\n\tif (route === '') {\r\n\t\troute = `index${appendUrl}`;\r\n\t} else if (route.indexOf('?') > -1) {\r\n\t\tlet index = route.indexOf('?');\r\n\t\tlet query = route.substring(index);\r\n\t\troute = route.substring(0, index);\r\n\r\n\t\tif (route.endsWith('/')) {\r\n\t\t\troute += `index${appendUrl}`;\r\n\t\t} else {\r\n\t\t\troute += appendUrl;\r\n\t\t}\r\n\r\n\t\troute += query;\r\n\t} else {\r\n\t\troute += appendUrl;\r\n\t}\r\n\r\n\tconst url = `${apiUrl}${route}`;\r\n\tconst { data } = await axios.get(url);\r\n\treturn data;\r\n};\r\n\r\nexport const getEpiPageContent = async (apiUrl: string, route: string) => {\r\n\tlet appendUrl = '.json';\r\n\r\n\tif (route === '') {\r\n\t\troute = `index${appendUrl}`;\r\n\t} else if (route.indexOf('?') > -1) {\r\n\t\tlet index = route.indexOf('?');\r\n\t\tlet query = route.substring(index);\r\n\t\troute = route.substring(0, index);\r\n\r\n\t\tif (route.endsWith('/')) {\r\n\t\t\troute += `index${appendUrl}`;\r\n\t\t} else {\r\n\t\t\troute += appendUrl;\r\n\t\t}\r\n\r\n\t\troute += query;\r\n\t} else {\r\n\t\troute += appendUrl;\r\n\t}\r\n\r\n\tconst url = `${apiUrl}${route}`;\r\n\tconst { data } = await axios.get(url);\r\n\treturn data.content;\r\n};\r\n\r\nexport const getPageContentWithContentLink = async (contentLink: string) => {\r\n\tconst { data } = await axios.get(`/api/content/${contentLink}`); // Only authorized Epi users can call this.\r\n\treturn data\r\n}\r\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\r\nimport { Model } from 'types/epi';\r\nimport { ContentTypes } from 'types/pages';\r\nimport { RootState, AppThunk } from 'store';\r\nimport { getEpiPage, getPageContentWithContentLink } from 'api/epiApi';\r\n\r\ninterface ModelState {\r\n\tmodel: Model;\r\n\terror: string | null;\r\n\tloading: boolean;\r\n}\r\n\r\nconst initialState: ModelState = {\r\n\terror: null,\r\n\tloading: false,\r\n\tmodel: {\r\n\t\tcontent: undefined,\r\n\t},\r\n};\r\n\r\nconst slice = createSlice({\r\n\tname: 'model',\r\n\tinitialState,\r\n\treducers: {\r\n\t\tgetModelStart: (state) => {\r\n\t\t\tstate.loading = true;\r\n\t\t},\r\n\t\tgetModelSuccess: (state, action: PayloadAction) => {\r\n\t\t\tstate.model = action.payload;\r\n\t\t\tstate.error = null;\r\n\t\t\tstate.loading = false;\r\n\t\t},\r\n\t\tgetModelFailed: (state, action: PayloadAction) => {\r\n\t\t\tstate.error = action.payload;\r\n\t\t\tstate.loading = false;\r\n\t\t},\r\n\t\tupdateContent: (state, action: PayloadAction) => {\r\n\t\t\tstate.model.content = action.payload;\r\n\t\t},\r\n\t},\r\n});\r\n\r\nexport const fetchPage = (\r\n\trouteApiUrl: string,\r\n\troute: string\r\n): AppThunk => async (dispatch) => {\r\n\tlet data;\r\n\tdispatch(getModelStart());\r\n\r\n\ttry {\r\n\t\tdata = await getEpiPage(routeApiUrl, route);\r\n\t} catch (err) {\r\n\t\tdispatch(getModelFailed(err.toString()));\r\n\t\treturn;\r\n\t}\r\n\r\n\tdispatch(getModelSuccess(data));\r\n};\r\n\r\nexport const fetchPageWithContentLink = (\r\n\tcontentLink: string\r\n): AppThunk => async (dispatch) => {\r\n\tlet data;\r\n\ttry {\r\n\t\tdata = await getPageContentWithContentLink(contentLink);\r\n\t} catch (error) {\r\n\t\tconsole.log(error);\r\n\t\treturn;\r\n\t}\r\n\tif (data.status === 200) {\r\n\t\tdispatch(updateContent(data.result));\r\n\t}\r\n};\r\n\r\nexport const selectModel = (state: RootState) => state.model;\r\nexport const selectContent = (state: RootState) => state.model.model.content;\r\nexport const selectLocalization = (state: RootState) =>\r\n\tstate.model.model.languageSelector;\r\nexport const selectResponsible = (state: RootState) =>\r\n\tstate.model.model.responsible;\r\nexport const selectFooterLinks = (state: RootState) =>\r\n\tstate.model.model.footerLinks;\r\nexport const selectHeader = (state: RootState) => state.model.model.header;\r\nexport const selectNavigation = (state: RootState) =>\r\n\tstate.model.model.navigation;\r\nexport const selectLanguageSelector = (state: RootState) =>\r\n\tstate.model.model.languageSelector;\r\nexport const selectBreadcrumbs = (state: RootState) =>\r\n\tstate.model.model.breadcrumbs;\r\nexport const selectShare = (state: RootState) => state.model.model.share;\r\nexport const selectSearch = (state: RootState) => state.model.model.search;\r\nexport const selectMetadata = (state: RootState) => state.model.model.metadata;\r\nexport const selectTranslations = (state: RootState) =>\r\n\tstate.model.model.translations;\r\nexport const selectReadSpeaker = (state: RootState) =>\r\n\tstate.model.model.readSpeaker;\r\nexport const selectHome = (state: RootState) => state.model.model.home;\r\nexport const selectLanguages = (state: RootState) =>\r\n\tstate.model.model.languageSelector;\r\nexport const selectSkipToMain = (state: RootState) =>\r\n\tstate.model.model.skipToMain;\r\nexport const selectSkipToTop = (state: RootState) =>\r\n\tstate.model.model.skipToTop;\r\nexport const selectTopLinks = (state: RootState) => state.model.model.topLinks;\r\nexport const selectMenu = (state: RootState) => state.model.model.menu;\r\nexport const {\r\n\tgetModelStart,\r\n\tgetModelSuccess,\r\n\tgetModelFailed,\r\n\tupdateContent,\r\n} = slice.actions;\r\n\r\nexport default slice.reducer;\r\n","import { configureStore, combineReducers, Action } from '@reduxjs/toolkit';\r\nimport { ThunkAction } from 'redux-thunk';\r\nimport epiReducer from './modules/epi';\r\nimport reactReducer from './modules/react';\r\nimport modelReducer from './modules/model';\r\n/* PLOP_INJECT_IMPORT */\r\n\r\nconst rootReducer = combineReducers({\r\n\tepi: epiReducer,\r\n\treact: reactReducer,\r\n\tmodel: modelReducer,\r\n\t/* PLOP_INJECT_REDUCER */\r\n});\r\nexport type RootState = ReturnType;\r\n\r\nexport default (preloadedState: any) => {\r\n\treturn configureStore({\r\n\t\treducer: rootReducer,\r\n\t\tpreloadedState,\r\n\t});\r\n};\r\n\r\n// export type AppDispatch = typeof store.dispatch\r\nexport type AppThunk = ThunkAction>;\r\n","/**\r\n * Text\r\n */\r\n\r\nimport React from 'react';\r\nimport clsx from 'clsx';\r\n\r\ntype Tags =\r\n\t| 'h1'\r\n\t| 'h2'\r\n\t| 'h3'\r\n\t| 'h4'\r\n\t| 'h5'\r\n\t| 'h6'\r\n\t| 'p'\r\n\t| 'preamble'\r\n\t| 'span'\r\n\t| 'div'\r\n\t| 'screenReader'\r\n\t| 'xl2'\r\n\t| 'xl3'\r\n\t| 'h1hero';\r\n\r\nexport interface TextProps {\r\n\t/** The text to render (if no children are present) */\r\n\ttext?: string;\r\n\r\n\t/** The html-tag/Component that will be outputted */\r\n\tas: Tags;\r\n\r\n\t/** The style that will be used (instead of the tag default style) */\r\n\tstyleAs?: Tags;\r\n\r\n\t/** Option to remove default text margin */\r\n\tmargin?: boolean;\r\n\r\n\t/** Pass optional classnames for the html */\r\n\tclassName?: string;\r\n\r\n\t/** Optional other html props will be spread on the component */\r\n\t[htmlAttributes: string]: any;\r\n}\r\n\r\nconst tagMapper = {\r\n\th1: 'h1',\r\n\th2: 'h2',\r\n\th3: 'h3',\r\n\th4: 'h4',\r\n\th5: 'h5',\r\n\th6: 'h6',\r\n\tp: 'p',\r\n\tpreamble: 'p',\r\n\tspan: 'span',\r\n\tdiv: 'div',\r\n\tscreenReader: 'div',\r\n\txl2: 'xl2',\r\n\txl3: 'xl3',\r\n\txl4: 'xl4',\r\n\th1hero: 'h1hero',\r\n};\r\n\r\nconst typographyClasses: any = {\r\n\th1: 'font-alt font-bold text-h1',\r\n\th2: 'font-alt font-bold text-h2',\r\n\th3: 'font-alt font-bold text-h3',\r\n\th4: 'font-alt font-bold text-h4',\r\n\th5: 'font-alt font-bold text-h5',\r\n\th6: 'font-alt font-medium text-h6',\r\n\tp: 'font-standard text-lg',\r\n\tpreamble: 'font-alt font-medium text-preamble',\r\n\tspan: 'font-standard',\r\n\tdiv: 'font-standard',\r\n\tscreenReader: 'sr-only',\r\n\txl2: 'font-alt font-medium text-2xl',\r\n\txl3: 'font-alt font-semibold text-3xl',\r\n\txl4: 'font-alt text-4xl',\r\n\th1hero: 'font-alt text-h1hero',\r\n};\r\n\r\nconst typographyMarginClasses: any = {\r\n\th1: 'mb-3',\r\n\th2: 'mb-3',\r\n\th3: 'mb-3',\r\n\th4: 'mb-3',\r\n\th5: 'mb-3',\r\n\th6: 'mb-3',\r\n\tp: 'mb-3',\r\n\tpreamble: 'mb-3',\r\n\tspan: '',\r\n\tdiv: '',\r\n\tscreenReader: '',\r\n};\r\n\r\n/** Text component to render texts, also has handling for Epi server on page editor. */\r\nconst Text: React.FC = ({\r\n\tchildren,\r\n\ttext,\r\n\tstyleAs,\r\n\tas,\r\n\tmargin = true,\r\n\tclassName = '',\r\n\t...htmlAttributes\r\n}) => {\r\n\tconst content = children || text;\r\n\tconst Component: any = tagMapper[as];\r\n\r\n\tif (!content) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t{content}\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default Text;\r\n","import Text, { TextProps } from './Text';\r\nexport default Text;\r\nexport type { TextProps };\r\n","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: 1,\n fill: \"none\",\n fillRule: \"evenodd\"\n}, /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(-21.000000, -15.000000)\",\n fill: \"currentColor\"\n}, /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(16.000000, 0.000000)\"\n}, /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(0.000000, 12.000000)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.4714045,4.47140451 C10.7317541,4.21105498 10.7317541,3.78894499 10.4714045,3.52859546 C10.211055,3.26824593 9.78894501,3.26824593 9.52859549,3.52859546 L5.52859547,7.52859548 C5.26824594,7.78894501 5.26824594,8.21105499 5.52859547,8.47140452 L9.52859549,12.4714045 C9.78894501,12.7317541 10.211055,12.7317541 10.4714045,12.4714045 C10.7317541,12.211055 10.7317541,11.788945 10.4714045,11.5285955 L6.94280904,8 L10.4714045,4.47140451 Z\"\n}))))));\n\nvar SvgIconChevron = function SvgIconChevron(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"6px\",\n height: \"10px\",\n viewBox: \"0 0 6 10\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgIconChevron, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/icon-chevron.f98f3882.svg\";\nexport { ForwardRef as ReactComponent };","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: 1,\n fill: \"none\",\n fillRule: \"evenodd\"\n}, /*#__PURE__*/React.createElement(\"g\", {\n fill: \"#000\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.51555027,-2.98983061e-13 L15.999,7.999 L16,8 L16,8 C15.9787734,8.02618776 13.9042323,10.585592 9.77622454,15.6784007 L9.51555027,16 L8,14.6970696 L12.674,8.999 L-1.02282627e-11,9 L-1.02282627e-11,7 L12.675,6.999 L8,1.30293044 L9.51555027,-2.98983061e-13 Z\",\n transform: \"translate(8.000000, 8.000000) scale(-1, -1) rotate(-180.000000) translate(-8.000000, -8.000000) \"\n})));\n\nvar SvgIconArrow = function SvgIconArrow(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"16px\",\n height: \"16px\",\n viewBox: \"0 0 16 16\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgIconArrow, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/icon-arrow.30eb99cd.svg\";\nexport { ForwardRef as ReactComponent };","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: 1,\n fill: \"none\",\n fillRule: \"evenodd\"\n}, /*#__PURE__*/React.createElement(\"g\", {\n fill: \"#000\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9,0 L9,7 L16,7 L16,9 L9,9 L9,16 L7,16 L7,8.999 L0,9 L0,7 L7,6.999 L7,0 L9,0 Z\"\n})));\n\nvar SvgIconPlus = function SvgIconPlus(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"16px\",\n height: \"16px\",\n viewBox: \"0 0 16 16\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgIconPlus, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/icon-plus.d8a23088.svg\";\nexport { ForwardRef as ReactComponent };","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"g\", {\n stroke: \"none\",\n strokeWidth: 1,\n fill: \"currentColor\",\n fillRule: \"evenodd\"\n}, /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(-1253.000000, -38.000000)\",\n fill: \"currentColor\",\n fillRule: \"nonzero\"\n}, /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(1253.000000, 38.000000)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9,18 C4.03714286,18 0,13.9628571 0,9 C0,4.03714286 4.03714286,0 9,0 C13.9628571,0 18,4.03714286 18,9 C18,13.9628571 13.9628571,18 9,18 Z M9,2.18181818 C5.24045455,2.18181818 2.18181818,5.24045455 2.18181818,9 C2.18181818,12.7595455 5.24045455,15.8181818 9,15.8181818 C12.7595455,15.8181818 15.8181818,12.7595455 15.8181818,9 C15.8181818,5.24045455 12.7595455,2.18181818 9,2.18181818 Z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.5365983,19.2594726 L14.3612518,14 C13.8978438,14.5816775 13.5964546,14.7907716 13,15.2426987 L18.1257045,20.598435 C18.3455696,20.812853 19.1034792,21.2999167 19.7422499,20.7403862 C20.205504,20.3345992 19.9875164,19.6939694 19.5365983,19.2594726 Z\"\n}))))));\n\nvar SvgIconSearch = function SvgIconSearch(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"20px\",\n height: \"21px\",\n viewBox: \"0 0 20 21\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgIconSearch, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/icon-search.1b39ee12.svg\";\nexport { ForwardRef as ReactComponent };","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"line\", {\n x1: 3,\n y1: 12,\n x2: 21,\n y2: 12\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"line\", {\n x1: 3,\n y1: 6,\n x2: 21,\n y2: 6\n});\n\nvar _ref4 = /*#__PURE__*/React.createElement(\"line\", {\n x1: 3,\n y1: 18,\n x2: 21,\n y2: 18\n});\n\nvar SvgIconMenu = function SvgIconMenu(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2, _ref3, _ref4);\n};\n\nvar ForwardRef = React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgIconMenu, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/icon-menu.0d8d267a.svg\";\nexport { ForwardRef as ReactComponent };","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m11.0815592 2.40966319v15.69888651c0 .2501049-.0913846.4665416-.2741528.6493099-.1827683.1827682-.3992048.2741528-.6493098.2741528-.25010504 0-.46654167-.0913846-.64930993-.2741528l-4.80489716-4.8048972h-3.78042681c-.25010499 0-.46654161-.0913846-.64930987-.2741528-.18276827-.1827683-.27415283-.399205-.27415283-.6493099v-5.54077789c0-.25010498.09138456-.4665416.27415283-.64930987.18276826-.18276827.39920488-.27415283.64930987-.27415283h3.78042681l4.80489716-4.80489717c.18276826-.18276826.39920489-.27415282.64930993-.27415282.250105 0 .4665415.09138456.6493098.27415282.1827682.18276827.2741528.39920489.2741528.64930988zm4.9203313 5.80050253c.4136349.63488083.6204518 1.31786077.6204518 2.04893208 0 .7310739-.2044122 1.4116441-.6132377 2.0417181-.4088254.6300714-.949916 1.0797783-1.6232747 1.3491218-.0961939.048097-.2164365.0721455-.3607279.0721455-.250105 0-.4665416-.0889798-.6493099-.2669386-.1827683-.177959-.2741528-.3968011-.2741528-.6565249 0-.2020075.0577164-.3727514.1731495-.5122334.1154332-.139482.2549143-.2597247.4184441-.3607281.1635299-.1010032.3270597-.2116271.4905895-.3318698s.3030109-.2933922.4184442-.5194484c.1154332-.2260563.1731495-.4978045.1731495-.8152453 0-.31743995-.0577165-.58918895-.1731495-.81524523-.1154333-.22605627-.2549144-.39920574-.4184442-.5194484s-.3270596-.23086568-.4905895-.33186989c-.1635298-.10100336-.3030109-.22124602-.4184441-.360728-.1154333-.13948197-.1731495-.31022588-.1731495-.51223346 0-.25972377.0913845-.47856595.2741528-.65652482.1827683-.17795886.3992049-.26693873.6493099-.26693873.1442914 0 .264534.02404853.3607279.07214559.6733613.25972379 1.2120455.70702695 1.6160606 1.34190776zm3.0878306-2.02007571c.8176492 1.2409018 1.2264737 2.59723775 1.2264737 4.06900779 0 1.4717701-.4088245 2.8305107-1.2264737 4.0762219-.817649 1.2457113-1.8998321 2.1523428-3.2465492 2.7198861-.1250521.048097-.2452948.0721455-.3607281.0721455-.2597237 0-.4809706-.0913846-.6637389-.2741528-.1827682-.1827683-.2741528-.3992048-.2741528-.6493099 0-.3751571.1875785-.6589295.5627356-.8513174.5386868-.2789631.9042268-.4905895 1.0966112-.6348808.7118364-.5194485 1.2673536-1.1711656 1.6665593-1.9551489.3992049-.7839833.5988077-1.6184653.5988077-2.5034545 0-.88498928-.1996028-1.71947125-.5988077-2.50345456-.3992048-.78398331-.9547255-1.4356996-1.6665593-1.95514887-.1923878-.14429137-.5579253-.35591773-1.0966112-.63488082-.3751571-.19238791-.5627356-.47616039-.5627356-.85131744 0-.25010498.0913846-.46654161.2741528-.64930987.1827683-.18276826.3992049-.27415283.6493099-.27415283.125052 0 .250105.02404854.3751571.07214561 1.3467171.56754496 2.4289002 1.47657946 3.2465492 2.72710007zm3.0878307-2.02007573c1.2216642 1.84692884 1.8325006 3.87662335 1.8325006 6.08908352 0 2.2124688-.6108338 4.2445681-1.8325006 6.0962977-1.2216642 1.8517382-2.8473436 3.2152882-4.877038 4.0906501-.1250521.048097-.2501051.0721456-.3751571.0721456-.250105 0-.4665416-.0913846-.6493099-.2741528-.1827683-.1827683-.2741528-.399205-.2741528-.64931 0-.3462989.1875785-.6300714.5627356-.8513173.0673361-.0384777.1755541-.0889799.3246549-.1515055.1491008-.0625263.2573191-.1130277.3246549-.1515055.4424929-.2404853.8368893-.48578 1.1831891-.735885 1.1831891-.8753705 2.1066535-1.9671724 2.7703932-3.2754058.6637372-1.308242.9956054-2.6982436.9956054-4.1700137 0-1.47177008-.3318682-2.8617718-.9956054-4.17001377-.6637372-1.30824199-1.5872041-2.4000439-2.7703932-3.27540573-.3462989-.25010498-.7406953-.49539971-1.1831891-.73588504-.0673361-.03847766-.1755541-.08897986-.3246549-.15150546-.1491008-.0625262-.2573191-.11302771-.3246549-.15150546-.3751571-.22124689-.5627356-.50501937-.5627356-.85131744 0-.25010499.0913845-.46654161.2741528-.64930987.1827683-.18276827.3992049-.27415283.6493099-.27415283.125052 0 .250105.02404853.3751571.0721456 2.0296944.87537045 3.6553738 2.24132519 4.877038 4.0978642z\",\n transform: \"translate(0 2)\"\n});\n\nvar SvgIconVolumeup = function SvgIconVolumeup(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n height: 24,\n viewBox: \"0 0 24 24\",\n width: 24,\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgIconVolumeup, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/icon-volumeup.c20d6ed9.svg\";\nexport { ForwardRef as ReactComponent };","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m11.0815592.92345407v15.69888643c0 .250105-.0913846.4665417-.2741528.64931-.1827683.1827682-.3992048.2741528-.6493098.2741528-.25010504 0-.46654167-.0913846-.64930993-.2741528l-4.80489716-4.8048972h-3.78042681c-.25010499 0-.46654161-.0913846-.64930987-.2741528-.18276827-.1827683-.27415283-.399205-.27415283-.6493099v-5.54077791c0-.25010498.09138456-.46654161.27415283-.64930987.18276826-.18276827.39920488-.27415283.64930987-.27415283h3.78042681l4.80489716-4.80489717c.18276826-.18276826.39920489-.27415282.64930993-.27415282.250105 0 .4665415.09138456.6493098.27415282.1827682.18276826.2741528.39920489.2741528.64930988zm4.9203313 5.80050253c.4136349.63488083.6204518 1.31786077.6204518 2.0489321 0 .73107389-.2044122 1.411644-.6132377 2.0417181-.4088254.6300714-.949916 1.0797783-1.6232747 1.3491218-.0961939.048097-.2164365.0721455-.3607279.0721455-.250105 0-.4665416-.0889799-.6493099-.2669387-.1827683-.1779589-.2741528-.396801-.2741528-.6565248 0-.2020075.0577164-.3727515.1731495-.5122335.1154332-.1394819.2549143-.2597246.4184441-.360728.1635299-.1010033.3270597-.2116271.4905895-.3318698.1635298-.12024269.3030109-.29339221.4184442-.51944846.1154332-.22605625.1731495-.49780443.1731495-.81524524 0-.31743998-.0577165-.58918897-.1731495-.81524525-.1154333-.22605627-.2549144-.39920574-.4184442-.5194484s-.3270596-.23086568-.4905895-.3318699c-.1635298-.10100335-.3030109-.22124601-.4184441-.36072799-.1154333-.13948197-.1731495-.31022588-.1731495-.51223346 0-.25972377.0913845-.47856595.2741528-.65652482.1827683-.17795886.3992049-.26693873.6493099-.26693873.1442914 0 .264534.02404853.3607279.07214559.6733613.25972379 1.2120455.70702695 1.6160606 1.34190776z\",\n transform: \"translate(0 3)\"\n});\n\nvar SvgIconVolumedown = function SvgIconVolumedown(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n height: 24,\n viewBox: \"0 0 24 24\",\n width: 24,\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgIconVolumedown, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/icon-volumedown.11c3cc84.svg\";\nexport { ForwardRef as ReactComponent };","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"title\", null, \"ionicons-v5-c\");\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M133,440a35.37,35.37,0,0,1-17.5-4.67c-12-6.8-19.46-20-19.46-34.33V111c0-14.37,7.46-27.53,19.46-34.33a35.13,35.13,0,0,1,35.77.45L399.12,225.48a36,36,0,0,1,0,61L151.23,434.88A35.5,35.5,0,0,1,133,440Z\"\n});\n\nvar SvgIconPlay = function SvgIconPlay(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"512px\",\n height: \"512px\",\n viewBox: \"0 0 512 512\",\n ref: svgRef\n }, props), title === undefined ? _ref2 : title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref3);\n};\n\nvar ForwardRef = React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgIconPlay, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/icon-play.b0879354.svg\";\nexport { ForwardRef as ReactComponent };","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"none\",\n d: \"M0 0h24v24H0z\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.364 5.636L16.95 7.05A7 7 0 1 0 19 12h2a9 9 0 1 1-2.636-6.364z\"\n});\n\nvar SvgIconSpinner = function SvgIconSpinner(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 24 24\",\n width: 24,\n height: 24,\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2, _ref3);\n};\n\nvar ForwardRef = React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgIconSpinner, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/icon-spinner.cead417e.svg\";\nexport { ForwardRef as ReactComponent };","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"none\",\n d: \"M0 0h24v24H0z\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10 15.172l9.192-9.193 1.415 1.414L10 18l-6.364-6.364 1.414-1.414z\"\n});\n\nvar SvgIconCheck = function SvgIconCheck(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 24 24\",\n width: 24,\n height: 24,\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2, _ref3);\n};\n\nvar ForwardRef = React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgIconCheck, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/icon-check.65d81729.svg\";\nexport { ForwardRef as ReactComponent };","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"none\",\n d: \"M0 0h24v24H0z\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm-1-7v2h2v-2h-2zm0-8v6h2V7h-2z\"\n});\n\nvar SvgIconExclamation = function SvgIconExclamation(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 24 24\",\n width: 24,\n height: 24,\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2, _ref3);\n};\n\nvar ForwardRef = React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgIconExclamation, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/icon-exclamation.7504972f.svg\";\nexport { ForwardRef as ReactComponent };","function _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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\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\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"none\",\n d: \"M0 0h24v24H0z\"\n});\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm0-2a8 8 0 1 0 0-16 8 8 0 0 0 0 16zM11 7h2v2h-2V7zm0 4h2v6h-2v-6z\"\n});\n\nvar SvgIconInfo = function SvgIconInfo(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 24 24\",\n width: 24,\n height: 24,\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2, _ref3);\n};\n\nvar ForwardRef = React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgIconInfo, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/icon-info.b661dff5.svg\";\nexport { ForwardRef as ReactComponent };","import { ReactComponent as chevron } from './icon-chevron.svg';\r\nimport { ReactComponent as arrow } from './icon-arrow.svg';\r\nimport { ReactComponent as plus } from './icon-plus.svg';\r\nimport { ReactComponent as search } from './icon-search.svg';\r\nimport { ReactComponent as menu } from './icon-menu.svg';\r\nimport { ReactComponent as volUp } from './icon-volumeup.svg';\r\nimport { ReactComponent as volDown } from './icon-volumedown.svg';\r\nimport { ReactComponent as play } from './icon-play.svg';\r\nimport { ReactComponent as spinner } from './icon-spinner.svg';\r\nimport { ReactComponent as check } from './icon-check.svg';\r\nimport { ReactComponent as exclamation } from './icon-exclamation.svg';\r\nimport { ReactComponent as info } from './icon-info.svg';\r\n\r\nexport interface IconList {\r\n\t/** The icon to be shown */\r\n\ticon:\r\n\t\t| 'chevron'\r\n\t\t| 'arrow'\r\n\t\t| 'plus'\r\n\t\t| 'search'\r\n\t\t| 'menu'\r\n\t\t| 'volUp'\r\n\t\t| 'volDown'\r\n\t\t| 'play'\r\n\t\t| 'spinner'\r\n\t\t| 'check'\r\n\t\t| 'exclamation'\r\n\t\t| 'info';\r\n}\r\n\r\nexport default {\r\n\tchevron,\r\n\tarrow,\r\n\tplus,\r\n\tsearch,\r\n\tmenu,\r\n\tvolUp,\r\n\tvolDown,\r\n\tplay,\r\n\tspinner,\r\n\tcheck,\r\n\texclamation,\r\n\tinfo,\r\n};\r\n","/**\r\n * Icon\r\n */\r\n\r\nimport React from 'react';\r\nimport icons, { IconList } from 'theme/icons';\r\nimport clsx from 'clsx';\r\n\r\ntype IconSizes = 0 | 1 | 2 | 3 | 4 | 5;\r\ntype IconDirections = 'left' | 'up' | 'right' | 'down';\r\n\r\ninterface Props extends IconList {\r\n\t/** Set the size of the icon.
1 = 24px
2 = 32px
3 = 40px
4 = 48px*/\r\n\tsize?: IconSizes;\r\n\r\n\t/** Set the direction of the icon. */\r\n\tdirection?: IconDirections;\r\n\r\n\t/** Animate the icon. */\r\n\tanimate?: 'spin' | 'none';\r\n\r\n\t/** Pass optional classnames for the html */\r\n\tclassName?: string;\r\n\r\n\t[htmlAttributes: string]: any;\r\n}\r\n\r\nconst getSize = (size: IconSizes) => {\r\n\tswitch (size) {\r\n\t\tcase 0:\r\n\t\t\treturn 'w-3 h-3';\r\n\t\tcase 1:\r\n\t\t\treturn 'w-4 h-4';\r\n\t\tcase 2:\r\n\t\t\treturn 'w-6 h-6';\r\n\t\tcase 3:\r\n\t\t\treturn 'w-8 h-8';\r\n\t\tcase 4:\r\n\t\t\treturn 'w-10 h-10';\r\n\t\tcase 5:\r\n\t\t\treturn 'w-12 h-12';\r\n\t\tdefault:\r\n\t\t\tbreak;\r\n\t}\r\n};\r\n\r\nconst getRotation = (direction: IconDirections) => {\r\n\tswitch (direction) {\r\n\t\tcase 'up':\r\n\t\t\treturn '-rotate-90';\r\n\t\tcase 'right':\r\n\t\t\treturn 'rotate-0';\r\n\t\tcase 'down':\r\n\t\t\treturn 'rotate-90';\r\n\t\tcase 'left':\r\n\t\t\treturn 'rotate-180';\r\n\t}\r\n};\r\n\r\n/** This is the icon component that handles all the icons in the project.
The user will be able to set the color, size, direction and animation for all the icons. */\r\nconst Icon: React.FC = ({\r\n\ticon,\r\n\tsize = 1,\r\n\tdirection = 'right',\r\n\tanimate = undefined,\r\n\tclassName,\r\n\texpanded,\r\n\t...htmlAttributes\r\n}) => {\r\n\tconst IconSvg = icons[icon];\r\n\r\n\treturn (\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default Icon;\r\n","/**\r\n * ImageDesctiption\r\n */\r\n\r\nimport React from 'react';\r\n\r\ninterface Props {\r\n\t/** Description text */\r\n\tdescription?: string;\r\n\t_properties?: any;\r\n}\r\n\r\n/** Image description component (used by Image component). */\r\nconst ImageDesctiption: React.FC = ({\r\n\tdescription,\r\n\t_properties = {},\r\n}) => {\r\n\treturn (\r\n\t\t<>\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t{description}\r\n\t\t\t\t

\r\n\t\t\t
\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default ImageDesctiption;\r\n","/**\r\n * Image\r\n */\r\n\r\nimport clsx from 'clsx';\r\nimport Icon from 'components/Icon';\r\nimport React from 'react';\r\nimport ImageDescription from './ImageDescription';\r\nimport type { IImage } from '../../types/global';\r\n\r\nexport interface ImageProps extends IImage {\r\n\t/** The image figure caption */\r\n\tfigCaption?: string;\r\n\r\n\t/** Optional classname for figure-tag. */\r\n\tfigClassName?: string;\r\n\r\n\t/** Description for image, sets a dark transparent area on imagebottom. A container with position: relative should wrap Image component for this to work properly. */\r\n\tdescription?: string;\r\n\r\n\t/** Optional other html props will be spread on the component */\r\n\t[htmlAttributes: string]: any\r\n\r\n\t/** Whether player symbol should show up */\r\n\tisVideo?: boolean;\r\n}\r\n\r\n/** The image component with or without the figure caption. */\r\nconst Image: React.FC = ({\r\n\tsrc,\r\n\talt = '',\r\n\tclassName,\r\n\tfigClassName,\r\n\tfigCaption,\r\n\tlink,\r\n\tloading = \"eager\",\r\n\tdecoding = \"auto\",\r\n\tfetchpriority = \"auto\",\r\n\tsrcSet,\r\n\tsrcSetSizes,\r\n\tdescription = '',\r\n\tisVideo = false,\r\n\tphotographer = '',\r\n\t...htmlAttributes\r\n}) => {\r\n\r\n\tif (!src) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\r\n\tfunction renderPlayBtn() {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t);\r\n\t}\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t{!figCaption && (\r\n\t\t\t\t
\r\n\t\t\t\t\t{link ? \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t:\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t}\r\n\t\t\t\t\t{photographer && (\r\n\t\t\t\t\t\t{photographer}\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t{isVideo && renderPlayBtn()}\r\n\t\t\t\t
\r\n\t\t\t)}\r\n\t\t\t{figCaption && (\r\n\t\t\t\t\r\n\t\t\t\t\t{link ? \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t:\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t}\r\n\t\t\t\t\t{photographer && (\r\n\t\t\t\t\t\t{photographer}\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t{isVideo && renderPlayBtn()}\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t{figCaption}\r\n\t\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t)}\r\n\r\n\t\t\t{description && }\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default Image;\r\n","import { math } from 'polished';\r\n\r\nexport interface Breakpoints {\r\n\t[device: string]: string;\r\n}\r\n\r\nexport interface BreakpointsNumber {\r\n\t[device: string]: number;\r\n}\r\n\r\nexport type BreakpointDevices = {\r\n\ttablet: number;\r\n\tdesktop: number;\r\n};\r\n\r\nexport const MinBreakpoint: BreakpointDevices = {\r\n\ttablet: 768,\r\n\tdesktop: 1024,\r\n};\r\n\r\n// Must be set in numbers\r\nexport const breakpointsNumber: BreakpointsNumber = {\r\n\tdesktopL: 1024,\r\n\tdesktop: 840,\r\n\ttablet: 480,\r\n\tphone: 0,\r\n};\r\n\r\n// Must be set in pixels\r\nexport const breakpoints: Breakpoints = {\r\n\tdesktop: `${breakpointsNumber.desktop}px`,\r\n\ttablet: `${breakpointsNumber.tablet}px`,\r\n\tphone: `${breakpointsNumber.phone}px`,\r\n};\r\n\r\nconst mediaQueryValues = {\r\n\tdesktop: `@media screen and (min-width: ${breakpoints.desktop})`,\r\n\ttabletOrLarger: `@media screen and (min-width: ${breakpoints.tablet})`,\r\n\tphoneOrTablet: `@media screen and (min-width: ${\r\n\t\tbreakpoints.phone\r\n\t}) and (max-width: ${math(`${breakpoints.desktop} - 1px`)})`,\r\n\ttablet: `@media screen and (min-width: ${\r\n\t\tbreakpoints.tablet\r\n\t}) and (max-width: ${math(`${breakpoints.desktop} - 1px`)})`,\r\n\tphone: `@media screen and (min-width: ${\r\n\t\tbreakpoints.phone\r\n\t}) and (max-width: ${math(`${breakpoints.tablet} - 1px`)})`,\r\n} as const;\r\ntype MediaQueries = typeof mediaQueryValues;\r\nexport const mediaQueries: MediaQueries = mediaQueryValues;\r\n","import Image, { ImageProps } from './Image';\r\nexport default Image;\r\nexport type { ImageProps };\r\n","/**\r\n * ImageInfoBlock\r\n */\r\n\r\nimport Image from 'components/Image';\r\nimport React from 'react';\r\nimport { InfoImage } from 'types/global';\r\n\r\ninterface Props {\r\n\tinfoBlock: InfoImage;\r\n\tid: string;\r\n\topenInfoBlock: string;\r\n\thandleClick: (id: string) => void;\r\n}\r\n\r\n/** small image block component, above carrousel image. */\r\nconst ImageInfoBlock: React.FC = ({\r\n\tinfoBlock,\r\n\tid,\r\n\topenInfoBlock,\r\n\thandleClick,\r\n}) => {\r\n\tconst {\r\n\t\theading,\r\n\t\tposX,\r\n\t\tposY,\r\n\t\tdirection,\r\n\t\tteaserImage,\r\n\t\tteaserPosition,\r\n\t\tteaserHorizontalPosition,\r\n\t\tteaserLink,\r\n\t\tteaserLinkText,\r\n\t\tteaserText,\r\n\t} = infoBlock;\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t{openInfoBlock === id && (\r\n\t\t\t\t
\r\n\t\t\t\t\t{teaserImage &&\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t}\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t

{heading}

\r\n\t\t\t\t\t\t\t handleClick('')} />\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t

{teaserText}

\r\n\t\t\t\t\t\t{teaserLink && \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t)}\r\n\t\t\t handleClick(id)}\r\n\t\t\t\ttabIndex={-1}\r\n\t\t\t>\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default ImageInfoBlock;\r\n","/**\r\n * CarouselToggleFullScreen\r\n */\r\nimport Image from 'components/Image/Image';\r\nimport React, { useState } from 'react';\r\nimport { useMediaQuery } from 'react-responsive';\r\nimport Slider, { Settings } from 'react-slick';\r\nimport { breakpointsNumber, MinBreakpoint } from 'theme/media-queries';\r\nimport { ICarouselSlide, IImage, InfoImage } from 'types/global';\r\nimport ImageInfoBlock from 'components/ImageInfoBlock';\r\n\r\ntype Props = {\r\n\tslides: ICarouselSlide[];\r\n\tfullscreenOpenLabel?: string;\r\n\tfullscreenCloseLabel?: string;\r\n};\r\n\r\nconst CarouselToggleFullScreen: React.FC = ({\r\n\tslides,\r\n\tfullscreenOpenLabel,\r\n\tfullscreenCloseLabel,\r\n}) => {\r\n\tconst isDesktop = useMediaQuery({\r\n\t\tminWidth: breakpointsNumber.desktop,\r\n\t});\r\n\tconst isTablet = useMediaQuery({\r\n\t\tmaxWidth: MinBreakpoint.tablet,\r\n\t});\r\n\tconst [isFullscreen, setIsFullscreenMode] = useState(false);\r\n\tconst [openInfoBlock, setOpenInfoBlock] = useState('');\r\n\r\n\tconst handleToggleFullscreen = () => {\r\n\t\tsetIsFullscreenMode(!isFullscreen);\r\n\t};\r\n\r\n\tconst settings:Settings = {\r\n\t\tdots: true,\r\n\t\tarrows: true,\r\n\t\tinfinite: true,\r\n\t\tspeed: 500,\r\n\t\tslidesToShow: 1,\r\n\t\tslidesToScroll: 1,\r\n\t\tclassName: 'slick-fullscreen',\r\n\t\tappendDots: (dots: any) => {\r\n\t\t\tconst activeIndex = dots.findIndex(\r\n\t\t\t\t(dot: any) => dot.props.className === 'slick-active'\r\n\t\t\t);\r\n\r\n\t\t\treturn (\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
    {dots}
\r\n\r\n\t\t\t\t\t\t\t{activeIndex > -1 && (\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t

{`${slides[activeIndex].image.title}, ${slides[activeIndex].image.photographer}`}

\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t{isDesktop && (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t);\r\n\t\t},\r\n\t\tcustomPaging: (i: number) => (\r\n\t\t\t
\r\n\t\t),\r\n\t};\r\n\r\n\tconst handleInfoBlock = (id: string) => {\r\n\t\tsetOpenInfoBlock(id);\r\n\t};\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\t{slides.map((slide: ICarouselSlide, index: number) => (\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t{!isTablet &&\r\n\t\t\t\t\t\t\tslide.image.imageInfos &&\r\n\t\t\t\t\t\t\tslide.image.imageInfos.map((item: InfoImage, i:number) => {\r\n\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t})}\r\n\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t))}\r\n\t\t\t\r\n\t\t
\r\n\t);\r\n};\r\n\r\nexport default CarouselToggleFullScreen;\r\n","/**\r\n * Carousel\r\n */\r\n\r\nimport React from 'react';\r\nimport Slider, { Settings } from 'react-slick';\r\nimport { ICarousel, ICarouselSlide } from 'types/global';\r\nimport Image from 'components/Image/Image';\r\nimport { Link as RouterLink } from 'react-router-dom';\r\n\r\nconst CarouselNormal: React.FC = ({ slides, ...htmlAttributes }) => {\r\n\tconst settings: Settings = {\r\n\t\tdots: true,\r\n\t\tarrows: true,\r\n\t\tinfinite: true,\r\n\t\tfade: true,\r\n\t\tspeed: 1000,\r\n\t\tslidesToShow: 1,\r\n\t\tslidesToScroll: 1,\r\n\t\tclassName: 'slick-normal',\r\n\t\tappendDots: (dots: any) => {\r\n\t\t\tconst activeIndex = dots.findIndex(\r\n\t\t\t\t(dot: any) => dot.props.className === 'slick-active'\r\n\t\t\t);\r\n\r\n\t\t\tconst activeSlide = slides[activeIndex];\r\n\r\n\t\t\treturn (\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t{activeIndex > -1 && activeSlide && (\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{activeSlide.name}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t

{activeSlide.image.coordinates}

\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t\t
    {dots}
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t);\r\n\t\t},\r\n\t\tcustomPaging: (i: number) => (\r\n\t\t\t
\r\n\t\t),\r\n\t};\r\n\treturn (\r\n\t\t\r\n\t\t\t{slides.map((slide: ICarouselSlide, index: number) => (\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t))}\r\n\t\t
\r\n\t);\r\n};\r\n\r\nexport default CarouselNormal;\r\n","/**\r\n * Carousel\r\n */\r\n\r\nimport React from 'react';\r\nimport { ICarousel } from 'types/global';\r\n\r\nimport 'slick-carousel/slick/slick.css';\r\nimport 'slick-carousel/slick/slick-theme.css';\r\nimport CarouselToggleFullScreen from './CarouselToggleFullscreen';\r\nimport CarouselNormal from './CarouselNormal';\r\n\r\n/** Image carousel. */\r\nconst Carousel: React.FC = ({\r\n\tslides,\r\n\tfullscreenOpenLabel,\r\n\tfullscreenCloseLabel,\r\n\tfullScreenMode,\r\n}) =>\r\n\tfullScreenMode ? (\r\n\t\t\r\n\t) : (\r\n\t\t\r\n\t);\r\n\r\nexport default Carousel;","/**\r\n * Button\r\n */\r\n\r\nimport React from 'react';\r\nimport clsx from 'clsx';\r\n\r\ntype Tags = 'a' | 'button';\r\n\r\ninterface Props {\r\n\t/** Sets the size of the button */\r\n\tsize?: 'large' | 'medium' | 'small' | 'smaller';\r\n\r\n\t/** Sets the variant of the button */\r\n\tvariant?: 'primary' | 'secondary' | 'activity' | 'experience';\r\n\r\n\t/** Sets the width of the button */\r\n\tdisplayWidth?: 'dynamic' | 'fixed' | 'full';\r\n\r\n\t/** Pass optional classnames for the html */\r\n\tclassName?: string;\r\n\r\n\t/** On click handler */\r\n\tonClick?: (e: any) => void;\r\n\r\n\t/** Should the button be disabled */\r\n\tdisabled?: boolean;\r\n\r\n\t/** If button should be rendered as link or button, check Tags above. */\r\n\tas?: Tags;\r\n\r\n\t/** Is the button of type submit */\r\n\tisSubmit?: boolean;\r\n\r\n\t[htmlAttributes: string]: any;\r\n}\r\n\r\nconst tagMapper = {\r\n\ta: 'a',\r\n\tbutton: 'button',\r\n};\r\n\r\n/** A reusable button | a component. */\r\nconst Button: React.FC = ({\r\n\tchildren,\r\n\tclassName = '',\r\n\tsize = 'medium',\r\n\tvariant = 'primary',\r\n\tdisabled = false,\r\n\tdisplayWidth = 'dynamic',\r\n\tas = 'button',\r\n\tisSubmit = false,\r\n\tonClick,\r\n\t...htmlAttributes\r\n}) => {\r\n\tlet Component: any = tagMapper[as];\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t{children}\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default Button;\r\n","/**\r\n * ActivitesPuff\r\n */\r\n\r\nimport React from 'react';\r\n\r\nimport Text from 'components/Text';\r\nimport Button from 'components/Button';\r\nimport clsx from 'clsx';\r\n\r\ninterface Props {\r\n\t/** The list heading */\r\n\theading: string;\r\n\r\n\t/** The list preamble */\r\n\ttext?: any;\r\n\r\n\t/** Button url */\r\n\turl?: string;\r\n\r\n\t/** Button text */\r\n\tbuttonText: string;\r\n\r\n\t/** Epi attributes */\r\n\t_properties: any;\r\n\r\n\t/** background color */\r\n\tcolorTheme: string;\r\n\r\n\tmodelType?: string;\r\n}\r\n\r\n/** A list of activities. */\r\nconst ActivitesPuff: React.FC = ({\r\n\theading,\r\n\ttext,\r\n\turl,\r\n\tchildren,\r\n\tbuttonText,\r\n\t_properties,\r\n\tcolorTheme,\r\n\tmodelType,\r\n}) => {\r\n\treturn (\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{heading}\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t{text && (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{text}\r\n\t\t\t\t\t

\r\n\t\t\t\t)}\r\n\r\n\t\t\t\t\r\n\t\t\t\t\t{children}\r\n\t\t\t\t
\r\n\r\n\t\t\t\t{url && (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{buttonText}\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t
\r\n\t\t
\r\n\t);\r\n};\r\n\r\nexport default ActivitesPuff;\r\n","/**\r\n * CurrentInformationBlock\r\n */\r\n\r\nimport clsx from 'clsx';\r\nimport Button from 'components/Button';\r\nimport Text from 'components/Text';\r\nimport React, { HTMLAttributes } from 'react';\r\nimport { Link } from 'types/global';\r\n\r\ninterface Props {\r\n\t/** Block heading */\r\n\theading: string;\r\n\r\n\t/** Block preamble */\r\n\tpreamble?: string;\r\n\r\n\t/** Block link */\r\n\tlink?: Link;\r\n\r\n\t/** Classname for setting the backgroundcolor */\r\n\tcolorTheme?: \"white\" | \"grey-lightest\" | \"yellow-light\";\r\n\r\n\t/** Epi properties for on-page editing */\r\n\t_properties?: any;\r\n\r\n\t/** Classes for the container holding the children */\r\n\titemContainerClassName?: Pick, 'className'>;\r\n}\r\n\r\n/** Current informations component. */\r\nconst CurrentInformationBlock: React.FC = ({\r\n\theading,\r\n\tpreamble,\r\n\tlink,\r\n\tcolorTheme = \"white\",\r\n\t_properties,\r\n\tchildren,\r\n\titemContainerClassName,\r\n}) => {\r\n\treturn (\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{heading}\r\n\t\t\t\t\r\n\r\n\t\t\t\t{preamble && (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{preamble}\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t\t{children}\r\n\t\t\t\t{link && link.url && (\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t
\r\n\t\t
\r\n\t);\r\n};\r\n\r\nexport default CurrentInformationBlock;\r\n","/**\r\n * InfoBlock\r\n */\r\n\r\nimport clsx from 'clsx';\r\nimport Image from 'components/Image';\r\n\r\nimport React, { useState } from 'react';\r\nimport type { IImage } from 'types/global';\r\n\r\ninterface Props {\r\n\t/** Block heading */\r\n\theading: string;\r\n\r\n\t/** Block image */\r\n\timage: IImage;\r\n\r\n\t/** Block date */\r\n\tdate?: string;\r\n\r\n\t/** Block text */\r\n\ttext?: string;\r\n\r\n\tlayout?: 'horizontal' | 'vertical';\r\n}\r\n\r\n/** InfoBlock component. */\r\nconst InfoBlock: React.FC = ({\r\n\theading,\r\n\timage,\r\n\tdate,\r\n\ttext,\r\n\tlayout = 'vertical',\r\n}) => {\r\n\tconst [imageHeight, setImageHeight] = useState();\r\n\tconst handleImageLoad = (event: any) => {\r\n\t\tconst heightAllow = 270;\r\n\t\tif (heightAllow < event.target.clientHeight) {\r\n\t\t\tsetImageHeight('w-auto');\r\n\t\t} else {\r\n\t\t\tsetImageHeight('w-full');\r\n\t\t}\r\n\t};\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t{image && (\r\n\t\t\t\t\r\n\t\t\t)}\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{heading}\r\n\t\t\t\t\r\n\r\n\t\t\t\t{date && (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{date}\r\n\t\t\t\t\t

\r\n\t\t\t\t)}\r\n\r\n\t\t\t\t{text && (\r\n\t\t\t\t\t

{text}

\r\n\t\t\t\t)}\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default InfoBlock;\r\n","const widthClassInGrid = [\r\n\t'w-grid-1/12',\r\n\t'w-grid-2/12',\r\n\t'w-grid-3/12',\r\n\t'w-grid-4/12',\r\n\t'w-grid-5/12',\r\n\t'w-grid-6/12',\r\n\t'w-grid-7/12',\r\n\t'w-grid-8/12',\r\n\t'w-grid-9/12',\r\n\t'w-grid-10/12',\r\n\t'w-grid-11/12',\r\n\t'w-full',\r\n];\r\n\r\nexport const getWidthClass = (span: number, margin: boolean) => {\r\n const widthClassInPercent = [\r\n 'w-1/12',\r\n 'w-2/12',\r\n 'w-3/12',\r\n 'w-4/12',\r\n 'w-5/12',\r\n 'w-6/12',\r\n 'w-7/12',\r\n 'w-8/12',\r\n 'w-9/12',\r\n 'w-10/12',\r\n 'w-11/12',\r\n ];\r\n\r\n\tif (!span) {\r\n\t\treturn span;\r\n\t}\r\n\r\n\tif (span === 12) {\r\n\t\treturn 'w-full';\r\n\t}\r\n\tif (margin) {\r\n\t\treturn widthClassInGrid[span - 1];\r\n\t} else {\r\n\t\treturn widthClassInPercent[span - 1];\r\n\t}\r\n};\r\n\r\nexport const getWidthClassTablet = (span: number, margin: boolean) => {\r\n const widthClassInPercent = [\r\n 'md:w-1/12',\r\n 'md:w-2/12',\r\n 'md:w-3/12',\r\n 'md:w-4/12',\r\n 'md:w-5/12',\r\n 'md:w-6/12',\r\n 'md:w-7/12',\r\n 'md:w-8/12',\r\n 'md:w-9/12',\r\n 'md:w-10/12',\r\n 'md:w-11/12',\r\n ];\r\n\r\n\tif (!span) {\r\n\t\treturn span;\r\n\t}\r\n\r\n\tif (span === 12) {\r\n\t\treturn 'w-full';\r\n\t}\r\n\tif (margin) {\r\n\t\treturn widthClassInGrid[span - 1];\r\n\t} else {\r\n\t\treturn widthClassInPercent[span - 1];\r\n\t}\r\n};\r\nexport const getWidthClassDesktop = (span: number, margin: boolean) => {\r\n const widthClassInPercent = [\r\n 'lg:w-1/12',\r\n 'lg:w-2/12',\r\n 'lg:w-3/12',\r\n 'lg:w-4/12',\r\n 'lg:w-5/12',\r\n 'lg:w-6/12',\r\n 'lg:w-7/12',\r\n 'lg:w-8/12',\r\n 'lg:w-9/12',\r\n 'lg:w-10/12',\r\n 'lg:w-11/12',\r\n ];\r\n\r\n\tif (!span) {\r\n\t\treturn span;\r\n\t}\r\n\r\n\tif (span === 12) {\r\n\t\treturn 'w-full';\r\n\t}\r\n\tif (margin) {\r\n\t\treturn widthClassInGrid[span - 1];\r\n\t} else {\r\n\t\treturn widthClassInPercent[span - 1];\r\n\t}\r\n};","/**\r\n * Grid\r\n */\r\n\r\nimport React, { CSSProperties } from 'react';\r\nimport clsx from 'clsx';\r\nimport { getWidthClass, getWidthClassDesktop, getWidthClassTablet } from './CssHelper';\r\n\r\n// Interfaces\r\ninterface GridProps {\r\n\t/** Option to set max-width on the inner component */\r\n\tmaxWidth?: boolean;\r\n\r\n\t/** Option to remove default grid padding */\r\n\tpadding?: boolean;\r\n\r\n\t/** Option to remove default grid margin */\r\n\tmargin?: boolean;\r\n\r\n\t/** Pass optional classnames for the html */\r\n\tclassName?: string;\r\n\r\n\t/** Pass optional inline styling for the html */\r\n\tstyle?: CSSProperties;\r\n\r\n\t/** Pass optional attributes for the grid */\r\n\t[htmlAttributes: string]: any;\r\n}\r\n\r\ninterface CellProps {\r\n\t/** Specifies the number of columns the cell spans */\r\n\tspan?: number;\r\n\r\n\t/** Specifies the number of columns the cell spans on a type of device (desktop) */\r\n\tdesktop?: number;\r\n\r\n\t/** Specifies the number of columns the cell spans on a type of device (tablet) */\r\n\ttablet?: number;\r\n\r\n\t/** Pass optional classnames for the html */\r\n\tclassName?: string;\r\n\r\n\t/** Option to remove default grid margin */\r\n\tmargin?: boolean;\r\n\r\n}\r\n\r\n\r\nconst renderChildren = (children: any, margin: boolean) => {\r\n\tconst renderedChildren = React.Children.map(children, (child) => {\r\n\t\tconst props: any = child && child.props ? { ...child.props } : {};\r\n\t\tprops.margin = margin;\r\n\t\tif (child) {\r\n\t\t\treturn React.cloneElement(child, props);\r\n\t\t} else return false;\r\n\t});\r\n\r\n\treturn renderedChildren;\r\n};\r\n\r\n/** Grid component using tailwind classes. */\r\nconst Grid: React.FC = ({\r\n\tpadding = true,\r\n\tmargin = true,\r\n\tmaxWidth = false,\r\n\tclassName,\r\n\tstyle,\r\n\tchildren,\r\n\t...htmlAttributes\r\n}) => {\r\n\treturn (\r\n\t\t
\r\n\t\t\t{style ? (\r\n\t\t\t\t\r\n\t\t\t\t\t{renderChildren(children, margin)}\r\n\t\t\t\t
\r\n\t\t\t) : (\r\n\t\t\t\t\r\n\t\t\t\t\t{renderChildren(children, margin)}\r\n\t\t\t\t\r\n\t\t\t)}\r\n\t\t\r\n\t);\r\n};\r\n\r\n/** Grid Cell component using tailwind classes. */\r\nconst Cell: React.FC = ({\r\n\tspan,\r\n\tdesktop,\r\n\ttablet,\r\n\tclassName,\r\n\tmargin = true,\r\n\tchildren,\r\n}) => {\r\n\treturn (\r\n\t\t\r\n\t\t\t{children}\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport { Grid, Cell };\r\n","import Icon from 'components/Icon/Icon';\r\nimport React, {\r\n\tPropsWithChildren,\r\n\tisValidElement,\r\n\tuseCallback,\r\n\tuseEffect,\r\n\tuseRef,\r\n\tuseState,\r\n} from 'react';\r\nimport { useLocation } from 'react-router-dom';\r\n\r\ninterface ModalProps {\r\n\tnoModalPadding?: boolean;\r\n\tnoCloseButton?: boolean;\r\n}\r\n\r\n/* Little hook that is used to wrap content in a modal. */\r\nexport const useModal = () => {\r\n\tconst location = useLocation();\r\n\tconst isEnglish: boolean = location.pathname.startsWith('/en/');\r\n\r\n\tconst dialogRef = useRef(null);\r\n\tconst [open, setOpen] = useState(false);\r\n\r\n\t// Open modal\r\n\tconst openModal = useCallback(() => {\r\n\t\tdocument.documentElement.classList.add('overflow-hidden');\r\n\t\tsetOpen(true);\r\n\t}, []);\r\n\r\n\t// Close modal\r\n\tconst closeModal = useCallback(() => {\r\n\t\tdocument.documentElement.classList.remove('overflow-hidden');\r\n\t\tsetOpen(false);\r\n\t}, []);\r\n\r\n\tuseEffect(() => {\r\n\t\tconst clickEscape = (e: KeyboardEvent) => {\r\n\t\t\tif (e.key === 'Escape') {\r\n\t\t\t\t// Esc button\r\n\t\t\t\tcloseModal();\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tdocument.addEventListener('keydown', clickEscape);\r\n\t\treturn () => document.removeEventListener('keydown', clickEscape);\r\n\t}, []);\r\n\r\n\tuseEffect(() => {\r\n\t\tconst handleFullscreenChange = () => {\r\n\t\t\tdialogRef.current?.focus(); // make sure the focus is on dialog, otherwise the focus will be on iframe document and keydown event wont be triggered\r\n\t\t};\r\n\r\n\t\tdocument.addEventListener('fullscreenchange', handleFullscreenChange);\r\n\t\treturn () =>\r\n\t\t\tdocument.removeEventListener('fullscreenchange', handleFullscreenChange);\r\n\t}, []);\r\n\r\n\tuseEffect(() => {\r\n\t\tconst { current: el } = dialogRef;\r\n\t\tif (el) {\r\n\t\t\tif (open) {\r\n\t\t\t\tel.showModal();\r\n\t\t\t\tel.focus();\r\n\t\t\t} else el.close();\r\n\t\t}\r\n\t\treturn () => {\r\n\t\t\tif (open) closeModal();\r\n\t\t};\r\n\t}, [open, closeModal, dialogRef.current?.open]);\r\n\r\n\t// Handle click outside of modal\r\n\tconst onClick = useCallback(\r\n\t\t({ target }) => {\r\n\t\t\tconst { current: el } = dialogRef;\r\n\t\t\tif (target === el) closeModal();\r\n\t\t},\r\n\t\t[closeModal]\r\n\t);\r\n\r\n\tconst Modal: React.FC> = ({\r\n\t\tchildren,\r\n\t\tnoCloseButton = false,\r\n\t\tnoModalPadding = false,\r\n\t}) => {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t{!noCloseButton && (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t{React.Children.map(children, (child) => {\r\n\t\t\t\t\t\tif (isValidElement(child))\r\n\t\t\t\t\t\t\treturn React.cloneElement(child, child.props);\r\n\t\t\t\t\t})}\r\n\t\t\t\t
\r\n\t\t\t\r\n\t\t);\r\n\t};\r\n\r\n\treturn {\r\n\t\tModal,\r\n\t\topenModal,\r\n\t\tcloseModal,\r\n\t};\r\n};\r\n","import React, { useRef } from 'react';\r\nimport Image from 'components/Image';\r\nimport { InstagramImage, InstagramVideo } from 'types/global';\r\n\r\ninterface Props {\r\n\tcontent: InstagramImage | InstagramVideo | null;\r\n\tgoToUser: string;\r\n}\r\n\r\nconst InstagramModal: React.FC = ({\r\n\tcontent,\r\n\tgoToUser,\r\n}) => {\r\n\tconst btnRef = useRef(null);\r\n\r\n\tReact.useEffect(() => {\r\n\t\tif (btnRef.current) {\r\n\t\t\tbtnRef.current.focus();\r\n\t\t}\r\n\t}, []);\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t{content !== undefined &&\r\n\t\t\t\t(content?.modelType === 'InstagramImage' ? (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t) : (\r\n\t\t\t\t\t\r\n\t\t\t\t))}\r\n\t\t\t
\r\n\t\t\t\t

\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{content?.userName}\r\n\t\t\t\t\t{' '}\r\n\t\t\t\t\t| {content?.caption}\r\n\t\t\t\t

\r\n\t\t\t
\r\n\t\t
\r\n\t);\r\n};\r\n\r\nexport default InstagramModal;\r\n","/**\r\n * RichText\r\n */\r\n\r\nimport React, { useRef, useEffect } from 'react';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { useSelector } from 'react-redux';\r\nimport { selectEpi } from 'store/modules/epi';\r\n\r\n/** Richtext components which handles links. */\r\nconst RichText: React.FC = ({ children }) => {\r\n\tconst history = useHistory();\r\n\tconst { inEditMode } = useSelector(selectEpi);\r\n\tconst nodeRef = useRef(null);\r\n\r\n\tfunction handleLinkClick(this: HTMLAnchorElement, event: MouseEvent): void {\r\n\t\tconst href = this.getAttribute('href');\r\n\t\tconst target = this.getAttribute('target');\r\n\t\tif (href && href.charAt(0) === '/' && target !== '_blank') {\r\n\t\t\tevent.preventDefault();\r\n\t\t\thistory.push(href);\r\n\t\t}\r\n\t}\r\n\r\n\tuseEffect(() => {\r\n\t\tconst nodeRefRef = nodeRef;\r\n\t\tif (nodeRef.current && !inEditMode) {\r\n\t\t\tnodeRef.current.querySelectorAll('a').forEach((a) => {\r\n\t\t\t\ta.addEventListener('click', handleLinkClick);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn () => {\r\n\t\t\tif (nodeRefRef.current) {\r\n\t\t\t\tnodeRefRef.current.querySelectorAll('a').forEach((a) => {\r\n\t\t\t\t\ta.removeEventListener('click', handleLinkClick);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t};\r\n\t\t// eslint-disable-next-line\r\n\t}, []);\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t{children}\r\n\t\t
\r\n\t);\r\n};\r\n\r\nexport default RichText;\r\n","/**\r\n * Runs through and checks a field's conditions/dependencies\r\n */\r\nexport const checkDependency = (\r\n\tname: string,\r\n\tdependencies: any[],\r\n\tvalues: any\r\n) => {\r\n\tconst dependency = dependencies.filter(\r\n\t\t(field) => field.fieldName === name\r\n\t)[0];\r\n\r\n\tconst conditions = checkFieldConditions(dependency, values);\r\n\tlet conditionsFulFilled = null;\r\n\r\n\tif (dependency.type === 'any') {\r\n\t\tconditionsFulFilled = checkIfAnyConditionIsTrue(conditions);\r\n\t} else if (dependency.type === 'all') {\r\n\t\tconditionsFulFilled = checkIfAllConditionsAreTrue(conditions);\r\n\t}\r\n\r\n\treturn conditionsFulFilled\r\n\t\t? performAction(dependency.action)\r\n\t\t: performAction(dependency.action === 'show' ? 'hide' : 'show');\r\n};\r\n\r\n/**\r\n * Loops through all conditions and checks if they're fulfilled.\r\n */\r\nconst checkFieldConditions = (dependency: any, values: any) => {\r\n\tlet conditions: boolean[] = [];\r\n\r\n\tdependency.conditions.forEach((field: any) => {\r\n\t\tconst currentFieldValue = values[field.fieldName];\r\n\t\tconst expectedValue = field.fieldValue;\r\n\r\n\t\tswitch (field.operator) {\r\n\t\t\tcase 'equals':\r\n\t\t\t\tconditions.push(currentFieldValue === expectedValue);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'notEquals':\r\n\t\t\t\tconditions.push(currentFieldValue !== expectedValue);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'contains':\r\n\t\t\t\t!currentFieldValue\r\n\t\t\t\t\t? conditions.push(false)\r\n\t\t\t\t\t: conditions.push(currentFieldValue.includes(expectedValue));\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'notContains':\r\n\t\t\t\t!currentFieldValue\r\n\t\t\t\t\t? conditions.push(true)\r\n\t\t\t\t\t: conditions.push(!currentFieldValue.includes(expectedValue));\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'notApplicable':\r\n\t\t\t\tconditions.push(false);\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tconsole.log(`The operator '${field.operator}' is not yet implemented.`);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t});\r\n\r\n\treturn conditions;\r\n};\r\n\r\nconst checkIfAnyConditionIsTrue = (conditions: boolean[]) => {\r\n\treturn conditions.includes(true);\r\n};\r\n\r\nconst checkIfAllConditionsAreTrue = (conditions: boolean[]) => {\r\n\treturn conditions.includes(false) ? false : true;\r\n};\r\n\r\n/**\r\n * Performs the given action and returns true/false based on if field should be rendered\r\n */\r\nconst performAction = (action: string) => {\r\n\tswitch (action) {\r\n\t\tcase 'show':\r\n\t\t\treturn true;\r\n\t\tcase 'hide':\r\n\t\t\treturn false;\r\n\t\tdefault:\r\n\t\t\tconsole.log(`The action ${action} is not yet implemented.`);\r\n\t\t\tbreak;\r\n\t}\r\n};\r\n","/**\r\n * Checks and returns outcome of field actions the given field is dependent on\r\n * @param {Array} fieldActions - Actions the field is depending on\r\n * @param {Object} values - The current values in form\r\n */\r\nexport const checkFieldActions = (fieldActions: any[], values: any) => {\r\n\tlet actions = {};\r\n\tif (fieldActions && fieldActions.length > 0) {\r\n\t\tlet allActionOutcomes: any = {\r\n\t\t\trequired: [],\r\n\t\t};\r\n\r\n\t\tfieldActions.forEach((action) => {\r\n\t\t\tconst fieldId = `__field_${action.field}`;\r\n\r\n\t\t\tswitch (action.thenAction) {\r\n\t\t\t\tcase 'Hem.Features.Forms.Validators.IsRequiredValidator':\r\n\t\t\t\t\tconst operatorResult = checkOperator(\r\n\t\t\t\t\t\taction.operator,\r\n\t\t\t\t\t\tvalues[fieldId],\r\n\t\t\t\t\t\taction.whenValue\r\n\t\t\t\t\t);\r\n\t\t\t\t\tallActionOutcomes.required.push(operatorResult);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tObject.keys(allActionOutcomes).forEach((attribute) => {\r\n\t\t\tif (allActionOutcomes[attribute].includes(false)) {\r\n\t\t\t\tactions = { ...actions, [attribute]: false };\r\n\t\t\t} else {\r\n\t\t\t\tactions = { ...actions, [attribute]: true };\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\treturn actions;\r\n};\r\n\r\n/**\r\n * Checks the outcome of an operator\r\n * @param {String} operator - equal\r\n * @param {String/Number} dependencyField - Value of the field the action is connected to\r\n * @param {String} compareValue - Value to compare against/expected value\r\n */\r\nconst checkOperator = (\r\n\toperator: string,\r\n\tdependencyField: string,\r\n\tcompareValue: string\r\n) => {\r\n\tswitch (operator) {\r\n\t\tcase 'equal':\r\n\t\t\treturn dependencyField === compareValue;\r\n\t\tdefault:\r\n\t\t\tbreak;\r\n\t}\r\n};\r\n","interface Props {\r\n\tid: string;\r\n\tlabel: string;\r\n\trequired?: boolean;\r\n\tpattern?: string;\r\n\ttype?: string;\r\n\tvalidationMessage?: string;\r\n\tpatternMessage?: string;\r\n\tsingle?: boolean;\r\n\tmultiple?: boolean;\r\n}\r\ninterface FieldValidation {\r\n\t(fieldRef: any, fieldProps: Props): [\r\n\t\tValidateField,\r\n\t\tShowFieldError,\r\n\t\tHideFieldError\r\n\t];\r\n}\r\ninterface ValidateField {\r\n\t(value: string[] | string | number | boolean): Field;\r\n}\r\ninterface ShowFieldError {\r\n\t(field: Field): void;\r\n}\r\ninterface HideFieldError {\r\n\t(): void;\r\n}\r\ninterface Field {\r\n\tlabel: string;\r\n\tid: string;\r\n\tmessage?: string;\r\n}\r\n\r\n/**\r\n * Custom hook for validating a field\r\n */\r\nexport const useFieldValidation: FieldValidation = (fieldRef, fieldProps) => {\r\n\tconst {\r\n\t\trequired,\r\n\t\tpattern,\r\n\t\tlabel,\r\n\t\tid,\r\n\t\ttype,\r\n\t\tvalidationMessage,\r\n\t\tpatternMessage,\r\n\t\tsingle,\r\n\t} = fieldProps;\r\n\r\n\tconst validateField: ValidateField = (value) => {\r\n\t\tlet field: Field = { id, label };\r\n\r\n\t\tconst fieldIsNotValid = value !== '' && !fieldRef.current.checkValidity();\r\n\t\tconst requiredFieldIsNotFilledIn =\r\n\t\t\t(required && value === '') ||\r\n\t\t\t(required && value === 'fieldset' && !fieldsetHasOneCheckedInput());\r\n\t\tconst fieldDoesNotMatchPattern =\r\n\t\t\tpattern && !value.toString().match(pattern) && value !== '';\r\n\t\tconst singleInputIsNotChecked = single && required && !value;\r\n\r\n\t\tif (type === 'url' && fieldIsNotValid) {\r\n\t\t\tfield.message = validationMessage || 'Tillhandahåll en giltig url.';\r\n\t\t} else if (type === 'email' && fieldIsNotValid) {\r\n\t\t\tfield.message =\r\n\t\t\t\tpatternMessage ||\r\n\t\t\t\tvalidationMessage ||\r\n\t\t\t\t'Tillhandahåll en giltig e-postadress.';\r\n\t\t} else if (requiredFieldIsNotFilledIn || singleInputIsNotChecked) {\r\n\t\t\tfield.message =\r\n\t\t\t\tvalidationMessage ||\r\n\t\t\t\t'Du måste fylla i det här fältet för att gå vidare.';\r\n\t\t} else if (pattern && fieldDoesNotMatchPattern) {\r\n\t\t\tfield.message =\r\n\t\t\t\tpatternMessage || 'Vänligen matcha det förväntade formatet.';\r\n\t\t}\r\n\r\n\t\treturn field;\r\n\t};\r\n\r\n\t/**\r\n\t * Checks if any input (radio/checkbox) within the fieldset group has been checked\r\n\t */\r\n\tconst fieldsetHasOneCheckedInput = () => {\r\n\t\tconst allInputs = fieldRef.current.querySelectorAll('input');\r\n\t\tlet hasOneValidInput = false;\r\n\r\n\t\tallInputs.forEach((field: any) => {\r\n\t\t\tif (field.checked) {\r\n\t\t\t\thasOneValidInput = true;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn hasOneValidInput;\r\n\t};\r\n\r\n\t/**\r\n\t * Displays a field error with message\r\n\t */\r\n\tconst showFieldError: ShowFieldError = (field) => {\r\n\t\tlet label: any = document.querySelector(`#form${id}__desc`);\r\n\t\tfieldRef.current.classList.add('invalid');\r\n\r\n\t\tif (label) {\r\n\t\t\tlabel.textContent = field.message;\r\n\t\t\tlabel.removeAttribute('hidden');\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * Hides field error and clears message\r\n\t */\r\n\tconst hideFieldError: HideFieldError = () => {\r\n\t\tlet label = document.querySelector(`#form${id}__desc`);\r\n\t\tfieldRef.current.classList.remove('invalid');\r\n\r\n\t\tif (label) {\r\n\t\t\tlabel.textContent = '';\r\n\t\t\tlabel.setAttribute('hidden', 'true');\r\n\t\t}\r\n\t};\r\n\r\n\treturn [validateField, showFieldError, hideFieldError];\r\n};\r\n","import React, { createContext, useContext, useReducer } from 'react';\r\n\r\nconst FORM_UPDATE = 'FORM_UPDATE';\r\nconst FIELD_INVALID = 'FIELD_INVALID';\r\nconst FIELD_VALID = 'FIELD_VALID';\r\n\r\ntype InitialState = {\r\n\tvalues: any;\r\n\tvalidationMessages: any;\r\n\tinvalidFields: string[];\r\n};\r\n\r\ninterface Props {\r\n\tchildren?: any;\r\n\tinitialState: InitialState;\r\n}\r\n\r\ntype State = {\r\n\tvalues: any;\r\n\tvalidationMessages: any;\r\n\tinvalidFields: string[];\r\n};\r\n\r\ntype Action =\r\n\t| { type: 'FORM_UPDATE'; values: any }\r\n\t| { type: 'FIELD_INVALID'; field: any }\r\n\t| { type: 'FIELD_VALID'; field: any };\r\n\r\nconst FormReducer = (state: State, action: Action) => {\r\n\tswitch (action.type) {\r\n\t\tcase FORM_UPDATE:\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tvalues: action.values,\r\n\t\t\t};\r\n\t\tcase FIELD_INVALID:\r\n\t\t\tconst validationMessageHasNotChanged =\r\n\t\t\t\tstate.validationMessages.hasOwnProperty(action.field.id) &&\r\n\t\t\t\tstate.validationMessages[action.field.id].message &&\r\n\t\t\t\tstate.validationMessages[action.field.id].message ===\r\n\t\t\t\t\taction.field.message;\r\n\r\n\t\t\tif (\r\n\t\t\t\tstate.invalidFields.includes(action.field.id) &&\r\n\t\t\t\tvalidationMessageHasNotChanged\r\n\t\t\t) {\r\n\t\t\t\treturn state;\r\n\t\t\t}\r\n\r\n\t\t\tconst currentInvalidFields = state.invalidFields\r\n\t\t\t\t.slice(0)\r\n\t\t\t\t.filter((item: any) => {\r\n\t\t\t\t\treturn item !== action.field.id;\r\n\t\t\t\t});\r\n\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tinvalidFields: [...currentInvalidFields, action.field.id],\r\n\t\t\t\tvalidationMessages: {\r\n\t\t\t\t\t...state.validationMessages,\r\n\t\t\t\t\t[action.field.id]: action.field,\r\n\t\t\t\t},\r\n\t\t\t};\r\n\t\tcase FIELD_VALID:\r\n\t\t\tconst updatedFields = state.invalidFields.slice(0).filter((item: any) => {\r\n\t\t\t\treturn item !== action.field.id;\r\n\t\t\t});\r\n\r\n\t\t\tconst updatedMessages = { ...state.validationMessages };\r\n\r\n\t\t\tif (updatedMessages[action.field.id]) {\r\n\t\t\t\tdelete updatedMessages[action.field.id];\r\n\t\t\t}\r\n\r\n\t\t\treturn {\r\n\t\t\t\t...state,\r\n\t\t\t\tinvalidFields: updatedFields,\r\n\t\t\t\tvalidationMessages: updatedMessages,\r\n\t\t\t};\r\n\t\tdefault:\r\n\t\t\treturn state;\r\n\t}\r\n};\r\n\r\nexport const FormContext = createContext>([]);\r\n\r\nexport const FormProvider: React.FC = ({ initialState, children }) => (\r\n\t\r\n\t\t{children}\r\n\t\r\n);\r\n\r\nexport const useFormValue = () => useContext(FormContext);\r\n","/**\r\n * Field\r\n */\r\n\r\nimport React, { useState, useRef, useEffect } from 'react';\r\nimport { useFieldValidation } from '../hooks/useFieldValidation';\r\nimport { FieldProps } from '../types';\r\n\r\nimport { useFormValue } from '../context/Form.context';\r\nimport clsx from 'clsx';\r\n\r\n//type ValueParam =\r\n\r\nconst Field: React.FC = (props) => {\r\n\tconst {\r\n\t\tclassName,\r\n\t\tplaceholder,\r\n\t\tdescription,\r\n\t\tonFieldChange,\r\n\t\tautoSubmit,\r\n\t\tname,\r\n\t\tid,\r\n\t\tshowError,\r\n\t\tsetFocus,\r\n\t\tvisibleFields,\r\n\t\tnoValidate,\r\n\t\ttype,\r\n\t\tlabel,\r\n\t\tdescribedby,\r\n\t\trequired,\r\n\t\tresetForm,\r\n\t\tpatternMessage,\r\n\t\tvalidationMessage,\r\n\t\tdefaultValue,\r\n\t\t...allProps\r\n\t} = props;\r\n\r\n\tconst [{ invalidFields }, dispatch] = useFormValue();\r\n\tconst [value, setValue] = useState(defaultValue || '');\r\n\tconst [valid, setValid] = useState(false);\r\n\tconst [touched, setTouched] = useState(false);\r\n\tconst fieldRef = useRef(null);\r\n\tconst [validateField, showFieldError, hideFieldError] = useFieldValidation(\r\n\t\tfieldRef,\r\n\t\tprops\r\n\t);\r\n\r\n\tuseEffect(() => {\r\n\t\tconst validatedField = validateField(value);\r\n\t\tconst fieldIsValid = !validatedField.message;\r\n\r\n\t\tif (validatedField.message) {\r\n\t\t\tsetValid(false);\r\n\t\t\tdispatch({ type: 'FIELD_INVALID', field: validatedField });\r\n\t\t} else {\r\n\t\t\tsetValid(true);\r\n\r\n\t\t\tif (invalidFields.includes(validatedField.id)) {\r\n\t\t\t\tdispatch({ type: 'FIELD_VALID', field: validatedField });\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!noValidate) {\r\n\t\t\tif (touched && !fieldIsValid) {\r\n\t\t\t\tshowFieldError(validatedField);\r\n\t\t\t} else if (\r\n\t\t\t\t(showError &&\r\n\t\t\t\t\t!fieldIsValid &&\r\n\t\t\t\t\tvisibleFields &&\r\n\t\t\t\t\tvisibleFields.includes(id)) ||\r\n\t\t\t\t(showError && !fieldIsValid && !visibleFields)\r\n\t\t\t) {\r\n\t\t\t\tsetTouched(true);\r\n\t\t\t\tshowFieldError(validatedField);\r\n\t\t\t} else {\r\n\t\t\t\thideFieldError();\r\n\t\t\t}\r\n\r\n\t\t\tif (setFocus) {\r\n\t\t\t\tfieldRef.current.focus();\r\n\t\t\t}\r\n\t\t}\r\n\t}, [touched, showError, value, setFocus, visibleFields, required]);\r\n\r\n\tconst onChange = (e: React.FormEvent) => {\r\n\t\tconst target = e.target as HTMLFormElement;\r\n\r\n\t\tsetValue(target.value);\r\n\t\tonFieldChange({\r\n\t\t\tname,\r\n\t\t\tvalue: target.value,\r\n\t\t\ttype: 'Field',\r\n\t\t\tautoSubmit,\r\n\t\t});\r\n\t};\r\n\r\n\tconst describedByAttribute = `form${id}__desc${\r\n\t\tdescribedby ? ` ${describedby}` : ''\r\n\t}`;\r\n\r\n\tfunction decrement() {\r\n\t\tsetValue((prevValue) => Number(prevValue) - 1);\r\n\t}\r\n\r\n\tfunction increment() {\r\n\t\tsetValue((prevValue) => Number(prevValue) + 1);\r\n\t}\r\n\treturn (\r\n\t\t
\r\n\t\t\t setTouched(true)}\r\n\t\t\t\tref={fieldRef}\r\n\t\t\t\tid={id}\r\n\t\t\t\taria-describedby={!noValidate ? describedByAttribute : undefined}\r\n\t\t\t\ttype={type === null ? 'text' : type}\r\n\t\t\t\t{...allProps}\r\n\t\t\t/>\r\n\t\t\t{type === 'number' && (\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t-\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t+\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t)}\r\n\t\t
\r\n\t);\r\n};\r\n\r\nexport default Field;\r\n","/**\r\n * TextArea\r\n */\r\n\r\nimport React, { useState, useRef, useEffect } from 'react';\r\nimport { TextAreaProps } from '../types';\r\nimport { useFieldValidation } from '../hooks/useFieldValidation';\r\nimport { useFormValue } from '../context/Form.context';\r\nimport clsx from 'clsx';\r\n\r\nconst TextArea: React.FC = (props) => {\r\n\tconst {\r\n\t\tclassName,\r\n\t\tid,\r\n\t\tdescription,\r\n\t\tname,\r\n\t\tplaceholder,\r\n\t\tdefaultValue,\r\n\t\trequired,\r\n\t\tdisabled,\r\n\t\tautoSubmit,\r\n\t\tonFieldChange,\r\n\t\tshowError,\r\n\t\tvisibleFields,\r\n\t} = props;\r\n\r\n\tconst [{ invalidFields }, dispatch] = useFormValue();\r\n\tconst [value, setValue] = useState(defaultValue || '');\r\n\tconst [valid, setValid] = useState(false);\r\n\tconst [touched, setTouched] = useState(false);\r\n\tconst fieldRef = useRef(null);\r\n\tconst [validateField, showFieldError, hideFieldError] = useFieldValidation(\r\n\t\tfieldRef,\r\n\t\tprops\r\n\t);\r\n\r\n\tuseEffect(() => {\r\n\t\tconst validatedField = validateField(value);\r\n\t\tconst fieldIsValid = !validatedField.message;\r\n\r\n\t\tif (validatedField.message) {\r\n\t\t\tsetValid(false);\r\n\t\t\tdispatch({ type: 'FIELD_INVALID', field: validatedField });\r\n\t\t} else {\r\n\t\t\tsetValid(true);\r\n\r\n\t\t\tif (invalidFields.includes(validatedField.id)) {\r\n\t\t\t\tdispatch({ type: 'FIELD_VALID', field: validatedField });\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (touched && !fieldIsValid) {\r\n\t\t\tshowFieldError(validatedField);\r\n\t\t} else if (\r\n\t\t\t(showError &&\r\n\t\t\t\t!fieldIsValid &&\r\n\t\t\t\tvisibleFields &&\r\n\t\t\t\tvisibleFields.includes(id)) ||\r\n\t\t\t(showError && !fieldIsValid && !visibleFields)\r\n\t\t) {\r\n\t\t\tsetTouched(true);\r\n\t\t\tshowFieldError(validatedField);\r\n\t\t} else {\r\n\t\t\thideFieldError();\r\n\t\t}\r\n\t}, [touched, showError, value]);\r\n\r\n\tconst onChange = (e: React.FormEvent) => {\r\n\t\tconst target = e.target as HTMLFormElement;\r\n\r\n\t\tsetValue(target.value);\r\n\t\tonFieldChange({\r\n\t\t\tname,\r\n\t\t\tvalue: target.value,\r\n\t\t\ttype: 'TextArea',\r\n\t\t\tautoSubmit,\r\n\t\t});\r\n\t};\r\n\r\n\treturn (\r\n\t\t setTouched(true)}\r\n\t\t\tref={fieldRef}\r\n\t\t\taria-describedby={`form${id}__desc`}\r\n\t\t/>\r\n\t);\r\n};\r\n\r\nexport default TextArea;\r\n","/**\r\n * Checkbox\r\n */\r\n\r\nimport React, { useState, useEffect, useRef } from 'react';\r\nimport { useFieldValidation } from '../hooks/useFieldValidation';\r\nimport { useFormValue } from '../context/Form.context';\r\nimport { CheckboxProps } from '../types';\r\n\r\n/**\r\n * Checks if the checkbox should be checked.\r\n */\r\nconst shouldBeChecked = (value: string, defaultValue: any) => {\r\n\tif (Array.isArray(defaultValue)) {\r\n\t\treturn defaultValue.indexOf(value) !== -1;\r\n\t} else {\r\n\t\treturn value === defaultValue;\r\n\t}\r\n};\r\n\r\nconst Checkbox: React.FC = (props) => {\r\n\tconst {\r\n\t\tid,\r\n\t\tname,\r\n\t\tonFieldChange,\r\n\t\tautoSubmit,\r\n\t\tvalue,\r\n\t\tsingle,\r\n\t\tshowError,\r\n\t\tclassName,\r\n\t\tvisibleFields,\r\n\t\tdisabled,\r\n\t\tindex,\r\n\t} = props;\r\n\tconst [checked, setChecked] = useState(\r\n\t\tshouldBeChecked(props.value, props.defaultValue)\r\n\t);\r\n\r\n\tconst [{ invalidFields }, dispatch] = useFormValue();\r\n\tconst [valid, setValid] = useState(false);\r\n\tconst [touched, setTouched] = useState(false);\r\n\tconst fieldRef = useRef(null);\r\n\tconst [validateField, showFieldError, hideFieldError] = useFieldValidation(\r\n\t\tfieldRef,\r\n\t\tprops\r\n\t);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (single) {\r\n\t\t\tconst validatedField = validateField(checked);\r\n\r\n\t\t\tif (validatedField.message) {\r\n\t\t\t\tsetValid(false);\r\n\t\t\t\tdispatch({ type: 'FIELD_INVALID', field: validatedField });\r\n\t\t\t} else {\r\n\t\t\t\tsetValid(true);\r\n\r\n\t\t\t\tif (invalidFields.includes(validatedField.id)) {\r\n\t\t\t\t\tdispatch({ type: 'FIELD_VALID', field: validatedField });\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (touched && !valid) {\r\n\t\t\t\tshowFieldError(validatedField);\r\n\t\t\t} else if (\r\n\t\t\t\t(showError && !valid && visibleFields && visibleFields.includes(id)) ||\r\n\t\t\t\t(showError && !valid && !visibleFields)\r\n\t\t\t) {\r\n\t\t\t\tsetTouched(true);\r\n\t\t\t\tshowFieldError(validatedField);\r\n\t\t\t} else {\r\n\t\t\t\thideFieldError();\r\n\t\t\t}\r\n\t\t}\r\n\t}, [touched, showError, invalidFields, visibleFields, checked]);\r\n\r\n\tconst onChange = (e: React.FormEvent) => {\r\n\t\tconst target = e.target as HTMLFormElement;\r\n\r\n\t\tsetChecked(target.checked);\r\n\t\tif (!touched) {\r\n\t\t\tsetTouched(true);\r\n\t\t}\r\n\r\n\t\tonFieldChange({\r\n\t\t\tname,\r\n\t\t\tvalue: target.value,\r\n\t\t\tchecked: target.checked,\r\n\t\t\tautoSubmit,\r\n\t\t\ttype: 'Checkbox',\r\n\t\t});\r\n\t};\r\n\r\n\treturn (\r\n\t\t= 0 ? `${id}-${index}` : id}\r\n\t\t\tname={name}\r\n\t\t\tclassName={className}\r\n\t\t\tvalue={value}\r\n\t\t\tchecked={checked}\r\n\t\t\tdisabled={disabled}\r\n\t\t\tonChange={onChange}\r\n\t\t\tref={fieldRef}\r\n\t\t\taria-describedby={`form${id}__desc`}\r\n\t\t\taria-invalid={single ? !valid : undefined}\r\n\t\t/>\r\n\t);\r\n};\r\n\r\nexport default Checkbox;\r\n","/**\r\n * RadioButton\r\n */\r\n\r\nimport React, { useState, useEffect, useRef } from 'react';\r\nimport { useFieldValidation } from '../hooks/useFieldValidation';\r\nimport { useFormValue } from '../context/Form.context';\r\nimport { RadioButtonProps } from '../types';\r\n\r\nconst RadioButton: React.FC = (props) => {\r\n\tconst {\r\n\t\tid,\r\n\t\tname,\r\n\t\tdefaultValue,\r\n\t\tonFieldChange,\r\n\t\tautoSubmit,\r\n\t\tvalue,\r\n\t\tsingle,\r\n\t\tshowError,\r\n\t\tdisabled,\r\n\t\tclassName,\r\n\t\tvisibleFields,\r\n\t\tindex,\r\n\t} = props;\r\n\tconst [checked, setChecked] = useState('');\r\n\r\n\tconst [{ invalidFields }, dispatch] = useFormValue();\r\n\tconst [valid, setValid] = useState(false);\r\n\tconst [touched, setTouched] = useState(false);\r\n\tconst fieldRef = useRef(null);\r\n\tconst [validateField, showFieldError, hideFieldError] = useFieldValidation(\r\n\t\tfieldRef,\r\n\t\tprops\r\n\t);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (single) {\r\n\t\t\tconst validatedField = validateField(checked);\r\n\r\n\t\t\tif (validatedField.message) {\r\n\t\t\t\tsetValid(false);\r\n\t\t\t\tdispatch({ type: 'FIELD_INVALID', field: validatedField });\r\n\t\t\t} else {\r\n\t\t\t\tsetValid(true);\r\n\r\n\t\t\t\tif (invalidFields.includes(validatedField.id)) {\r\n\t\t\t\t\tdispatch({ type: 'FIELD_VALID', field: validatedField });\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (touched && !valid) {\r\n\t\t\t\tshowFieldError(validatedField);\r\n\t\t\t} else if (\r\n\t\t\t\t(showError && !valid && visibleFields && visibleFields.includes(id)) ||\r\n\t\t\t\t(showError && !valid && !visibleFields)\r\n\t\t\t) {\r\n\t\t\t\tsetTouched(true);\r\n\t\t\t\tshowFieldError(validatedField);\r\n\t\t\t} else {\r\n\t\t\t\thideFieldError();\r\n\t\t\t}\r\n\t\t}\r\n\t}, [touched, showError, invalidFields, visibleFields, checked]);\r\n\r\n\tconst onChange = (e: React.FormEvent) => {\r\n\t\tconst target = e.target as HTMLFormElement;\r\n\r\n\t\tsetChecked(target.value);\r\n\t\tif (!touched) {\r\n\t\t\tsetTouched(true);\r\n\t\t}\r\n\r\n\t\tonFieldChange({\r\n\t\t\tname,\r\n\t\t\tvalue: target.value,\r\n\t\t\ttype: 'RadioButton',\r\n\t\t\tautoSubmit,\r\n\t\t});\r\n\t};\r\n\r\n\treturn (\r\n\t\t= 0 ? `${id}-${index}` : id}\r\n\t\t\tname={name}\r\n\t\t\tvalue={value}\r\n\t\t\tdisabled={disabled}\r\n\t\t\tclassName={className}\r\n\t\t\tdefaultChecked={value === defaultValue}\r\n\t\t\tref={fieldRef}\r\n\t\t\tonChange={onChange}\r\n\t\t\taria-describedby={`form${id}__desc`}\r\n\t\t\taria-invalid={single ? !valid : undefined}\r\n\t\t/>\r\n\t);\r\n};\r\n\r\nexport default RadioButton;\r\n","/**\r\n * Select\r\n */\r\n\r\nimport React, { useRef, useState, useEffect } from 'react';\r\nimport { useFieldValidation } from '../hooks/useFieldValidation';\r\nimport { useFormValue } from '../context/Form.context';\r\nimport { SelectProps } from '../types';\r\n\r\nconst Select: React.FC = (props) => {\r\n\tconst {\r\n\t\tid,\r\n\t\tname,\r\n\t\toptions,\r\n\t\tdefaultValue,\r\n\t\tdescription,\r\n\t\tonFieldChange,\r\n\t\tautoSubmit,\r\n\t\tshowError,\r\n\t\tvisibleFields,\r\n\t\tclassName,\r\n\t} = props;\r\n\r\n\tconst [{ invalidFields }, dispatch] = useFormValue();\r\n\tconst [value, setValue] = useState(defaultValue || options[0] || '');\r\n\tconst [valid, setValid] = useState(false);\r\n\tconst [touched, setTouched] = useState(false);\r\n\tconst fieldRef = useRef(null);\r\n\r\n\tconst [validateField, showFieldError, hideFieldError] = useFieldValidation(\r\n\t\tfieldRef,\r\n\t\tprops\r\n\t);\r\n\r\n\tuseEffect(() => {\r\n\t\tconst validatedField: any = validateField(value);\r\n\r\n\t\tif (validatedField.message) {\r\n\t\t\tsetValid(false);\r\n\t\t\tdispatch({ type: 'FIELD_INVALID', field: validatedField });\r\n\t\t} else {\r\n\t\t\tsetValid(true);\r\n\r\n\t\t\tif (invalidFields.includes(validatedField.id)) {\r\n\t\t\t\tdispatch({ type: 'FIELD_VALID', field: validatedField });\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (touched && !valid) {\r\n\t\t\tshowFieldError(validatedField);\r\n\t\t} else if (\r\n\t\t\t(showError && !valid && visibleFields && visibleFields.includes(id)) ||\r\n\t\t\t(showError && !valid && !visibleFields)\r\n\t\t) {\r\n\t\t\tsetTouched(true);\r\n\t\t\tshowFieldError(validatedField);\r\n\t\t} else {\r\n\t\t\thideFieldError();\r\n\t\t}\r\n\t}, [touched, showError, value, invalidFields, visibleFields]);\r\n\r\n\tconst onChange = (e: React.FormEvent) => {\r\n\t\tconst target = e.target as HTMLFormElement;\r\n\t\tconst selectedOption = target.options[target.selectedIndex];\r\n\r\n\t\tsetValue(selectedOption.value || selectedOption.caption);\r\n\t\tonFieldChange({\r\n\t\t\tname,\r\n\t\t\tvalue: selectedOption.value || selectedOption.caption,\r\n\t\t\ttype: 'Select',\r\n\t\t\tautoSubmit,\r\n\t\t});\r\n\t};\r\n\r\n\treturn (\r\n\t\t setTouched(true)}\r\n\t\t\tref={fieldRef}\r\n\t\t\taria-describedby={`form${id}__desc`}\r\n\t\t\tclassName={className}\r\n\t\t>\r\n\t\t\t{options.map(({ value, caption }) => {\r\n\t\t\t\treturn (\r\n\t\t\t\t\t\r\n\t\t\t\t);\r\n\t\t\t})}\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default Select;\r\n","/**\r\n * Multiselect\r\n */\r\n\r\nimport React from 'react';\r\nimport { MultiselectProps, Option } from '../types';\r\nimport { Fieldset, Checkbox } from '../index';\r\n\r\nconst Multiselect: React.FC = ({\r\n\tid,\r\n\tdescription,\r\n\trequired,\r\n\tlabel,\r\n\tisInvalid,\r\n\tvalidationMessage,\r\n\toptions,\r\n\tonFieldChange,\r\n}) => {\r\n\treturn (\r\n\t\t\r\n\t\t\t{options.map((opt: Option, index: number) => {\r\n\t\t\t\treturn (\r\n\t\t\t\t\t\r\n\t\t\t\t);\r\n\t\t\t})}\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default Multiselect;\r\n","/**\r\n * Button\r\n */\r\n\r\nimport React from 'react';\r\nimport { ButtonProps } from '../types';\r\n\r\nconst Button: React.FC = ({\r\n\ttype = 'button',\r\n\tonFieldChange,\r\n\tresetForm,\r\n\tshowError,\r\n\tvisibleFields,\r\n\tchildren,\r\n\tclassName,\r\n\t...propsToTransfer\r\n}) => {\r\n\tif (type === 'reset') {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t{children}\r\n\t\t\t\r\n\t\t);\r\n\t} else {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t);\r\n\t}\r\n};\r\n\r\nexport default Button;\r\n","/**\r\n * Tooltip\r\n */\r\n\r\nimport React, { useState, useRef } from 'react';\r\nimport clsx from 'clsx';\r\n\r\ninterface Props {\r\n\t/** This is the text that goes in the tooltip. */\r\n\ttext?: string;\r\n\r\n\t/** Defines CSS for container element */\r\n\tcontainerStyle?: string;\r\n\r\n\t/** Defines CSS for toolTip element */\r\n\ttoolTipStyle?: string;\r\n}\r\n\r\ninterface Position {\r\n\tx: number;\r\n\ty: number;\r\n}\r\n\r\n/** Main description for this component. */\r\nconst Tooltip: React.FC = ({\r\n\ttext,\r\n\tcontainerStyle,\r\n\ttoolTipStyle,\r\n\tchildren,\r\n}) => {\r\n\tconst [pos, setPos] = useState({ x: 0, y: 0 });\r\n\tconst [show, setShow] = useState(false);\r\n\r\n\tlet timer: NodeJS.Timeout;\r\n\tlet timerRef = useRef(null);\r\n\tlet toolTipRef = useRef(null);\r\n\tlet toolTipEl = useRef(null);\r\n\r\n\tconst handleMouse = (e: any) => {\r\n\t\te.stopPropagation();\r\n\t\te.preventDefault();\r\n\t\tswitch (e.type) {\r\n\t\t\tcase 'mouseenter':\r\n\t\t\t\tsetShow(true);\r\n\t\t\t\ttoolTipRef.current = true;\r\n\t\t\t\treturn;\r\n\t\t\tcase 'mouseover':\r\n\t\t\t\tif (!show) {\r\n\t\t\t\t\ttimer = setTimeout(() => {\r\n\t\t\t\t\t\tsetShow(true);\r\n\t\t\t\t\t\ttoolTipRef.current = true;\r\n\t\t\t\t\t\tif (toolTipEl.current?.clientHeight) {\r\n\t\t\t\t\t\t\tlet windowBottom = window.innerHeight + window.pageYOffset;\r\n\t\t\t\t\t\t\tlet breakpoint = pos.y + toolTipEl.current?.clientHeight;\r\n\t\t\t\t\t\t\tif (breakpoint > windowBottom) {\r\n\t\t\t\t\t\t\t\tconst position = {\r\n\t\t\t\t\t\t\t\t\tx: pos.x,\r\n\t\t\t\t\t\t\t\t\ty: pos.y - toolTipEl.current?.clientHeight,\r\n\t\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\t\tsetPos(position);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}, 500);\r\n\t\t\t\t\ttimerRef.current = timer;\r\n\t\t\t\t}\r\n\t\t\t\treturn;\r\n\t\t\tcase 'mouseleave':\r\n\t\t\t\tif (toolTipRef.current) {\r\n\t\t\t\t\tsetShow(false);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tsetShow(false);\r\n\t\t\t\tclearTimeout(timerRef.current);\r\n\t\t\t\treturn;\r\n\t\t\tcase 'mouseout':\r\n\t\t\t\tsetShow(false);\r\n\t\t\t\ttoolTipRef.current = false;\r\n\t\t\t\treturn;\r\n\t\t\tdefault:\r\n\t\t\t\treturn;\r\n\t\t}\r\n\t};\r\n\r\n\tconst handleMove = (e: any) => {\r\n\t\te.stopPropagation();\r\n\t\tif (!show) {\r\n\t\t\tlet x = e.clientX;\r\n\t\t\tlet y = e.clientY + window.pageYOffset;\r\n\r\n\t\t\tconst currentPosition = { x, y };\r\n\t\t\tsetPos(currentPosition);\r\n\t\t}\r\n\t};\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t\r\n\t\t\t\t{children}\r\n\t\t\t\r\n\t\t\t{show && (\r\n\t\t\t\t\r\n\t\t\t\t\t{text}\r\n\t\t\t\t\r\n\t\t\t)}\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default Tooltip;\r\n","import React from 'react';\r\nimport { LabelProps, ErrorSpanProps } from './types';\r\nimport clsx from 'clsx';\r\nimport Tooltip from 'components/Tooltip';\r\n\r\nexport const Label: React.FC = ({\r\n\thtmlFor,\r\n\trequired,\r\n\tchildren,\r\n\thelpText,\r\n}) => {\r\n\treturn (\r\n\t\t\r\n\t\t\t{children}\r\n\t\t\t{required && *}\r\n\t\t\t{helpText && (\r\n\t\t\t\t\r\n\t\t\t\t\t?\r\n\t\t\t\t\r\n\t\t\t)}\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport const ErrorSpan: React.FC = ({\r\n\tfieldId,\r\n\tinvalid,\r\n\tchildren,\r\n\tclassName,\r\n\t...props\r\n}) => (\r\n\t\r\n\t\t{children}\r\n\t\r\n);\r\n","/**\r\n * Fieldset\r\n */\r\n\r\nimport React, { useState, useRef, useEffect } from 'react';\r\nimport { useFieldValidation } from '../hooks/useFieldValidation';\r\nimport { useFormValue } from '../context/Form.context';\r\nimport { FieldsetProps } from '../types';\r\nimport { ErrorSpan } from '../Labels';\r\nimport Tooltip from 'components/Tooltip';\r\n\r\nconst Fieldset: React.FC = (props) => {\r\n\tconst {\r\n\t\tlabel,\r\n\t\tdescription,\r\n\t\tchildren,\r\n\t\tid,\r\n\t\trequired,\r\n\t\tvalidationMessage,\r\n\t\tisInvalid,\r\n\t\tshowError,\r\n\t\tvisibleFields,\r\n\t\tclassName,\r\n\t\thelpText,\r\n\t} = props;\r\n\r\n\tconst [{ invalidFields }, dispatch] = useFormValue();\r\n\tconst [valid, setValid] = useState(false);\r\n\tconst [touched, setTouched] = useState(false);\r\n\tconst fieldRef = useRef(null);\r\n\tconst [validateField, showFieldError, hideFieldError] = useFieldValidation(\r\n\t\tfieldRef,\r\n\t\tprops\r\n\t);\r\n\r\n\tuseEffect(() => {\r\n\t\tconst validatedField = validateField('fieldset');\r\n\r\n\t\tif (validatedField.message) {\r\n\t\t\tsetValid(false);\r\n\t\t\tdispatch({ type: 'FIELD_INVALID', field: validatedField });\r\n\t\t} else {\r\n\t\t\tsetValid(true);\r\n\r\n\t\t\tif (invalidFields.includes(validatedField.id)) {\r\n\t\t\t\tdispatch({ type: 'FIELD_VALID', field: validatedField });\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst partOfVisibleFields =\r\n\t\t\tvisibleFields &&\r\n\t\t\tvisibleFields.filter((fieldName) => fieldName.includes(id));\r\n\r\n\t\tif (touched && !valid) {\r\n\t\t\tshowFieldError(validatedField);\r\n\t\t} else if (\r\n\t\t\t(showError &&\r\n\t\t\t\t!valid &&\r\n\t\t\t\tvisibleFields &&\r\n\t\t\t\tpartOfVisibleFields &&\r\n\t\t\t\tpartOfVisibleFields.length > 0) ||\r\n\t\t\t(showError && !valid && !visibleFields)\r\n\t\t) {\r\n\t\t\tsetTouched(true);\r\n\t\t\tshowFieldError(validatedField);\r\n\t\t} else {\r\n\t\t\thideFieldError();\r\n\t\t}\r\n\t}, [\r\n\t\tvalid,\r\n\t\tdispatch,\r\n\t\ttouched,\r\n\t\tshowError,\r\n\t\tsetValid,\r\n\t\tvalidateField,\r\n\t\tshowFieldError,\r\n\t\thideFieldError,\r\n\t\tinvalidFields,\r\n\t\tvisibleFields,\r\n\t\tid,\r\n\t]);\r\n\r\n\treturn (\r\n\t\t setTouched(true)}\r\n\t\t>\r\n\t\t\t\r\n\t\t\t\t{label}\r\n\t\t\t\t{required && *}\r\n\t\t\t\t{helpText && (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t?\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\t
{children}
\r\n\t\t\t
\r\n\r\n\t\t\t\r\n\t\t\t\t{validationMessage || ''}\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default Fieldset;\r\n","/**\r\n * FormButtons\r\n */\r\n\r\nimport React from 'react';\r\nimport { Button } from 'components/Form';\r\nimport StandardButton from 'components/Button';\r\n\r\ninterface NextButtonProps {\r\n\tnextId?: string;\r\n\tisExpanded: boolean;\r\n\tid: string | number;\r\n}\r\n\r\ninterface PrevButtonProps {\r\n\tpreviousIndex?: number;\r\n\tpreviousId?: string;\r\n\tisExpanded: boolean;\r\n\tid: string | number;\r\n\tonPrevious: any;\r\n}\r\n\r\nconst NextButton: React.FC = ({ nextId, isExpanded, id }) => {\r\n\treturn (\r\n\t\t\r\n\t\t\tNästa\r\n\t\t\r\n\t);\r\n};\r\n\r\nconst PreviousButton: React.FC = ({\r\n\tpreviousIndex,\r\n\tpreviousId,\r\n\tisExpanded,\r\n\tid,\r\n\tonPrevious,\r\n}) => (\r\n\t\r\n\t\t\tonPrevious({\r\n\t\t\t\tcurrentStep: previousIndex,\r\n\t\t\t\tinvalidFields: [],\r\n\t\t\t})\r\n\t\t}\r\n\t>\r\n\t\tTillbaka\r\n\t\r\n);\r\n\r\nexport { PreviousButton, NextButton };\r\n","/**\r\n * FormStep\r\n */\r\n\r\nimport React from 'react';\r\nimport { NextButton, PreviousButton } from './FormButtons';\r\n\r\ntype Step = {\r\n\ttitle: string;\r\n\tdescription?: string;\r\n\tindex: number;\r\n};\r\n\r\ninterface FormStepProps {\r\n\t/** Current step data */\r\n\tstep: Step;\r\n\r\n\t/** Current step number */\r\n\tcurrentStep: number;\r\n\r\n\t/** Number of steps in Form */\r\n\tnrOfSteps: number;\r\n\r\n\t/** Form id */\r\n\tformId: string;\r\n\r\n\t/** Callback function when PreviousButton is clicked */\r\n\tonPrevious: any;\r\n}\r\n\r\nconst FormStep: React.FC = ({\r\n\tstep,\r\n\tformId,\r\n\tnrOfSteps,\r\n\tcurrentStep,\r\n\tchildren,\r\n\tonPrevious,\r\n}) => {\r\n\tconst { title, description, index } = step;\r\n\r\n\tconst stepId = `form-${formId}-step-${index}`;\r\n\tconst isFirstStep = index === 0;\r\n\tconst isLastStep = index + 2 === nrOfSteps;\r\n\r\n\tconst previousIndex = isFirstStep ? undefined : index - 1;\r\n\tconst previousId = isFirstStep\r\n\t\t? undefined\r\n\t\t: `form-${formId}-step-${previousIndex}`;\r\n\r\n\tconst nextIndex = isLastStep ? undefined : index + 1;\r\n\tconst nextId = isLastStep ? undefined : `form-${formId}-step-${nextIndex}`;\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t{title && (\r\n\t\t\t\t
\r\n\t\t\t\t\t

{title}

\r\n\t\t\t\t\t{description &&

{description}

}\r\n\t\t\t\t
\r\n\t\t\t)}\r\n\t\t\t{children}\r\n\r\n\t\t\t
\r\n\t\t\t\t{!isFirstStep && (\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t\t{!isLastStep && (\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t
\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default FormStep;\r\n","import React from 'react';\r\nimport {\r\n\tField,\r\n\tTextArea,\r\n\tCheckbox,\r\n\tRadioButton,\r\n\tSelect,\r\n\tMultiselect,\r\n\tButton,\r\n\tFieldset,\r\n} from '../index';\r\nimport FormStep from 'components/EpiForms/FormStep';\r\n\r\nconst isValidFormElement = (element: JSX.Element) => {\r\n\tswitch (element.type) {\r\n\t\tcase Checkbox:\r\n\t\tcase Field:\r\n\t\tcase TextArea:\r\n\t\tcase RadioButton:\r\n\t\tcase Button:\r\n\t\tcase Select:\r\n\t\tcase Multiselect:\r\n\t\tcase Fieldset:\r\n\t\tcase FormStep:\r\n\t\t\treturn true;\r\n\t\tdefault:\r\n\t\t\treturn false;\r\n\t}\r\n};\r\n\r\n/**\r\n * Custom hook for cloning pand rendering children with custom props in form\r\n */\r\nexport const useChildClones = (\r\n\tshowError: boolean,\r\n\tvisibleFields: string[] | boolean\r\n) => {\r\n\tconst formFieldNameCounter: any = {};\r\n\r\n\tconst renderChildren = (\r\n\t\tchildren: any,\r\n\t\tinitialValues: any,\r\n\t\tresetForm: any,\r\n\t\tonFieldChange: any\r\n\t) => {\r\n\t\tif (!children) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tconst renderedChildren = React.Children.map(children, (child) => {\r\n\t\t\tconst props: any = child && child.props ? { ...child.props } : {};\r\n\r\n\t\t\tif (!React.isValidElement(child)) {\r\n\t\t\t\treturn child;\r\n\t\t\t}\r\n\r\n\t\t\tif (isValidFormElement(child)) {\r\n\t\t\t\tconst { name } = props;\r\n\r\n\t\t\t\tprops.onFieldChange = onFieldChange;\r\n\t\t\t\tprops.resetForm = resetForm;\r\n\t\t\t\tprops.showError = showError;\r\n\t\t\t\tprops.visibleFields = visibleFields;\r\n\r\n\t\t\t\tif (initialValues[name]) {\r\n\t\t\t\t\tprops.defaultValue = initialValues[name];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!formFieldNameCounter[name]) {\r\n\t\t\t\t\tformFieldNameCounter[name] = 1;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tformFieldNameCounter[name] += 1;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (props && props.children) {\r\n\t\t\t\tprops.children = renderChildren(\r\n\t\t\t\t\tprops.children,\r\n\t\t\t\t\tinitialValues,\r\n\t\t\t\t\tresetForm,\r\n\t\t\t\t\tonFieldChange\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\treturn React.cloneElement(child, props);\r\n\t\t});\r\n\r\n\t\treturn renderedChildren.length === 1\r\n\t\t\t? renderedChildren[0]\r\n\t\t\t: renderedChildren;\r\n\t};\r\n\r\n\treturn [renderChildren, formFieldNameCounter];\r\n};\r\n","/**\r\n * Form\r\n */\r\n\r\nimport React, { useState, useRef } from 'react';\r\nimport { useFormValue } from './context/Form.context';\r\nimport { useChildClones } from './hooks/useChildClones';\r\nimport { FormProps } from './types';\r\n\r\ninterface Field {\r\n\tname: string;\r\n\tvalue: string;\r\n\ttype?: string;\r\n\tautoSubmit?: boolean;\r\n\tchecked?: boolean;\r\n}\r\n\r\n// Generates a unique key (used by the reset-method).\r\nconst getUniqueKey = () => '_' + Math.random().toString(36).substr(2, 9);\r\n\r\nconst Form: React.FC = ({\r\n\tchildren,\r\n\tmethod = 'post',\r\n\taction = '',\r\n\tenctype = 'application/x-www-form-urlencoded',\r\n\tinitialValues,\r\n\tclassName,\r\n\tid,\r\n\tonChange,\r\n\tonSubmit,\r\n\tsendDataType,\r\n\tdefaultSubmit,\r\n\tmultiStep,\r\n\tcurrentStep,\r\n\tgetStepFields,\r\n}) => {\r\n\tconst [formKey, setFormKey] = useState(getUniqueKey());\r\n\tconst [showError, setShowError] = useState(false);\r\n\tconst [visibleFields, setVisibleFields] = useState(false);\r\n\tconst formRef = useRef(null);\r\n\tlet [\r\n\t\t{ values, invalidFields, validationMessages },\r\n\t\tdispatch,\r\n\t] = useFormValue();\r\n\tconst [renderChildren, formFieldNameCounter] = useChildClones(\r\n\t\tshowError,\r\n\t\tvisibleFields\r\n\t);\r\n\r\n\tconst resetForm = () => setFormKey(getUniqueKey());\r\n\r\n\tconst onFieldChange = (field: Field) => {\r\n\t\tconst { name, value, type, autoSubmit, checked } = field;\r\n\r\n\t\tconst valueIsArray =\r\n\t\t\tvalues[name] && Array.isArray(values[name]) && checked !== undefined;\r\n\r\n\t\tlet newValue: string[] | string = value;\r\n\r\n\t\t// Handle checkboxes when they have array values\r\n\t\tif (type === 'Checkbox') {\r\n\t\t\tif (valueIsArray) {\r\n\t\t\t\tnewValue = checked\r\n\t\t\t\t\t? [...values[name], value]\r\n\t\t\t\t\t: values[name].filter((item: string) => item !== value);\r\n\t\t\t} else if (formFieldNameCounter[name] > 1 && checked !== undefined) {\r\n\t\t\t\tnewValue = [value];\r\n\t\t\t} else if (checked === false) {\r\n\t\t\t\tnewValue = '';\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tdispatch({ type: 'FORM_UPDATE', values: { ...values, [name]: newValue } });\r\n\r\n\t\tif (autoSubmit) {\r\n\t\t\tonSubmit();\r\n\t\t}\r\n\t\tif (onChange) {\r\n\t\t\tonChange({ name, value: newValue }, { ...values, [name]: newValue });\r\n\t\t}\r\n\t};\r\n\r\n\tconst handleOnSubmit = (e: React.FormEvent) => {\r\n\t\tif (sendDataType === 'formdata' && typeof FormData === 'undefined') {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tif (e && !defaultSubmit) {\r\n\t\t\te.preventDefault();\r\n\t\t}\r\n\r\n\t\tlet index = null;\r\n\t\tlet messages = { ...validationMessages };\r\n\t\tlet updatedInvalidFields = invalidFields;\r\n\r\n\t\tif (multiStep) {\r\n\t\t\tconst [formData, stepIndex, currentStepFields] = getStepFields(\r\n\t\t\t\tcurrentStep,\r\n\t\t\t\tid\r\n\t\t\t);\r\n\t\t\tsetVisibleFields(currentStepFields);\r\n\r\n\t\t\tvalues = formData;\r\n\t\t\tindex = stepIndex;\r\n\t\t\tupdatedInvalidFields = invalidFields.filter((fieldId: string) =>\r\n\t\t\t\tcurrentStepFields.some((field: string) => field.indexOf(fieldId) >= 0)\r\n\t\t\t);\r\n\r\n\t\t\tmessages = Object.keys(validationMessages)\r\n\t\t\t\t.filter((key) =>\r\n\t\t\t\t\tcurrentStepFields.some((field: string) => field.indexOf(key) >= 0)\r\n\t\t\t\t)\r\n\t\t\t\t.reduce((obj, key) => {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\t...obj,\r\n\t\t\t\t\t\t[key]: validationMessages[key],\r\n\t\t\t\t\t};\r\n\t\t\t\t}, {});\r\n\t\t} else if (sendDataType === 'formdata') {\r\n\t\t\tvalues = new FormData(formRef.current);\r\n\t\t}\r\n\r\n\t\tif (updatedInvalidFields.length > 0) {\r\n\t\t\tsetShowError(true);\r\n\t\t}\r\n\r\n\t\tif (onSubmit) {\r\n\t\t\tonSubmit(values, index, messages, updatedInvalidFields);\r\n\t\t}\r\n\t};\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t{renderChildren(children, initialValues, resetForm, onFieldChange)}\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default Form;\r\n","import React from 'react';\r\nimport { FormProvider } from './context/Form.context';\r\nimport Form from './Form';\r\nimport { FormProps } from './types';\r\n\r\nconst FormComponent: React.FC = ({\r\n\tinitialValues,\r\n\tchildren,\r\n\t...props\r\n}) => {\r\n\tconst initialState = {\r\n\t\tvalues: initialValues || {},\r\n\t\tvalidationMessages: {},\r\n\t\tinvalidFields: [],\r\n\t};\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t
\r\n\t\t\t\t{children}\r\n\t\t\t
\r\n\t\t
\r\n\t);\r\n};\r\n\r\nexport default FormComponent;\r\n","import React from 'react';\r\n\r\nimport { checkDependency } from 'components/EpiForms/EpiForms.dependencies';\r\nimport { checkFieldActions } from 'components/EpiForms/EpiForms.actions';\r\nimport {\r\n\tField,\r\n\tTextArea,\r\n\tSelect,\r\n\tMultiselect,\r\n\tRadioButton,\r\n\tCheckbox,\r\n\tFieldset,\r\n\tButton,\r\n\tLabel,\r\n\tErrorSpan,\r\n} from 'components/Form';\r\n\r\ninterface Field {\r\n\tid: string;\r\n\tlabel: string;\r\n\trequired?: boolean;\r\n\t[htmlAttributes: string]: any;\r\n}\r\n\r\ninterface RenderFunction {\r\n\t(field: Field): JSX.Element | null;\r\n}\r\n\r\nexport const useFormRenderer = (fields: any, state: any, dependencies: any) => {\r\n\tconst { invalidFields, validationMessages, isLoading, values } = state;\r\n\tlet fieldActionExists = false;\r\n\r\n\tconst renderFormElement = (fieldName: string) => {\r\n\t\tconst field = fields[fieldName];\r\n\t\tconst { name, text } = fields[fieldName];\r\n\t\tlet { type } = fields[fieldName];\r\n\r\n\t\tif (type === null) {\r\n\t\t\ttype = 'text';\r\n\t\t}\r\n\r\n\t\tconst renderAsFieldset =\r\n\t\t\t(type === 'radio' || type === 'checkbox') && field.options.length > 1;\r\n\t\tconst singleCheckboxOrRadio =\r\n\t\t\t(type === 'radio' || type === 'checkbox') && field.options.length === 1;\r\n\r\n\t\tconst fieldHasDependency =\r\n\t\t\tdependencies &&\r\n\t\t\tdependencies.filter((field: any) => field.fieldName === name).length > 0;\r\n\r\n\t\tif (fieldHasDependency) {\r\n\t\t\tconst fieldShouldBeRendered = checkDependency(name, dependencies, values);\r\n\r\n\t\t\tif (!fieldShouldBeRendered) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (renderAsFieldset) {\r\n\t\t\treturn
{renderFieldset(field)}
;\r\n\t\t} else if (singleCheckboxOrRadio) {\r\n\t\t\treturn (\r\n\t\t\t\t
\r\n\t\t\t\t\t{renderSingleInput(field)}\r\n\t\t\t\t\t{renderFieldError(field.name)}\r\n\t\t\t\t
\r\n\t\t\t);\r\n\t\t} else if (type === 'ParagraphText') {\r\n\t\t\treturn
;\r\n\t\t} else {\r\n\t\t\tlet typeValue = '';\r\n\t\t\tif (field.type === 'reset' || field.type === 'submit') {\r\n\t\t\t\ttypeValue = field.type === 'reset' ? 'float-left' : 'float-right';\r\n\t\t\t}\r\n\t\t\tconst isBtnTypeResetOrSubmit =\r\n\t\t\t\tfield.type === 'reset' || field.type === 'submit';\r\n\t\t\treturn (\r\n\t\t\t\t<>\r\n\t\t\t\t\t{isBtnTypeResetOrSubmit ? (\r\n\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t{field.type === 'reset' && (\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t{field.type !== 'multiselect' && renderLabel(field)}\r\n\t\t\t\t\t\t\t\t{renderField(field)}\r\n\t\t\t\t\t\t\t\t{renderFieldError(field.name)}\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t) : (\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t{field.type !== 'multiselect' && renderLabel(field)}\r\n\t\t\t\t\t\t\t{renderField(field)}\r\n\t\t\t\t\t\t\t{renderFieldError(field.name)}\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t)}\r\n\t\t\t\t\r\n\t\t\t);\r\n\t\t}\r\n\t};\r\n\r\n\tconst renderLabel: RenderFunction = ({\r\n\t\tid,\r\n\t\tlabel,\r\n\t\trequired,\r\n\t\ttype,\r\n\t\thelpText,\r\n\t}) => {\r\n\t\tif (!label || type === 'submit' || type === 'reset') {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn (\r\n\t\t\t\r\n\t\t);\r\n\t};\r\n\r\n\tconst renderFieldError = (id: string) => {\r\n\t\tconst validationMessage =\r\n\t\t\tvalidationMessages[id] && validationMessages[id].message;\r\n\t\tconst isInvalid = invalidFields.indexOf(id) !== -1;\r\n\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t{validationMessage}\r\n\t\t\t\r\n\t\t);\r\n\t};\r\n\r\n\tconst renderField: RenderFunction = ({\r\n\t\tname,\r\n\t\ttype,\r\n\t\trequired,\r\n\t\tpattern,\r\n\t\tplaceholder,\r\n\t\tdisabled,\r\n\t\tdescription,\r\n\t\tmin,\r\n\t\tmax,\r\n\t\tlabel,\r\n\t\tfailedMessage,\r\n\t\tpatternMessage,\r\n\t\toptions,\r\n\t\tfieldActions,\r\n\t}) => {\r\n\t\tlet buttonText = label || type;\r\n\r\n\t\tswitch (type) {\r\n\t\t\tcase 'submit':\r\n\t\t\t\tif (type === 'submit' && isLoading) {\r\n\t\t\t\t\tbuttonText = 'Loading...';\r\n\t\t\t\t}\r\n\t\t\t\treturn (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{buttonText}\r\n\t\t\t\t\t\r\n\t\t\t\t);\r\n\t\t\tcase 'reset':\r\n\t\t\t\treturn (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{buttonText}\r\n\t\t\t\t\t\r\n\t\t\t\t);\r\n\t\t\tcase 'textarea':\r\n\t\t\t\treturn (\r\n\t\t\t\t\t\r\n\t\t\t\t);\r\n\t\t\tcase 'select':\r\n\t\t\t\treturn (\r\n\t\t\t\t\t\r\n\t\t\t\t);\r\n\t\t\tcase 'multiselect':\r\n\t\t\t\treturn (\r\n\t\t\t\t\t\r\n\t\t\t\t);\r\n\t\t\tcase 'text':\r\n\t\t\tdefault:\r\n\t\t\t\tlet actions: any = {};\r\n\r\n\t\t\t\tif (fieldActions) {\r\n\t\t\t\t\tactions = checkFieldActions(fieldActions, values);\r\n\t\t\t\t\tfieldActionExists = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn (\r\n\t\t\t\t\t\r\n\t\t\t\t);\r\n\t\t}\r\n\t};\r\n\r\n\tconst renderFieldset: RenderFunction = ({\r\n\t\tname,\r\n\t\ttype,\r\n\t\toptions,\r\n\t\tlabel,\r\n\t\trequired,\r\n\t\tdescription,\r\n\t\tvalidationMessage,\r\n\t\thelpText,\r\n\t}) => {\r\n\t\tconst isInvalid = invalidFields.indexOf(name) !== -1;\r\n\t\tconst FieldComponent = type === 'radio' ? RadioButton : Checkbox;\r\n\r\n\t\treturn (\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t{options.map((opt: any, index: number) => {\r\n\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{opt.caption}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t})}\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t);\r\n\t};\r\n\r\n\tconst renderSingleInput: RenderFunction = ({\r\n\t\tname,\r\n\t\ttype,\r\n\t\toptions,\r\n\t\trequired,\r\n\t\tdisabled,\r\n\t\tdescription,\r\n\t\tvalidationMessage,\r\n\t}) => {\r\n\t\tconst fieldLabel = options[0].caption;\r\n\t\tconst fieldValue = options[0].value;\r\n\r\n\t\tconst FieldComponent = type === 'radio' ? RadioButton : Checkbox;\r\n\r\n\t\treturn (\r\n\t\t\t\r\n\t\t);\r\n\t};\r\n\r\n\treturn [renderFormElement, fieldActionExists];\r\n};\r\n","import { useEffect, useRef } from 'react';\r\n\r\nexport const usePrevious = (value: any): any => {\r\n\tconst ref = useRef();\r\n\tuseEffect(() => {\r\n\t\tref.current = value;\r\n\t});\r\n\treturn ref.current;\r\n};\r\n","import { useEffect } from 'react';\r\n\r\ninterface UseScript {\r\n\t(scriptData: { url: string; id?: string; type?: string }): void;\r\n}\r\n\r\nexport const useScript: UseScript = ({ url, id, type = 'text/javascript' }) => {\r\n\tuseEffect(() => {\r\n\t\tconst script = document.createElement('script');\r\n\t\tscript.src = url;\r\n\t\tscript.async = true;\r\n\t\tif (id) script.id = id;\r\n\t\tif (type) script.type = type;\r\n\t\tdocument.body.appendChild(script);\r\n\r\n\t\treturn () => {\r\n\t\t\tdocument.body.removeChild(script);\r\n\t\t};\r\n\t}, []);\r\n};\r\n","import { useRef, useEffect } from 'react';\r\n\r\ninterface UseFirstRender {\r\n\t(): boolean;\r\n}\r\n\r\nexport const useFirstRender: UseFirstRender = () => {\r\n\tconst isFirstRenderRef = useRef(true);\r\n\r\n\tuseEffect(() => {\r\n\t\tisFirstRenderRef.current = false;\r\n\t}, []);\r\n\r\n\treturn isFirstRenderRef.current;\r\n};\r\n","interface Option {\r\n\tvalue: string;\r\n\tcaption: string;\r\n\tchecked?: boolean;\r\n}\r\n\r\n/**\r\n * Extracts the initial form values for the Form-component.\r\n */\r\nexport const getInitialFormValues = (fields: any, currentStep: number): any => {\r\n\tconst formValues: any = {};\r\n\r\n\tObject.keys(fields).map((key) => {\r\n\t\tconst el = fields[key];\r\n\r\n\t\tif (\r\n\t\t\tel.type === 'select' ||\r\n\t\t\tel.type === 'radio' ||\r\n\t\t\tel.type === 'checkbox' ||\r\n\t\t\tel.type === 'multiselect'\r\n\t\t) {\r\n\t\t\tformValues[el.name] = [];\r\n\r\n\t\t\tel.options.forEach((opt: Option) => {\r\n\t\t\t\tif (opt.checked) {\r\n\t\t\t\t\tformValues[el.name].push(opt.value);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif (el.type === 'select') {\r\n\t\t\t\tformValues[el.name] = formValues[el.name][0]\r\n\t\t\t\t\t? formValues[el.name][0]\r\n\t\t\t\t\t: '';\r\n\t\t\t}\r\n\t\t} else if (el.predefinedValue) {\r\n\t\t\tif (el.name === '__FormCurrentStepIndex') {\r\n\t\t\t\tformValues[el.name] = currentStep;\r\n\t\t\t} else {\r\n\t\t\t\tformValues[el.name] = el.predefinedValue;\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\treturn formValues;\r\n};\r\n\r\n/**\r\n * Returns data and visible fields for current form step\r\n */\r\nexport const getStepFields = (currentStep: number, formId: string) => {\r\n\tconst stepId = `form-${formId}-step-${currentStep}`;\r\n\tconst currentStepNode = document.getElementById(stepId);\r\n\tlet formData = new FormData();\r\n\tlet currentStepFields: any = [];\r\n\r\n\tformData = getHiddenFieldValues(formData, formId);\r\n\r\n\tif (currentStepNode) {\r\n\t\tcurrentStepFields = currentStepNode.querySelectorAll(\r\n\t\t\t'input, select, textarea'\r\n\t\t);\r\n\t\tconst visibleFields: string[] = [];\r\n\r\n\t\tcurrentStepFields.forEach((field: any) => {\r\n\t\t\tconst type = field.getAttribute('type');\r\n\t\t\tconst fieldId = field.getAttribute('id') || field.getAttribute('name');\r\n\r\n\t\t\tif (fieldId.indexOf('-') !== -1) {\r\n\t\t\t\tvisibleFields.push(fieldId.slice(0, fieldId.indexOf('-')));\r\n\t\t\t} else {\r\n\t\t\t\tvisibleFields.push(fieldId);\r\n\t\t\t}\r\n\r\n\t\t\tif (field.options) {\r\n\t\t\t\tformData = getSelectValue(field, formData);\r\n\t\t\t} else if (type === 'checkbox' || type === 'radio') {\r\n\t\t\t\tformData = getCheckboxAndRadioValue(field, formData);\r\n\t\t\t} else if (type === 'file') {\r\n\t\t\t\tformData = getUploadedFiles(field, formData);\r\n\t\t\t} else {\r\n\t\t\t\tformData = getFieldValue(field, formData);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn [formData, currentStep, visibleFields];\r\n\t}\r\n};\r\n\r\n/**\r\n * Appends values of hidden fields to formData\r\n */\r\nconst getHiddenFieldValues = (formData: FormData, formId: string) => {\r\n\tconst hiddenFieldHolder = document.getElementById(\r\n\t\t`form-${formId}-hiddenfields`\r\n\t);\r\n\r\n\tif (hiddenFieldHolder) {\r\n\t\tconst hiddenFields = hiddenFieldHolder.querySelectorAll('input, select');\r\n\r\n\t\thiddenFields.forEach((field: any) => {\r\n\t\t\tformData.append(field.getAttribute('name'), field.value);\r\n\t\t});\r\n\t}\r\n\treturn formData;\r\n};\r\n\r\n/**\r\n * Appends value of select element to formData\r\n */\r\nconst getSelectValue = (field: any, formData: FormData) => {\r\n\tfor (var i = 0; i < field.options.length; i++) {\r\n\t\tif (field.options[i].selected) {\r\n\t\t\tformData.append(field.getAttribute('name'), field.options[i].value);\r\n\t\t}\r\n\t}\r\n\treturn formData;\r\n};\r\n\r\n/**\r\n * Appends value of checkbox or radio button to formData\r\n */\r\nconst getCheckboxAndRadioValue = (field: any, formData: FormData) => {\r\n\tif (field.checked) {\r\n\t\tformData.append(field.getAttribute('name'), field.value);\r\n\t}\r\n\treturn formData;\r\n};\r\n\r\n/**\r\n * Appends value of uploaded files to formData\r\n */\r\nconst getUploadedFiles = (field: any, formData: FormData) => {\r\n\tfor (var j = 0; j < field.files.length; j++) {\r\n\t\tformData.append(field.getAttribute('name'), field.files[j]);\r\n\t}\r\n\treturn formData;\r\n};\r\n\r\n/**\r\n * Appends value of input field to formData\r\n */\r\nconst getFieldValue = (field: any, formData: FormData) => {\r\n\tformData.append(field.getAttribute('name'), field.value);\r\n\treturn formData;\r\n};\r\n","// import fetch from 'unfetch';\r\n\r\n/**\r\n * Submits an Episerver form\r\n */\r\nexport const submitForm = (\r\n\tvalues: any,\r\n\tstepIndex: number,\r\n\tdispatch: any,\r\n\tsteps: any[],\r\n\tform: any\r\n) => {\r\n\tconst { currentStep, submissionId, action, method, redirectUrl } = form;\r\n\r\n\tconst multiStep = steps.length > 2 && stepIndex !== steps.length - 2;\r\n\tconst nextStep = multiStep ? stepIndex + 1 : currentStep + 1;\r\n\r\n\tvalues.set('__FormCurrentStepIndex', currentStep);\r\n\tvalues.set('__FormSubmissionId', submissionId);\r\n\r\n\tdispatch({\r\n\t\ttype: 'UPDATE_STATE',\r\n\t\tpayload: { isLoading: true, serverValidationError: false },\r\n\t});\r\n\r\n\tfetch(action, {\r\n\t\tbody: values,\r\n\t\tcache: 'no-cache',\r\n\t\theaders: {\r\n\t\t\t'X-Requested-With': 'XMLHttpRequest',\r\n\t\t},\r\n\t\tmethod,\r\n\t\tcredentials: 'same-origin',\r\n\t\tredirect: 'follow',\r\n\t\treferrer: 'no-referrer',\r\n\t})\r\n\t\t.then((response) => {\r\n\t\t\tif (response.ok) {\r\n\t\t\t\treturn response;\r\n\t\t\t} else {\r\n\t\t\t\tthrow new Error(response.statusText);\r\n\t\t\t}\r\n\t\t})\r\n\t\t.then((response) => response.json())\r\n\t\t.then((response) => {\r\n\t\t\treturn handleResponse(\r\n\t\t\t\tresponse,\r\n\t\t\t\tmultiStep,\r\n\t\t\t\tnextStep,\r\n\t\t\t\tdispatch,\r\n\t\t\t\tredirectUrl\r\n\t\t\t);\r\n\t\t})\r\n\t\t.catch((error) => {\r\n\t\t\tconst message =\r\n\t\t\t\ttypeof error === 'string'\r\n\t\t\t\t\t? error\r\n\t\t\t\t\t: 'An error occurred, try again later';\r\n\r\n\t\t\talert(message);\r\n\t\t\tdispatch({\r\n\t\t\t\ttype: 'UPDATE_STATE',\r\n\t\t\t\tpayload: { isLoading: false },\r\n\t\t\t});\r\n\t\t});\r\n};\r\n\r\n/**\r\n * Handles the submission response\r\n */\r\nconst handleResponse = (\r\n\tresponse: any,\r\n\tmultiStep: boolean,\r\n\tnextStep: number,\r\n\tdispatch: any,\r\n\tredirectUrl: string\r\n) => {\r\n\tdispatch({\r\n\t\ttype: 'UPDATE_STATE',\r\n\t\tpayload: {\r\n\t\t\tisLoading: false,\r\n\t\t\tinvalidFields: [],\r\n\t\t\tvalidationMessages: {},\r\n\t\t},\r\n\t});\r\n\r\n\tif (!response.IsSuccess) {\r\n\t\thandleServerValidationError(\r\n\t\t\tresponse.AdditionalParams.__FormField,\r\n\t\t\tdispatch\r\n\t\t);\r\n\t}\r\n\r\n\tif (multiStep && response.IsSuccess) {\r\n\t\tdispatch({\r\n\t\t\ttype: 'UPDATE_STATE',\r\n\t\t\tpayload: {\r\n\t\t\t\tsubmissionId: response.Data ? response.Data.SubmissionId : '',\r\n\t\t\t\tcurrentStep: nextStep,\r\n\t\t\t},\r\n\t\t});\r\n\t} else if (response.Message && response.Message !== '') {\r\n\t\tif (\r\n\t\t\t(response.RedirectUrl && response.RedirectUrl.length > 0) ||\r\n\t\t\t(redirectUrl && redirectUrl.length > 0)\r\n\t\t) {\r\n\t\t\twindow.location.href = response.RedirectUrl || redirectUrl;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tdispatch({\r\n\t\t\ttype: 'UPDATE_STATE',\r\n\t\t\tpayload: { successMessage: response.Message },\r\n\t\t});\r\n\t}\r\n};\r\n\r\n/**\r\n * Sums up server validation errors with fields and validationmessages\r\n */\r\nconst handleServerValidationError = (fieldErrors: any[], dispatch: any) => {\r\n\tconst invalidFields: string[] = [];\r\n\tconst validationMessages: any = {};\r\n\r\n\tfieldErrors.forEach((field) => {\r\n\t\tinvalidFields.push(field.InvalidElement);\r\n\t\tvalidationMessages[field.InvalidElement] = {\r\n\t\t\tlabel: field.InvalidElementLabel,\r\n\t\t\tmessage: field.ValidationMessage,\r\n\t\t};\r\n\t});\r\n\r\n\tdispatch({\r\n\t\ttype: 'UPDATE_STATE',\r\n\t\tpayload: {\r\n\t\t\tinvalidFields,\r\n\t\t\tvalidationMessages,\r\n\t\t\tserverValidationError: true,\r\n\t\t},\r\n\t});\r\n};\r\n","import React, { forwardRef } from 'react';\r\n\r\ntype State = {\r\n\tsuccessMessage: string;\r\n\tinvalidFields: string[];\r\n\tserverValidationError: string | boolean;\r\n\tvalidationMessages: any;\r\n};\r\n\r\ninterface FormMessageProps {\r\n\t/** Message to display when successfully submitted */\r\n\tconfirmationMessage: string | null;\r\n\r\n\t/** Current form state */\r\n\tstate: State;\r\n\r\n\t/** FormMessage ref to set */\r\n\tref: any;\r\n}\r\n\r\ninterface ErrorSummaryProps {\r\n\tvalidationMessages: any;\r\n}\r\n\r\nconst ErrorSummary: React.FC = ({ validationMessages }) => (\r\n\t<>\r\n\t\t

\r\n\t\t\tFormuläret innehåller {Object.keys(validationMessages).length} fel:\r\n\t\t

\r\n\r\n\t\t
\r\n\t\t\t
    \r\n\t\t\t\t{validationMessages &&\r\n\t\t\t\t\tObject.keys(validationMessages).map((key, i) => (\r\n\t\t\t\t\t\t
  • \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{validationMessages[key].message}\r\n\t\t\t\t\t\t
  • \r\n\t\t\t\t\t))}\r\n\t\t\t
\r\n\t\t
\r\n\t\r\n);\r\n\r\nconst FormMessage: React.FC = forwardRef(\r\n\t({ confirmationMessage, state }, ref: any) => {\r\n\t\tconst {\r\n\t\t\tsuccessMessage,\r\n\t\t\tinvalidFields,\r\n\t\t\tserverValidationError,\r\n\t\t\tvalidationMessages,\r\n\t\t} = state;\r\n\t\tconst hasMessageToShow = confirmationMessage || successMessage;\r\n\t\tconst messageType =\r\n\t\t\tserverValidationError || invalidFields.length > 0 ? 'error' : 'success';\r\n\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{(serverValidationError || invalidFields.length > 0) && (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t{confirmationMessage &&

{confirmationMessage}

}\r\n\t\t\t\t\t{successMessage && (\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t)}\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t);\r\n\t}\r\n);\r\n\r\nexport default FormMessage;\r\n","/**\r\n * EpiForms\r\n */\r\n\r\nimport React, { useReducer, useRef, useEffect } from 'react';\r\n\r\nimport { useForceUpdate, useFormRenderer, usePrevious } from 'hooks';\r\nimport { getInitialFormValues, getStepFields } from './EpiForms.helpers';\r\nimport { submitForm } from './EpiForms.submit';\r\n\r\nimport { Form } from 'components/Form';\r\nimport FormStep from './FormStep';\r\nimport FormMessage from './FormMessage';\r\n\r\nexport interface EpiFormsProps {\r\n\t/** Form id */\r\n\tid: string;\r\n\r\n\t/** Fields within the Form */\r\n\tfields: any;\r\n\r\n\t/** Form steps */\r\n\tsteps: any[];\r\n\r\n\t/** Message to show when successfully submitted */\r\n\tconfirmationMessage: string | null;\r\n\r\n\t/** Form method */\r\n\tmethod?: string;\r\n\r\n\t/** Form action */\r\n\taction?: string;\r\n\r\n\t/** Form encoding type */\r\n\tencodingType?: string;\r\n\r\n\t/** Form dependencies */\r\n\tdependencies?: any[];\r\n\r\n\t/** Form title (h1) */\r\n\ttitle?: string | null;\r\n\r\n\t/** Form description (p) */\r\n\tdescription?: string | null;\r\n\r\n\t/** Url to redirect to when successfully submitted */\r\n\tredirectUrl?: string;\r\n\r\n\t/** Epi properties for on-page editing */\r\n\t_properties?: any;\r\n\r\n\t[htmlAttributes: string]: any;\r\n}\r\n\r\nconst initialState = {\r\n\tisLoading: false,\r\n\tinvalidFields: [],\r\n\tvalidationMessages: {},\r\n\tsuccessMessage: '',\r\n\tcurrentStep: 0,\r\n\tvalues: {},\r\n\tsubmissionId: '',\r\n\tserverValidationError: false,\r\n};\r\n\r\nconst reducer = (state: any, action: any) => {\r\n\tswitch (action.type) {\r\n\t\tcase 'UPDATE_STATE':\r\n\t\t\treturn { ...state, ...action.payload };\r\n\t\tdefault:\r\n\t\t\treturn state;\r\n\t}\r\n};\r\n\r\n/** Rendering of an EpiForms block. */\r\nconst EpiForms: React.FC = ({\r\n\tfields,\r\n\tmethod = 'GET',\r\n\taction,\r\n\tencodingType = 'multipart/form-data',\r\n\tsteps,\r\n\tdependencies,\r\n\tid,\r\n\ttitle,\r\n\tdescription,\r\n\tconfirmationMessage,\r\n\tredirectUrl,\r\n\t_properties = {},\r\n}) => {\r\n\tconst [state, dispatch] = useReducer(reducer, initialState);\r\n\tconst { currentStep, successMessage, submissionId, invalidFields } = state;\r\n\r\n\tconst forceUpdate = useForceUpdate();\r\n\tconst [renderFormElement, fieldActionExists] = useFormRenderer(\r\n\t\tfields,\r\n\t\tstate,\r\n\t\tdependencies\r\n\t);\r\n\r\n\tconst showForm = !confirmationMessage && !successMessage;\r\n\tconst formValues = getInitialFormValues(fields, currentStep);\r\n\r\n\tconst messageHolderRef = useRef(null);\r\n\tconst prevInvalidFields = usePrevious(invalidFields);\r\n\tlet prevStep = usePrevious(currentStep);\r\n\r\n\tif (prevStep === undefined) {\r\n\t\tprevStep = 0;\r\n\t}\r\n\r\n\t// Focus messageHolderRef if success or error\r\n\tuseEffect(() => {\r\n\t\tconst successfullySubmitted =\r\n\t\t\tinvalidFields.length > 0 || confirmationMessage || successMessage;\r\n\t\tconst formMessageElement = messageHolderRef && messageHolderRef.current;\r\n\r\n\t\tif (\r\n\t\t\tsuccessfullySubmitted &&\r\n\t\t\tformMessageElement &&\r\n\t\t\tprevInvalidFields !== invalidFields\r\n\t\t) {\r\n\t\t\tmessageHolderRef.current.focus();\r\n\t\t}\r\n\t}, [invalidFields, messageHolderRef]);\r\n\r\n\t// Jump back to top if step changes\r\n\tuseEffect(() => {\r\n\t\tif (window && prevStep !== currentStep && steps.length > 2) {\r\n\t\t\twindow.location.href = `#${id}`;\r\n\t\t}\r\n\t}, [currentStep]);\r\n\r\n\t// If we have dependencies (conditional fields), we re-render.\r\n\tconst onChange = (field: any, values: any) => {\r\n\t\tif ((dependencies && dependencies.length > 0) || fieldActionExists) {\r\n\t\t\tdispatch({\r\n\t\t\t\ttype: 'UPDATE_STATE',\r\n\t\t\t\tpayload: { values },\r\n\t\t\t});\r\n\r\n\t\t\tif (dependencies && dependencies.length > 0) {\r\n\t\t\t\tforceUpdate();\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tconst onSubmit = (\r\n\t\tvalues: any,\r\n\t\tstepIndex: number,\r\n\t\tcurrentValidationMessages: any,\r\n\t\tcurrentInvalidFields: string[]\r\n\t) => {\r\n\t\tif (currentInvalidFields && currentInvalidFields.length > 0) {\r\n\t\t\tdispatch({\r\n\t\t\t\ttype: 'UPDATE_STATE',\r\n\t\t\t\tpayload: {\r\n\t\t\t\t\tinvalidFields: currentInvalidFields,\r\n\t\t\t\t\tvalidationMessages: currentValidationMessages,\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tsubmitForm(values, stepIndex, dispatch, steps, {\r\n\t\t\tcurrentStep,\r\n\t\t\tsubmissionId,\r\n\t\t\taction,\r\n\t\t\tmethod,\r\n\t\t\tredirectUrl,\r\n\t\t});\r\n\t};\r\n\r\n\treturn (\r\n\t\t 2}\r\n\t\t\tcurrentStep={currentStep}\r\n\t\t\tgetStepFields={getStepFields}\r\n\t\t\tid={id}\r\n\t\t>\r\n\t\t\t
\r\n\t\t\t\t{title &&

{title.toUpperCase()}

}\r\n\r\n\t\t\t\t{description && (\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t{description}\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t
\r\n\t\t\t\t)}\r\n\r\n\t\t\t\t\r\n\t\t\t
\r\n\r\n\t\t\t{showForm && (\r\n\t\t\t\t
\r\n\t\t\t\t\t{steps.map((step: any, i: number) =>\r\n\t\t\t\t\t\tstep.index === -1 ? (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t) : steps.length === 2 ? (\r\n\t\t\t\t\t\t\tstep.fields.map(renderFormElement)\r\n\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tdispatch({\r\n\t\t\t\t\t\t\t\t\t\ttype: 'UPDATE_STATE',\r\n\t\t\t\t\t\t\t\t\t\tpayload: state,\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t{step.fields.map(renderFormElement)}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t)}\r\n\t\t\t\t
\r\n\t\t\t)}\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default EpiForms;\r\n","import EpiForms from './EpiForms';\r\n\r\nexport default EpiForms;\r\n","import { useState } from 'react';\r\n\r\nexport const useForceUpdate = () => {\r\n\tconst [value, setValue] = useState(0);\r\n\treturn () => setValue((value) => ++value);\r\n};\r\n","/**\r\n * ResponsiveIframe\r\n */\r\n\r\nimport React from 'react';\r\nimport clsx from 'clsx';\r\n\r\ninterface Props {\r\n\t/** Iframe src */\r\n\tsrc: string;\r\n\r\n\t/** The aspect ratio of the video:\r\n\t *\r\n\t * - 16:9 - most common format, used by YouTube videos.\r\n\t * - 4:3 - used mostly by older videos.\r\n\t */\r\n\taspectRatio?: '16:9' | '4:3';\r\n\r\n\t/** Aria-label for the component */\r\n\t'aria-label': string;\r\n}\r\n\r\nconst ResponsiveIframe: React.FC = ({\r\n\tsrc,\r\n\t'aria-label': ariaLabel,\r\n\taspectRatio = '16:9',\r\n}) => {\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t
\r\n\t);\r\n};\r\n\r\nexport default ResponsiveIframe;\r\n","/**\r\n * VideoBlock\r\n */\r\nimport React from 'react';\r\n\r\ninterface Props {\r\n\t/** Embeded Url */\r\n\tvideoUrl: string;\r\n\r\n\t/** Width */\r\n\twidth?: any;\r\n\r\n\t/** Height */\r\n\theight?: any;\r\n\r\n\t/* video title to accesibility */\r\n\tvideoTitle?: string;\r\n}\r\n\r\n/** Main description for this component. */\r\nconst VideoItem: React.FC = ({\r\n\tvideoUrl,\r\n\twidth,\r\n\theight,\r\n\tvideoTitle = '',\r\n}) => {\r\n\treturn (\r\n\t\t
\r\n\t\t\t 0 ? width : null }}\r\n\t\t\t\tclassName=\"relative h-0 overflow-hidden m-auto\"\r\n\t\t\t>\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default VideoItem;\r\n","import React, { PropsWithChildren } from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { selectEpi } from 'store/modules/epi';\r\n\r\ntype Props = {\r\n className?: string;\r\n inline?: boolean;\r\n field : string\r\n}\r\n\r\nconst EditableField: React.FC> = ({\r\n className,\r\n inline,\r\n field,\r\n children\r\n}) => {\r\n const { isEditable } = useSelector(selectEpi);\r\n\r\n const cssClass = `${className ?? '' } opti-edit-container`\r\n if (!isEditable)\r\n return <>{children}\r\n\r\n return inline ? {children} :\r\n
{children}
\r\n}\r\n\r\nexport default EditableField","/**\r\n * EpiFragments\r\n */\r\n\r\nimport React from 'react';\r\nimport { EpiFormsProps } from 'components/EpiForms/EpiForms';\r\n\r\nimport {\r\n\tFragmentModelTypes,\r\n\tRawFragmentModel,\r\n\tHeadingFragmentModel,\r\n\tImageFragmentModel,\r\n\tTableFragmentModel,\r\n\tVideoFragmentModel,\r\n} from 'types/fragments';\r\nimport Image from 'components/Image';\r\nimport RichText from 'components/RichText';\r\nimport EpiForms from 'components/EpiForms';\r\nimport Text from 'components/Text';\r\nimport ResponsiveIframe from 'components/ResponsiveIframe';\r\nimport VideoBlock from 'components/VideoBlock/VideoBlock';\r\nimport { VideoBlockModel } from 'types/blocks';\r\nimport clsx from 'clsx';\r\nimport EditableField from 'components/EditableField';\r\n\r\ninterface Props {\r\n\t/** Epi properties to use for on page editing */\r\n\t[htmlAttributes: string]: any;\r\n\r\n\t/** Fragments that should be rendered. */\r\n\tfragments?: FragmentModelTypes[];\r\n\r\n\tisTablet?: boolean;\r\n}\r\n\r\nconst getHeadingLevel = (level: number) => {\r\n\tswitch (level) {\r\n\t\tcase 1:\r\n\t\t\treturn 'h1';\r\n\t\tcase 2:\r\n\t\t\treturn 'h2';\r\n\t\tcase 3:\r\n\t\t\treturn 'h3';\r\n\t\tcase 4:\r\n\t\t\treturn 'h4';\r\n\t\tcase 5:\r\n\t\t\treturn 'h5';\r\n\t\tcase 6:\r\n\t\t\treturn 'h6';\r\n\t\tdefault:\r\n\t\t\treturn 'h2';\r\n\t}\r\n};\r\n\r\nconst getFragment = (fragment: FragmentModelTypes, index: number) => {\r\n\tswitch (fragment.modelType) {\r\n\t\tcase 'HeadingFragment':\r\n\t\t\tconst data = fragment as HeadingFragmentModel;\r\n\t\t\treturn (\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t);\r\n\t\tcase 'Image':\r\n\t\t\tconst imgData = fragment as ImageFragmentModel;\r\n\r\n\t\t\treturn (\r\n\t\t\t\t\r\n\t\t\t);\r\n\r\n\t\tcase 'Video':\r\n\t\t\tconst videoData = fragment as VideoFragmentModel;\r\n\r\n\t\t\treturn (\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t);\r\n\r\n\t\tcase 'TableFragment':\r\n\t\t\tconst tableData = fragment as TableFragmentModel;\r\n\t\t\treturn (\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t);\r\n\t\tcase 'FormContainer':\r\n\t\t\tconst formContainer = fragment as EpiFormsProps;\r\n\r\n\t\t\treturn (\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t);\r\n\t\tcase 'RawFragment':\r\n\t\t\tconst rawData = fragment as RawFragmentModel;\r\n\r\n\t\t\treturn (\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t);\r\n\t\tcase 'VideoBlock':\r\n\t\t\tconst videoBlockModel = fragment as VideoBlockModel;\r\n\r\n\t\t\treturn (\r\n\t\t\t\t\r\n\t\t\t);\r\n\t\tdefault:\r\n\t\t\treturn null;\r\n\t}\r\n};\r\n\r\n/** Component for rendering Episerver fragments. */\r\nconst EpiFragments: React.FC = ({\r\n\tfragments,\r\n\tisTablet,\r\n}) => {\r\n\t\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t
\r\n\t\t\t\t{fragments?.map(getFragment)}\r\n\t\t\t
\r\n\t\t
\r\n\t);\r\n};\r\n\r\nexport default EpiFragments;\r\n","/**\r\n * Instagram\r\n */\r\n\r\nimport React, {\r\n\tuseState,\r\n\tuseRef,\r\n\tuseEffect,\r\n} from 'react';\r\nimport { Cell, Grid } from 'components/Grid';\r\nimport { InstagramModel } from 'types/blocks';\r\nimport clsx from 'clsx';\r\nimport { InstagramImage, InstagramVideo } from 'types/global';\r\nimport { useMediaQuery } from 'react-responsive';\r\nimport Image from 'components/Image';\r\nimport { useModal } from 'hooks/useModal';\r\nimport Button from 'components/Button';\r\nimport Axios from 'axios';\r\nimport InstagramModal from './InstagramModal';\r\nimport EpiFragments from 'components/EpiFragments';\r\n\r\n/**\r\n * The main instagram integration for frontend\r\n */\r\n\r\nconst Instagram: React.FC = ({\r\n\theading,\r\n\ttext,\r\n\tposts,\r\n\tpagination,\r\n\tbuttonText,\r\n\turl,\r\n\tapiUrl,\r\n\timageAlt,\r\n\tcolorTheme,\r\n\tcloseModal: closeModalText,\r\n\tgoToUser,\r\n\t_properties,\r\n}) => {\r\n\t/* Statehandling */\r\n\tconst [content, setContent] = useState<\r\n\t\tInstagramImage | InstagramVideo | null\r\n\t>(null);\r\n\tconst [instagramFeed, setInstagramFeed] = useState<\r\n\t\t(InstagramImage | InstagramVideo)[]\r\n\t>(posts || []);\r\n\tconst {Modal, openModal} = useModal();\r\n\tconst itemsRef = useRef>([]);\r\n\tconst [instagramBtnId, setInstagramBtnId] = useState(-1);\r\n\tconst [pageIsLoaded, setPageIsLoaded] = useState(false);\r\n\r\n\tconst currentPage =\r\n\t\tpagination?.currentPage !== undefined && pagination.currentPage >= 1\r\n\t\t\t? pagination?.currentPage\r\n\t\t\t: 1;\r\n\r\n\tconst [page, setPage] = useState(currentPage);\r\n\tconst [disabled, setDisabled] = useState(false);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (instagramBtnId >= 0) {\r\n\t\t\tfor (let i = 0; i < itemsRef.current.length; i++) {\r\n\t\t\t\tif (i === instagramBtnId) {\r\n\t\t\t\t\t/* tslint:disable-next-line */\r\n\t\t\t\t\t// @ts-ignore: Unreachable code error\r\n\t\t\t\t\titemsRef.current[instagramBtnId]?.focus();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}, [openModal]);\r\n\r\n\tuseEffect(() => {\r\n\t\tconst setPageLoaded = () => {\r\n\t\t\tsetPageIsLoaded(true);\r\n\t\t}\r\n\r\n\t\tif(document.readyState === \"complete\"){\r\n\t\t\tsetPageLoaded();\r\n\t\t}else{\r\n\t\t\twindow.addEventListener('load', setPageLoaded);\r\n\t\t\treturn () => window.removeEventListener('load', setPageLoaded);\r\n\t\t}\r\n\t},[])\r\n\r\n\t/* functions */\r\n\r\n\tconst handleClick = (\r\n\t\tcontent: InstagramVideo | InstagramImage,\r\n\t\tid: number\r\n\t) => {\r\n\t\t\r\n\t\tsetInstagramBtnId(id);\r\n\t\tsetContent(content);\r\n\t};\r\n\r\n\tconst isTablet = useMediaQuery({ query: '(max-width: 767px)' });\r\n\r\n\tconst getFeed = async () => {\r\n\t\ttry {\r\n\t\t\tconst { data } = await Axios.get(`${apiUrl}`, {\r\n\t\t\t\tparams: {\r\n\t\t\t\t\titemsPerPage: pagination?.itemsPerPage || 8,\r\n\t\t\t\t\toffset: page,\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tif (data.length !== pagination?.itemsPerPage) {\r\n\t\t\t\tsetDisabled(true);\r\n\t\t\t}\r\n\t\t\tlet newFeed: (InstagramImage | InstagramVideo)[] = [\r\n\t\t\t\t...instagramFeed,\r\n\t\t\t\t...data,\r\n\t\t\t];\r\n\r\n\t\t\tsetInstagramFeed(newFeed);\r\n\t\t\tsetPage((state) => state + 1);\r\n\t\t} catch (err) {\r\n\t\t\tconsole.error(err);\r\n\t\t\tsetPage(1);\r\n\t\t}\r\n\t};\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t

\r\n\t\t\t\t\t\t{heading}{' '}\r\n\t\t\t\t\t

\r\n\r\n\t\t\t\t\t{text && (\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t)}\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t{instagramFeed && pageIsLoaded &&\r\n\t\t\t\t\tinstagramFeed.map((content: InstagramImage | InstagramVideo, key) => {\r\n\t\t\t\t\t\tconst isImage = content.modelType === 'InstagramImage';\r\n\t\t\t\t\t\tconst alt = `${imageAlt} ${key + 1}`;\r\n\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{isTablet ? (\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t (itemsRef.current[key] = btn)}\r\n\t\t\t\t\t\t\t\t\t\tclassName=\"relative focus:outline-solid-orange h-full\"\r\n\t\t\t\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\t\t\t\thandleClick(content, key)\r\n\t\t\t\t\t\t\t\t\t\t\topenModal();\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\ttitle={content.caption}\r\n\t\t\t\t\t\t\t\t\t\tid={key.toString()}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t})}\r\n\t\t\t
\r\n\t\t\t{url ? (\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t) : (\r\n\t\t\t\t\r\n\t\t\t\t\t{pagination && (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{buttonText}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)}\r\n\t\t\t\t\r\n\t\t\t)}\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default Instagram;\r\n","/**\r\n * Link\r\n */\r\n\r\nimport React from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { Link as RouterLink } from 'react-router-dom';\r\nimport { selectEpi } from 'store/modules/epi';\r\n\r\ninterface Props {\r\n\t/** The url the link should navigate to */\r\n\tto?: string;\r\n\r\n\t/** The url the link should navigate to */\r\n\thref?: string;\r\n\r\n\t/** Pass optional classnames for the html */\r\n\tclassName?: string;\r\n\r\n\t[htmlAttributes: string]: any;\r\n\r\n\texternal?: boolean;\r\n}\r\n\r\nconst Link: React.FC = ({\r\n\tto,\r\n\thref,\r\n\tchildren,\r\n\tclassName = '',\r\n\texternal = false,\r\n\t...htmlAttributes\r\n}) => {\r\n\tconst url = to || href || '#';\r\n\tconst { inEditMode } = useSelector(selectEpi);\r\n\r\n\tif ((url && url.charAt(0) !== '/') || external || inEditMode) {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t{children}\r\n\t\t\t\r\n\t\t);\r\n\t} else {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t{children}\r\n\t\t\t\r\n\t\t);\r\n\t}\r\n};\r\n\r\nexport default Link;\r\n","/**\r\n * StandardPuffBlock\r\n */\r\n\r\nimport React from 'react';\r\nimport Text from 'components/Text';\r\nimport Icon from 'components/Icon';\r\nimport Link from 'components/Link';\r\nimport clsx from 'clsx';\r\nimport type { IImage } from 'types/global';\r\nimport Image from 'components/Image';\r\n\r\ninterface Props {\r\n\tfacebookLinkText: string;\r\n\tfacebookTeaserText: string;\r\n\tfacebookLink: string;\r\n\tcolorTheme: string;\r\n\ticonImage: IImage;\r\n\tteaserImage: string;\r\n\tsubscribeEmail: string;\r\n\tsubscribeEmailSubject: string;\r\n\tsubscribeEmailLinkText: string;\r\n\tunsubscribeEmailSubject: string;\r\n\tunsubscribeEmailLinkText: string;\r\n}\r\n\r\n/** Standard puff block component. */\r\nconst NewsletterPuff: React.FC = ({\r\n\tfacebookLinkText,\r\n\tfacebookTeaserText,\r\n\tfacebookLink,\r\n\ticonImage,\r\n\tteaserImage,\r\n\tsubscribeEmail,\r\n\tsubscribeEmailSubject = 'Prenumerera på vårt nyhetsbrev',\r\n\tsubscribeEmailLinkText,\r\n\tunsubscribeEmailSubject = 'Avsluta prenumeration',\r\n\tunsubscribeEmailLinkText,\r\n\tcolorTheme,\r\n}) => {\r\n\treturn (\r\n\t\t<>\r\n\t\t\t{subscribeEmail && (\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{subscribeEmailSubject}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{subscribeEmailLinkText}\r\n\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{unsubscribeEmailLinkText}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t)}\r\n\t\t\t{facebookTeaserText && facebookLink && (\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t{iconImage && (\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{' '}\r\n\t\t\t\t\t\t\t\t\t{facebookTeaserText}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t)}\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default NewsletterPuff;\r\n","/**\r\n * ParkInformation\r\n */\r\n\r\nimport React from 'react';\r\nimport { ParkInformationModel } from 'types/blocks';\r\nimport Text from 'components/Text';\r\nimport Icon from 'components/Icon';\r\nimport Link from 'components/Link';\r\n\r\n/** Park information component rendered in topcontentarea on parkpage. */\r\nconst ParkInformation: React.FC = ({\r\n\ttopHeading,\r\n\theading,\r\n\tpreamble,\r\n\turl,\r\n\tlinkText,\r\n\t_properties,\r\n}) => {\r\n\treturn (\r\n\t\t\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{topHeading}\r\n\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t{heading && (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{heading}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{preamble}\r\n\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t{linkText && (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{' '}\r\n\t\t\t\t\t\t\t\t{linkText}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default ParkInformation;\r\n","/**\r\n * ParkListing - Park\r\n */\r\n\r\nimport clsx from 'clsx';\r\nimport Image from 'components/Image';\r\nimport LinkComponent from 'components/Link';\r\nimport React from 'react';\r\nimport { IImage } from 'types/global';\r\n\r\ntype Props = {\r\n\tname: string;\r\n\timage: IImage;\r\n\turl: string;\r\n};\r\n\r\n/** Park component. */\r\nconst Park: React.FC = ({ name, image, url }) => (\r\n\t\r\n\t\t
\r\n\t\t\t{image && (\r\n\t\t\t\t\r\n\t\t\t)}\r\n\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t

\r\n\t\t\t\t\t{name}\r\n\t\t\t\t

\r\n\t\t\t
\r\n\t\t
\r\n\t\r\n);\r\n\r\nexport default Park;\r\n","/**\r\n * ParkListing - list search view\r\n */\r\n\r\nimport Icon from 'components/Icon';\r\nimport React, { useState } from 'react';\r\nimport Masonry from 'react-masonry-component';\r\nimport { ParkModel } from 'types/global';\r\nimport Park from './park';\r\n\r\ntype Props = {\r\n\t/** A list of parks */\r\n\tparks: ParkModel[];\r\n\tsearchPlaceholderText: string;\r\n\tsubmitText: string;\r\n};\r\n\r\n/** Park listing listsearchview component. */\r\nconst ListSearchView: React.FC = ({\r\n\tparks,\r\n\tsearchPlaceholderText,\r\n\tsubmitText,\r\n}) => {\r\n\tconst [query, setQuery] = useState('');\r\n\tconst handleOnChange = (e: any) => setQuery(e.target.value);\r\n\tconst handleSubmit = (e: any) => {\r\n\t\te.preventDefault();\r\n\t\tsetQuery(query);\r\n\t};\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\r\n\t\t\t
\r\n\t\t\t\t{/* Replacement for Grid component since it doesn't satisfy customer req to handle resizing */}\r\n\t\t\t\t\r\n\t\t\t\t\t{parks\r\n\t\t\t\t\t\t.filter((p: ParkModel) =>\r\n\t\t\t\t\t\t\tp.name?.toLowerCase().includes(query.toLowerCase())\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t\t.map((park: ParkModel, index: number) => (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t))}\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default ListSearchView;\r\n","/**\r\n * ParkListing - Map Area component\r\n */\r\n\r\nimport React from 'react';\r\nimport { IImage, ParkModel } from 'types/global';\r\n\r\ntype Props = {\r\n\timage: IImage;\r\n\turl: string;\r\n\tname: string;\r\n\timageMapCoordinates: string;\r\n\r\n\thandleMouseEnter: (currentPark: ParkModel) => any;\r\n\thandleClickArea: (e: any, currentPark: ParkModel) => any;\r\n\thandleMouseLeave: () => any;\r\n};\r\n\r\n/** ParkListing - Map Area component component. */\r\nconst Area: React.FC = ({\r\n\timage,\r\n\turl,\r\n\tname,\r\n\timageMapCoordinates,\r\n\thandleMouseEnter,\r\n\thandleMouseLeave,\r\n\thandleClickArea,\r\n}) => {\r\n\tconst mouseEnterEvent = () =>\r\n\t\thandleMouseEnter({\r\n\t\t\timage,\r\n\t\t\turl,\r\n\t\t\tname,\r\n\t\t\timageMapCoordinates,\r\n\t\t});\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\thandleClickArea(e, { image, url, name, imageMapCoordinates })\r\n\t\t\t}\r\n\t\t\tonMouseOver={mouseEnterEvent}\r\n\t\t\tonMouseOut={handleMouseLeave}\r\n\t\t\tdata-original-radius=\"12\"\r\n\t\t\ttabIndex={-1}\r\n\t\t\tshape=\"circle\"\r\n\t\t\tcoords={imageMapCoordinates}\r\n\t\t\thref={url}\r\n\t\t\talt={name}\r\n\t\t\tdata-name={name && name.toLowerCase()}\r\n\t\t\tdata-display-name={name}\r\n\t\t\tdata-image-src={image.src}\r\n\t\t/>\r\n\t);\r\n};\r\n\r\nexport default Area;\r\n","/**\r\n * ParkListing - Park\r\n */\r\n\r\nimport React from 'react';\r\nimport LinkComponent from 'components/Link';\r\nimport Icon from 'components/Icon';\r\nimport clsx from 'clsx';\r\nimport { IImage } from 'types/global';\r\nimport Image from 'components/Image';\r\n\r\n\r\ntype Props = {\r\n\timage: IImage;\r\n\turl: string;\r\n\tname: string;\r\n\tcanHoverOverlay?: boolean;\r\n\tisPhone: boolean;\r\n\tshowSmallImage?: boolean;\r\n\tborder?: boolean;\r\n};\r\n\r\n/** Park component. */\r\nconst Park: React.FC = ({\r\n\timage,\r\n\turl,\r\n\tname,\r\n\tcanHoverOverlay,\r\n\tborder = false,\r\n\tshowSmallImage,\r\n\tisPhone,\r\n\tchildren,\r\n}) => (\r\n\t<>\r\n\t\t{!isPhone && (\r\n\t\t\t<>\r\n\t\t\t\t\r\n\r\n\t\t\t\t{showSmallImage && !canHoverOverlay && (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t\t{!showSmallImage && (\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t\t{children}\r\n\t\t\t\r\n\t\t)}\r\n\r\n\t\t\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t{!canHoverOverlay && showSmallImage ?\r\n\t\t\t\t\t

\r\n\t\t\t\t\t\t{name}\r\n\t\t\t\t\t

:\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{name}\r\n\t\t\t\t\t\r\n\t\t\t\t}\r\n\t\t\t
\r\n\r\n\t\t\t{!canHoverOverlay && \r\n\t\t\t\t\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t{!showSmallImage &&\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t}\r\n\t\t\r\n\t\r\n);\r\n\r\nexport default Park;\r\n","/**\r\n * ParkListing - list view\r\n */\r\n\r\nimport React from 'react';\r\nimport { ParkModel } from 'types/global';\r\nimport Park from './park';\r\n\r\ntype Props = {\r\n\t/** A list of parks */\r\n\tparks: ParkModel[];\r\n\tisPhone: boolean;\r\n\thandleMouseEnter: (currentPark: ParkModel, override?: boolean) => any;\r\n\thandleMouseLeave: () => any;\r\n\tparkListHeading?: string;\r\n};\r\n\r\n/** Park listing listsearchview component. */\r\nconst ParkList: React.FC = ({\r\n\tparks,\r\n\tisPhone,\r\n\thandleMouseEnter,\r\n\thandleMouseLeave,\r\n\tparkListHeading,\r\n}) => (\r\n\t
\r\n\t\t{parkListHeading && (\r\n\t\t\t
\r\n\t\t\t\t

\r\n\t\t\t\t\t{parkListHeading}\r\n\t\t\t\t

\r\n\t\t\t
\r\n\t\t)}\r\n\t\t
    \r\n\t\t\t{parks.map((park: ParkModel, index: number) => (\r\n\t\t\t\t handleMouseEnter({ ...park }, true)}\r\n\t\t\t\t\tonMouseLeave={() => handleMouseLeave()}\r\n\t\t\t\t\tonFocus={() => handleMouseEnter({ ...park }, true)}\r\n\t\t\t\t\tonBlur={() => handleMouseLeave()}\r\n\t\t\t\t\tclassName=\"flex border-b border-black\"\r\n\t\t\t\t\tkey={`${park.imageMapCoordinates}_${index}`}\r\n\t\t\t\t>\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t))}\r\n\t\t
\r\n\t
\r\n);\r\n\r\nexport default ParkList;\r\n","/**\r\n * ParkListing - map\r\n */\r\n\r\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\r\nimport { ParkModel } from 'types/global';\r\nimport Area from 'components/ParkListing/map/area';\r\nimport Text from 'components/Text';\r\nimport clsx from 'clsx';\r\nimport Park from './park';\r\nimport ParkList from './parklist';\r\nimport Image from 'components/Image';\r\n\r\ntype Props = {\r\n\t/** A list of parks */\r\n\tparks: ParkModel[];\r\n\r\n\tshowParkList: boolean;\r\n\r\n\tparkListHeading?: string;\r\n\r\n\tisPhone: boolean;\r\n};\r\n\r\n/** Park listing map component. */\r\nconst Map: React.FC = ({\r\n\tparks,\r\n\tshowParkList,\r\n\tparkListHeading,\r\n\tisPhone,\r\n}) => {\r\n\tconst [showOverlay, setShowOverlay] = useState(false);\r\n\r\n\t/** Position in the map area, left/right */\r\n\tconst [overlayPosition, setOverlayPosition] = useState(null);\r\n\tconst [overlayClassName, setOverlayClassName] = useState('');\r\n\tconst [currentPark, setCurrentPark] = useState(null);\r\n\tconst [canHoverOverlay, setCanHoverOverlay] = useState(true);\r\n\r\n\tconst overlayRef = useRef(null);\r\n\r\n\tconst handleResetCurrentPark = () => {\r\n\t\tsetShowOverlay(false);\r\n\t\tsetOverlayPosition(null);\r\n\t\tsetCurrentPark(null);\r\n\t\tsetCanHoverOverlay(true);\r\n\t};\r\n\r\n\tconst handleMouseEnter = useCallback(\r\n\t\t(park: ParkModel, override = false) => {\r\n\t\r\n\t\t\tconst validPark = park != null;\r\n\t\t\tconst canShowOverlay =\r\n\t\t\t\t!showOverlay ||\r\n\t\t\t\toverride ||\r\n\t\t\t\tpark.imageMapCoordinates !== currentPark.imageMapCoordinates;\r\n\r\n\t\t\tif (validPark) {\r\n\t\t\t\tsetShowOverlay(true);\r\n\t\t\t\tsetCurrentPark(park);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[showOverlay, currentPark]\r\n\t);\r\n\r\n\tconst handleClickArea = (e: any, park: ParkModel) => {\r\n\t\te.preventDefault();\r\n\r\n\t\t// TODO: Click reopens the div even if same park\r\n\t\tsetCurrentPark(park);\r\n\t\tsetOverlayPosition(null);\r\n\t\tsetCanHoverOverlay(false);\r\n\t\tsetShowOverlay(true);\r\n\t};\r\n\r\n\tconst handleCloseArea = () => handleResetCurrentPark();\r\n\r\n\tconst handleMouseLeave = () => {\r\n\t\tif (canHoverOverlay) {\r\n\t\t\thandleResetCurrentPark();\r\n\t\t}\r\n\t};\r\n\r\n\tuseEffect(() => { // events for escape and click outside of overlay\r\n\t\tconst clickEscape = (e: KeyboardEvent) => {\r\n\t\t\tif(e.key === \"Escape\"){ // Esc button\r\n\t\t\t\thandleResetCurrentPark();\r\n\t\t\t} \r\n\t\t}\r\n\r\n\t\tconst clickOutsideOverlay = (e: MouseEvent) => {\r\n\t\t\tlet element = e.target as Element;\r\n\t\t\tif(element.tagName === \"AREA\") return; // If area is click dont close the overlay;\r\n\r\n\t\t\tif(!element.classList.contains(\"map-overlay\") || !element.closest(\".map-overlay\")){\r\n\t\t\t\thandleResetCurrentPark();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tdocument.addEventListener(\"keydown\", clickEscape);\r\n\t\tdocument.addEventListener(\"click\", clickOutsideOverlay);\r\n\r\n\t\treturn () => {\r\n\t\t\tdocument.removeEventListener(\"keydown\", clickEscape);\r\n\t\t\tdocument.removeEventListener(\"click\", clickOutsideOverlay);\r\n\t\t}\r\n\t},[]);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (currentPark && currentPark.imageMapCoordinates) {\r\n\t\t\tconst overlayHeight = overlayRef.current?.scrollHeight || 0;\r\n\t\t\tconst cor = currentPark.imageMapCoordinates\r\n\t\t\t\t.split(',')\r\n\t\t\t\t.map((a: string) => a.trim());\r\n\r\n\t\t\tlet x = parseInt(cor[0]) - 33;\r\n\t\t\tlet y = parseInt(cor[1]) - overlayHeight - 20;\r\n\r\n\t\t\tlet cn = overlayClassName;\r\n\r\n\t\t\tif (!canHoverOverlay) {\r\n\t\t\t\tif (parseInt(cor[1]) - overlayHeight < 10) {\r\n\t\t\t\t\tcn = 'top-arrow';\r\n\t\t\t\t\ty += overlayHeight + 38;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcn = '';\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (y < -10) {\r\n\t\t\t\t\tcn = 'top-arrow';\r\n\t\t\t\t\ty += overlayHeight + 38;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcn = '';\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tsetOverlayPosition({\r\n\t\t\t\tleft: `${x}px`,\r\n\t\t\t\ttop: `${y}px`,\r\n\t\t\t});\r\n\r\n\t\t\tsetOverlayClassName(cn);\r\n\t\t}\r\n\t}, [currentPark, canHoverOverlay, overlayClassName]);\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{parks.map((park: ParkModel, index: number) => (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t))}\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t{currentPark && (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\tStäng ruta\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t)}\r\n\t\t\t\t\r\n\t\t\t\r\n\r\n\t\t\t{showParkList && (\r\n\t\t\t\t\r\n\t\t\t)}\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default Map;\r\n","/**\r\n * ParkListing\r\n */\r\n\r\nimport clsx from 'clsx';\r\nimport React, { useEffect, useState } from 'react';\r\nimport { useMediaQuery } from 'react-responsive';\r\nimport { MinBreakpoint } from 'theme/media-queries';\r\nimport { ParksModel } from 'types/global';\r\nimport { useWebpSupport } from 'hooks/useWebpSupport';\r\nimport ListSearchView from './list/listsearch';\r\nimport Map from './map/map';\r\nimport EditableField from 'components/EditableField';\r\n\r\n/** Park listing component. */\r\nconst ParkListing: React.FC = ({\r\n\tsearchPlaceholderText,\r\n\tparks,\r\n\tshowListViewText,\r\n\tshowMapViewText,\r\n\tsubmitText,\r\n\tparkListHeading,\r\n\tshowParkList,\r\n\theading,\r\n\tdisableResponsiveSwitch = false,\r\n}) => {\r\n\tconst [showListView, toggleShowListView] = useState(false);\r\n\tconst isWebpSupported = useWebpSupport();\r\n\r\n\tconst isTablet = useMediaQuery({\r\n\t\tminWidth: MinBreakpoint.desktop,\r\n\t});\r\n\r\n\tuseEffect(() => {\r\n\t\tif (!disableResponsiveSwitch) {\r\n\t\t\ttoggleShowListView(!isTablet);\r\n\t\t}\r\n\t}, [isTablet]);\r\n\r\n\tconst togglePermanantListView = () => toggleShowListView(!showListView);\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t \r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t{heading}\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t
\r\n\t\t\t\t\t{!showParkList && (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{showListView ? showMapViewText : showListViewText}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)}\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{showListView ? (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)}\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default ParkListing;\r\n","\r\nexport const useWebpSupport = () => {\r\n let useWebp = false;\r\n if (typeof document === 'object') {\r\n const canvas = document.createElement('canvas');\r\n \r\n if (\r\n canvas.getContext &&\r\n canvas.getContext('2d') &&\r\n canvas.toDataURL('image/webp').indexOf('data:image/webp') === 0\r\n ) {\r\n useWebp = true;\r\n }\r\n }\r\n \r\n return useWebp;\r\n}","/**\r\n * Puff\r\n */\r\n\r\nimport React from 'react';\r\nimport Text from 'components/Text';\r\nimport Button from 'components/Button';\r\n\r\ninterface Props {\r\n\t/** The list heading */\r\n\theading: string;\r\n\r\n\t/** The list preamble */\r\n\ttext?: any;\r\n\r\n\t/** Button url */\r\n\turl?: string;\r\n\r\n\t/** Button text */\r\n\turlText: string;\r\n\r\n\t/** Epi attributes */\r\n\t_properties: any;\r\n}\r\n\r\n/** Main description for this component. */\r\nconst Puff: React.FC = ({\r\n\theading,\r\n\ttext,\r\n\turl,\r\n\turlText,\r\n\t_properties,\r\n}) => {\r\n\treturn (\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{heading}\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\r\n\t\t\t\t{text && (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{text}\r\n\t\t\t\t\t

\r\n\t\t\t\t)}\r\n\r\n\t\t\t\t{url && (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{urlText}\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t
\r\n\t\t
\r\n\t);\r\n};\r\n\r\nexport default Puff;\r\n","/**\r\n * StandardPuffBlock\r\n */\r\n\r\nimport React from 'react';\r\nimport Text from 'components/Text';\r\nimport Icon from 'components/Icon';\r\nimport Link from 'components/Link';\r\nimport clsx from 'clsx';\r\nimport { IImage } from '../../types/global';\r\nimport Image from '../Image';\r\n\r\ninterface Props {\r\n\theading: string;\r\n\ttext: string;\r\n\turl: string;\r\n\tcolorTheme: \"white\" | \"grey-lightest\" | \"yellow-light\";\r\n\timage: IImage;\r\n}\r\n\r\n/** Standard puff block component. */\r\nconst PuffWithImage: React.FC = ({\r\n\theading,\r\n\ttext,\r\n\turl,\r\n\timage,\r\n\tcolorTheme = \"white\",\r\n}) => {\r\n\treturn (\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t{image && (\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t\t{heading && (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{' '}\r\n\t\t\t\t\t\t\t\t{heading}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t\t{text && (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{text}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\t);\r\n};\r\n\r\nexport default PuffWithImage;\r\n","/**\r\n * StandardBlock\r\n */\r\n\r\nimport Icon from 'components/Icon';\r\nimport Image from 'components/Image';\r\nimport Link from 'components/Link';\r\nimport React from 'react';\r\nimport type { IImage } from 'types/global';\r\n\r\ninterface Props {\r\n\t/** Block heading */\r\n\theading?: string;\r\n\r\n\t/** Block image */\r\n\timage: IImage;\r\n\r\n\t/** Block url */\r\n\turl: string;\r\n\r\n\t/** Block time */\r\n\twhen?: string;\r\n\r\n\tisPark?: boolean;\r\n}\r\n\r\n/** A standard implementation of an article, event etc. */\r\nconst StandardBlock: React.FC = ({\r\n\theading,\r\n\timage,\r\n\turl,\r\n\twhen,\r\n\tisPark = false,\r\n}) => {\r\n\treturn (\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\t{image && (\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t)}\r\n\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{isPark ? (\r\n\t\t\t\t\t\t\t

{heading}

\r\n\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t

{heading}

\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t
\r\n\r\n\t\t\t\t\t{when && (isPark ?

{when}

:

{when}

)}\r\n\t\t\t\t
\r\n\t\t\t\r\n\t\t
\r\n\t);\r\n};\r\n\r\nexport default StandardBlock;\r\n","/**\r\n * EpiContentArea\r\n */\r\n\r\nimport clsx from 'clsx';\r\nimport ActivitesPuff from 'components/ActivitesPuff';\r\nimport {\r\n\tCurrentInformationBlock,\r\n\tInfoBlock,\r\n} from 'components/CurrentInformationBlock';\r\nimport { Cell, Grid } from 'components/Grid';\r\nimport Instagram from 'components/Instagram';\r\nimport NewsletterPuff from 'components/NewsletterPuff';\r\nimport ParkInformation from 'components/ParkInformation';\r\nimport ParkListing from 'components/ParkListing';\r\nimport Puff from 'components/Puff';\r\nimport PuffWithImage from 'components/PuffWithImage';\r\nimport StandardBlock from 'components/StandardBlock';\r\nimport VideoBlock from 'components/VideoBlock';\r\nimport React from 'react';\r\nimport {\r\n\tActivitiesPuffModel,\r\n\tArticlesPuffModel,\r\n\tCurrentInformationItemModel,\r\n\tCurrentInformationsBlockModel,\r\n\tVideoBlockModel,\r\n} from 'types/blocks';\r\n\r\ninterface Props {\r\n\t/** Epi property containing content for the content area */\r\n\tcontent?: any;\r\n\r\n\t/** Epi properties for on page editing */\r\n\t[htmlAttributes: string]: any;\r\n}\r\n\r\nexport const renderContent = (\r\n\tblock:\r\n\t\t| VideoBlockModel\r\n\t\t| ArticlesPuffModel\r\n\t\t| ActivitiesPuffModel\r\n\t\t| CurrentInformationsBlockModel\r\n\t\t| any,\r\n\ti: number\r\n) => {\r\n\tswitch (block.modelType) {\r\n\t\tcase 'ActivitesPuff':\r\n\t\tcase 'ArticlesPuff':\r\n\t\t\tconst items = block.activities || block.articles;\r\n\t\t\tlet width: string;\r\n\t\t\tif (items === block.articles) {\r\n\t\t\t\twidth = items.length > 3\r\n\t\t\t\t? 'xs:w-1/2 md:w-1/3 lg:w-1/4'\r\n\t\t\t\t: items.length < 3\r\n\t\t\t\t? 'xs:w-1/2'\r\n\t\t\t\t: 'xs:w-1/2 md:w-1/3';\r\n\t\t\t}\r\n\r\n\t\t\tif (items === block.activities) {\r\n\t\t\t\twidth =\r\n\t\t\t\t\titems.length > 3\r\n\t\t\t\t\t\t? 'md:w-1/3 lg:w-1/4'\r\n\t\t\t\t\t\t: items.length < 3\r\n\t\t\t\t\t\t? 'md:w-1/2'\r\n\t\t\t\t\t\t: 'md:w-1/3';\r\n\t\t\t}\r\n\r\n\t\t\treturn (\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{items?.map((activity: any, index: number) => (\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t))}\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t);\r\n\t\tcase 'Puff':\r\n\t\t\treturn (\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t);\r\n\t\tcase 'PuffWithImage':\r\n\t\t\treturn (\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t);\r\n\t\tcase 'NewsletterPuff':\r\n\t\t\treturn (\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t);\r\n\t\tcase 'ParkInformation':\r\n\t\t\treturn (\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t);\r\n\t\tcase 'CurrentInformationsBlockModel':\r\n\t\t\treturn (\r\n\t\t\t\t\r\n\t\t\t\t\t 2 && 'max-w-full',\r\n\t\t\t\t\t\t\tblock?.items?.length > 1 &&\r\n\t\t\t\t\t\t\t\tblock?.items?.length <= 2 &&\r\n\t\t\t\t\t\t\t\t'max-w-5xl'\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{...block}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{block.items?.map(\r\n\t\t\t\t\t\t\t\t(item: CurrentInformationItemModel, j: number) => {\r\n\t\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t\t 1\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t? 'puff-tablet-width m-3'\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t: 'info-block-single-image'\r\n\t\t\t\t\t\t\t\t\t\t\t} `}\r\n\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t);\r\n\t\tcase 'InstagramModel':\r\n\t\t\treturn (\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t);\r\n\t\tcase 'Parks':\r\n\t\t\treturn (\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t);\r\n\t\tcase 'VideoBlock':\r\n\t\t\treturn (\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t);\r\n\t\tdefault:\r\n\t\t\treturn null;\r\n\t}\r\n};\r\n\r\n/** Epi content area for handling blocks */\r\nconst EpiContentArea: React.FC = ({\r\n\tcontent = [],\r\n\t...htmlAttributes\r\n}) => (\r\n\t
\r\n\t\t\r\n\t\t\t{content?.map(renderContent)}\r\n\t\t\r\n\t
\r\n);\r\n\r\nexport default EpiContentArea;\r\n","/**\r\n * ReadSpeaker\r\n */\r\n\r\nimport clsx from 'clsx';\r\nimport Icon from 'components/Icon';\r\nimport { useScript } from 'hooks';\r\nimport React, { useEffect, useState } from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { selectNavigation } from 'store/modules/model';\r\n\r\ninterface Props {\r\n\t/** Url for readspeaker. */\r\n\turl?: string;\r\n\r\n\t/** Text to display next to icon. */\r\n\ttext?: string;\r\n\r\n\t/** Title for readspeaker link. */\r\n\ttitle?: string;\r\n\r\n\t/** Classname with styling for readspeaker link. */\r\n\tclassName?: string;\r\n\r\n\t/**Class name for readspeaker container */\r\n\tcontainerClassName?: string;\r\n\r\n\tonRsVisibilityChanged?(isVisible: boolean): void;\r\n}\r\n\r\n/** Adds readspeaker functionality and visual feedback for ease of use. */\r\nconst ReadSpeaker: React.FC = ({\r\n\turl,\r\n\ttext,\r\n\ttitle = 'Lyssna på innehållet på den här sidan.',\r\n\tclassName,\r\n\tcontainerClassName,\r\n\tonRsVisibilityChanged,\r\n}) => {\r\n\tconst [showRS, setShowRS] = useState(false);\r\n\tconst navigation = useSelector(selectNavigation);\r\n\r\n\tuseScript({\r\n\t\turl:\r\n\t\t\t'https://cdn-eu.readspeaker.com/script/9307/webReader/webReader.js?pids=wr',\r\n\t\tid: 'rs_req_Init',\r\n\t});\r\n\r\n\tuseEffect(() => {\r\n\t\tfunction closeRS() {\r\n\t\t\tsetShowRS(false);\r\n\t\t\tif (onRsVisibilityChanged) onRsVisibilityChanged(false);\r\n\t\t}\r\n\r\n\t\tif (showRS) {\r\n\t\t\tconst closeBtn = document.querySelector(\r\n\t\t\t\t'#readspeaker_button1 > div > span > button.rsbtn_closer.rsbtn_player_item'\r\n\t\t\t);\r\n\r\n\t\t\tconst mobileCloseBtn = document.querySelector('.rsmpl-closer > button');\r\n\r\n\t\t\tif (closeBtn) closeBtn.addEventListener('mouseup', closeRS);\r\n\t\t\tif (mobileCloseBtn) mobileCloseBtn.addEventListener('mouseup', closeRS);\r\n\r\n\t\t\treturn () => {\r\n\t\t\t\tif (closeBtn) closeBtn.removeEventListener('mouseup', closeRS);\r\n\t\t\t\tif (mobileCloseBtn)\r\n\t\t\t\t\tmobileCloseBtn.removeEventListener('mouseup', closeRS);\r\n\t\t\t};\r\n\t\t}\r\n\t}, [showRS]);\r\n\r\n\tfunction handleShowRS() {\r\n\t\tsetShowRS(true);\r\n\t\tif (onRsVisibilityChanged) onRsVisibilityChanged(true);\r\n\t}\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{text}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default ReadSpeaker;\r\n","/**\r\n * ShareArea\r\n */\r\n\r\nimport React from 'react';\r\nimport clsx from 'clsx';\r\nimport Text from 'components/Text';\r\nimport {\r\n\tShareModel,\r\n\tShareWithTwitter,\r\n\tShareWithFacebook,\r\n\tShareWithGooglePlus,\r\n\tShareWithMail,\r\n} from './types';\r\n\r\nconst ShareWithTwitterComponent: React.FC = ({\r\n\tname,\r\n\ttext,\r\n\ttype,\r\n\turl,\r\n}) => {\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nconst ShareWithFacebookComponent: React.FC = ({\r\n\tname,\r\n\ttext,\r\n\ttype,\r\n\turl,\r\n\tcampaignName,\r\n\tcampaignSource,\r\n\tcampaignMedium,\r\n}) => {\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nconst ShareWithGooglePlusComponent: React.FC = ({\r\n\tname,\r\n\ttext,\r\n\ttype,\r\n\turl,\r\n}) => {\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nconst ShareWithMailComponent: React.FC = ({\r\n\tname,\r\n\ttext,\r\n\ttype,\r\n\turl,\r\n\tsubject,\r\n}) => {\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nconst Components: any = {\r\n\ttwitter: ShareWithTwitterComponent,\r\n\tfacebook: ShareWithFacebookComponent,\r\n\tgoogle: ShareWithGooglePlusComponent,\r\n\tmail: ShareWithMailComponent,\r\n};\r\n\r\n/** ShareArea component. */\r\nconst ShareArea: React.FC = ({ heading, text, url, shares }) => {\r\n\treturn (\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t{heading}\r\n\t\t\t\t\r\n\r\n\t\t\t\t\r\n\t\t\t\t\t{text}\r\n\t\t\t\t\r\n\r\n\t\t\t\t
    \r\n\t\t\t\t\t{shares.map((share) => {\r\n\t\t\t\t\t\tvar Component = Components[share.type];\r\n\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t
  • \r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
  • \r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t})}\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t);\r\n};\r\n\r\nexport default ShareArea;\r\n","import React from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { ShareModel } from './types';\r\nimport Component from './ShareArea';\r\nimport { selectShare } from '../../store/modules/model';\r\n\r\nconst Share = () => {\r\n\tconst model: ShareModel = useSelector(selectShare);\r\n\r\n\treturn <>{model && };\r\n};\r\n\r\nexport default Share;\r\n","/**\r\n * StartPage\r\n */\r\n\r\nimport Carousel from 'components/Carousel';\r\nimport EpiContentArea from 'components/EpiContentArea';\r\nimport EpiFragments from 'components/EpiFragments';\r\nimport Link from 'components/Link';\r\nimport ReadSpeaker from 'components/ReadSpeaker';\r\nimport Share from 'components/Share';\r\nimport Text from 'components/Text';\r\nimport React from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { selectReadSpeaker } from 'store/modules/model';\r\nimport { StartPageModel } from 'types/pages';\r\nimport { selectMetadata } from 'store/modules/model';\r\n\r\n\r\n/** Page template for startpage. */\r\nconst StartPage: React.FC = ({\r\n\theading,\r\n\tcontentArea,\r\n\tpreambleHtml,\r\n\taboutLink,\r\n\tcarousel,\r\n\t_properties = {},\r\n}) => {\r\n\tconst readSpeaker = useSelector(selectReadSpeaker);\r\n\tconst metaData = useSelector(selectMetadata);\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t{carousel && }\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\t\r\n\r\n\t\t\t\t\r\n\t\t\t\t\t{metaData?.title}\r\n\t\t\t\t\r\n\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{heading}\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\r\n\t\t\t\t\t{aboutLink && (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{aboutLink.text}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)}\r\n\t\t\t\t
\r\n\t\t\t
\r\n\r\n\t\t\t\r\n\r\n\t\t\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default StartPage;\r\n","/**\r\n * Breadcrumbs\r\n */\r\n\r\nimport React from 'react';\r\nimport { useMediaQuery } from 'react-responsive';\r\ninterface Props {\r\n\t/** Aria-label */\r\n\tlabel?: string;\r\n}\r\n\r\n/** Breadcrumbs component */\r\nconst Breadcrumbs: React.FC = ({ label = 'Brödsmulor', children }) => {\r\n\tconst isBigTabletOrDesktop = useMediaQuery({ query: '(min-width: 960px)' });\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t{isBigTabletOrDesktop && (\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t
    {children}
\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t)}\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default Breadcrumbs;\r\n","/**\r\n * Crumb\r\n */\r\n\r\nimport React from 'react';\r\nimport Link from 'components/Link';\r\n\r\ninterface Props {\r\n\t/** Link href */\r\n\thref: string;\r\n\r\n\t/** If it's the currently active breadcrumb */\r\n\tactive?: boolean;\r\n}\r\n\r\n/** Crumb component */\r\nconst Crumb: React.FC = ({ href, active, children }) => (\r\n\t
  • \r\n\t\t{active ? (\r\n\t\t\t{children}\r\n\t\t) : (\r\n\t\t\t\r\n\t\t\t\t{children}\r\n\t\t\t\r\n\t\t)}\r\n\t
  • \r\n);\r\n\r\nexport default Crumb;\r\n","import React from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { selectBreadcrumbs } from 'store/modules/model';\r\n\r\nimport Component from './Breadcrumbs';\r\nimport Crumb from './Crumb';\r\n\r\nconst Breadcrumbs = () => {\r\n\tconst model = useSelector(selectBreadcrumbs);\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t{model?.breadcrumbs.map((link, i) => (\r\n\t\t\t\t\r\n\t\t\t\t\t{link.text}\r\n\t\t\t\t\r\n\t\t\t))}\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport { Breadcrumbs, Crumb };\r\n","/**\r\n * ErrorPage404\r\n */\r\n\r\nimport React from 'react';\r\nimport { Grid, Cell } from 'components/Grid';\r\nimport Text from 'components/Text';\r\nimport { ErrorPage404Model } from 'types/pages';\r\nimport { Breadcrumbs } from 'components/Breadcrumbs';\r\nimport EpiFragments from '../../components/EpiFragments';\r\n\r\n/** Page template for error handling. */\r\nconst ErrorPage404: React.FC = ({\r\n\theading,\r\n\tpreamble,\r\n\ttext,\r\n\tbackgroundImage,\r\n\t_properties,\r\n}) => {\r\n\tconst imageUrl =\r\n\t\tbackgroundImage?.src || '/assets/images/hamra-nationalpark-skog.jpeg';\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{heading}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t

    \r\n\t\t\t\t\t\t\t{preamble}\r\n\t\t\t\t\t\t

    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t{text && (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default ErrorPage404;\r\n","/**\r\n * ActivityInfo\r\n*/\r\nimport React from 'react';\r\n\r\nimport Button from 'components/Button';\r\nimport { useModal } from 'hooks/useModal';\r\nimport Image from 'components/Image';\r\nimport Link from 'components/Link';\r\nimport type { IImage } from '../../types/global';\r\nimport { useSelector } from 'react-redux';\r\nimport { selectEpi } from 'store/modules/epi';\r\nimport Text from 'components/Text';\r\nimport EditableField from 'components/EditableField';\r\n\r\n\r\nexport interface ActivityInfo {\r\n\t/** If there is bookinginfo availble, this is it. */\r\n\tbooking?: {\r\n\t\tlink: string;\r\n\t\tlinkText: string;\r\n\t\theading: string;\r\n\t\tlinkCaption: string;\r\n\t\ttext: string;\r\n\t\tbuttonText: string;\r\n\t} | null;\r\n\t/** Array of info objects, */\r\n\r\n\t/** Epi properties to use for on page editing */\r\n\tonPageEditHtmlAttributes: any;\r\n\r\n\twhen: {\r\n\t\tstartDate: string | null;\r\n\t\tstopDate: string | null;\r\n\t\twholeYearText: string;\r\n\t\ttitle: string;\r\n\t\ttext: string | null;\r\n\t};\r\n\tlocation: {\r\n\t\tlocationImage: IImage | null,\r\n\t\tlocationName: string | null,\r\n\t\tlocationLatitude: string | null,\r\n\t\tlocationLongitude: string | null,\r\n\t\ttitle: string,\r\n\t\ttext: string | null\r\n\t}\r\n\r\n\tspecialEquipment: {\r\n\t\ttitle: string;\r\n\t\ttext: string | null;\r\n\t};\r\n\totherInformation: {\r\n\t\ttitle: string;\r\n\t\ttext: string | null;\r\n\t};\r\n\t\r\n}\r\n\r\n/** Main description for this component. */\r\nconst ActivityInfo: React.FC = ({\r\n\tbooking = null,\r\n\twhen,\r\n\tlocation,\r\n\tspecialEquipment,\r\n\totherInformation,\r\n\tonPageEditHtmlAttributes = {}\r\n}) => {\r\n\tconst {Modal, openModal} = useModal();\r\n\r\n\t//const toggle = setShowModal as Dispatch>;\r\n const { isEditable } = useSelector(selectEpi);\r\n\r\n\tconst checkIfLocationHasLongLatImage = () => {\r\n\t\treturn (location.locationImage && location.locationLatitude && location.locationLongitude);\r\n\t}\r\n\r\n\tconst checkIfLocationHasTextOrName = () => {\r\n\t\treturn (location.locationName || location.text);\r\n\t}\r\n\r\n\tconst checkIfWhenHasStartDateAndWhenTextIsNull = () => {\r\n\t\treturn (when.startDate && !when.text);\r\n\t}\r\n\r\n\tconst checkIfWhenHasStopDateAndWhenTextIsNull = () => {\r\n\t\treturn (when.stopDate && !when.text);\r\n\t}\r\n\r\n\tconst checkIfWhenHasNoStartAndStopDateAndText = () => {\r\n\t\treturn (!when.startDate && !when.stopDate && !when.text);\r\n\t}\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t{isEditable &&\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t}\r\n\t\t\t{booking && (\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{booking.buttonText}\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t)}\r\n\t\t\t{isEditable &&\r\n\t\t\t\t
    \r\n\t\t\t\t\t{booking &&\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t

    {booking.heading}

    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t

    {booking.text}

    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t

    {booking.link ? booking.linkCaption : null}

    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t

    {booking.linkText}

    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t}\r\n\t\t\t\t
    \r\n\t\t\t}\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t

    {when.title}

    \r\n\r\n\t\t\t\t\t{checkIfWhenHasNoStartAndStopDateAndText() &&\r\n\t\t\t\t\t\t

    {when.wholeYearText}

    \r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t{(when.text || isEditable) &&\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t

    {when.text}

    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t{(checkIfWhenHasStartDateAndWhenTextIsNull() || isEditable) &&\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t

    {when.startDate}

    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t{(checkIfWhenHasStopDateAndWhenTextIsNull() || isEditable) &&\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t

    {when.stopDate}

    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t}\r\n\t\t\t\t
    \t\r\n\t\t\t\t\r\n\t\t\t\t{(checkIfLocationHasLongLatImage() || checkIfLocationHasTextOrName() || isEditable) &&\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t

    {location.title}

    \r\n\r\n\t\t\t\t\t\t{(location.locationName || isEditable) &&\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t

    {location.locationName}

    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t{(location.locationImage || isEditable) &&\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{location.locationImage && {location.locationImage.alt}}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t{(location.text || isEditable) && \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t

    {location.text}

    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t{(checkIfLocationHasLongLatImage() || isEditable) && \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t

    \r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{location.locationLatitude} \t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t /\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{location.locationLongitude} \t\r\n\t\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t

    \r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t
    \r\n\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t{(specialEquipment.text || isEditable) && \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t

    {specialEquipment.title}

    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{specialEquipment.text}\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t}\r\n\r\n\t\t\t\t{(otherInformation.text || isEditable) &&\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t

    {otherInformation.title}

    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{otherInformation.text}\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t}\r\n\t\t\t
    \r\n\r\n\t\t\t{booking && (\r\n\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t

    {booking.heading}

    \r\n\t\t\t\t\t\t

    {booking.text}

    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{booking.linkText}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t)}\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default ActivityInfo;\r\n","/**\r\n * MenuItem\r\n */\r\n\r\nimport React from 'react';\r\nimport clsx from 'clsx';\r\nimport { MenuItemModel } from 'types/epi';\r\nimport Link from 'components/Link';\r\n\r\nconst MenuItem: React.FC = ({ text, url, selected }) => {\r\n\tif (!selected) {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t

    {text}

    \r\n\t\t\t\t
    \r\n\t\t\t\r\n\t\t);\r\n\t} else {\r\n\t\treturn (\r\n\t\t\t

    \r\n\t\t\t\t{text}\r\n\t\t\t

    \r\n\t\t);\r\n\t}\r\n};\r\n\r\nexport default MenuItem;\r\n","/**\r\n * MenuItem\r\n */\r\n\r\nimport React from 'react';\r\nimport clsx from 'clsx';\r\nimport { MenuItemModel } from 'types/epi';\r\nimport Link from 'components/Link';\r\n\r\nconst LargeMenuItem: React.FC = ({ text, url, selected }) => {\r\n\tif (!selected) {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t

    {text}

    \r\n\t\t\t\t
    \r\n\t\t\t\r\n\t\t);\r\n\t} else {\r\n\t\treturn (\r\n\t\t\t

    \r\n\t\t\t\t{text}\r\n\t\t\t

    \r\n\t\t);\r\n\t}\r\n};\r\n\r\nexport default LargeMenuItem;\r\n","/**\r\n * Menu\r\n */\r\n\r\nimport React from 'react';\r\nimport MenuItem from './MenuItem';\r\nimport LargeMenuItem from './LargeMenuItem';\r\nimport { MenuModel } from 'types/epi';\r\n\r\n/** Main description for this component. */\r\nconst Menu: React.FC = ({ items }) => {\r\n\treturn (\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default Menu;\r\n","/**\r\n * ArticlePage\r\n */\r\n\r\nimport clsx from 'clsx';\r\nimport ActivityInfo from 'components/ActivityInfo';\r\nimport { Breadcrumbs } from 'components/Breadcrumbs';\r\nimport EditableField from 'components/EditableField';\r\nimport EpiFragments from 'components/EpiFragments';\r\nimport { Cell, Grid } from 'components/Grid';\r\nimport Image from 'components/Image';\r\nimport Menu from 'components/Menu';\r\nimport ReadSpeaker from 'components/ReadSpeaker';\r\nimport Share from 'components/Share';\r\nimport Text from 'components/Text';\r\nimport React, { useState } from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { useMediaQuery } from 'react-responsive';\r\nimport { selectMenu, selectReadSpeaker } from 'store/modules/model';\r\nimport { MinBreakpoint } from 'theme/media-queries';\r\nimport { ArticlePageModel } from 'types/pages';\r\n\r\n/** Page template for article page. */\r\nconst ArticlePage: React.FC = ({\r\n\theading,\r\n\tpreamble,\r\n\taboutText,\r\n\ttext,\r\n\ttopImage,\r\n\tactivityInfo = null,\r\n\tparkName = '',\r\n\t_properties = {},\r\n}) => {\r\n\tconst readSpeaker = useSelector(selectReadSpeaker);\r\n\tconst menu = useSelector(selectMenu);\r\n\tconst isTablet = useMediaQuery({ query: '(min-width: 768px)' });\r\n\tconst isBigTablet = useMediaQuery({ query: '(max-width: 960px)' });\r\n\tconst isDesktop = useMediaQuery({\r\n\t\tquery: `(min-width: ${MinBreakpoint.desktop})`,\r\n\t});\r\n\r\n\tconst isFormContainer: boolean = text?.fragments.some((item: any) => {\r\n\t\treturn item.modelType === 'FormContainer';\r\n\t});\r\n\r\n\tconst [isRsVisible, setIsRsVisible] = useState(false);\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t\r\n\t\t\t{isBigTablet && (\r\n\t\t\t\t

    \r\n\t\t\t\t\t{parkName}\r\n\t\t\t\t

    \r\n\t\t\t)}\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t{menu && (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{topImage && (\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{readSpeaker && !isTablet && (\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t{heading}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t

    \r\n\t\t\t\t\t\t\t\t\t\t\t{preamble}\r\n\t\t\t\t\t\t\t\t\t\t

    \r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t{aboutText && (\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t{aboutText}\r\n\t\t\t\t\t\t\t\t\t

    \r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{readSpeaker && isTablet && (\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\tsetIsRsVisible(isVisible)\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\tclassName={clsx(\r\n\t\t\t\t\t\t\t\t\t\t\t'flex',\r\n\t\t\t\t\t\t\t\t\t\t\tisRsVisible\r\n\t\t\t\t\t\t\t\t\t\t\t\t? 'justify-start absolute left-0 top-0'\r\n\t\t\t\t\t\t\t\t\t\t\t\t: 'justify-center'\r\n\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t{activityInfo && (\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default ArticlePage;\r\n","/**\r\n * Notification\r\n */\r\n\r\nimport clsx from 'clsx';\r\nimport Icon from 'components/Icon';\r\nimport React, { useMemo } from 'react';\r\nimport { IconList } from 'theme/icons';\r\n\r\nexport type NotificationType = 'success' | 'error' | 'info' | 'warning';\r\n\r\nexport interface NotificationProps {\r\n\tisLoading?: boolean;\r\n\ttype?: NotificationType;\r\n\thidden?: boolean;\r\n}\r\n\r\n/** Main description for this component. */\r\nconst Notification: React.FC = ({\r\n\tisLoading = false,\r\n\ttype = 'info',\r\n\thidden = true,\r\n\tchildren,\r\n}) => {\r\n\tconst theme = useMemo(() => {\r\n\t\t// let componentTheme: { style: string; icon: IconList['icon'] };\r\n\t\tlet icon: IconList['icon'];\r\n\t\tlet style: string;\r\n\r\n\t\tswitch (type) {\r\n\t\t\tcase 'success':\r\n\t\t\t\ticon = 'check';\r\n\t\t\t\tstyle = 'bg-green-dark text-white';\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'error':\r\n\t\t\t\ticon = 'exclamation';\r\n\t\t\t\tstyle = 'bg-red-dark text-white';\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'warning':\r\n\t\t\t\ticon = 'info';\r\n\t\t\t\tstyle = 'bg-yellow-dark text-white';\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'info':\r\n\t\t\tdefault:\r\n\t\t\t\tstyle = 'bg-blue text-white';\r\n\t\t\t\ticon = 'info';\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tstyle,\r\n\t\t\ticon,\r\n\t\t};\r\n\t}, [type]);\r\n\r\n\tif (hidden) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\treturn (\r\n\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t{!isLoading &&

    {children}

    }\r\n\t\t\t
    \r\n\t\t
    \r\n\t);\r\n};\r\n\r\nexport default Notification;\r\n","/**\r\n * ResetPasswordPage\r\n */\r\n\r\nimport axios from 'axios';\r\nimport { Breadcrumbs } from 'components/Breadcrumbs';\r\nimport Button from 'components/Button';\r\nimport Notification from 'components/Notification';\r\nimport { NotificationType } from 'components/Notification/Notification';\r\nimport React, { useEffect, useMemo, useState } from 'react';\r\nimport { ResetPasswordPageModel } from 'types/pages';\r\n\r\nconst PasswordResetResult = {\r\n\tSENT: 'passwordrequestsent',\r\n\tSENDFAIL: 'passwordrequestsentfail',\r\n\tSUCCESS: 'passwordresetsuccess',\r\n\tSENDING: 'passwordrequestsending',\r\n\tNSTART: 'requestnotstarted',\r\n};\r\n\r\n/** Main description for this component. */\r\nconst ResetPasswordPage: React.FC = (props) => {\r\n\tconst [requestState, setRequestState] = useState(PasswordResetResult.NSTART);\r\n\tconst [resultMessage, setResultMessage] = useState(\r\n\t\tprops.passwordResetSuccessMessage\r\n\t);\r\n\r\n\tasync function submitEmailAddress(event: any) {\r\n\t\tevent.preventDefault();\r\n\t\tsetRequestState(PasswordResetResult.SENDING);\r\n\r\n\t\tconst email = event.currentTarget.elements.email.value;\r\n\r\n\t\tif (email == '' || email == null) {\r\n\t\t\tsetRequestState(PasswordResetResult.SENDFAIL);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tconst res = await axios.post(`${props.url}${email}`);\r\n\t\t\tconst data = res.data;\r\n\r\n\t\t\tstatus(data);\r\n\t\t} catch (e) {\r\n\t\t\tsetRequestState(PasswordResetResult.SENDFAIL);\r\n\t\t\tsetResultMessage(props.passwordRequestFailMessage);\r\n\t\t}\r\n\t}\r\n\r\n\tconst notificationTheme = useMemo((): NotificationType => {\r\n\t\tswitch (requestState) {\r\n\t\t\tcase PasswordResetResult.SENDFAIL:\r\n\t\t\t\treturn 'error';\r\n\r\n\t\t\tcase PasswordResetResult.SUCCESS:\r\n\t\t\tcase PasswordResetResult.SENT:\r\n\t\t\t\treturn 'success';\r\n\r\n\t\t\tcase PasswordResetResult.SENDING:\r\n\t\t\tdefault:\r\n\t\t\t\treturn 'info';\r\n\t\t}\r\n\t}, [requestState]);\r\n\r\n\tuseEffect(() => {\r\n\t\tconst queryString = window.location.search;\r\n\t\tconst urlParams = new URLSearchParams(queryString);\r\n\t\tconst statusParam = urlParams.get('status');\r\n\t\tif (statusParam != null) {\r\n\t\t\tstatus(statusParam);\r\n\t\t}\r\n\t}, []);\r\n\r\n\treturn (\r\n\t\t
    \r\n\t\t\t\r\n\t\t\t
    \r\n\t\t\t\t

    {props.heading}

    \r\n\t\t\t\t
    \r\n\t\t\t\t\t{requestState !== PasswordResetResult.NSTART && (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{resultMessage}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{props.resetPasswordButtonText}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t
    \r\n\t);\r\n\r\n\tfunction status(data: any) {\r\n\t\tswitch (data) {\r\n\t\t\tcase PasswordResetResult.SENT:\r\n\t\t\t\tsetRequestState(PasswordResetResult.SENT);\r\n\t\t\t\tsetResultMessage(props.passwordRequestSentMessage);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase PasswordResetResult.SUCCESS:\r\n\t\t\t\tsetRequestState(PasswordResetResult.SUCCESS);\r\n\t\t\t\tsetResultMessage(props.passwordResetSuccessMessage);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase PasswordResetResult.SENDFAIL:\r\n\t\t\tdefault:\r\n\t\t\t\tsetRequestState(PasswordResetResult.SENDFAIL);\r\n\t\t\t\tsetResultMessage(props.passwordRequestFailMessage);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n};\r\n\r\nexport default ResetPasswordPage;\r\n","/**\r\n * StandardBlock\r\n */\r\n\r\nimport Icon from 'components/Icon';\r\nimport Image from 'components/Image';\r\nimport Link from 'components/Link';\r\nimport React from 'react';\r\nimport { IImage } from 'types/global';\r\n\r\ninterface Props {\r\n\t/** Block heading */\r\n\theading?: string;\r\n\r\n\t/** Block image */\r\n\timage: IImage;\r\n\r\n\t/** Block url */\r\n\turl: string;\r\n\r\n\t/** Block time */\r\n\twhen?: string;\r\n\r\n\t/** Block image alt text */\r\n\talt?: string;\r\n\r\n\t/** Puff title level */\r\n\tTitleLevel?: \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\";\r\n\r\n\tisPark?: boolean;\r\n}\r\n\r\n/** A standard implementation of an article, event etc. */\r\nconst ActivityStandardBlock: React.FC = ({\r\n\theading,\r\n\timage,\r\n\turl,\r\n\tTitleLevel = \"h3\",\r\n\twhen,\r\n\talt = '',\r\n\tisPark = false,\r\n}) => {\r\n\treturn (\r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\t{image && (\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t)}\r\n\r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{isPark ? (\r\n\t\t\t\t\t\t\t{heading}\r\n\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t{heading}\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t{when && (isPark ?

    {when}

    :

    {when}

    )}\r\n\t\t\t\t
    \r\n\t\t\t\r\n\t\t
    \r\n\t);\r\n};\r\n\r\nexport default ActivityStandardBlock;\r\n","/**\r\n * ActivityList\r\n */\r\n\r\nimport React from 'react';\r\nimport clsx from 'clsx';\r\n\r\nimport Text from 'components/Text';\r\nimport ActivityStandardBlock from 'components/ActivityStandardBlock/ActivityStandardBlock';\r\nimport { Grid } from 'components/Grid';\r\nimport Link from 'components/Link';\r\nimport { IImage } from 'types/global';\r\n\r\ninterface ActivityGroupModel {\r\n\t/** Description of this property */\r\n\tgroups?: ActivitiesPuffModel[];\r\n\tshowMoreText?: string | null;\r\n}\r\n\r\nexport interface ActivitiesPuffModel {\r\n\tmodelType?: 'ActivitiesPuffModel';\r\n\tactivities?: Activity[];\r\n\tname?: string;\r\n\turl?: string;\r\n}\r\n\r\nexport interface Activity {\r\n\timage: IImage;\r\n\turl: string;\r\n\tname: string;\r\n\twhen?: string;\r\n\talt?: string;\r\n}\r\n\r\n/** Main description for this component. */\r\nconst ActivityList: React.FC = ({\r\n\tgroups = [],\r\n\tshowMoreText = null,\r\n}) => {\r\n\treturn (\r\n\t\t<>\r\n\t\t\t{groups.map((group: ActivitiesPuffModel, i: number) => (\r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t{group.name && (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t{showMoreText && (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{showMoreText}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{group.activities?.map((activity: Activity, i: number) => (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t))}\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t))}\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default ActivityList;\r\n","/**\r\n * ActivitiesPage\r\n */\r\n\r\nimport React from 'react';\r\nimport { ActivitiesPageModel } from 'types/pages';\r\nimport Share from 'components/Share';\r\nimport { Breadcrumbs } from 'components/Breadcrumbs';\r\nimport { Grid } from 'components/Grid';\r\nimport ActivityList from 'components/ActivityList';\r\nimport { useMediaQuery } from 'react-responsive';\r\n\r\n/** Page for listing activities for all parks and specific park */\r\nconst ActivitiesPage: React.FC = ({\r\n\tgroups = [],\r\n\theading,\r\n\tparkName = '',\r\n\tshowMoreText,\r\n\t_properties,\r\n}) => {\r\n\tconst isBigTablet = useMediaQuery({ query: '(max-width: 960px)' });\r\n\treturn (\r\n\t\t<>\r\n\t\t\t\r\n\t\t\t
    \r\n\t\t\t\t{isBigTablet && (\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\t{parkName}\r\n\t\t\t\t\t

    \r\n\t\t\t\t)}\r\n\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t

    \r\n\t\t\t\t\t\t\t{heading}\r\n\t\t\t\t\t\t

    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t{groups.length && (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)}\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default ActivitiesPage;\r\n","/**\r\n * ParkListingPage\r\n */\r\n\r\nimport { Breadcrumbs } from 'components/Breadcrumbs';\r\nimport ParkListing from 'components/ParkListing';\r\nimport Share from 'components/Share';\r\nimport React from 'react';\r\nimport { ParkListingPageModel } from 'types/pages';\r\n\r\n/** Main description for this component. */\r\nconst ParkListingPage: React.FC = ({ parkListing }) => {\r\n\treturn (\r\n\t\t<>\r\n\t\t\t\r\n\t\t\t{parkListing && }\r\n\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default ParkListingPage;\r\n","/**\r\n * ParkPage\r\n */\r\n\r\nimport { Breadcrumbs } from 'components/Breadcrumbs';\r\nimport EpiContentArea from 'components/EpiContentArea';\r\nimport Carousel from 'components/Carousel';\r\nimport Link from 'components/Link';\r\nimport ReadSpeaker from 'components/ReadSpeaker';\r\nimport Share from 'components/Share';\r\nimport Text from 'components/Text';\r\nimport React from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { selectReadSpeaker } from 'store/modules/model';\r\nimport { ParkPageModel } from 'types/pages';\r\nimport EditableField from 'components/EditableField';\r\nimport { useScript } from 'hooks';\r\n\r\n/** Main description for this component. */\r\nconst ParkPage: React.FC = ({\r\n\tcarousel,\r\n\tcontentArea,\r\n\tcontentAreaAboveMap,\r\n\tpuffHeading,\r\n\tpreamble,\r\n\tsecondHeading,\r\n\tlinkText,\r\n\tlinkUrl,\r\n\tparkMapHtml,\r\n\tparkMapScript,\r\n\t_properties,\r\n}) => {\r\n\tconst readSpeaker = useSelector(selectReadSpeaker);\r\n\r\n\tuseScript({\r\n\t\turl: parkMapScript ? parkMapScript : \"\",\r\n\t\tid: \"naturkartanMap\"\r\n\t});\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t\r\n\t\t\t{carousel && }\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t{readSpeaker && (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{puffHeading}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{secondHeading}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{preamble}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{linkUrl && (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{linkText}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\r\n\t\t\t\r\n\r\n\t\t\t{parkMapHtml && (\r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t)}\r\n\r\n\t\t\t\r\n\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default ParkPage;\r\n","/**\r\n * SearchField\r\n */\r\n\r\nimport React from 'react';\r\nimport Icon from 'components/Icon';\r\n\r\ninterface Props {\r\n\t/** Field id */\r\n\tid: string;\r\n\r\n\t/** Field label */\r\n\tlabel: string;\r\n\r\n\t/** Field name */\r\n\tname: string;\r\n\r\n\t/** Field placeholder */\r\n\tplaceholder?: string;\r\n\r\n\t/** Submit button text */\r\n\tsubmitText: string;\r\n\r\n\t[htmlAttributes: string]: any;\r\n}\r\n\r\n/** Search input field component */\r\nconst SearchField: React.FC = ({\r\n\tid,\r\n\tlabel,\r\n\tname,\r\n\tplaceholder,\r\n\tsubmitText,\r\n\t...htmlAttributes\r\n}) => {\r\n\treturn (\r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t
    \r\n\t);\r\n};\r\n\r\nexport default SearchField;\r\n","/**\r\n * SearchFieldLarge\r\n */\r\n\r\nimport React from 'react';\r\nimport Icon from 'components/Icon';\r\n\r\ninterface Props {\r\n\t/** Field id */\r\n\tid: string;\r\n\r\n\t/** Field label */\r\n\tlabel: string;\r\n\r\n\t/** Field value */\r\n\tvalue?: string;\r\n\r\n\t/** Field name */\r\n\tname: string;\r\n\r\n\t/** Field placeholder */\r\n\tplaceholder?: string;\r\n\r\n\t/** Submit button text */\r\n\tsubmitText: string;\r\n\r\n\t/** On submit function */\r\n\tonSubmit?: any;\r\n\r\n\t/** Props for the label tag (coming from Downshift) */\r\n\tlabelProps?: any;\r\n\r\n\t[htmlAttributes: string]: any;\r\n}\r\n\r\n/** Search input field component */\r\nconst SearchFieldLarge: React.FC = ({\r\n\tid,\r\n\tlabel,\r\n\tname,\r\n\tvalue,\r\n\tplaceholder,\r\n\tsubmitText,\r\n\tlabelProps,\r\n\tonSubmit,\r\n\t...htmlAttributes\r\n}) => {\r\n\treturn (\r\n\t\t {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tonSubmit();\r\n\t\t\t}}\r\n\t\t>\r\n\t\t\t\r\n\t\t\t\r\n\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default SearchFieldLarge;\r\n","/**\r\n * AutoComplete\r\n */\r\n\r\nimport React, { useEffect } from 'react';\r\nimport Downshift from 'downshift';\r\nimport { useAutoComplete } from 'hooks';\r\nimport clsx from 'clsx';\r\n\r\nimport SearchField from 'components/SearchField';\r\nimport SearchFieldLarge from 'components/SearchField/SearchFieldLarge';\r\nimport { Form } from 'components/Form';\r\n\r\ninterface Props {\r\n\tid: string;\r\n\tlabel: string;\r\n\r\n\t/** Placeholder */\r\n\tplaceholder?: string;\r\n\r\n\t/** Destination to send searched words */\r\n\taction?: string;\r\n\r\n\t/** Field name */\r\n\tname: string;\r\n\r\n\t/** Submit button text */\r\n\tsubmitText: string;\r\n\r\n\t/** Autocomplete url */\r\n\tautocompleteApiUrl?: string;\r\n\r\n\t/** Optional on change and on submit functions */\r\n\tonSubmit?: any;\r\n\tonChange?: any;\r\n\r\n\t/** Field value */\r\n\tvalue?: string;\r\n\r\n\t/** If the Autocomplete is for the large search (main search on search page) or not */\r\n\tlargeSearch?: boolean;\r\n}\r\n\r\n/** Auto complete component */\r\nconst Autocomplete: React.FC = ({\r\n\tid,\r\n\tlabel,\r\n\tplaceholder,\r\n\taction,\r\n\tname,\r\n\tsubmitText,\r\n\tautocompleteApiUrl,\r\n\tonSubmit,\r\n\tonChange,\r\n\tvalue,\r\n\tlargeSearch,\r\n}) => {\r\n\tconst [setQuery, setSuggestions, query, suggestions] = useAutoComplete(\r\n\t\tautocompleteApiUrl || ''\r\n\t);\r\n\r\n\tconst handleClearSuggestions = () => {\r\n\t\tsetQuery('');\r\n\t\tsetSuggestions();\r\n\t};\r\n\r\n\tconst handleSubmit = (value: any) => {\r\n\t\tconst textValue = value.text ? value.text : value;\r\n\t\tsetQuery(textValue);\r\n\r\n\t\tif (onSubmit) {\r\n\t\t\tonSubmit(textValue);\r\n\t\t} else {\r\n\t\t\tconst url = `${action}?${name}=${textValue.split(' ').join('+')}`;\r\n\t\t\twindow.location.href = url;\r\n\t\t}\r\n\t};\r\n\r\n\tconst handleInputValueChange = (inputValue: string, stateAndItems: any) => {\r\n\t\tconst { selectedItem } = stateAndItems;\r\n\r\n\t\tswitch (stateAndItems.type) {\r\n\t\t\tcase Downshift.stateChangeTypes.changeInput:\r\n\t\t\t\tif (!inputValue && selectedItem && !onSubmit) {\r\n\t\t\t\t\thandleSubmit(selectedItem);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (\r\n\t\t\t\t\t\t(!selectedItem || selectedItem.text !== inputValue) &&\r\n\t\t\t\t\t\tinputValue !== ''\r\n\t\t\t\t\t) {\r\n\t\t\t\t\t\tsetQuery(inputValue);\r\n\t\t\t\t\t\tif (onChange) onChange(inputValue);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif ((inputValue === '' || !inputValue) && selectedItem) {\r\n\t\t\t\t\t\tstateAndItems.clearSelection();\r\n\t\t\t\t\t\thandleClearSuggestions();\r\n\t\t\t\t\t\tsetQuery(selectedItem.text);\r\n\t\t\t\t\t\tif (onChange) onChange(selectedItem.text);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (\r\n\t\t\t\t\t\tinputValue === '' ||\r\n\t\t\t\t\t\t(selectedItem === null && inputValue === '')\r\n\t\t\t\t\t) {\r\n\t\t\t\t\t\thandleClearSuggestions();\r\n\t\t\t\t\t\tif (onChange) onChange('');\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase Downshift.stateChangeTypes.clickItem:\r\n\t\t\tcase Downshift.stateChangeTypes.keyDownEnter:\r\n\t\t\t\thandleSubmit(selectedItem);\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\treturn null;\r\n\t\t}\r\n\t};\r\n\r\n\tuseEffect(() => {\r\n\t\treturn () => {\r\n\t\t\thandleClearSuggestions();\r\n\t\t};\r\n\t}, []);\r\n\r\n\treturn (\r\n\t\t (item && item.text) || query || ''}\r\n\t\t\tinitialInputValue={query}\r\n\t\t>\r\n\t\t\t{({\r\n\t\t\t\tgetLabelProps,\r\n\t\t\t\tgetMenuProps,\r\n\t\t\t\tgetInputProps,\r\n\t\t\t\tgetItemProps,\r\n\t\t\t\topenMenu,\r\n\t\t\t\tcloseMenu,\r\n\t\t\t\tisOpen,\r\n\t\t\t\thighlightedIndex,\r\n\t\t\t}) => (\r\n\t\t\t\t
    \r\n\t\t\t\t\t{largeSearch ? (\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\thandleSubmit(query);\r\n\t\t\t\t\t\t\t\tcloseMenu();\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t{...getInputProps()}\r\n\t\t\t\t\t\t\tid=\"main-search\"\r\n\t\t\t\t\t\t\tplaceholder={placeholder}\r\n\t\t\t\t\t\t\tname=\"query\"\r\n\t\t\t\t\t\t\tlabel={label}\r\n\t\t\t\t\t\t\tvalue={value}\r\n\t\t\t\t\t\t\tlabelProps={{ ...getLabelProps() }}\r\n\t\t\t\t\t\t\tonFocus={openMenu}\r\n\t\t\t\t\t\t\tsubmitText=\"Sök\"\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t) : (\r\n\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    handleSubmit(query)}>\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t{isOpen && suggestions && suggestions.length > 0 && (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
      \r\n\t\t\t\t\t\t\t\t{suggestions.map((item: any, index: number) => (\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t)}\r\n\t\t\t\t
    \r\n\t\t\t)}\r\n\t\t\r\n\t);\r\n};\r\nexport default Autocomplete;\r\n","import { useState, useEffect } from 'react';\r\nimport { useFirstRender } from 'hooks';\r\nimport axios from 'axios';\r\n\r\nexport const useAutoComplete = (autocompleteSearchUrl?: string) => {\r\n\tconst isFirstRender = useFirstRender();\r\n\tconst [query, setQuery] = useState('');\r\n\tconst [suggestions, setSuggestions] = useState();\r\n\tconst [error, setError] = useState();\r\n\tconst [loading, setLoading] = useState(false);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (!isFirstRender && !loading && query && autocompleteSearchUrl) {\r\n\t\t\tlet baseUrl = window.location.origin + autocompleteSearchUrl;\r\n\r\n\t\t\tif (process.env.NODE_ENV === 'development') {\r\n\t\t\t\tbaseUrl = window.location.origin + `/api/autocomplete.json`;\r\n\t\t\t}\r\n\r\n\t\t\tsetLoading(true);\r\n\r\n\t\t\taxios({\r\n\t\t\t\turl: `${baseUrl}?query=${query}`,\r\n\t\t\t\tmethod: 'GET',\r\n\t\t\t\theaders: {\r\n\t\t\t\t\t'X-Requested-With': 'XMLHttpRequest',\r\n\t\t\t\t\t'content-type': 'application/json; charset=utf-8',\r\n\t\t\t\t},\r\n\t\t\t})\r\n\t\t\t\t.then((response: any) => {\r\n\t\t\t\t\tif (response.status === 200) {\r\n\t\t\t\t\t\tlet data = response.data;\r\n\r\n\t\t\t\t\t\tsetSuggestions(data.suggestions);\r\n\t\t\t\t\t\tsetLoading(false);\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t\t.catch((err) => {\r\n\t\t\t\t\tsetError(err);\r\n\t\t\t\t\tsetLoading(false);\r\n\t\t\t\t});\r\n\t\t}\r\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\r\n\t}, [query]);\r\n\r\n\treturn [setQuery, setSuggestions, query, suggestions, loading, error];\r\n};\r\n","/**\r\n * Loader\r\n * TODO: Variant = breaking changes\r\n */\r\n\r\nimport React from 'react';\r\nimport clsx from 'clsx';\r\n\r\ninterface props {\r\n\t/** Variant of loader */\r\n\tvariant?: 'default' | 'static' | 'mini';\r\n\r\n\t/** Pass optional classnames for the html */\r\n\tclassname?: string;\r\n\r\n\t[htmlattributes: string]: any;\r\n}\r\n\r\nconst Loader: React.FC = ({\r\n\tclassName = '',\r\n\tvariant = 'default',\r\n\t...htmlAttributes\r\n}) => {\r\n\treturn (\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default Loader;\r\n","/**\r\n * PagerBtn\r\n */\r\n\r\nimport React from 'react';\r\n\r\ninterface Props {\r\n\t/** Link href */\r\n\thref: string;\r\n\r\n\t/** Button key */\r\n\tbuttonKey: number | string;\r\n\r\n\t/** Aria label for button */\r\n\tlabel?: string;\r\n\r\n\tonClick: any;\r\n}\r\n\r\nconst PagerBtn: React.FC = ({\r\n\thref,\r\n\tbuttonKey,\r\n\tlabel,\r\n\tonClick,\r\n\tchildren,\r\n}) => (\r\n\t
  • \r\n\t\t {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tonClick();\r\n\t\t\t}}\r\n\t\t>\r\n\t\t\t{children}\r\n\t\t\r\n\t
  • \r\n);\r\n\r\nexport default PagerBtn;\r\n","/**\r\n * Pager\r\n */\r\n\r\nimport React from 'react';\r\nimport PagerBtn from './PagerBtn';\r\nimport Icon from 'components/Icon';\r\n\r\ninterface Props {\r\n\t/** The total number of pages */\r\n\tnrOfPages: number;\r\n\r\n\t/** Current page */\r\n\tcurrentPage?: number;\r\n\r\n\t/** If the jump to first page button should be shown */\r\n\tshowFirstBtn?: boolean;\r\n\r\n\t/** If the jump to last page button should be shown */\r\n\tshowLastBtn?: boolean;\r\n\r\n\t/** Aria-label for the nav tag */\r\n\tariaLabel?: string;\r\n\r\n\t/** If a search query, add to links */\r\n\tquery?: string;\r\n\r\n\tonPageClick?: any;\r\n}\r\n\r\nconst getPageNumbers = (currentPage: number, nrOfPages: number) => {\r\n\tlet numbers = [];\r\n\r\n\tif (currentPage >= 1) {\r\n\t\tnumbers.push(currentPage);\r\n\t}\r\n\r\n\tif (currentPage >= 3) {\r\n\t\tnumbers.push(currentPage - 1);\r\n\t\tnumbers.push(currentPage - 2);\r\n\t}\r\n\r\n\tif (currentPage + 2 <= nrOfPages) {\r\n\t\tnumbers.push(currentPage + 2);\r\n\t\tnumbers.push(currentPage + 1);\r\n\t}\r\n\r\n\tnumbers.sort((a, b) => a - b);\r\n\r\n\treturn numbers;\r\n};\r\n\r\n/** Pager component for search results page. */\r\nconst Pager: React.FC = ({\r\n\tnrOfPages,\r\n\tcurrentPage = 1,\r\n\tshowFirstBtn,\r\n\tshowLastBtn,\r\n\tariaLabel = 'Paginering',\r\n\tquery = '',\r\n\tonPageClick,\r\n}) => {\r\n\tconst pageNumbers = getPageNumbers(currentPage, nrOfPages);\r\n\r\n\tconst shouldRenderJumpToFirstPageBtn = currentPage !== 1 && currentPage > 2;\r\n\tconst shouldRenderPreviousBtn = currentPage !== 1;\r\n\r\n\tconst shouldRenderNextBtn = currentPage < nrOfPages;\r\n\tconst shouldRenderJumpToLastPageBtn =\r\n\t\tcurrentPage < nrOfPages - 1 && currentPage !== nrOfPages;\r\n\r\n\tconst itemClasses =\r\n\t\t'py-2 px-4 underline hover:no-underline flex items-center justify-center';\r\n\tconst activeClasses = ' no-underline pointer-events-none font-bold';\r\n\r\n\treturn (\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default Pager;\r\n","/**\r\n * Result\r\n */\r\n\r\nimport React from 'react';\r\ninterface Props {\r\n\t/** Result heading */\r\n\theading: string;\r\n\r\n\t/** Result excerpt */\r\n\texcerpt?: string;\r\n\r\n\t/** Link url */\r\n\turl: string;\r\n\r\n\t/** Result item id */\r\n\tid: string;\r\n}\r\n\r\n/** A search result item. */\r\nconst Result: React.FC = ({ heading, excerpt, url, id }) => {\r\n\treturn (\r\n\t\t
  • \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t{excerpt && (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)}\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
  • \r\n\t);\r\n};\r\n\r\nexport default Result;\r\n","/**\r\n * SearchResults\r\n */\r\n\r\nimport React from 'react';\r\n\r\ninterface Props {\r\n\t/** Specify number for list to start on */\r\n\tstartNumber?: number;\r\n}\r\n\r\n/** A search result item. */\r\nconst SearchResults: React.FC = ({ startNumber, children }) => {\r\n\treturn (\r\n\t\t
      \r\n\t\t\t{children}\r\n\t\t
    \r\n\t);\r\n};\r\n\r\nexport default SearchResults;\r\n","/**\r\n * SearchPage\r\n */\r\n\r\nimport AutoComplete from 'components/AutoComplete';\r\nimport { Breadcrumbs } from 'components/Breadcrumbs';\r\nimport Loader from 'components/Loader';\r\nimport Pager from 'components/Pager';\r\nimport ReadSpeaker from 'components/ReadSpeaker';\r\nimport { Result, SearchResults } from 'components/SearchResults';\r\nimport Share from 'components/Share';\r\nimport { useUrlQuery } from 'hooks';\r\nimport React, { useEffect, useState } from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { selectReadSpeaker, selectSearch } from 'store/modules/model';\r\nimport { SearchPageModel } from 'types/pages';\r\n\r\n/** Search page. */\r\nconst SearchPage: React.FC = ({\r\n\theading,\r\n\tsearchResult,\r\n\ttranslations,\r\n\t_properties = {},\r\n}) => {\r\n\tconst search = useSelector(selectSearch);\r\n\tconst [value, setValue] = useState(searchResult.query);\r\n\tconst [allResults, setResults] = useState(searchResult.results);\r\n\tconst [currentPage, setCurrentPage] = useState(searchResult.page);\r\n\tconst [pageCount, setPageCount] = useState(searchResult.pageCount);\r\n\r\n\tconst [updateQuery, response, loading] = useUrlQuery(\r\n\t\t{\r\n\t\t\tquery: searchResult.query,\r\n\t\t\tpn: searchResult.page,\r\n\t\t},\r\n\t\tsearch?.apiUrl\r\n\t);\r\n\r\n\tconst readSpeaker = useSelector(selectReadSpeaker);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (response?.results) {\r\n\t\t\tsetResults(response.results);\r\n\t\t\tsetCurrentPage(response.page);\r\n\t\t\tsetPageCount(response.pageCount);\r\n\t\t}\r\n\t}, [response]);\r\n\r\n\tconst searchResultsPhrase = translations.searchResultsPhrase?.split('{0}');\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t

    \r\n\t\t\t\t\t\t\t{heading}\r\n\t\t\t\t\t\t

    \r\n\t\t\t\t\t\t{readSpeaker && (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t
    \r\n\r\n\t\t\t\t\t{search && (\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\tsetValue(val);\r\n\t\t\t\t\t\t\t\tupdateQuery({ query: val, pn: 1, language: search?.language });\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\tvalue={value}\r\n\t\t\t\t\t\t\tonChange={(value: string) => {\r\n\t\t\t\t\t\t\t\tsetValue(value);\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\tlargeSearch\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t{loading && (\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t\t{!loading && searchResultsPhrase && (\r\n\t\t\t\t\t\t\t

    \r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{response?.numberOfHits > 0 || searchResult.numberOfHits > 0\r\n\t\t\t\t\t\t\t\t\t\t? response?.numberOfHits || searchResult.numberOfHits\r\n\t\t\t\t\t\t\t\t\t\t: translations.emptySearchListLabel}{' '}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{searchResultsPhrase[1]}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t'{response?.query || searchResult.query}'{' '}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{searchResultsPhrase[2]}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{' '}\r\n\t\t\t\t\t\t\t\t\t{translations.languageLabel}{' '}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{searchResultsPhrase[3]}\r\n\t\t\t\t\t\t\t\t{translations.webpageLabel}\r\n\t\t\t\t\t\t\t

    \r\n\t\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t\t{!loading && (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{allResults &&\r\n\t\t\t\t\t\t\t\t\tallResults.map((item, i) => (\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t\t{allResults && allResults.length > 0 && (\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\tupdateQuery({\r\n\t\t\t\t\t\t\t\t\t\t\tquery: value,\r\n\t\t\t\t\t\t\t\t\t\t\tpn: pn,\r\n\t\t\t\t\t\t\t\t\t\t\tlanguage: search?.language,\r\n\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\tariaLabel=\"Paginering\"\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default SearchPage;\r\n","import { useState, useEffect } from 'react';\r\nimport { useFirstRender } from 'hooks';\r\nimport axios from 'axios';\r\n\r\ninterface UseUrlQuery {\r\n\t(initialValues: any, url?: string): [any, any, boolean, any];\r\n}\r\n\r\nexport const useUrlQuery: UseUrlQuery = (initialValues, url) => {\r\n\tconst isFirstRender = useFirstRender();\r\n\tconst [values, setValues] = useState(initialValues);\r\n\tconst [query, setQuery] = useState('');\r\n\tconst [response, setResponse] = useState();\r\n\tconst [error, setError] = useState();\r\n\tconst [loading, setLoading] = useState(false);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (!isFirstRender && !loading) {\r\n\t\t\tlet newQuery = objectToQuery(values);\r\n\t\t\tsetQuery(newQuery);\r\n\r\n\t\t\tlet baseUrl = url ? url : window.location.pathname;\r\n\r\n\t\t\tif (process.env.NODE_ENV === 'development') {\r\n\t\t\t\tbaseUrl = `/api${\r\n\t\t\t\t\twindow.location.pathname === '/' ? '/index' : window.location.pathname\r\n\t\t\t\t}.json`;\r\n\t\t\t}\r\n\r\n\t\t\tsetLoading(true);\r\n\t\t\taxios({\r\n\t\t\t\turl: `${baseUrl}?${newQuery}`,\r\n\t\t\t\tmethod: 'GET',\r\n\t\t\t\theaders: {\r\n\t\t\t\t\t'X-Requested-With': 'XMLHttpRequest',\r\n\t\t\t\t\t'content-type': 'application/json; charset=utf-8',\r\n\t\t\t\t},\r\n\t\t\t})\r\n\t\t\t\t.then((response: any) => {\r\n\t\t\t\t\tif (response.status === 200) {\r\n\t\t\t\t\t\tlet data = response.data;\r\n\t\t\t\t\t\tif (process.env.NODE_ENV === 'development') {\r\n\t\t\t\t\t\t\tdata = data.content;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tsetResponse(data);\r\n\t\t\t\t\t\tsetLoading(false);\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t\t.catch((err) => {\r\n\t\t\t\t\tsetError(err);\r\n\t\t\t\t\tsetLoading(false);\r\n\t\t\t\t});\r\n\t\t}\r\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\r\n\t}, [values]);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (window && !isFirstRender) {\r\n\t\t\twindow.history.pushState(\r\n\t\t\t\t{},\r\n\t\t\t\tdocument.title,\r\n\t\t\t\tquery ? `${window.location.pathname}?${query}` : ''\r\n\t\t\t);\r\n\t\t}\r\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\r\n\t}, [query]);\r\n\r\n\tconst objectToQuery = (obj: any) => {\r\n\t\tlet str = [];\r\n\t\tfor (let p in obj) {\r\n\t\t\tif (obj.hasOwnProperty(p)) {\r\n\t\t\t\tif (obj[p] !== '') {\r\n\t\t\t\t\tif (Array.isArray(obj[p])) {\r\n\t\t\t\t\t\tobj[p].forEach((val: string) => {\r\n\t\t\t\t\t\t\tstr.push(encodeURIComponent(p) + '=' + encodeURIComponent(val));\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tstr.push(encodeURIComponent(p) + '=' + encodeURIComponent(obj[p]));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn str.join('&');\r\n\t};\r\n\r\n\treturn [setValues, response, loading, error];\r\n};\r\n","import React from 'react';\r\nimport { Link as RouterLink } from 'react-router-dom';\r\n\r\nexport interface HomeModel {\r\n\turl: string;\r\n\talt: string;\r\n\tlogo: string;\r\n}\r\n\r\n/** Main description for this component. */\r\nconst Home: React.FC = ({ url, alt, logo }) => {\r\n\treturn (\r\n\t\t\r\n\t\t\t{alt}\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default Home;\r\n","import React from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { selectHome } from 'store/modules/model';\r\n\r\nimport Component from './Home';\r\n\r\nconst Home = () => {\r\n\tconst home: any = useSelector(selectHome);\r\n\r\n\treturn <>{home && home.logo && };\r\n};\r\n\r\nexport default Home;\r\n","/**\r\n * Navigation\r\n */\r\n\r\nimport React from 'react';\r\nimport clsx from 'clsx';\r\nimport Link from '../Link';\r\n\r\ninterface Props {\r\n\taccessibilityDescription: string;\r\n\topenNavigationPaneLabel: string;\r\n\tcloseNavigationPaneLabel: string;\r\n\topenNavigationItemLabel: string;\r\n\tcloseNavigationItemLabel: string;\r\n\tnavigationButtonLabel: string;\r\n\tscreenReaderText: string;\r\n\titems: NavigationItem[];\r\n}\r\n\r\ninterface NavigationItem {\r\n\turl: string;\r\n\ttext: string;\r\n\ttitle: string;\r\n\tisOpen: boolean;\r\n\tisActive: boolean;\r\n\tisNavigationRoot: boolean;\r\n\titems: NavigationItem[];\r\n}\r\n\r\nconst Navigation: React.FC = ({ accessibilityDescription, items }) => {\r\n\treturn (\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default Navigation;\r\n","import React from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { selectNavigation } from 'store/modules/model';\r\n\r\nimport Component from './Navigation';\r\n\r\nconst Navigation = () => {\r\n\tconst navigation: any = useSelector(selectNavigation);\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default Navigation;\r\n","/**\r\n * Languages\r\n */\r\n\r\nimport React from 'react';\r\nimport Link from '../Link';\r\n\r\ninterface Props {\r\n\tonLanguageClick?: any;\r\n\tlanguages: Language[];\r\n}\r\n\r\ninterface Language {\r\n\turl: string;\r\n\tculture: string;\r\n\ttext: string;\r\n}\r\n\r\nconst getFlag = (language: Language) => {\r\n\tswitch (language.culture) {\r\n\t\tcase 'de':\r\n\t\t\treturn '/assets/images/flags/lang-de-active.png';\r\n\t\tcase 'en':\r\n\t\t\treturn '/assets/images/flags/lang-uk-active.png';\r\n\t\tcase 'smj':\r\n\t\t\treturn '/assets/images/flags/lang-sme-active.png';\r\n\t\tcase 'sv':\r\n\t\tdefault:\r\n\t\t\treturn '/assets/images/flags/lang-se-active.png';\r\n\t}\r\n};\r\n\r\n/** Main description for this component. */\r\nexport const Languages: React.FC = ({ languages, onLanguageClick }) => {\r\n\treturn (\r\n\t\t
      \r\n\t\t\t{languages.map((language, i) => (\r\n\t\t\t\t
    • \r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{language.culture && (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{language.text}\r\n\t\t\t\t\t\r\n\t\t\t\t
    • \r\n\t\t\t))}\r\n\t\t
    \r\n\t);\r\n};\r\n\r\nexport const LanguagesForMobile: React.FC = ({\r\n\tlanguages,\r\n\tonLanguageClick,\r\n}) => {\r\n\treturn (\r\n\t\t
    \r\n\t\t\t\r\n\t\t
    \r\n\t);\r\n};\r\n","import React from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { selectLanguages } from 'store/modules/model';\r\n\r\nimport { Languages as Component, LanguagesForMobile } from './Languages';\r\n\r\ninterface Props {\r\n\tforMobile?: boolean;\r\n\tonLanguageClick?: any;\r\n}\r\n\r\nconst Languages: React.FC = ({ forMobile, onLanguageClick }) => {\r\n\tconst languages: any = useSelector(selectLanguages);\r\n\r\n\tif (forMobile) {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t);\r\n\t}\r\n\r\n\treturn ;\r\n};\r\n\r\nexport default Languages;\r\n","/**\r\n * TopLinks\r\n */\r\n\r\nimport React from 'react';\r\nimport clsx from 'clsx';\r\nimport Link from '../Link';\r\n\r\ninterface Props {\r\n\ttopLinks: TopLink[];\r\n}\r\n\r\ninterface TopLink {\r\n\thref: string;\r\n\ttext: string;\r\n\ttitle: string;\r\n\ttarget?: string;\r\n}\r\n\r\nexport const TopLinks: React.FC = ({ topLinks }) => {\r\n\treturn (\r\n\t\t
    \r\n\t\t\t
      \r\n\t\t\t\t{topLinks.map((link, i: number) => (\r\n\t\t\t\t\t
    • \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{link.text}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    • \r\n\t\t\t\t))}\r\n\t\t\t
    \r\n\t\t
    \r\n\t);\r\n};\r\n\r\nexport const TopLinksForMobile: React.FC = ({ topLinks }) => {\r\n\treturn (\r\n\t\t
    \r\n\t\t\t
      \r\n\t\t\t\t{topLinks.map((link, i: number) => (\r\n\t\t\t\t\t 0 && 'border-t border-black-25'\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{link.text}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t))}\r\n\t\t\t
    \r\n\t\t
    \r\n\t);\r\n};\r\n","import React from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { selectTopLinks } from 'store/modules/model';\r\n\r\nimport { TopLinks as Component, TopLinksForMobile } from './TopLinks';\r\n\r\ninterface Props {\r\n\tforMobile?: boolean;\r\n}\r\n\r\nconst TopLinks: React.FC = ({ forMobile }) => {\r\n\tconst topLinks: any = useSelector(selectTopLinks);\r\n\r\n\tif (forMobile) {\r\n\t\treturn (\r\n\t\t\t<>\r\n\t\t\t\t{topLinks && topLinks.topLinks.length > 0 && (\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t\r\n\t\t);\r\n\t}\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t{topLinks && topLinks.topLinks.length > 0 && }\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default TopLinks;\r\n","import React from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { selectSearch } from 'store/modules/model';\r\n\r\nimport Home from 'components/Home';\r\nimport Navigation from 'components/Navigation';\r\nimport Languages from 'components/Languages';\r\nimport TopLinks from 'components/TopLinks';\r\nimport AutoComplete from 'components/AutoComplete';\r\n\r\ninterface Props {}\r\n\r\n/** The page header in desktop mode component. */\r\nconst DesktopHeader: React.FC = () => {\r\n\tconst search = useSelector(selectSearch);\r\n\r\n\treturn (\r\n\t\t
    \r\n\t\t\t\r\n\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t{search && (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t
    \r\n\t);\r\n};\r\n\r\nexport default DesktopHeader;\r\n","import React, { useEffect, useState } from 'react';\r\nimport Button from 'components/Button';\r\nimport { useMediaQuery } from 'react-responsive';\r\nimport Icon from 'components/Icon';\r\nimport { useSelector } from 'react-redux';\r\nimport { selectSkipToTop } from 'store/modules/model';\r\nimport clsx from 'clsx';\r\n\r\nexport interface Props {\r\n\t/** Use this to change the name of the button */\r\n\tbuttonName?: string;\r\n\tfooterHeight: number;\r\n}\r\ntype Fn = () => void;\r\n\r\nconst GoTopButton: React.FC = ({ buttonName = '', footerHeight }) => {\r\n\tconst skipToTop: any = useSelector(selectSkipToTop);\r\n\tbuttonName = skipToTop?.text ? skipToTop?.text : 'Till toppen';\r\n\tconst fh = footerHeight;\r\n\tconst [showGoTop, setShowGoTop] = useState(false);\r\n\tconst [endOfThePage, setEndOfThePage] = useState(true);\r\n\tconst isTablet = useMediaQuery({ query: '(max-width: 767px)' });\r\n\r\n\tconst handleButtonState: Fn = () => {\r\n\t\t// show button\r\n\t\tif (window.pageYOffset > 100) {\r\n\t\t\tsetShowGoTop(true);\r\n\t\t\ttranslateYcoord();\r\n\t\t} else {\r\n\t\t\tsetShowGoTop(false);\r\n\t\t}\r\n\t};\r\n\r\n\tconst translateYcoord: Fn = () => {\r\n\t\tconst totalPageHeight: number = document.body.offsetHeight;\r\n\t\tconst scrollPoint: number =\r\n\t\t\twindow.pageYOffset + window.innerHeight + footerHeight;\r\n\r\n\t\tif (scrollPoint >= totalPageHeight - 100) {\r\n\t\t\tsetEndOfThePage(true);\r\n\t\t} else {\r\n\t\t\tsetEndOfThePage(false);\r\n\t\t}\r\n\t};\r\n\r\n\tconst handleScrollUp: Fn = () => {\r\n\t\twindow.scrollTo({ left: 0, top: 0, behavior: 'smooth' });\r\n\t};\r\n\r\n\tconst handleTranslateY = () => {\r\n\t\tlet total = endOfThePage ? -fh : 0;\r\n\t\treturn `translateY(${total.toString()}px)`;\r\n\t};\r\n\r\n\tuseEffect(() => {\r\n\t\twindow.addEventListener('scroll', handleButtonState);\r\n\r\n\t\treturn () => {\r\n\t\t\twindow.removeEventListener('scroll', handleButtonState);\r\n\t\t};\r\n\t}, []);\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t{isTablet ? (\r\n\t\t\t\t\r\n\t\t\t) : (\r\n\t\t\t\t\r\n\t\t\t)}\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default GoTopButton;\r\n","/**\r\n * Meta\r\n */\r\n\r\nimport React from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { selectLocalization, selectMetadata } from 'store/modules/model';\r\nimport favicon from './ico/favicon.png';\r\n\r\nimport { Helmet } from 'react-helmet';\r\n\r\ninterface Props {\r\n\t/** Title for the page */\r\n\ttitle?: string;\r\n\r\n\t/** Meta description */\r\n\tdescription?: string;\r\n\r\n\t/** Meta keywords */\r\n\tkeywords?: string;\r\n\r\n\t/** Open graph site name\r\n\t *\r\n\t * _A one to two sentence description of your object._\r\n\t */\r\n\togSiteName?: string;\r\n\r\n\t/** Open graph type\r\n\t *\r\n\t * _The [type](https://ogp.me/#types) of your object, e.g., \"video.movie\". Depending on the type you specify, other properties may also be required._\r\n\t */\r\n\togType?: string;\r\n\r\n\t/** Open graph title\r\n\t *\r\n\t * _The title of your object as it should appear within the graph, e.g., \"The Rock\"._\r\n\t */\r\n\togTitle?: string;\r\n\r\n\t/** Open graph url\r\n\t *\r\n\t * _The canonical URL of your object that will be used as its permanent ID in the graph, e.g., \"http://www.imdb.com/title/tt0117500/\"._\r\n\t */\r\n\togUrl?: string;\r\n\r\n\t/** Open graph description\r\n\t *\r\n\t * _A one to two sentence description of your object._\r\n\t */\r\n\togDescription?: string;\r\n\r\n\t/** Open graph image\r\n\t *\r\n\t * _An image URL which should represent your object within the graph._\r\n\t *\r\n\t * Read more: [Formats for open graph images](https://whatabout.dev/formats-for-open-graph-images)\r\n\t */\r\n\togImage?: string | string[];\r\n\r\n\t/** Twitter card\r\n\t *\r\n\t * _The card type, which will be one of “summary”, “summary_large_image”, “app”, or “player”._\r\n\t */\r\n\ttwitterCard?: string;\r\n\r\n\t/** Twitter card title\r\n\t *\r\n\t * _A concise title for the related content._\r\n\t */\r\n\ttwitterTitle?: string;\r\n\r\n\t/** Twitter card description\r\n\t *\r\n\t * _A description that concisely summarizes the content as appropriate for presentation within a Tweet. You should not re-use the title as the description or use this field to describe the general services provided by the website._\r\n\t */\r\n\ttwitterDescription?: string;\r\n\r\n\t/** Twitter card image\r\n\t *\r\n\t * _A URL to a unique image representing the content of the page. You should not use a generic image such as your website logo, author photo, or other image that spans multiple pages. Images for this Card support an aspect ratio of 2:1 with minimum dimensions of 300x157 or maximum of 4096x4096 pixels. Images must be less than 5MB in size. JPG, PNG, WEBP and GIF formats are supported. Only the first frame of an animated GIF will be used. SVG is not supported._\r\n\t *\r\n\t * Read more: [Formats for open graph images](https://whatabout.dev/formats-for-open-graph-images)\r\n\t */\r\n\ttwitterImage?: string;\r\n}\r\n\r\n/**\r\n * Component that handles meta data for the .\r\n *\r\n * - https://ogp.me/\r\n * - https://developer.twitter.com/en/docs/tweets/optimize-with-cards/overview/markup\r\n * - https://developer.twitter.com/en/docs/tweets/optimize-with-cards/guides/getting-started\r\n */\r\nconst Meta: React.FC = () => {\r\n\tconst metaData = useSelector(selectMetadata);\r\n\tconst localizationData = useSelector(selectLocalization);\r\n\r\n\tconst mappedMetaData = {\r\n\t\ttitle: metaData?.title || undefined,\r\n\t\tkeywords: metaData?.keywords || undefined,\r\n\t\tdescription: metaData?.description || undefined,\r\n\t\tgoogleSiteVerificationTag: metaData?.googleSiteVerificationTag || undefined,\r\n\t\togSiteName: metaData?.openGraph?.siteName || undefined,\r\n\t\togType: metaData?.openGraph?.type || 'website',\r\n\t\togTitle: metaData?.openGraph?.title || undefined,\r\n\t\togUrl: metaData?.openGraph?.url || undefined,\r\n\t\togDescription: metaData?.openGraph?.description || undefined,\r\n\t\togImage: metaData?.openGraph?.image || undefined,\r\n\t\ttwitterCard: metaData?.twitter?.card || 'summary',\r\n\t\ttwitterTitle: metaData?.twitter?.title || undefined,\r\n\t\ttwitterDescription: metaData?.twitter?.description || undefined,\r\n\t\ttwitterImage: metaData?.twitter?.image || undefined,\r\n\t};\r\n\tconst {\r\n\t\ttitle,\r\n\t\tkeywords,\r\n\t\tdescription,\r\n\t\tgoogleSiteVerificationTag,\r\n\t\togSiteName,\r\n\t\togType,\r\n\t\togTitle,\r\n\t\togUrl,\r\n\t\togImage,\r\n\t\ttwitterCard,\r\n\t\ttwitterTitle,\r\n\t\ttwitterImage,\r\n\t\togDescription = description,\r\n\t\ttwitterDescription = description,\r\n\t} = mappedMetaData;\r\n\r\n\tconst renderOgImage = (image: string | string[]) => {\r\n\t\tlet ogImages: string[];\r\n\r\n\t\tif (typeof image === 'string') {\r\n\t\t\togImages = [image];\r\n\t\t} else {\r\n\t\t\togImages = image;\r\n\t\t}\r\n\r\n\t\treturn ogImages.map((img: string) => {\r\n\t\t\treturn ;\r\n\t\t});\r\n\t};\r\n\r\n\t// prettier-ignore\r\n\treturn (\r\n\t\t\r\n\t\t\t{localizationData && }\r\n\t\t\t{title && {title}}\r\n\t\t\t{description && }\t\t\t\r\n\t\t\t{keywords && }\r\n\t\t\t{googleSiteVerificationTag && }\r\n\t\t\t{ogSiteName && }\r\n\t\t\t{ogType && }\r\n\t\t\t{(ogTitle || title) && }\r\n\t\t\t{ogUrl && }\r\n\t\t\t{(ogDescription) && }\r\n\t\t\t{ogImage && renderOgImage(ogImage)}\r\n\r\n\t\t\t{twitterCard && }\r\n\t\t\t{twitterCard && twitterTitle && }\r\n\t\t\t{twitterCard && (twitterDescription) && }\r\n\t\t\t{twitterCard && twitterImage && }\r\n\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default Meta;\r\n","/**\r\n * SkipToMain\r\n */\r\n\r\nimport clsx from 'clsx';\r\nimport React from 'react';\r\n\r\ninterface Props {\r\n\t/** The text shown when :focus */\r\n\ttext?: string;\r\n\tclassName?: string;\r\n}\r\n\r\n/** Main description for this component. */\r\nconst SkipToMain: React.FC = ({ text, className }) => {\r\n\treturn (\r\n\t\t\r\n\t\t\t{text}\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default SkipToMain;\r\n","import React from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { selectSkipToMain } from 'store/modules/model';\r\n\r\nimport Component from './SkipToMain';\r\n\r\nconst SkipToMain = () => {\r\n\tconst skipToMain: any = useSelector(selectSkipToMain);\r\n\r\n\treturn ;\r\n};\r\n\r\nexport default SkipToMain;\r\n","/**\r\n * MobileMenu Li\r\n */\r\n\r\nimport React, { useEffect, useState } from 'react';\r\nimport Ul from './MobileMenu.Ul';\r\nimport { Link as LinkType, MenuLinkVariant } from 'types/global';\r\nimport clsx from 'clsx';\r\nimport Link from 'components/Link';\r\nimport Icon from 'components/Icon';\r\nimport { px2rem } from 'theme/utils';\r\n\r\ninterface LiProps {\r\n\t/** A menu link structured as JSON */\r\n\tlink: LinkType;\r\n\r\n\t/** The link level (1, 2, 3) */\r\n\tlevel: number;\r\n\r\n\t/** Link item index */\r\n\tindex: number;\r\n\r\n\t/** Variant of the link */\r\n\tvariant?: MenuLinkVariant;\r\n\r\n\t/** Determine if childelement or not for indent */\r\n\tisChild?: boolean;\r\n\r\n\t/** Screenreadertext for mobile (toggle open) */\r\n\topenNavigationItemLabel?: string;\r\n\r\n\tcloseNavigationItemLabel?: string;\r\n\r\n\t/** Callback method when the menu closes */\r\n\tonClose?: any;\r\n\r\n\t/** Callback method when user clicks in a link */\r\n\tonLinkClick?: any;\r\n}\r\n\r\n/** A nav item (li) used by MobileMenu */\r\nconst Li: React.FC = ({\r\n\tlink,\r\n\tlevel,\r\n\tvariant,\r\n\tindex,\r\n\tonClose,\r\n\tonLinkClick,\r\n\topenNavigationItemLabel,\r\n\tcloseNavigationItemLabel,\r\n}) => {\r\n\tconst linkLevel = variant === 'headerLink' ? 2 : level;\r\n\tconst [activeChildren, setActiveChildren] = useState(false);\r\n\tconst [child, setChild] = useState(null);\r\n\r\n\tconst setActiveChildrens = (link: LinkType) => {\r\n\t\tconst childLinks = link.items || [];\r\n\t\tlet links: LinkType[] = [];\r\n\r\n\t\tif (level >= 2) {\r\n\t\t\tlinks = [...childLinks];\r\n\t\t} else {\r\n\t\t\tlinks = childLinks;\r\n\t\t}\r\n\r\n\t\tsetChild(\r\n\t\t\t\r\n\t\t);\r\n\t};\r\n\r\n\tconst handleSetActiveChildren = (e: MouseEvent, link: LinkType) => {\r\n\t\te.preventDefault();\r\n\t\tif (!activeChildren) {\r\n\t\t\tsetActiveChildrens(link);\r\n\t\t} else {\r\n\t\t\tsetChild(null);\r\n\t\t}\r\n\r\n\t\tsetActiveChildren(!activeChildren);\r\n\t};\r\n\r\n\tuseEffect(() => {\r\n\t\tconst doesLinkHaveChildren = link.items && link.items.length > 0;\r\n\t\tconst isLinkChildActive = doesLinkHaveChildren\r\n\t\t\t? link.items?.some((i) => i.isActive)\r\n\t\t\t: false;\r\n\t\tif (link && doesLinkHaveChildren && isLinkChildActive) {\r\n\t\t\tsetActiveChildrens(link);\r\n\t\t}\r\n\t}, [link]);\r\n\r\n\treturn (\r\n\t\t
  • \r\n\t\t\t 0 && 'border-t border-black-25'\r\n\t\t\t\t)}\r\n\t\t\t\tstyle={{\r\n\t\t\t\t\tpaddingLeft: linkLevel > 1 ? `${px2rem(linkLevel * 10)}` : '0',\r\n\t\t\t\t}}\r\n\t\t\t>\r\n\t\t\t\t\r\n\t\t\t\t\t{link.text}\r\n\t\t\t\t\r\n\t\t\t\t{link.items && link.items.length > 0 && (\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t\r\n\r\n\t\t\t{child && child}\r\n\t\t
  • \r\n\t);\r\n};\r\n\r\nexport default Li;\r\n","const baseFontSize: number = 16;\r\n\r\nexport const px = (sizeInPx: number) => sizeInPx / baseFontSize;\r\nexport const px2rem = (sizeInPx: number) => `${px(sizeInPx)}rem`;\r\n","/**\r\n * MobileMenu - Ul\r\n */\r\n\r\nimport clsx from 'clsx';\r\nimport React from 'react';\r\nimport { Link } from 'types/global';\r\nimport Li from './MobileMenu.Li';\r\n\r\ninterface PaneProps {\r\n\t/** Links for the pane structured as JSON */\r\n\tlinks: Link[];\r\n\r\n\t/** The pane level (1, 2, 3) */\r\n\tlevel: number;\r\n\r\n\t/** Determine if childelement or not for indent */\r\n\tisChild?: boolean;\r\n\r\n\t/** Screenreadertext for mobile (toggle open) */\r\n\topenNavigationItemLabel?: string;\r\n\r\n\tcloseNavigationItemLabel?: string;\r\n\r\n\t/** Callback method when the menu closes */\r\n\tonClose?: any;\r\n\r\n\t/** Callback method when user clicks in a link */\r\n\tonLinkClick?: any;\r\n}\r\n\r\n/** A ul used by MobileMenu */\r\nconst Ul: React.FC = ({\r\n\tlinks,\r\n\tlevel,\r\n\tisChild,\r\n\tonClose,\r\n\tonLinkClick,\r\n\topenNavigationItemLabel,\r\n\tcloseNavigationItemLabel,\r\n}) => (\r\n\t 1 && 'bg-grey-darkest'\r\n\t\t)}\r\n\t>\r\n\t\t{links.map((link, index) => (\r\n\t\t\t\r\n\t\t))}\r\n\t\r\n);\r\n\r\nexport default Ul;\r\n","/**\r\n * MobileMenu\r\n */\r\n\r\nimport React from 'react';\r\nimport Ul from './MobileMenu.Ul';\r\n\r\ninterface Props {\r\n\taccessibilityDescription: string;\r\n\topenNavigationItemLabel?: string;\r\n\tcloseNavigationItemLabel?: string;\r\n\r\n\t/** Array of menu items */\r\n\titems: any[];\r\n\r\n\t/** Callback method when the menu closes */\r\n\tonClose?: any;\r\n\r\n\t/** Callback method when user clicks in a link */\r\n\tonLinkClick?: any;\r\n}\r\n\r\n/** Mobile menu. */\r\nconst MobileMenu: React.FC = ({\r\n\taccessibilityDescription,\r\n\titems,\r\n\tonClose,\r\n\tonLinkClick,\r\n\topenNavigationItemLabel,\r\n\tcloseNavigationItemLabel,\r\n}) => (\r\n\t\r\n);\r\n\r\nexport default MobileMenu;\r\n","import React from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { selectNavigation } from 'store/modules/model';\r\n\r\nimport Component from './MobileMenu';\r\n\r\ninterface Props {\r\n\tonClose?: any;\r\n\tonLinkClick?: any;\r\n}\r\n\r\nconst MobileMenu: React.FC = ({ onClose, onLinkClick }) => {\r\n\tconst navigation: any = useSelector(selectNavigation);\r\n\r\n\treturn (\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default MobileMenu;\r\n","import React, { useState } from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { selectSearch } from 'store/modules/model';\r\n\r\nimport Icon from 'components/Icon';\r\nimport Home from 'components/Home';\r\nimport Languages from 'components/Languages';\r\nimport TopLinks from 'components/TopLinks';\r\nimport MobileMenu from 'components/MobileMenu';\r\nimport AutoComplete from 'components/AutoComplete';\r\n\r\ninterface Props {\r\n\tmenuButtonLabel: string;\r\n}\r\n\r\n/** The page header component. */\r\nexport const MobileHeader: React.FC = ({ menuButtonLabel }) => {\r\n\tconst [searchOpen, setSearchOpen] = useState(false);\r\n\tconst [menuOpen, setMenuOpen] = useState(false);\r\n\r\n\tconst search = useSelector(selectSearch);\r\n\tconst handleCloseMenu = () => setMenuOpen(!menuOpen);\r\n\r\n\treturn (\r\n\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\tsetSearchOpen(false);\r\n\t\t\t\t\t\t\tsetMenuOpen((open) => !open);\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\taria-expanded={menuOpen}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{menuButtonLabel}\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\tsetMenuOpen(false);\r\n\t\t\t\t\t\t\tsetSearchOpen((open) => !open);\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\taria-expanded={searchOpen}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{search?.searchLabel}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\r\n\t\t\t\r\n\t\t\t\t\r\n\r\n\t\t\t\t
    \r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\tsetMenuOpen(false);\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t/>\r\n\t\t\t\t
    \r\n\r\n\t\t\t\t {\r\n\t\t\t\t\t\tsetMenuOpen(false);\r\n\t\t\t\t\t}}\r\n\t\t\t\t/>\r\n\t\t\t\r\n\r\n\t\t\t{search && (\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t)}\r\n\t\t
    \r\n\t);\r\n};\r\n","import React from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { MobileHeader as Component } from './MobileHeader';\r\nimport { selectNavigation } from 'store/modules/model';\r\n\r\ninterface Props {}\r\n\r\nconst MobileHeader: React.FC = () => {\r\n\tconst navigation: any = useSelector(selectNavigation);\r\n\r\n\treturn ;\r\n};\r\n\r\nexport default MobileHeader;\r\n","/**\r\n * PageFooterLink\r\n */\r\n\r\nimport Link from 'components/Link';\r\nimport React from 'react';\r\n\r\ninterface Props {\r\n\t/** Link url */\r\n\thref?: string;\r\n}\r\n\r\n/** Link inside of footer. */\r\nconst PageFooterLink: React.FC = ({ href, children }) => {\r\n\treturn (\r\n\t\t
  • \r\n\t\t\t\r\n\t\t\t\t{children}\r\n\t\t\t\r\n\t\t
  • \r\n\t);\r\n};\r\n\r\nexport default PageFooterLink;\r\n","/**\r\n * PageFooter\r\n */\r\n\r\nimport Image from 'components/Image';\r\nimport React, { useEffect } from 'react';\r\nimport { ModelFooter, ModelResponsible } from 'types/epi';\r\nimport { Link } from 'types/global';\r\nimport PageFooterLink from './PageFooterLink';\r\n\r\nexport interface Props {\r\n\tfnFooterHeight: (val: number) => void;\r\n\tfooterLinks: ModelFooter | undefined;\r\n\tresponsible: ModelResponsible | undefined;\r\n}\r\n\r\n/** Page footer */\r\nconst PageFooter: React.FC = ({\r\n\tfnFooterHeight,\r\n\tfooterLinks,\r\n\tresponsible,\r\n}) => {\r\n\tconst targetRef = React.useRef(null);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (targetRef.current) {\r\n\t\t\tfnFooterHeight(targetRef.current.offsetHeight);\r\n\t\t}\r\n\t}, [responsible]);\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t\r\n\t\t\t\t
      \r\n\t\t\t\t\t{footerLinks?.footerLinks.map((link: Link, i: number) => (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{link.text}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t))}\r\n\t\t\t\t
    \r\n\r\n\t\t\t\t{responsible && (\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t{responsible.name && (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t\t{responsible.logo && responsible.url ? (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\tresponsible.logo && (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t
    \r\n\t\t\t\t)}\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default PageFooter;\r\n","import React from 'react';\r\nimport { useMediaQuery } from 'react-responsive';\r\nimport { MinBreakpoint } from 'theme/media-queries';\r\nimport { useSelector } from 'react-redux';\r\nimport { selectFooterLinks, selectResponsible } from 'store/modules/model';\r\nimport DesktopHeader from 'components/DesktopHeader';\r\nimport GoTopButton from 'components/GoTopButton';\r\nimport Meta from 'components/Meta';\r\nimport SkipToMain from 'components/SkipToMain';\r\nimport MobileHeader from 'components/MobileHeader';\r\nimport { PageFooter } from 'components/PageFooter';\r\n\r\nconst Layout: React.FC = ({ children }) => {\r\n\tconst footerLinks = useSelector(selectFooterLinks);\r\n\tconst responsible = useSelector(selectResponsible);\r\n\r\n\tconst isDesktop = useMediaQuery({\r\n\t\tminWidth: MinBreakpoint.desktop,\r\n\t});\r\n\tconst [height, setHeight] = React.useState(0);\r\n\r\n\tconst handleCallback = (val: number) => {\r\n\t\tsetHeight(val);\r\n\t};\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t\r\n\t\t\t{!isDesktop && }\r\n\r\n\t\t\t{isDesktop && (\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t)}\r\n\r\n\t\t\t
    {children}
    \r\n\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default Layout;\r\n","import StartPage from './StartPage';\r\nimport ErrorPage404 from './ErrorPage404';\r\nimport ArticlePage from './ArticlePage';\r\n/* PLOP_INJECT_IMPORT */\r\nimport ResetPasswordPage from './ResetPasswordPage';\r\nimport ActivitiesPage from './ActivitiesPage';\r\nimport ParkListingPage from './ParkListingPage';\r\nimport ParkPage from './ParkPage';\r\nimport SearchPage from './SearchPage';\r\nimport FormContainerPage from './FormContainerPage';\r\nimport PreviewBlockPage from './PreviewBlockPage';\r\nimport { ContentTypes } from 'types/pages';\r\n\r\nconst Pages: any = {\r\n\tSNPStartPage: StartPage,\r\n\tSNPErrorPage404: ErrorPage404,\r\n\tSNPArticlePage: ArticlePage,\r\n\t/* PLOP_INJECT_PAGE */\r\n\tSNPResetPasswordPage: ResetPasswordPage,\r\n\tSNPActivityListingPage: ActivitiesPage,\r\n\tSNPParkListingPage: ParkListingPage,\r\n\tSNPParkPage: ParkPage,\r\n\tSNPSearchPage: SearchPage,\r\n\tFormContainerPage,\r\n\tPreviewBlockPage,\r\n};\r\n\r\nexport const PagesMapper = (pageContent: ContentTypes | undefined) => {\r\n\tif (pageContent) {\r\n\t\tlet page: any = Pages[pageContent.modelType];\r\n\r\n\t\tif (page) {\r\n\t\t\treturn page;\r\n\t\t}\r\n\t}\r\n\r\n\treturn ErrorPage404;\r\n};\r\n","/**\r\n * FormContainerPage\r\n */\r\n\r\nimport React from 'react';\r\n\r\nimport Layout from 'layouts';\r\nimport EpiForms from 'components/EpiForms';\r\nimport { EpiFormsProps } from 'components/EpiForms/EpiForms';\r\n\r\nimport { Grid, Cell } from 'components/Grid';\r\n\r\n/** Main description for this component. */\r\nconst FormContainerPage: React.FC = (props) => {\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t \r\n\t\t\t\t\r\n\t\t\t\t{props.fields && }\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default FormContainerPage;\r\n","/**\r\n * PreviewBlockPage\r\n */\r\n\r\nimport React from 'react';\r\nimport { PreviewBlockPageModel } from 'types/pages';\r\nimport Layout from 'layouts';\r\n\r\nimport { Grid, Cell } from 'components/Grid';\r\nimport EpiContentArea from 'components/EpiContentArea';\r\n\r\n/** Page template to enable OPE on blocks */\r\nconst PreviewBlockPage: React.FC = ({ contentArea }) => (\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t \r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n);\r\n\r\nexport default PreviewBlockPage;\r\n","/**\r\n * RouteHandler\r\n */\r\n\r\nimport React, { useRef, useState, useEffect } from 'react';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { useParams, useHistory } from 'react-router-dom';\r\nimport Text from 'components/Text';\r\nimport { PagesMapper } from 'pages';\r\nimport ErrorPage404 from 'pages/ErrorPage404';\r\nimport Loader from 'components/Loader';\r\nimport Layout from 'layouts';\r\nimport { selectModel, selectContent, fetchPage } from 'store/modules/model';\r\nimport { updateRenderingState, selectReact } from 'store/modules/react';\r\nimport { RenderingStates } from 'types/epi';\r\nimport { useMediaQuery } from 'react-responsive';\r\n\r\nimport { useLocation } from 'react-router-dom';\r\nimport { selectEpi } from 'store/modules/epi';\r\n\r\n/** Loads data and renders the correct page based on the route. */\r\nconst RouteHandler: React.FC = () => {\r\n\tlet { siteRoute } = useParams();\r\n\tsiteRoute = siteRoute || '/';\r\n\tconst ariaLiveRef = useRef(null);\r\n\tconst emptyFocusDivRef = useRef(null);\r\n\tconst pageRef = useRef(null);\r\n\tconst { action } = useHistory();\r\n\tconst dispatch = useDispatch();\r\n\tconst { error, loading } = useSelector(selectModel);\r\n\tconst { inEditMode } = useSelector(selectEpi);\r\n\tconst pageContent = useSelector(selectContent);\r\n\tconst { renderingState, apiUrl } = useSelector(selectReact);\r\n\tconst [loaderVisible, setLoaderVisible] = useState(false);\r\n\tconst Page = PagesMapper(pageContent);\r\n\tconst isTablet = useMediaQuery({ query: '(max-width: 767px)' });\r\n\tconst location = useLocation();\r\n\r\n\t// Fix siteRoute so we don't request '//'.\r\n\tif (\r\n\t\tapiUrl &&\r\n\t\tsiteRoute &&\r\n\t\tapiUrl.charAt(apiUrl.length - 1) === '/' &&\r\n\t\tsiteRoute.charAt(0) === '/'\r\n\t) {\r\n\t\tsiteRoute = siteRoute.substr(1);\r\n\t}\r\n\r\n\t// Load the page\r\n\tuseEffect(() => {\r\n\t\t// First hydrate rendering we wont be doing any request, becase we already have the data from the SSR.\r\n\t\tif (renderingState !== RenderingStates.ClientSide && pageContent) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tdispatch(fetchPage(apiUrl, siteRoute));\r\n\t\t// eslint-disable-next-line\r\n\t}, [apiUrl, siteRoute, dispatch]);\r\n\r\n\t// Set renderingState to clientside after the first (hydration) render.\r\n\tuseEffect(() => {\r\n\t\tdispatch(updateRenderingState(RenderingStates.ClientSide));\r\n\t\t// eslint-disable-next-line\r\n\t}, []);\r\n\r\n\t// If we have been waiting for the response more than 400ms we display the loader\r\n\tuseEffect(() => {\r\n\t\tlet loaderTimeout: any;\r\n\r\n\t\tif (loading) {\r\n\t\t\tloaderTimeout = setTimeout(() => {\r\n\t\t\t\t// Tell sighted users\r\n\t\t\t\tsetLoaderVisible(true);\r\n\t\t\t\tif (ariaLiveRef.current) {\r\n\t\t\t\t\tariaLiveRef.current.innerHTML = 'Sidan laddar';\r\n\t\t\t\t}\r\n\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\tif (ariaLiveRef.current) {\r\n\t\t\t\t\t\tariaLiveRef.current.innerHTML = '';\r\n\t\t\t\t\t}\r\n\t\t\t\t}, 500);\r\n\t\t\t}, 400);\r\n\t\t} else {\r\n\t\t\tsetLoaderVisible(false);\r\n\t\t\tif (action === 'PUSH') {\r\n\t\t\t\twindow.scrollTo(0, 0);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn () => {\r\n\t\t\tif (loaderTimeout) {\r\n\t\t\t\tclearTimeout(loaderTimeout);\r\n\t\t\t}\r\n\t\t};\r\n\t\t// eslint-disable-next-line\r\n\t}, [loading]);\r\n\r\n\t// Page is loaded\r\n\t/*useEffect(() => {\r\n\t\tif (renderingState !== RenderingStates.ClientSide && pageContent) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (pageContent && !inEditMode) {\r\n\t\t\tif (ariaLiveRef.current) {\r\n\t\t\t\tariaLiveRef.current.innerHTML = 'Sidan har laddats';\r\n\t\t\t}\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tif (ariaLiveRef.current) {\r\n\t\t\t\t\tariaLiveRef.current.innerHTML = '';\r\n\t\t\t\t}\r\n\t\t\t}, 500);\r\n\r\n\t\t\tif (emptyFocusDivRef.current) {\r\n\t\t\t\tlet x = window.scrollX;\r\n\t\t\t\tlet y = window.scrollY;\r\n\t\t\t\temptyFocusDivRef.current.focus();\r\n\t\t\t\twindow.scrollTo(x, y);\r\n\t\t\t}\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tif (pageRef.current) {\r\n\t\t\t\t\tlet x = window.scrollX;\r\n\t\t\t\t\tlet y = window.scrollY;\r\n\t\t\t\t\tconst firstH1 = pageRef.current.querySelector('h1');\r\n\t\t\t\t\tif (firstH1) {\r\n\t\t\t\t\t\tfirstH1.setAttribute('tabindex', -1);\r\n\t\t\t\t\t\tfirstH1.style.outline = 'none';\r\n\t\t\t\t\t\tfirstH1.focus();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tpageRef.current.focus();\r\n\t\t\t\t\t}\r\n\t\t\t\t\twindow.scrollTo(x, y);\r\n\t\t\t\t}\r\n\t\t\t}, 1000);\r\n\t\t}\r\n\t}, [pageContent]);*/\r\n\r\n\tuseEffect(() => {\r\n\t\t// This is to updated epi quicknavigator link with current page id\r\n\t\tvar epiNavigator: HTMLAnchorElement | null = document.querySelector(\r\n\t\t\t'#epi-quickNavigator > li:first-of-type > a:first-of-type'\r\n\t\t);\r\n\t\tif (epiNavigator && pageContent && epiNavigator.href) {\r\n\t\t\tconst prefix = ':///';\r\n\t\t\tconst pos = epiNavigator.href.lastIndexOf(prefix);\r\n\r\n\t\t\tif (pos !== -1) {\r\n\t\t\t\tvar pageEditLink =\r\n\t\t\t\t\tepiNavigator.href.substring(0, pos) + prefix + pageContent.id;\r\n\t\t\t\tepiNavigator.href = pageEditLink;\r\n\r\n\t\t\t\t// This is to updated epi quicknavigator dropdown menu link with current page id\r\n\t\t\t\tvar epiNavigatorMenuItem: HTMLAnchorElement | null = document.querySelector(\r\n\t\t\t\t\t'#epi-quickNavigator-menu > li:last-of-type > a:first-of-type'\r\n\t\t\t\t);\r\n\t\t\t\tif (epiNavigatorMenuItem) {\r\n\t\t\t\t\tepiNavigatorMenuItem.href = pageEditLink;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}, [location, pageContent]);\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t{loading && loaderVisible && (\r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t)}\r\n\t\t\t{error && error.indexOf('404') !== -1 && (\r\n\t\t\t\t\r\n\t\t\t)}\r\n\t\t\t{pageContent && !error && (\r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t)}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\nexport { RouteHandler };\r\n","import { useEffect } from \"react\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { updateEpi } from \"store/modules/epi\";\r\nimport { fetchPageWithContentLink } from \"store/modules/model\";\r\nimport { ContentSavedEvent } from \"types/epi\";\r\n\r\nexport const useEpiContextAndSavedEvent = () => {\r\n\tconst dispatch = useDispatch();\r\n\r\n\tconst handleContentSaved = () => {\r\n\t\tif (window.epi.isEditable) {\r\n\t\t\twindow.epi.subscribe('contentSaved', (event: ContentSavedEvent) => {\r\n dispatch(fetchPageWithContentLink(event.contentLink));\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tconst setContextAndEvent = () => {\r\n\t\tdispatch(updateEpi({\r\n\t\t\tisEditable: window.epi.isEditable,\r\n\t\t\tinEditMode: window.epi.inEditMode,\r\n\t\t\tinPreviewMode: (window.epi.inEditMode && !window.epi.isEditable),\r\n\t\t\tready: window.epi.ready\r\n\t\t}))\r\n\r\n\t\thandleContentSaved();\r\n\t}\r\n\r\n\tconst handleSetContextAndEvent = () => {\r\n //epi object won't be available outside of Epi\r\n\t\tif (!window.epi) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (window.epi.ready === true) {\r\n\t\t\t// `epiReady` already fired.\r\n\t\t\tsetContextAndEvent();\r\n\r\n\t\t// The subscribe method won't be available outside of Epi.\r\n\t\t} else if (window.epi.subscribe) {\r\n\t\t\t// Subscribe if the `epiReady` event hasn't happened yet.\r\n\t\t\twindow.epi.subscribe('epiReady', () => setContextAndEvent());\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tuseEffect(() => {\r\n\t\tif(typeof window !== \"undefined\"){\r\n\t\t\twindow.addEventListener(\"load\", handleSetContextAndEvent)\r\n\t\t}\r\n\r\n\t\treturn () => {\r\n\t\t\tif(typeof window !== \"undefined\"){\r\n\t\t\t\twindow.removeEventListener(\"load\", handleSetContextAndEvent)\r\n\t\t\t}\r\n\t\t}\r\n\t},[])\r\n\r\n}","import React from 'react';\r\nimport './tailwind.output.css';\r\n\r\nimport { useSelector } from 'react-redux';\r\nimport { Route, Switch } from 'react-router-dom';\r\nimport { RouteHandler } from './routeHandler';\r\n\r\nimport { useTabFocus } from 'hooks';\r\nimport { selectContent } from 'store/modules/model';\r\nimport { ContentTypes } from 'types/pages';\r\nimport { useEpiContextAndSavedEvent } from 'hooks/useEpiContextAndSavedEvent';\r\n\r\ninterface PropsInterface {\r\n\tRouter: any;\r\n}\r\n\r\nexport const routePatterns = ['/:siteRoute*'];\r\n\r\nconst getLocation = (pageContent: ContentTypes | undefined) => {\r\n\tlet location = '';\r\n\r\n\tif (pageContent?.url) {\r\n\t\tlocation = pageContent.url;\r\n\t} else if (typeof window !== 'undefined') {\r\n\t\tlocation = window.location.pathname;\r\n\t}\r\n\r\n\treturn location;\r\n};\r\n\r\nconst App: React.FC = ({ Router }) => {\r\n\tconst pageContent = useSelector(selectContent);\r\n\tconst location = getLocation(pageContent);\r\n\tuseTabFocus();\r\n\tuseEpiContextAndSavedEvent();\r\n\t\r\n\treturn (\r\n\t\t<>\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{routePatterns.map((routePattern) => (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t))}\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default App;\r\n","/**\r\n * useTabFocus\r\n */\r\n\r\nimport { useEffect } from 'react';\r\n\r\nexport const useTabFocus = () => {\r\n\tuseEffect(() => {\r\n\t\tconst onKeyUp = (event: KeyboardEvent) => {\r\n\t\t\tconst el = event.target as Element;\r\n\t\t\tconst keyCode = event.keyCode ? event.keyCode : event.which;\r\n\r\n\t\t\tif (\r\n\t\t\t\t['a', 'button', 'input', 'textarea', 'select'].indexOf(\r\n\t\t\t\t\tel.tagName.toLowerCase()\r\n\t\t\t\t) !== -1 &&\r\n\t\t\t\t!el.hasAttribute('disabled') &&\r\n\t\t\t\tkeyCode === 9\r\n\t\t\t) {\r\n\t\t\t\tel.classList.add('usability--tab-focus');\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tconst onClick = (event: MouseEvent) => {\r\n\t\t\tconst el = event.target as Element;\r\n\r\n\t\t\tif (['input', 'textarea'].indexOf(el.tagName.toLowerCase()) !== -1) {\r\n\t\t\t\tel.classList.add('usability--tab-focus');\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tconst onBlur = (event: FocusEvent) => {\r\n\t\t\tconst el = event.target as Element;\r\n\r\n\t\t\tif (el.classList && el.classList.contains('usability--tab-focus')) {\r\n\t\t\t\tel.classList.remove('usability--tab-focus');\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tdocument.addEventListener('keyup', onKeyUp);\r\n\t\tdocument.addEventListener('click', onClick);\r\n\t\tdocument.addEventListener('blur', onBlur, true);\r\n\r\n\t\treturn () => {\r\n\t\t\tdocument.removeEventListener('keyup', onKeyUp);\r\n\t\t\tdocument.removeEventListener('click', onClick);\r\n\t\t\tdocument.removeEventListener('blur', onBlur, true);\r\n\t\t};\r\n\t}, []);\r\n};\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { Provider } from 'react-redux';\r\nimport { BrowserRouter } from 'react-router-dom';\r\nimport initStore from 'store';\r\nimport { initialState as reactInitialState } from 'store/modules/react';\r\nimport Application from './App';\r\nimport { RenderingStates } from 'types/epi';\r\n\r\n// Set default rendermethod and a basic model.\r\n// eslint-disable-next-line\r\nlet renderMethod = ReactDOM.render;\r\nlet model = {\r\n\thead: {},\r\n\tepi: {},\r\n\treact: reactInitialState,\r\n};\r\n\r\n// Replace our basic model if one exitst on the window-object,\r\n// then we also change rendermethod to hydrate.\r\nif (window.__model) {\r\n\t// eslint-disable-next-line\r\n\tlet renderMethod = ReactDOM.hydrate;\r\n\tmodel = window.__model;\r\n\tmodel.react.renderingState = RenderingStates.Hydrate;\r\n}\r\n\r\nlet react = model.react;\r\ndelete model.react;\r\n\r\nconst preloadedState = {\r\n\treact,\r\n\tepi: model.epi,\r\n\tmodel: { model },\r\n};\r\n\r\n// Render the application to the DOM\r\nconst element = document.getElementById(react.containerId);\r\nif (element) {\r\n\trenderMethod(\r\n\t\t\r\n\t\t\t\r\n\t\t,\r\n\t\telement\r\n\t);\r\n}\r\n","/**\r\n * React\r\n */\r\n\r\nimport { createSlice, PayloadAction } from '@reduxjs/toolkit';\r\nimport { ModelReact, RenderingStates } from 'types/epi';\r\nimport { RootState } from 'store';\r\n\r\nexport const initialState: ModelReact = {\r\n\tcontainerId: 'root',\r\n\tclientOnly: true,\r\n\trenderingState: RenderingStates.ClientSide,\r\n\tsiteBaseUrl: process?.env?.PUBLIC_URL,\r\n\tapiUrl: `${process?.env?.PUBLIC_URL}/api/`,\r\n\tapiEditUrl: '/api/content',\r\n};\r\n\r\nconst slice = createSlice({\r\n\tname: 'react',\r\n\tinitialState,\r\n\treducers: {\r\n\t\tupdateRenderingState: (state, action: PayloadAction) => {\r\n\t\t\tstate.renderingState = action.payload;\r\n\t\t},\r\n\t},\r\n});\r\n\r\nexport const selectReact = (state: RootState) => state.react;\r\nexport const { updateRenderingState } = slice.actions;\r\n\r\nexport default slice.reducer;\r\n","import { ContentTypes } from 'types/pages';\r\nimport { IImage, Link } from 'types/global';\r\n\r\ndeclare global {\r\n\tinterface Window {\r\n\t\t__model: any;\r\n\t\tepi: any;\r\n\t}\r\n\t// eslint-disable-next-line @typescript-eslint/no-namespace\r\n\tnamespace NodeJS {\r\n\t\tinterface Global {\r\n\t\t\twindow: any;\r\n\t\t\tdocument: any;\r\n\t\t\tStyled: any;\r\n\t\t\tReact: any;\r\n\t\t\tReactDOM: any;\r\n\t\t\tReactDOMServer: any;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport interface EpiEvent {\r\n\tisEditable: boolean;\r\n\tinEditMode: boolean;\r\n\tinPreviewMode: boolean;\r\n\tready: boolean;\r\n}\r\n\r\nexport interface Model {\r\n\thead?: ModelHead;\r\n\tmetadata?: ModelMetadata;\r\n\theader?: ModelHeader;\r\n\tresponsible?: ModelResponsible;\r\n\tfooterLinks?: ModelFooter;\r\n\tbreadcrumbs?: ModelBreadcrumbs;\r\n\tshare?: any;\r\n\tsearch?: ModelSearch;\r\n\tcontent?: ContentTypes;\r\n\ttranslations?: TranslationModel;\r\n\treadSpeaker?: ReadSpeakerModel;\r\n\tlanguageSelector?: LanguageSelectorModel;\r\n\tnavigation?: NavigationModel;\r\n\thome?: HomeModel;\r\n\ttopLinks?: TopLinksModel;\r\n\tmenu?: MenuModel;\r\n\tskipToMain?: any;\r\n\tskipToTop?: { text: string };\r\n}\r\n\r\nexport interface ContentLinkResponse {\r\n\tstatus: number;\r\n\tresult: ContentTypes;\r\n}\r\n\r\nexport interface ContentSavedEvent {\r\n\tcontentLink: string;\r\n\tproperties: ContentSavedProperty[];\r\n}\r\n\r\nexport interface ContentSavedProperty {\r\n\tname: string;\r\n\tsuccessful: boolean;\r\n\tvalidationErrors: any;\r\n\tvalue: string;\r\n}\r\n\r\nexport interface MenuModel {\r\n\titems: MenuItemModel[];\r\n}\r\n\r\nexport interface MenuItemModel {\r\n\turl: string;\r\n\ttext: string;\r\n\tselected: boolean;\r\n}\r\n\r\nexport interface TopLinksModel {\r\n\ttopLinks: TopLink[];\r\n}\r\n\r\nexport interface TopLink {\r\n\thref: string;\r\n\ttext: string;\r\n\ttitle: string;\r\n\ttarget?: string;\r\n}\r\n\r\nexport interface NavigationModel {\r\n\taccessibilityDescription: string;\r\n\topenNavigationPaneLabel: string;\r\n\tcloseNavigationPaneLabel: string;\r\n\topenNavigationItemLabel: string;\r\n\tcloseNavigationItemLabel: string;\r\n\tnavigationButtonLabel: string;\r\n\tscreenReaderText: string;\r\n\titems: NavigationItem[];\r\n}\r\n\r\ninterface NavigationItem {\r\n\turl: string;\r\n\ttext: string;\r\n\ttitle: string;\r\n\tisOpen: boolean;\r\n\tisActive: boolean;\r\n\titems: NavigationItem[];\r\n}\r\n\r\ninterface HomeModel {\r\n\turl: string;\r\n\talt: string;\r\n\tlogo: string;\r\n}\r\n\r\ninterface ReadSpeakerModel {\r\n\turl: string;\r\n\ttext: string;\r\n}\r\n\r\ninterface ModelMetadata {\r\n\ttitle?: string | null;\r\n\tkeywords?: string | null;\r\n\tdescription?: string | null;\r\n\tgoogleSiteVerificationTag?: string | null;\r\n\ttwitter?: {\r\n\t\tcard?: string | null;\r\n\t\ttitle?: string | null;\r\n\t\tdescription?: string | null;\r\n\t\timage?: string | null;\r\n\t};\r\n\topenGraph?: {\r\n\t\ttitle?: string | null;\r\n\t\tsiteName?: string | null;\r\n\t\ttype?: string | null;\r\n\t\turl?: string | null;\r\n\t\tdescription?: string | null;\r\n\t\timage?: string | null;\r\n\t};\r\n}\r\n\r\ninterface ModelHead {\r\n\ttitle?: string | null;\r\n\tkeywords?: string | null;\r\n\tdescription?: string | null;\r\n\topenGraphTitle?: string | null;\r\n\topenGraphImageUrl?: string | null;\r\n\topenGraphDescription?: string | null;\r\n\ttwitterTitle?: string | null;\r\n\ttwitterDescription?: string | null;\r\n\ttwitterImageUrl?: string | null;\r\n}\r\n\r\ninterface ModelHeader {\r\n\thomeLogo: {\r\n\t\tsrc: string;\r\n\t\talt?: string;\r\n\t};\r\n\thomeLink: Link;\r\n\ttopLinkItems?: Link[];\r\n\tmenuItems: Link[];\r\n}\r\n\r\ninterface LanguageSelectorModel {\r\n\tcurrentCulture: string;\r\n\tlanguages: LanguageSelectorItem[];\r\n}\r\n\r\nexport interface LanguageSelectorItem {\r\n\turl: string;\r\n\tculture: string;\r\n\ttext: string;\r\n}\r\n\r\nexport interface ModelFooter {\r\n\tfooterLinks: FooterLink[];\r\n}\r\n\r\ninterface FooterLink {\r\n\turl: string;\r\n\ttext: string;\r\n\ttitle: string;\r\n}\r\n\r\nexport interface ModelResponsible {\r\n\tname: string;\r\n\tlogo: IImage;\r\n\turl: string;\r\n}\r\n\r\ninterface ModelBreadcrumbs {\r\n\tlabel: string;\r\n\tbreadcrumbs: Link[];\r\n}\r\n\r\ninterface ModelSearch {\r\n\tlanguage?: string;\r\n\tsearchPageUrl?: string;\r\n\tapiUrl?: string;\r\n\tautocompleteApiUrl?: string;\r\n\tnumberOfHitsPerPage?: number;\r\n\tinputId: string;\r\n\tplaceholderText?: string;\r\n\tsearchLabel: string;\r\n\tsubmitText: string;\r\n\tqueryName: string;\r\n}\r\n\r\nexport interface ModelReact {\r\n\tcontainerId: string;\r\n\tclientOnly: boolean;\r\n\tsiteBaseUrl: string;\r\n\tapiUrl: string;\r\n\tapiEditUrl: string;\r\n\trenderingState: RenderingStates;\r\n}\r\n\r\nexport enum RenderingStates {\r\n\tServerSide = 1,\r\n\tHydrate,\r\n\tClientSide,\r\n}\r\n\r\nexport interface TranslationModel {\r\n\ttarget: string;\r\n\tskipToMainText: string;\r\n\tmenuLabel: string;\r\n\tmenuText: string;\r\n\tmenuCloseText: string;\r\n\tscreenReaderShowAllText: string;\r\n}\r\n"],"sourceRoot":""}