{"version":3,"sources":["translations/en.yaml","translations/cs.yaml","translations/sk.yaml","translations/de.yaml","translations/pl.yaml","theme.js","utility/useT.js","layout/MainMenu.js","utility/useWindowSize.js","utility/useViewportWidth.js","icons/FlagAt.js","icons/FlagCh.js","icons/FlagCz.js","icons/FlagDe.js","icons/FlagFr.js","icons/FlagIt.js","icons/FlagSi.js","icons/FlagGr.js","icons/FlagHr.js","icons/FlagGb.js","icons/FlagSk.js","icons/FlagPl.js","icons/FlagLi.js","icons/FlagBl.js","icons/FlagBg.js","icons/FlagRo.js","icons/FlagRu.js","icons/FlagUk.js","icons/FlagHu.js","icons/FlagAl.js","icons/Flag.js","utility/useLanguage.js","layout/AppLayout.js","utility/mathutil.js","datalayer/extractors.ts","datalayer/guideGps.ts","utility/useOnlineStatus.js","datalayer/api.js","utility/useStateDialog.js","utility/nativeInterface.ts","ui-elements/ChooseFromListDialog.js","ui-elements/SearchField.js","utility/containsText.js","icons/River.js","icons/Creek.js","icons/Channel.js","riverlist/RiverList.js","ui-elements/LoadingInfo.js","ui-elements/ErrorInfo.js","ui-elements/AsyncDataWrapper.js","utility/globalState.js","utility/useStorage.js","utility/localeSort.js","riverlist/RiverListPage.js","ui-elements/KmSelector.js","ui-elements/NameValueView.js","rkmdetail/GpsDetailDialog.js","rkmdetail/GpsView.js","riverdetail/RiverDetailWrapper.js","riverdetail/GaugeListItem.js","ui-elements/CloseButtonDialogTitle.js","utility/useLocation.js","feedback/FeedbackDialog.js","utility/useRouterDialog.js","riverdetail/RkmListItem.js","riverdetail/RiverGuideDialog.js","ui-elements/AvatarBar.js","ui-elements/AvatarButton.js","riverdetail/RiverDetailPage.js","ui-elements/NativeRouterSearchField.js","ui-elements/InfoBox.js","countrylist/CountryListPage.js","offline-data/OfflineDataPage.js","riverdetail/ObjectFilterDialog.js","icons/Marker.js","maps/Marker.js","ui-elements/AppBarMeasure.js","utility/useDimensions.js","maps/LocationFab.js","maps/PointsMap.js","icons/Camp.js","rkmdetail/RkmDetailMap.js","ui-elements/Panel.js","rkmdetail/RkmDetailPage.js","rkmdetail/RkmDetailDialog.js","riverdetail/RiverMap.js","riverdetail/RiverMapPage.js","icons/Canoe.js","riverdetail/RiverGuide.js","riverdetail/RiverGuidePage.js","riverdetail/RiverGaugesPage.js","riverdetail/RiverWaterLevelsPage.js","riverdetail/SectionDetailPage.js","riverdetail/RiverDifficultyPage.js","riverdetail/RiverDescriptionPage.js","settings/SettingsPage.js","riverdetail/RiverAdditionalInfoPage.js","ui-elements/IconLink.js","settings/AboutPage.js","translations/explanationsCs.js","translations/explanationsEn.js","translations/explanations.js","settings/ExplanationsPage.js","AppRoutes.js","ui-elements/ConfirmDialog.js","ui-elements/SnackbarCloseButton.js","App.js","serviceWorker.js","i18n.js","index.js"],"names":["module","exports","theme","createMuiTheme","tileBackgroundColor","tileBackgroundOpacity","palette","type","useT","useTranslation","RouteMenuItem","title","to","Icon","icon","MenuItem","component","Link","ListItemIcon","ListItemText","primary","MainMenu","useSnackbar","enqueueSnackbar","t","List","HomeIcon","GetAppIcon","SettingsIcon","HelpIcon","InfoIcon","useWindowSize","isClient","window","getSize","width","innerWidth","undefined","height","innerHeight","useState","windowSize","setWindowSize","useEffect","addEventListener","handleResize","removeEventListener","useViewportWidth","Flag","props","size","viewBox","fill-rule","fill","d","stroke-width","id","fill-opacity","clip-path","transform","stroke","x","y","style","fillOpacity","strokeWidth","strokeOpacity","strokeMiterlimit","strokeDasharray","enable-background","language","url","availableLanguages","code","getLanguage","i18n","languages","lang","useLanguage","useStyles","makeStyles","root","flexGrow","grow","menuButton","marginLeft","marginRight","appBar","breakpoints","up","content","drawer","flexShrink","hide","visibility","AppLayout","children","mainIconMeaning","customButtons","subMenuItems","parentRoute","showLanguageSelector","classes","history","useReactRouter","React","isDrawerOpened","setIsDrawerOpened","subAnchorEl","setSubAnchorEl","langAnchorEl","setLangAnchorEl","subMenuOpen","Boolean","langMenuOpen","handleCloseSubMenu","handleCloseLangMenu","handleMenuClick","push","length","goBack","className","AppBar","position","Toolbar","Hidden","smUp","IconButton","color","aria-label","onClick","xsDown","Typography","variant","aria-controls","aria-haspopup","event","currentTarget","Menu","anchorEl","anchorOrigin","vertical","horizontal","keepMounted","transformOrigin","open","onClose","map","handler","label","checkboxValue","checkboxSetter","FormControlLabel","control","Checkbox","checked","onChange","e","changeLanguage","SwipeableDrawer","onOpen","tabIndex","role","onKeyDown","Drawer","distance","lat1","lon1","lat2","lon2","unit","radlat1","Math","PI","radlat2","theta","radtheta","dist","sin","cos","acos","distanceGps","gps1","gps2","latitude","longitude","rangeIntersection","range1","range2","ae","begin","as","end","be","bs","os","max","min","roundKm","value","round","formatDistance","km1","km2","abs","extractRiverName","riverDetail","_","get","extractRiverId","filterGuideBySection","guide","section","filter","rkm","km","extractRkmKm","extractRiverGuide","res","extractRiverBegins","zacatek","Popis","name","find","extractFullRiverSection","start","extractMapPointsFromGuide","shownObjects","rkmDetail","rkmPoints","extractMapPoints","parseGps","gps","isPlainObject","isArray","split","parseFloat","extractPhotos","photo","photo_title","photo_file","extractRkmLinks","link","text","typ","extractRkmDescription","popis","extractRkmIcons","ikonky","trim","isNumber","replace","convertPoint","point","forEach","camps","test","jez","konec","most","obcerstveni","pritok","zajimavost","taboriste","extractKnownSections","data","rows","DOMParser","parseFromString","getElementsByTagName","rowIndex","cells","innerText","difficulty","range","extractDifficultySections","rkm_Od","rkm_Do","stupen","extractRiverAdditionalInfo","path","extractRiverComments","extractRiverLogs","extractRiverArticles","getAsArray","extractGaugeRange","gauge","rkmod","rkmdo","parseGauges","gaugesData","compact","item","isNaN","extractRiverSectionsBySemaphore","countryGaugesData","riverId","rivers","river","extractArticleLink","article","linkBase","extractArticleListLink","odkaz","extractCommentListLink","extractLogListLink","ID_reky","extractArticleCount","extractLogCount","extractCommentCount","extractIdZeme","extrapolatePoint","known1","known2","compute","rkm1","rkm2","guideHasGps","addGpsToGuide","points","lastGpsIndex","toInterpolateIndexes","index","lastGps","lastRkm","nextGps","nextRkm","ii","interpolateGuide","firstGps","findIndex","findLastIndex","extrapolateGuide","addCurrentLocationEdges","i0","i1","z","location","currentLocation","splice","addCurrentLocationToGuide","Error","cloneDeep","nearestIndex","nearest","i","indexOfNearest","distComputed","distTotal","nearest2Index","getNearest2Index","index1","index2","findNearestCoordinates","preferIcon","positions","prefer","getOnlineStatus","navigator","onLine","useOnlineStatus","onlineStatus","setOnlineStatus","goOnline","goOffline","lastChangedApiFormat","Date","getTime","getCachedResourceFromApiCore","cacheName","onSaveToCache","a","fetch","process","resp","json","localforage","setItem","downloadDate","toISOString","resourcePath","getCachedResourceFromApi","requireFreshData","getItem","cached","diff","getApiLanguage","useRiverDb","usePromise","getRiverDb","result","error","state","Staty","Reky","addGpsToRiver","useRiverDetail","getRiverDetail","ID_zeme","useCountryGauges","getCountryGauges","useRiverGauges","getRiverGauges","dataUrltoBlob","dataurl","arr","mime","match","bstr","atob","n","u8arr","Uint8Array","charCodeAt","Blob","sendFeedback","autor","imageUrls","body","FormData","append","photoIndex","imageUrl","method","Feedback","useStateDialog","setOpen","nativeInterface","ChooseFromListDialog","items","other","handleClose","native","Dialog","aria-labelledby","DialogTitle","ListItemAvatar","Avatar","ListItem","button","openUrl","key","href","target","DialogActions","Button","flexLine","display","searchField","marginTop","getSearchValue","routerStateField","SearchField","onRunFilter","searchInState","setSearchInState","setSearch","pathname","search","setDebouncedFilter","useRef","debounce","clsx","TextField","placeholder","autoComplete","current","onKeyPress","containsText","searched","searchedNorm","normalize","toLowerCase","tokens","token","tokenNorm","includes","River","notFoundWrapper","padding","spacing","fontSize","info","getRiverSubtitle","difTitles","Z","S","E","diffs","H_obtiznost","S_obtiznost","D_obtiznost","uniq","join","countryUrlFromRiver","countries","country","Url","RiverListItemIcon","Reka","RiverListItem","riverSemaphores","Nazev","secondary","src","alt","RiverList","wrapper","margin","message","top","LoadingInfo","CircularProgress","extractErrorMessage","toString","ErrorInfo","Alert","severity","AlertTitle","isString","startsWith","substring","getLocalizedMessage","AsyncDataWrapper","dataHolder","loadingMessage","combineDataHolders","holders","createStorageState","storageKey","defaultValue","Context","createContext","storageObject","initialValue","JSON","parse","console","log","storedValue","setStoredValue","valueToStore","Function","stringify","useStorage","localStorage","currentvalue","setCurrentValue","Provider","useContext","RiverSelectedSectionsProvider","useRiverSelectedSections","useSetRiverSelectedSections","createGlobalState","jidlo","vodocet","zacatek_konec","_other","ShownObjectsProvider","useShownObjects","useSetShownObjects","useSelectedSection","useSetSelectedSection","selectedSections","setSelectedSections","ClassicalGuideProvider","useClassicalGuide","useSetClassicalGuide","WatchPositionProvider","useWatchPosition","useSetWatchPosition","onlyRunnable","showRivers","showCreeks","showChannels","showBeginner","showAdvanced","showExpert","RiverFilterProvider","useRiverFilter","useSetRiverFilter","WarrantyClosedProvider","useWarrantyClosed","useSetWarrantyClosed","DetailMapTypeProvider","useDetailMapType","useSetDetailMapType","chars","toUpperCase","localeSort","fieldName","j","pos","ch","substr","indexOf","sort","b","a2","b2","searchDiv","alignItems","flex1","flex","RiverListPage","setFilter","riverDb","params","countryGauges","mapValues","keyBy","sections","parseInt","extractRiverSemaphoreByRiver","riverFilter","setRiverFilter","riverFilterSetter","rivers_search","header","paddingTop","select","down","KmSelector","options","setSection","field","onChoose","NativeSelect","pick","marginBottom","fontFamily","bold","fontWeight","NameValueView","textField","GpsDetailDialog","dialogProps","coordinates","menuItems","DirectionsCarIcon","isAndroid","MapIcon","DriveToButton","openDialog","GpsView","RiverDetailWrapper","infoBlack","gaugeAvatar","maxWidth","borderRight","flexDirection","justifyContent","gaugeName","whiteSpace","overflow","textOverflow","textAlign","avatarWrap","gaugeSelected","fallback","Semaphore","drawFallback","image","sjizdnost","waterLevelImage","GaugeListItem","handleClick","isGuide","showRadio","showChart","difficultySections","gaugeRange","difficulties","rangeIntersectionLength","Radio","edge","disableRipple","od","prutok","vyska","limit","datum","cas","graf","obr","GaugeAvatar","selectedSection","selected","borderBottom","divider","buttonsWrapper","closeButton","grey","CloseButtonDialogTitle","headerButtons","disableTypography","stopPropagation","handleGeolocationError","err","PERMISSION_DENIED","lastLocationDate","useLocation","locationRequired","setLocation","watchPosition","startWatchPosition","stopWatchPosition","geolocation","watchId","receivePosition","onError","enableHighAccuracy","timeout","maximumAge","clearWatch","coords","date","maxHeight","inputLabel","photoWrapper","deleteButton","right","displayNone","FeedbackDialog","setPopis","setAutor","setRkm","currentRkm","useMemo","requestCamera","cameraIsOpen","setImageUrls","isUploading","setIsUploading","handleSendFeedback","count","images","inputFileRef","FormGroup","InputLabel","showUploadDialog","click","accept","ref","e1","dialog","files","reader","FileReader","onload","e2","readAsDataURL","fullScreen","onTakePhoto","dataUri","idealFacingMode","FACING_MODES","ENVIRONMENT","isImageMirror","imageType","IMAGE_TYPES","JPG","idealResolution","useRouterDialog","streetviewIcon","youtubeIcon","smallIcon","iconsWrapper","OverviewIcons","isStreetView","isYoutube","isPhoto","isLocation","RkmListItem","useImageGuide","onContextMenu","description","descriptionIcon","popis_icon","extractRkmIconDescription","icons","dangerouslySetInnerHTML","__html","RiverGuideDialogPage","visible","setVisible","setTimeout","RiverGuideDialog","AvatarBar","usage","AvatarButton","backgroundColor","paper","paperInner","paperInnerButton","cursor","iconWrapper","itemBodyWrapper","selectedSectionBody","kmSelectorWrap","driveToButton","sectionList","headerImage","backgroundImage","backgroundRepeat","backgroundSize","backgroundPosition","enrichKmOptions","sortBy","OverviewSectionDesign","pathBase","page","SelectedSectionOverview","begins","ends","extractRiverEnds","coverage","reduce","dct","intersection","extractDifficultyCoverage","openGuideDialog","guideDialogProps","openedGuide","setOpenedGuide","chooseGuideField","setChooseGuideField","wholeRiver","beginCoordinates","endCoordinates","Chip","keys","AdditionalInfoSummary","extractCount","extractItems","RiverDetailCore","openFeedback","removeFromOffline","sectionsBySemaphore","online","sectionTitle","full","getSectionTitle","mapPoints","riverImage","photos","flatten","extractRiverImage","useTheme","EditIcon","main","DeleteIcon","ListIcon","KeyboardTabIcon","difficultySectionName","DirectionsBoatIcon","ShowChartIcon","TextFieldsIcon","CreateIcon","CommentIcon","RiverDetailPage","feedbackDialogProps","handleRemoveFromOffline","m","removeItem","NativeRouterSearchField","InfoBox","backgroundAttachment","minHeight","tileWrapper","tileBackground","left","bottom","opacity","tileContent","tileInner","searchbox","outline","border","borderRadius","searchboxWrapper","searchResultWrapper","counts","CountryTile","Grid","xs","sm","md","lg","riverCount","creekCount","CountryListPage","warrantyClosed","setWarrantyClosed","channelCount","container","OfflineDataPage","cachedRivers","setCachedRivers","reloadCounter","setReloadCounter","riverIdList","handleLoadOfflineKeys","clear","ItemImage","Item","setShownObjects","ObjectFilterDialog","PaperProps","Marker","marker","currentMarker","isHighlighted","anchor","CurrentPositionMarker","them","AppBarMeasure","onChangeHeight","dependencies","node","setNode","useCallback","newNode","dimensions","setDimensions","measure","innerNode","rect","getBoundingClientRect","useLayoutEffect","resizeObserver","ResizeObserver","observe","disconnect","useDimensions","containerRef","fab","LocationFab","onClickLocation","hasGps","setWatchPosition","Fab","mapProviders","osm","s","String","fromCharCode","wikimedia","dpr","mapycz","mapycz_turist","mapycz_photo","maps_google_photo","mapAttribution","textDecoration","currentIconWrapper","extractPoint","PointsMap","onMarkerClick","extractImage","appBarHeight","setAppBarHeight","winSize","highlighted","center","setCenter","zoom","setZoom","onBoundsChanged","bounds","initial","defaultWidth","provider","attribution","Camp","version","getDefaultZoom","diam","RkmDetailMap","selectedGps","setSelectedGps","mapType","minlat","minBy","minlon","maxlat","maxBy","maxlon","defaultCenter","defaultZoom","Panel","Paper","iframe","streetviewButton","rkmSeparator","campIconWrapper","CampInfoView","nazev","adresa","web","telefon","provoz","dalsi_moznosti","prijezd","aktivity","ikonky_tab","RkmDetailPage","rkmDetailInit","setRkmDetail","words","len","word","nextWord","extractRkmTitle","pointsAll","links","setDetailMapType","openLink","currentLinkUrl","rkmNextDetail","extractNextRkmDetail","rkmBeforeDetail","findLast","extractBeforeRkmDetail","NavigateBeforeIcon","NavigateNextIcon","YoutubeIcon","StreetviewIcon","LayersIcon","camp","RkmDetailDialog","RiverMap","openDetails","detailsDialogProps","selectedPlace","setSelectedPlace","RiverMapPage","openFilter","filterDialogProps","Canoe","separator","semaphore","RiverGuide","currentRkmDetail","setCurrentRkmDetail","currentLocationRef","openItemMenu","itemMenuProps","knownSections","guideShown","rkmItem","slice","isItemShown","SubdirectoryArrowRightIcon","SubdirectoryArrowLeftIcon","rkmMiddle","preventDefault","handleContextMenu","scrollIntoView","block","RiverGuidePage","classicalGuide","setClassicalGuide","RiverGaugesPage","gauges","gaugeSectionName","toLocaleLowerCase","RiverWaterLevelsPage","table","borderCollapse","th","td","tdRight","tdCenter","heading","SectionDetailPage","riverGaugeDetail","riverGauges","riverName","extractSectionsFromGauge","grafUrl","getGrafUrl","Stav","jednotka","colSpan","minimum","optimum","maximum","row","Datum","Prutok","Vyska","formatSectionText","RiverDifficultyPage","RiverDescriptionPage","extractRiverDescription","CheckControl","setter","Switch","number","ArticleListItem","CommentListItem","showFull","setShowFull","v","Jmeno","truncate","LogListItem","Autor","Vodocet","Trasa","Delka","RiverAdditionalInfoPage","extractor","ItemComponent","extractItemLink","extractAllLink","nextDataTitle","RiverCommentsPage","RiverLogsPage","RiverArticlesPage","linkitem","IconLink","rel","AboutPage","MailIcon","LanguageIcon","cs","en","pl","sk","de","ExplanationsPage","explanations","AppRoutes","basename","SettingsPage","exact","ConfirmDialog","positiveButton","negativeButton","onConfirm","DialogContent","DialogContentText","autoFocus","SnackbarCloseButton","closeSnackbar","AppCore","openConfirmReload","confirmReloadDialogProps","showInfoMessage","showErrorMessage","showReloadDialog","reload","App","CssBaseline","Helmet","maxSnack","action","isLocalhost","hostname","registerValidSW","swUrl","config","serviceWorker","register","then","registration","onupdatefound","installingWorker","installing","onstatechange","controller","onUpdate","jsInterface","onSuccess","catch","use","LanguageDetector","initReactI18next","init","fallbackLng","defaultNS","interpolation","escapeValue","resources","common","react","useSuspense","ReactDOM","render","document","getElementById","URL","origin","response","contentType","headers","status","ready","unregister","checkValidServiceWorker"],"mappings":"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","file":"static/js/main.c4a40039.chunk.js","sourcesContent":["module.exports = {\"HomePage\":\"Home page\",\"SearchRiver\":\"Search river or creek\",\"OfflineData\":\"Offline data\",\"Settings\":\"Settings\",\"RiversNotFound\":\"No rivers found\",\"Search\":\"Search\",\"LoadingRiverDetail\":\"Loading river detail\",\"RiverSavedToOffline\":\"River was saved to offline storage\",\"RiverRemovedFromOffline\":\"River was removed from offline storage\",\"ErrorGettingLocation\":\"Error getting current location\",\"GeolocationNotPermitted\":\"Using geolocation is not permitted, please allow it in yout browser Settings/Web Settings/Location\",\"Beginner\":\"Beginner\",\"Advanced\":\"Advanced\",\"Expert\":\"Expert\",\"SelectedSection\":\"Selected section\",\"Begin\":\"Begin\",\"End\":\"End\",\"SectionLength\":\"Section Length\",\"WholeRiver\":\"Entire river\",\"SetWholeRiver\":\"Choose entire river\",\"RiverGuide\":\"Guide\",\"Map\":\"Map\",\"Sections\":\"Sections\",\"ByDifficulty\":\"By difficulty\",\"ByWaterLevel\":\"By water level\",\"Conditions\":\"Conditions\",\"Articles\":\"Articles\",\"RiverLogs\":\"Logs\",\"CommentsLong\":\"Hot-line from river\",\"CommentsShort\":\"Hotline\",\"RiverBegin\":\"Begin of river\",\"RiverEnd\":\"End of river\",\"chooseSection\":\"choose section\",\"LoadingGauges\":\"Loading gauges\",\"LoadingRivers\":\"Loading rivers\",\"FilterObjects\":\"Filter objects\",\"RemoveFromOffline\":\"Remove from offline\",\"Bridges\":\"Bridges\",\"Tributary\":\"Tributary\",\"Eating\":\"Eating\",\"Weirs\":\"Weirs\",\"Gauge\":\"Gauge\",\"gauge\":\"gauge\",\"Camp\":\"Camp\",\"BeginEnd\":\"Begin/end\",\"Other\":\"Other\",\"Close\":\"Close\",\"ShowObjectsTitle\":\"Display\",\"ShowClassicalGuide\":\"Show classical guide\",\"EraseOfflineData\":\"Erase offline data\",\"LoadingList\":\"Loading list\",\"rivers\":\"rivers\",\"creeks\":\"creeks\",\"Rivers\":\"Rivers\",\"Creeks\":\"Creeks\",\"NewVersionAvailableReload\":\"New web app version available, reload page?\",\"Reload\":\"Reload\",\"Cancel\":\"Cancel\",\"NewWebVersionAvailable\":\"New web version available\",\"AppIsCachedForOffline\":\"App is cached for offline use\",\"WatchPosition\":\"Show current position\",\"OnlyRunnable\":\"Only runnable\",\"NextArticles\":\"Next articles on web\",\"NextComments\":\"Next comments on web\",\"NextLogs\":\"Next logs on web\",\"NoMapData\":\"No available map data\",\"Error\":\"Error\",\"ItemCountDownloaded\":\"downloaded\",\"ItemCountTotal\":\"total\",\"SendFeedback\":\"Send feedback\",\"SendingFeedback\":\"Sending feedback\",\"Description\":\"Description\",\"Author\":\"Author\",\"Photo\":\"Photo\",\"WithoutPhoto\":\"(Without photo)\",\"TakePhoto\":\"Take photo\",\"UploadPhoto\":\"Upload photo\",\"FeedbackSentOk\":\"Feedback succesfully sent, {{count}} images\",\"FeedbackSendingFail\":\"Feedback sending fail\",\"SetBegin\":\"Set section begin\",\"SetEnd\":\"Set section end\",\"RiverKm\":\"River km\",\"CampBackground\":\"Background\",\"OperatingHours\":\"Operating hours\",\"NextPossibilities\":\"Next possibilities\",\"Arrival\":\"Arrival\",\"AddresOrDescription\":\"Addres (description)\",\"Web\":\"Web\",\"Phone\":\"Phone\",\"FollowsAfter\":\"Follows after\",\"ChooseInGuide\":\"Choose in guide\",\"CustomSectionInfoTitle\":\"Choose custom section\",\"CustomSectionInfoBody\":\"Choose own section in guide using long tounch on river km\",\"OpenGoogleMaps\":\"Navigate (Google maps)\",\"ChooseMap\":\"Choose map\",\"ApplicationIsOffline\":\"Internet is not available, download is not possible\",\"gaugeLimit\":\"limit\",\"WarrantyInfo\":\"These texts are for information purposes only. Water sport is potentially dangerous and it is always necessary to assess the displayed information according to the current situation.\",\"About\":\"About\",\"Explanations\":\"Explanations\",\"CurrentWaterLevel\":\"Current water level\",\"Date\":\"Date\",\"Flow\":\"Flow\",\"Height\":\"Height\",\"WaterLevelLimits\":\"Water level limits\",\"Minimum\":\"Minimum\",\"Optimum\":\"Optimum\",\"Maximum\":\"Maximum\",\"CurrentValue\":\"Current value\",\"Passability\":\"Passability\",\"Channels\":\"Channels\",\"channels\":\"channels\"}","module.exports = {\"HomePage\":\"Hlavní stránka\",\"SearchRiver\":\"Vyhledat řeku nebo potok\",\"OfflineData\":\"Stažené řeky\",\"Settings\":\"Nastavení\",\"RiversNotFound\":\"Nebyly nalezeny žádné řeky\",\"Search\":\"Vyhledat\",\"LoadingRiverDetail\":\"Načítám detail řeky\",\"RiverSavedToOffline\":\"Řeka byla stažena do offline úložiště\",\"RiverRemovedFromOffline\":\"Řeka byla smazána z offline úložiště\",\"ErrorGettingLocation\":\"Nepovedlo se zjistit aktuální polohu\",\"GeolocationNotPermitted\":\"Máte v prohlížeči zakázáno zpracování polohy pro server raft.cz\",\"Beginner\":\"Začátečník\",\"Advanced\":\"Pokročilý\",\"Expert\":\"Expert\",\"SelectedSection\":\"Vybraný úsek\",\"Begin\":\"Začátek\",\"End\":\"Konec\",\"SectionLength\":\"Délka úseku\",\"WholeRiver\":\"Celá řeka\",\"SetWholeRiver\":\"Vybrat celou řeku\",\"RiverGuide\":\"Kilometráž\",\"Map\":\"Mapa\",\"Sections\":\"Úseky\",\"ByDifficulty\":\"Dle obtížnosti\",\"ByWaterLevel\":\"Dle sjízdnosti\",\"Conditions\":\"Podmínky\",\"Articles\":\"Články\",\"RiverLogs\":\"Zápisníky\",\"CommentsLong\":\"Hot-line z řeky\",\"CommentsShort\":\"Hotline\",\"RiverBegin\":\"Začátek řeky\",\"RiverEnd\":\"Konec řeky\",\"chooseSection\":\"vyber úsek\",\"LoadingGauges\":\"Načítám vodočty\",\"LoadingRivers\":\"Načítám řeky\",\"FilterObjects\":\"Filtr objektů\",\"RemoveFromOffline\":\"Vymazat z offline\",\"Bridges\":\"Most\",\"Tributary\":\"Přítok\",\"Eating\":\"Jídlo\",\"Weirs\":\"Jezy\",\"Gauge\":\"Vodočet\",\"gauge\":\"vodočet\",\"Camp\":\"Tábořiště\",\"BeginEnd\":\"Začátek/konec\",\"Other\":\"Ostatni\",\"Close\":\"Zavřít\",\"ShowObjectsTitle\":\"Zobrazit\",\"ShowClassicalGuide\":\"Zobrazit klasickou kilometráž\",\"EraseOfflineData\":\"Vymazat offline data\",\"LoadingList\":\"Načítám seznam\",\"rivers\":\"řeky\",\"creeks\":\"potoky\",\"Rivers\":\"Řeky\",\"Creeks\":\"Potoky\",\"NewVersionAvailableReload\":\"Je k dispozici nová verze aplikace, načíst znovu stránku?\",\"Reload\":\"Načíst\",\"Cancel\":\"Storno\",\"NewWebVersionAvailable\":\"Je k dispozici nová verze aplikace\",\"AppIsCachedForOffline\":\"Aplikace je stažena pro offline použití\",\"WatchPosition\":\"Sledovat aktuální polohu\",\"OnlyRunnable\":\"Pouze sjízdné\",\"NextArticles\":\"Další články najdete na webu\",\"NextComments\":\"Další komentáře najdete na webu\",\"NextLogs\":\"Další zápisníky najdete na webu\",\"NoMapData\":\"Nejsou dostupné mapové podklady\",\"Error\":\"Chyba\",\"ItemCountDownloaded\":\"staženo\",\"ItemCountTotal\":\"celkem\",\"SendFeedback\":\"Poslat opravu\",\"SendingFeedback\":\"Posílám opravu\",\"Description\":\"Popis\",\"Author\":\"Autor\",\"Photo\":\"Fotka\",\"WithoutPhoto\":\"(Bez fotky)\",\"TakePhoto\":\"Vyfotit\",\"UploadPhoto\":\"Nahrát fotku\",\"FeedbackSentOk\":\"Odesláno v pořádku, {{count}} fotek\",\"FeedbackSendingFail\":\"Chyba při odesílání\",\"SetBegin\":\"Nastavit začátek úseku\",\"SetEnd\":\"Nastavit konec úseku\",\"RiverKm\":\"Říční km\",\"CampBackground\":\"Zázemí\",\"OperatingHours\":\"Provozní doba\",\"NextPossibilities\":\"Další možnosti\",\"Arrival\":\"Příjezd\",\"AddresOrDescription\":\"Adresa (popis)\",\"Web\":\"Web\",\"Phone\":\"Telefon\",\"FollowsAfter\":\"Následuje za\",\"ChooseInGuide\":\"Vybrat v kilometráži\",\"CustomSectionInfoTitle\":\"Výběr vlastního úseku\",\"CustomSectionInfoBody\":\"Vlastní úsek lze vybrat v kilometráži dlouhým stiskem na říčním kilometru, nebo vybráním \\\"Vybrat v kilometráži\\\" v sekci \\\"Vybraný úsek\\\"\",\"OpenGoogleMaps\":\"Navigovat (Google maps)\",\"ChooseMap\":\"Vybrat mapu\",\"ApplicationIsOffline\":\"Není k dispozici internet, stažení není možné\",\"gaugeLimit\":\"limit\",\"WarrantyInfo\":\"Uvedené texty mají pouze informativní charakter. Vodácký sport je potencionálně nebezpečný a vždy je nutné posoudit zobrazené informace dle aktuální situace.\",\"About\":\"O aplikaci\",\"Explanations\":\"Vysvětlivky\",\"CurrentWaterLevel\":\"Aktuální stavy\",\"Date\":\"Datum\",\"Flow\":\"Průtok\",\"Height\":\"Výška\",\"WaterLevelLimits\":\"Limity sjízdnosti\",\"Minimum\":\"Minimum\",\"Optimum\":\"Optimum\",\"Maximum\":\"Maximum\",\"CurrentValue\":\"Aktuální hodnota\",\"Passability\":\"Sjízdnost\",\"Channels\":\"Kanály\",\"channels\":\"kanály\"}","module.exports = {\"HomePage\":\"Domovská stránka\",\"SearchRiver\":\"Vyhľadajte rieku alebo potok\",\"OfflineData\":\"Údaje offline\",\"Settings\":\"nastavenie\",\"RiversNotFound\":\"Nenašli sa žiadne rieky\",\"Search\":\"Vyhľadávanie\",\"LoadingRiverDetail\":\"Načítava sa detail rieky\",\"RiverSavedToOffline\":\"Rieka bola uložená do úložiska offline\",\"RiverRemovedFromOffline\":\"Z úložiska offline bola odstránená rieka\",\"ErrorGettingLocation\":\"Pri získavaní aktuálnej polohy sa vyskytla chyba\",\"GeolocationNotPermitted\":\"Použitie geolokácie nie je povolené, povoľte ju v nastaveniach prehliadača / Nastavenia webu / Poloha\",\"Beginner\":\"Začiatočník\",\"Advanced\":\"Pokročilý\",\"Expert\":\"Export\",\"SelectedSection\":\"Vybraná sekcia\",\"Begin\":\"Začať\",\"End\":\"Koniec\",\"SectionLength\":\"Dĺžka sekcie\",\"WholeRiver\":\"Celá rieka\",\"SetWholeRiver\":\"Vyberte celú rieku\",\"RiverGuide\":\"Sprievodca\",\"Map\":\"Mapa\",\"Sections\":\"Oddiely\",\"ByDifficulty\":\"Podľa ťažkostí\",\"ByWaterLevel\":\"Hladinou vody\",\"Conditions\":\"podmienky\",\"Articles\":\"články\",\"RiverLogs\":\"protokoly\",\"CommentsLong\":\"Hot-line z rieky\",\"CommentsShort\":\"Hotline\",\"RiverBegin\":\"Začiatok rieky\",\"RiverEnd\":\"Koniec rieky\",\"chooseSection\":\"vyberte sekciu\",\"LoadingGauges\":\"Nakladacie meradlá\",\"LoadingRivers\":\"Nakladanie riek\",\"FilterObjects\":\"Filtrovanie objektov\",\"RemoveFromOffline\":\"Odstrániť z režimu offline\",\"Bridges\":\"Mosty\",\"Tributary\":\"Prítok\",\"Eating\":\"Jeslo\",\"Weirs\":\"Hate\",\"Gauge\":\"Meradlo\",\"gauge\":\"meradlo\",\"Camp\":\"Kemp\",\"BeginEnd\":\"Nástup / ukončenie\",\"Other\":\"Ostatné\",\"Close\":\"Zavrieť\",\"ShowObjectsTitle\":\"zobraziť\",\"ShowClassicalGuide\":\"Zobraziť klasického sprievodcu\",\"EraseOfflineData\":\"Vymazať údaje offline\",\"LoadingList\":\"Načítava sa zoznam\",\"rivers\":\"rieky\",\"creeks\":\"potoky\",\"Rivers\":\"Rieky\",\"Creeks\":\"Potoky\",\"NewVersionAvailableReload\":\"K dispozícii je nová verzia webovej aplikácie, znova načítať stránku?\",\"Reload\":\"Naložiť\",\"Cancel\":\"Zrušiť\",\"NewWebVersionAvailable\":\"K dispozícii je nová webová verzia\",\"AppIsCachedForOffline\":\"Aplikácia sa ukladá do vyrovnávacej pamäte na použitie v režime offline\",\"WatchPosition\":\"Zobraziť aktuálnu pozíciu\",\"OnlyRunnable\":\"Iba spustiteľné\",\"NextArticles\":\"Ďalšie články na webe\",\"NextComments\":\"Ďalšie komentáre na webe\",\"NextLogs\":\"Ďalšie denníky na webe\",\"NoMapData\":\"K dispozícii nie sú žiadne údaje na mape\",\"Error\":\"Chyba\",\"ItemCountDownloaded\":\"stiahnuté\",\"ItemCountTotal\":\"Celkom\",\"SendFeedback\":\"Poslať spätnú väzbu\",\"SendingFeedback\":\"Odosielanie spätnej väzby\",\"Description\":\"Popis\",\"Author\":\"Autor\",\"Photo\":\"Fotografie\",\"WithoutPhoto\":\"(Bez fotografie)\",\"TakePhoto\":\"Odfoť\",\"UploadPhoto\":\"Nahrať fotku\",\"FeedbackSentOk\":\"Spätná väzba úspešne odoslala {{count}} obrázkov\",\"FeedbackSendingFail\":\"Odoslanie spätnej väzby zlyhalo\",\"SetBegin\":\"Začiatok sekcie nastavenia\",\"SetEnd\":\"Nastaviť koniec sekcie\",\"RiverKm\":\"Rieka km\",\"CampBackground\":\"Pozadie\",\"OperatingHours\":\"Prevádzkové hodiny\",\"NextPossibilities\":\"Ďalšie možnosti\",\"Arrival\":\"Príjazd\",\"AddresOrDescription\":\"Adresy (popis)\",\"Web\":\"web\",\"Phone\":\"Telefón\",\"FollowsAfter\":\"Nasleduje po\",\"ChooseInGuide\":\"Vyberte si v sprievodcovi\",\"CustomSectionInfoTitle\":\"Vyberte vlastnú sekciu\",\"CustomSectionInfoBody\":\"Vyberte si vlastný oddiel v sprievodcovi pomocou dlhého chvosta na km rieky\",\"OpenGoogleMaps\":\"Navigácia (mapy Google)\",\"ChooseMap\":\"Vyberte mapu\",\"ApplicationIsOffline\":\"Internet nie je k dispozícii, sťahovanie nie je možné\",\"gaugeLimit\":\"limit\",\"WarrantyInfo\":\"Tieto texty slúžia iba na informačné účely. Vodný šport je potenciálne nebezpečný a zobrazené informácie je vždy potrebné posudzovať podľa aktuálnej situácie.\",\"About\":\"o aplikácii\",\"Explanations\":\"Vysvetlivky\",\"CurrentWaterLevel\":\"Aktuálna hladina vody\",\"Date\":\"Dátum\",\"Flow\":\"Prietok\",\"Height\":\"Výška\",\"WaterLevelLimits\":\"Limity vodnej hladiny\",\"Minimum\":\"Minimálne\",\"Optimum\":\"Optimálne\",\"Maximum\":\"Maximum\",\"CurrentValue\":\"Súčasná hodnota\",\"Passability\":\"Priechodnosť\",\"Channels\":\"Kanály\",\"channels\":\"kanály\"}","module.exports = {\"HomePage\":\"Startseite\",\"SearchRiver\":\"Suche Fluss oder Bach\",\"OfflineData\":\"Offline-Daten\",\"Settings\":\"die Einstellungen\",\"RiversNotFound\":\"Keine Flüsse gefunden\",\"Search\":\"Suche\",\"LoadingRiverDetail\":\"Flussdetails laden\",\"RiverSavedToOffline\":\"River wurde im Offline-Speicher gespeichert\",\"RiverRemovedFromOffline\":\"River wurde aus dem Offline-Speicher entfernt\",\"ErrorGettingLocation\":\"Fehler beim Abrufen des aktuellen Standorts\",\"GeolocationNotPermitted\":\"Die Verwendung von Geolocation ist nicht zulässig. Bitte erlauben Sie dies in Ihren Browsereinstellungen / Webeinstellungen / Standort\",\"Beginner\":\"Anfänger\",\"Advanced\":\"Erweitert\",\"Expert\":\"Experte\",\"SelectedSection\":\"Ausgewählter Abschnitt\",\"Begin\":\"Start\",\"End\":\"Ende\",\"SectionLength\":\"Abschnittslänge\",\"WholeRiver\":\"Gesamter Fluss\",\"SetWholeRiver\":\"Wähle den gesamten Fluss\",\"RiverGuide\":\"Leiten\",\"Map\":\"Karte\",\"Sections\":\"Abschnitte\",\"ByDifficulty\":\"Durch Schwierigkeiten\",\"ByWaterLevel\":\"Nach Wasserstand\",\"Conditions\":\"Bedingungen\",\"Articles\":\"Artikel\",\"RiverLogs\":\"Protokolle\",\"CommentsLong\":\"Hotline vom Fluss\",\"CommentsShort\":\"Hotline\",\"RiverBegin\":\"Beginn des Flusses\",\"RiverEnd\":\"Ende des Flusses\",\"chooseSection\":\"Abschnitt auswählen\",\"LoadingGauges\":\"Lademessgeräte\",\"LoadingRivers\":\"Flüsse laden\",\"FilterObjects\":\"Objekte filtern\",\"RemoveFromOffline\":\"Aus dem Offline entfernen\",\"Bridges\":\"Brücken\",\"Tributary\":\"Nebenfluss\",\"Eating\":\"Essen\",\"Weirs\":\"Wehre\",\"Gauge\":\"Spur\",\"gauge\":\"spur\",\"Camp\":\"Lager\",\"BeginEnd\":\"Anfang / Ende\",\"Other\":\"Andere\",\"Close\":\"Schließen\",\"ShowObjectsTitle\":\"Anzeige\",\"ShowClassicalGuide\":\"Klassischen Führer anzeigen\",\"EraseOfflineData\":\"Offline-Daten löschen\",\"LoadingList\":\"Ladeliste\",\"rivers\":\"flüsse\",\"creeks\":\"bäche\",\"Rivers\":\"Flüsse\",\"Creeks\":\"Bäche\",\"NewVersionAvailableReload\":\"Neue Web-App-Version verfügbar, Seite neu laden?\",\"Reload\":\"Neu laden\",\"Cancel\":\"Stornieren\",\"NewWebVersionAvailable\":\"Neue Webversion verfügbar\",\"AppIsCachedForOffline\":\"Die App wird für die Offline-Verwendung zwischengespeichert\",\"WatchPosition\":\"Aktuelle Position anzeigen\",\"OnlyRunnable\":\"Nur lauffähig\",\"NextArticles\":\"Nächste Artikel im Web\",\"NextComments\":\"Nächste Kommentare im Web\",\"NextLogs\":\"Nächste Protokolle im Web\",\"NoMapData\":\"Keine verfügbaren Kartendaten\",\"Error\":\"Error\",\"ItemCountDownloaded\":\"heruntergeladen\",\"ItemCountTotal\":\"gesamt\",\"SendFeedback\":\"Feedback schicken\",\"SendingFeedback\":\"Feedback senden\",\"Description\":\"Beschreibung\",\"Author\":\"Autor\",\"Photo\":\"Foto\",\"WithoutPhoto\":\"(Ohne Foto)\",\"TakePhoto\":\"Foto machen\",\"UploadPhoto\":\"Foto hochladen\",\"FeedbackSentOk\":\"Feedback erfolgreich gesendet, {{count}} Bilder\",\"FeedbackSendingFail\":\"Das Senden von Feedback schlägt fehl\",\"SetBegin\":\"Abschnitt beginnen beginnen\",\"SetEnd\":\"Abschnittsende einstellen\",\"RiverKm\":\"Fluss km\",\"CampBackground\":\"Hintergrund\",\"OperatingHours\":\"Betriebsstunden\",\"NextPossibilities\":\"Nächste Möglichkeiten\",\"Arrival\":\"Ankunft\",\"AddresOrDescription\":\"Adressen (Beschreibung)\",\"Web\":\"Netz\",\"Phone\":\"Telefon\",\"FollowsAfter\":\"Folgt danach\",\"ChooseInGuide\":\"Wählen Sie in der Anleitung\",\"CustomSectionInfoTitle\":\"Wählen Sie einen benutzerdefinierten Abschnitt\",\"CustomSectionInfoBody\":\"Wählen Sie einen eigenen Abschnitt in der Führung mit einem langen Start auf dem Flusskilometer\",\"OpenGoogleMaps\":\"Navigieren (Google Maps)\",\"ChooseMap\":\"Karte auswählen\",\"ApplicationIsOffline\":\"Internet ist nicht verfügbar, Download ist nicht möglich\",\"gaugeLimit\":\"Grenze\",\"WarrantyInfo\":\"Diese Texte dienen nur zu Informationszwecken. Wassersport ist potenziell gefährlich und es ist immer notwendig, die angezeigten Informationen entsprechend der aktuellen Situation zu bewerten.\",\"About\":\"Info\",\"Explanations\":\"Erklärungen\",\"CurrentWaterLevel\":\"Aktueller Wasserstand\",\"Date\":\"Datum\",\"Flow\":\"Fließen\",\"Height\":\"Höhe\",\"WaterLevelLimits\":\"Wasserstandsgrenzen\",\"Minimum\":\"Minimum\",\"Optimum\":\"Optimum\",\"Maximum\":\"Maximal\",\"CurrentValue\":\"Aktueller Wert\",\"Passability\":\"Passierbarkeit\",\"Channels\":\"Kanäle\",\"channels\":\"kanäle\"}","module.exports = {\"HomePage\":\"Strona główna\",\"SearchRiver\":\"Szukaj rzeki lub potoku\",\"OfflineData\":\"Dane offline\",\"Settings\":\"Ustawienia\",\"RiversNotFound\":\"Nie znaleziono rzek\",\"Search\":\"Szukaj\",\"LoadingRiverDetail\":\"Ładowanie szczegółów rzeki\",\"RiverSavedToOffline\":\"Rzeka została zapisana w pamięci offline\",\"RiverRemovedFromOffline\":\"River został usunięty z pamięci offline\",\"ErrorGettingLocation\":\"Błąd podczas pobierania bieżącej lokalizacji\",\"GeolocationNotPermitted\":\"Korzystanie z geolokalizacji jest niedozwolone, zezwól na to w ustawieniach przeglądarki / Ustawieniach internetowych / Lokalizacja\",\"Beginner\":\"Początkujący\",\"Advanced\":\"Biegłych\",\"Expert\":\"Ekspert\",\"SelectedSection\":\"Wybrana sekcja\",\"Begin\":\"Zaczynać\",\"End\":\"Koniec\",\"SectionLength\":\"Długość sekcji\",\"WholeRiver\":\"Cała rzeka\",\"SetWholeRiver\":\"Wybierz całą rzekę\",\"RiverGuide\":\"Przewodnik\",\"Map\":\"Mapa\",\"Sections\":\"Sekcje\",\"ByDifficulty\":\"Według trudności\",\"ByWaterLevel\":\"Według poziomu wody\",\"Conditions\":\"Warunki\",\"Articles\":\"Artykuły\",\"RiverLogs\":\"Kłody\",\"CommentsLong\":\"Hotline od rzeki\",\"CommentsShort\":\"Hot-line\",\"RiverBegin\":\"Początek rzeki\",\"RiverEnd\":\"Koniec rzeki\",\"chooseSection\":\"wybierz sekcję\",\"LoadingGauges\":\"Ładowanie skrajni\",\"LoadingRivers\":\"Ładowanie rzek\",\"FilterObjects\":\"Filtruj obiekty\",\"RemoveFromOffline\":\"Usuń z trybu offline\",\"Bridges\":\"Mosty\",\"Tributary\":\"Dopływ\",\"Eating\":\"Jedzenie\",\"Weirs\":\"Jazy\",\"Gauge\":\"Wskaźnik\",\"gauge\":\"wskaźnik\",\"Camp\":\"Obóz\",\"BeginEnd\":\"Początek / koniec\",\"Other\":\"Inny\",\"Close\":\"Blisko\",\"ShowObjectsTitle\":\"Pokaz\",\"ShowClassicalGuide\":\"Pokaż klasyczny przewodnik\",\"EraseOfflineData\":\"Usuń dane offline\",\"LoadingList\":\"Ładowanie listy\",\"rivers\":\"rzeki\",\"creeks\":\"potoki\",\"Rivers\":\"Rzeki\",\"Creeks\":\"Creek\",\"NewVersionAvailableReload\":\"Dostępna nowa wersja aplikacji internetowej, załadować ponownie stronę?\",\"Reload\":\"Przeładować\",\"Cancel\":\"Anuluj\",\"NewWebVersionAvailable\":\"Dostępna nowa wersja internetowa\",\"AppIsCachedForOffline\":\"Aplikacja jest buforowana do użytku offline\",\"WatchPosition\":\"Pokaż aktualną pozycję\",\"OnlyRunnable\":\"Tylko do uruchomienia\",\"NextArticles\":\"Następne artykuły w sieci\",\"NextComments\":\"Następne komentarze w sieci\",\"NextLogs\":\"Następnie loguje się w sieci\",\"NoMapData\":\"Brak dostępnych danych mapy\",\"Error\":\"Błąd\",\"ItemCountDownloaded\":\"pobrane\",\"ItemCountTotal\":\"całkowity\",\"SendFeedback\":\"Prześlij opinię\",\"SendingFeedback\":\"Wysyłanie opinii\",\"Description\":\"Opis\",\"Author\":\"Autor\",\"Photo\":\"Zdjęcie\",\"WithoutPhoto\":\"(Bez zdjęcia)\",\"TakePhoto\":\"Zrobić zdjęcie\",\"UploadPhoto\":\"Prześlij zdjęcie\",\"FeedbackSentOk\":\"Wysłano informację zwrotną, {{count}} zdjęć\",\"FeedbackSendingFail\":\"Wysłanie opinii nie powiodło się\",\"SetBegin\":\"Ustaw początek sekcji\",\"SetEnd\":\"Ustaw koniec sekcji\",\"RiverKm\":\"Rzeka km\",\"CampBackground\":\"Tło\",\"OperatingHours\":\"Godziny pracy\",\"NextPossibilities\":\"Następne możliwości\",\"Arrival\":\"Przyjazd\",\"AddresOrDescription\":\"Adres (opis)\",\"Web\":\"Sieć\",\"Phone\":\"Telefon\",\"FollowsAfter\":\"Następuje po\",\"ChooseInGuide\":\"Wybierz w przewodniku\",\"CustomSectionInfoTitle\":\"Wybierz sekcję niestandardową\",\"CustomSectionInfoBody\":\"Wybierz własny odcinek w przewodniku, używając długich skoków na rzece km\",\"OpenGoogleMaps\":\"Nawiguj (mapy Google)\",\"ChooseMap\":\"Wybierz mapę\",\"ApplicationIsOffline\":\"Internet nie jest dostępny, pobieranie nie jest możliwe\",\"gaugeLimit\":\"limit\",\"WarrantyInfo\":\"Te teksty służą wyłącznie celom informacyjnym. Sporty wodne są potencjalnie niebezpieczne i zawsze należy oceniać wyświetlane informacje zgodnie z aktualną sytuacją.\",\"About\":\"O aplikacji\",\"Explanations\":\"Wyjaśnienia\",\"CurrentWaterLevel\":\"Aktualny poziom wody\",\"Date\":\"Data\",\"Flow\":\"Pływ\",\"Height\":\"Wysokość\",\"WaterLevelLimits\":\"Limity poziomu wody\",\"Minimum\":\"Minimum\",\"Optimum\":\"Optymalny\",\"Maximum\":\"Maksymalny\",\"CurrentValue\":\"Bieżąca wartość\",\"Passability\":\"Zdatność\",\"Channels\":\"Kanały\",\"channels\":\"kanały\"}","// @ts-nocheck\nimport { createMuiTheme } from '@material-ui/core/styles';\n\n// const origTheme = createMuiTheme();\n\n// console.log('origTheme', origTheme.palette);\n\nconst theme = createMuiTheme({\n tileBackgroundColor: '#CCCCFF',\n tileBackgroundOpacity: 0.7,\n palette: {\n type: 'light',\n },\n});\n\nexport default theme;\n","import { useTranslation } from 'react-i18next';\nimport _ from 'lodash';\n\nexport function getLocalizedMessage(message, t) {\n if (_.isString(message) && message.startsWith('t:')) return t(message.substring(2));\n return message;\n}\n\nexport default function useT() {\n const [t] = useTranslation();\n return t;\n}\n","import React from 'react';\nimport { Link } from 'react-router-dom';\nimport { useSnackbar } from 'notistack';\n\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport List from '@material-ui/core/List';\n\nimport HomeIcon from '@material-ui/icons/Home';\nimport GetAppIcon from '@material-ui/icons/GetApp';\nimport SettingsIcon from '@material-ui/icons/Settings';\nimport InfoIcon from '@material-ui/icons/Info';\nimport HelpIcon from '@material-ui/icons/Help';\nimport useT from '../utility/useT';\n\nfunction RouteMenuItem({ title, to, icon: Icon }) {\n return (\n \n \n \n \n \n \n );\n}\n\nfunction ActionMenuItem({ title, action, icon: Icon }) {\n return (\n \n \n \n \n \n \n );\n}\n\nfunction MainMenu() {\n const { enqueueSnackbar } = useSnackbar();\n const t = useT();\n\n return (\n
\n \n \n \n \n \n \n\n {/* \n\n {\n enqueueSnackbar(`Tady zatim nejde, pouzij tlacitko na homepage`, {\n variant: \"warning\"\n });\n }}\n /> */}\n \n
\n );\n}\n\nexport default MainMenu;\n","import { useState, useEffect } from 'react';\n\nexport default function useWindowSize() {\n const isClient = typeof window === 'object';\n\n function getSize() {\n return {\n width: isClient ? window.innerWidth : undefined,\n height: isClient ? window.innerHeight : undefined\n };\n }\n\n const [windowSize, setWindowSize] = useState(getSize);\n\n useEffect(() => {\n if (!isClient) {\n return;\n }\n \n function handleResize() {\n setWindowSize(getSize());\n }\n\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n }, []); // Empty array ensures that effect is only run on mount and unmount\n\n return windowSize;\n}","import useWindowSize from './useWindowSize';\n\nexport const drawerWidth = 240;\n\nexport default function useViewportWidth() {\n let { width } = useWindowSize() || {};\n if (width >= 600) {\n width -= drawerWidth;\n width -= 20;\n }\n return width;\n}\n","import React from \"react\";\n\nexport default function Flag(props) {\n const { size } = props;\n return (\n \n \n \n \n {\" \"}\n \n );\n}\n","import React from \"react\";\n\nexport default function Flag({ size }) {\n return (\n \n \n \n \n \n \n \n \n \n );\n}\n","import React from \"react\";\n\nexport default function Flag({ size }) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import React from \"react\";\n\nexport default function Flag({ size }) {\n return (\n \n \n \n {\" \"}\n \n );\n}\n","import React from \"react\";\n\nexport default function Flag({ size }) {\n return (\n \n \n \n \n \n {\" \"}\n \n );\n}\n","import React from \"react\";\n\nexport default function Flag({ size }) {\n return (\n \n \n \n \n \n {\" \"}\n \n );\n}\n","import React from \"react\";\n\nexport default function Flag({ size }) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {\" \"}\n \n );\n}\n","import React from 'react';\n\nexport default function Flag({ size }) {\n return (\n \n \n \n \n );\n}\n","import React from 'react';\n\nexport default function Flag({ size }) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import React from 'react';\n\nexport default function Flag({ size }) {\n return (\n \n \n \n \n \n \n \n \n );\n}\n","import React from 'react';\n\nexport default function Flag({ size }) {\n return (\n \n Flag of Slovakia\n \n \n \n \n \n \n \n \n \n \n );\n}\n","import React from 'react';\n\nexport default function Flag({ size }) {\n return (\n \n \n \n {/* */}\n \n );\n}\n","import React from 'react';\n\nexport default function Flag({ size }) {\n return (\n \n \n \n {' '}\n {/* */}\n \n );\n}\n","import React from 'react';\n\nexport default function Flag({ size }) {\n return (\n \n Flag of Belarus\n \n\n \n \n );\n}\n","import React from 'react';\n\nexport default function Flag({ size }) {\n return (\n \n \n \n \n \n );\n}\n","import React from 'react';\n\nexport default function Flag({ size }) {\n return (\n \n \n \n \n \n );\n}\n","import React from 'react';\n\nexport default function Flag({ size }) {\n return (\n \n \n \n \n \n );\n}\n","import React from 'react';\n\nexport default function Flag({ size }) {\n return (\n \n \n \n \n );\n}\n","import React from 'react';\n\nexport default function Flag({ size }) {\n return (\n \n \n \n \n \n );\n}\n","import React from 'react';\n\nexport default function Flag({ size }) {\n return (\n \n \n \n \n );\n}\n","import React from 'react';\nimport FlagAt from './FlagAt';\nimport FlagCh from './FlagCh';\nimport FlagCz from './FlagCz';\nimport FlagDe from './FlagDe';\n// import FlagEs from './FlagEs';\nimport FlagFr from './FlagFr';\nimport FlagIt from './FlagIt';\nimport FlagSi from './FlagSi';\nimport FlagGr from './FlagGr';\nimport FlagHr from './FlagHr';\nimport FlagGb from './FlagGb';\nimport FlagSk from './FlagSk';\nimport FlagPl from './FlagPl';\nimport FlagLi from './FlagLi';\nimport FlagBl from './FlagBl';\nimport FlagBg from './FlagBg';\nimport FlagRo from './FlagRo';\nimport FlagRu from './FlagRu';\nimport FlagUk from './FlagUk';\nimport FlagHu from './FlagHu';\nimport FlagAl from './FlagAl';\n\nexport default function Flag({ language = undefined, url = undefined, size = 30 }) {\n if (language === 'cs') return ;\n if (language === 'en') return ;\n if (language === 'pl') return ;\n if (language === 'sk') return ;\n if (language === 'de') return ;\n\n if (url === 'rakousko') return ;\n if (url === 'cechy' || url === 'morava') return ;\n if (url === 'swiss') return ;\n if (url === 'slovinsko') return ;\n if (url === 'italie') return ;\n // if (url === 'spanelsko') return ;\n if (url === 'francie' || url === 'korsica') return ;\n if (url === 'nemecko') return ;\n if (url === 'recko') return ;\n if (url === 'jugo') return ;\n if (url === 'slovensko') return ;\n if (url === 'polsko') return ;\n if (url === 'litva') return ;\n if (url === 'belorusko') return ;\n if (url === 'bulharsko') return ;\n if (url === 'rumunsko') return ;\n if (url === 'rusko') return ;\n if (url === 'ukrajina') return ;\n if (url === 'madarsko') return ;\n if (url === 'albanie') return ;\n\n return null;\n}\n","import { useTranslation } from 'react-i18next';\n\nexport const availableLanguages = [\n { title: 'English', code: 'en' },\n { title: 'Česky', code: 'cs' },\n { title: 'Slovensky', code: 'sk' },\n { title: 'Polski', code: 'pl' },\n { title: 'Deutch', code: 'de' },\n];\n\nexport function getLanguage(i18n) {\n const { languages } = i18n;\n for (const lang of languages || []) {\n for (const avail of availableLanguages) {\n if (lang === avail.code) return lang;\n }\n }\n return 'cs';\n}\n\nexport default function useLanguage() {\n const [t, i18n] = useTranslation();\n return getLanguage(i18n);\n}\n","import React from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport AppBar from '@material-ui/core/AppBar';\nimport useReactRouter from 'use-react-router';\nimport Toolbar from '@material-ui/core/Toolbar';\nimport Typography from '@material-ui/core/Typography';\nimport IconButton from '@material-ui/core/IconButton';\nimport SwipeableDrawer from '@material-ui/core/SwipeableDrawer';\nimport Drawer from '@material-ui/core/Drawer';\nimport Hidden from '@material-ui/core/Hidden';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport Menu from '@material-ui/core/Menu';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\n\nimport MenuIcon from '@material-ui/icons/Menu';\nimport ArrowBack from '@material-ui/icons/ArrowBack';\nimport MoreVertIcon from '@material-ui/icons/MoreVert';\n\nimport MainMenu from './MainMenu';\nimport { drawerWidth } from '../utility/useViewportWidth';\nimport Flag from '../icons/Flag';\nimport { useTranslation } from 'react-i18next';\nimport { getLanguage, availableLanguages } from '../utility/useLanguage';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n flexGrow: 1,\n },\n grow: {\n flexGrow: 1,\n },\n menuButton: {\n marginLeft: -12,\n marginRight: 20,\n },\n appBar: {\n [theme.breakpoints.up('sm')]: {\n marginLeft: drawerWidth,\n width: `calc(100% - ${drawerWidth}px)`,\n },\n },\n content: {\n [theme.breakpoints.up('sm')]: {\n marginLeft: drawerWidth,\n // width: `calc(100% - ${drawerWidth}px)`,\n },\n },\n drawer: {\n [theme.breakpoints.up('sm')]: {\n width: drawerWidth,\n flexShrink: 0,\n },\n },\n hide: {\n visibility: 'hidden',\n },\n}));\n\nfunction AppLayout({\n title,\n children,\n mainIconMeaning = 'top',\n customButtons = undefined,\n subMenuItems = undefined,\n parentRoute = undefined,\n showLanguageSelector = false,\n // appBarPosition = 'sticky',\n}) {\n const classes = useStyles();\n const { history } = useReactRouter();\n const [isDrawerOpened, setIsDrawerOpened] = React.useState(false);\n const [subAnchorEl, setSubAnchorEl] = React.useState(null);\n const [langAnchorEl, setLangAnchorEl] = React.useState(null);\n const subMenuOpen = Boolean(subAnchorEl);\n const [t, i18n] = useTranslation();\n const language = getLanguage(i18n);\n const langMenuOpen = Boolean(langAnchorEl);\n\n function handleOpenSubMenu(event) {\n setSubAnchorEl(event.currentTarget);\n }\n\n function handleCloseSubMenu() {\n setSubAnchorEl(null);\n }\n\n function handleCloseLangMenu() {\n setLangAnchorEl(null);\n }\n\n function handleOpenLangMenu(event) {\n setLangAnchorEl(event.currentTarget);\n }\n\n const handleMenuClick = () => {\n if (mainIconMeaning !== 'menu') {\n if (window.history.length > 2) history.goBack();\n else history.push('/');\n return;\n }\n\n switch (mainIconMeaning) {\n // @ts-ignore\n case 'back':\n // history.goBack();\n history.push(parentRoute);\n break;\n case 'menu':\n setIsDrawerOpened(true);\n break;\n // @ts-ignore\n case 'top':\n history.push('/');\n break;\n default:\n if (window.history.length > 2) history.goBack();\n else history.push('/');\n break;\n }\n };\n\n return (\n
\n
\n \n \n \n
\n \n \n \n \n {mainIconMeaning === 'menu' ? : }\n \n \n \n {mainIconMeaning !== 'menu' && (\n \n \n \n )}\n \n \n {title}\n \n {showLanguageSelector && (\n \n \n \n )}\n {!!subMenuItems && subMenuItems.length > 0 && (\n \n \n \n )}\n
{customButtons}
\n
\n {!!subMenuItems && (\n \n {subMenuItems.map(({ handler, label, checkboxValue, checkboxSetter }) =>\n checkboxSetter ? (\n \n checkboxSetter(checkboxValue == 'true' ? 'false' : 'true')}\n />\n }\n label={label}\n />\n \n ) : (\n {\n handleCloseSubMenu();\n handler();\n }}\n >\n {label}\n \n )\n )}\n \n )}\n\n {showLanguageSelector && (\n \n {availableLanguages.map(({ title, code }) => (\n {\n i18n.changeLanguage(code);\n handleCloseLangMenu();\n }}\n >\n {title}\n \n ))}\n \n )}\n \n\n
{children}
\n\n \n setIsDrawerOpened(false)}\n onOpen={() => setIsDrawerOpened(true)}\n >\n setIsDrawerOpened(false)}\n onKeyDown={() => setIsDrawerOpened(false)}\n >\n \n
\n \n \n \n \n
\n \n
\n
\n
\n \n );\n}\n\nexport default AppLayout;\n","export function distance(lat1, lon1, lat2, lon2, unit = 'K') {\n if (lat1 == lat2 && lon1 == lon2) {\n return 0;\n } else {\n var radlat1 = (Math.PI * lat1) / 180;\n var radlat2 = (Math.PI * lat2) / 180;\n var theta = lon1 - lon2;\n var radtheta = (Math.PI * theta) / 180;\n var dist = Math.sin(radlat1) * Math.sin(radlat2) + Math.cos(radlat1) * Math.cos(radlat2) * Math.cos(radtheta);\n if (dist > 1) {\n dist = 1;\n }\n dist = Math.acos(dist);\n dist = (dist * 180) / Math.PI;\n dist = dist * 60 * 1.1515;\n if (unit == 'K') {\n dist = dist * 1.609344;\n }\n if (unit == 'N') {\n dist = dist * 0.8684;\n }\n return dist;\n }\n}\n\nexport function distanceGps(gps1, gps2) {\n return distance(gps1.latitude, gps1.longitude, gps2.latitude, gps2.longitude);\n}\n\nexport function rangeIntersection(range1, range2) {\n const { begin: ae, end: as } = range1;\n const { begin: be, end: bs } = range2;\n\n if (bs > ae || as > be) return null;\n const os = Math.max(as, bs);\n const oe = Math.min(ae, be);\n return {\n begin: oe,\n end: os,\n };\n}\n\nexport function rangeIntersectionLength(range1, range2) {\n const res = rangeIntersection(range1, range2);\n if (res) {\n return res.begin - res.end;\n }\n return 0;\n}\n\nexport function roundKm(value) {\n return Math.round(value * 10) / 10;\n}\n\nexport function formatDistance(km1, km2) {\n const dist = Math.abs(km1 - km2);\n if (dist < 1) return `${Math.round(dist * 10) * 100} m`;\n return `${Math.round(dist * 10) / 10} km`;\n}\n","import _ from 'lodash';\nimport { rangeIntersection } from '../utility/mathutil';\n\nexport function extractRiverName(riverDetail) {\n return _.get(riverDetail, 'ExportReky.reka.@nazev') || '';\n}\n\nexport function extractRiverId(riverDetail) {\n return _.get(riverDetail, 'ExportReky.reka.ID_reky') || null;\n}\n\nexport function extractRiverDescription(riverDetail) {\n return _.get(riverDetail, 'ExportReky.reka.popis') || '';\n}\n\nexport function filterGuideBySection(guide, section) {\n if (!section) return guide;\n const { begin, end } = section;\n return guide.filter((rkm) => {\n const km = extractRkmKm(rkm);\n return km <= begin && km >= end;\n });\n}\n\nexport function extractRiverGuide(riverDetail, section = undefined) {\n const res = _.get(riverDetail, 'ExportReky.reka.kilometraze.rkm') || [];\n return filterGuideBySection(res, section);\n}\n\nexport function extractNextRkmDetail(guide, rkmDetail) {\n const rkm = extractRkmKm(rkmDetail);\n return guide.find((x) => extractRkmKm(x) < rkm);\n}\n\nexport function extractBeforeRkmDetail(guide, rkmDetail) {\n const rkm = extractRkmKm(rkmDetail);\n return _.findLast(guide, (x) => extractRkmKm(x) > rkm);\n}\n\n// function enhanceSectionBorders(items, knownSections, field) {\n// for (const known of knownSections) {\n// if (items.find((x) => x.km == known.range[field])) continue;\n// items.push({ name: known.name, km: known.range[field] });\n// }\n// return _.sortBy(items, (x) => -x.km);\n// }\n\nexport function extractRiverBegins(riverDetail, t) {\n const guide = extractRiverGuide(riverDetail);\n if (guide && guide[0]) {\n const res = guide\n .filter((x) => x.zacatek && x.zacatek.Popis)\n .map((x) => ({ name: x.zacatek.Popis, km: extractRkmKm(x) }));\n const begin = extractRkmKm(guide[0]);\n if (res.find((x) => x.km == begin)) return res;\n return [{ name: t('RiverBegin'), km: begin }, ...res];\n // return enhanceSectionBorders(\n // [{ name: 'Zacatek reky', km: extractRkmKm(guide[0]) }, ...res],\n // knownSections,\n // 'begin'\n // );\n }\n return [];\n}\n\nexport function extractRiverImage(riverDetail) {\n const guide = extractRiverGuide(riverDetail);\n const photos = _.flatten(guide.map((rkm) => extractPhotos(rkm))).filter((x) => x['photo_file']);\n // const index = Math.floor(Math.random() * photos.length);\n const index = 0;\n if (photos.length > 0) return photos[index]['photo_file'];\n return null;\n}\n\nexport function extractRiverEnds(riverDetail, t) {\n const guide = extractRiverGuide(riverDetail);\n if (guide && guide[0]) {\n const res = guide\n .filter((x) => x.konec && x.konec.Popis)\n .map((x) => ({ name: x.konec.Popis, km: extractRkmKm(x) }));\n if (res.find((x) => x.km == 0)) return res;\n return [...res, { name: t('RiverEnd'), km: 0 }];\n // return enhanceSectionBorders([...res, { name: 'Konec reky', km: 0 }], knownSections, 'end');\n }\n return [];\n}\n\nexport function extractFullRiverSection(riverDetail) {\n const guide = extractRiverGuide(riverDetail);\n if (guide && guide[0]) {\n return {\n begin: extractRkmKm(guide[0]),\n end: 0,\n };\n }\n return {\n start: 0,\n end: 0,\n };\n}\n\nexport function extractMapPointsFromGuide(guide, shownObjects = null) {\n const res = [];\n for (const rkmDetail of guide) {\n const rkmPoints = extractMapPoints(rkmDetail, null, shownObjects);\n res.push(...rkmPoints);\n }\n return res;\n}\n\nexport function parseGps(gps) {\n if (_.isPlainObject(gps) && gps.latitude && gps.longitude) return gps;\n if (_.isArray(gps)) gps = gps[0];\n if (gps) {\n const [latitude, longitude] = gps.split(',').map(parseFloat);\n return { latitude, longitude };\n }\n return null;\n}\n\nexport function extractPhotos(rkmDetail) {\n if (!rkmDetail) return [];\n const { photo } = rkmDetail;\n const photos = _.isArray(photo) ? photo : _.isPlainObject(photo) ? [photo] : [];\n return photos.map((x) => ({\n photo_title: x.photo_title,\n photo_file: x.photo_file,\n }));\n}\n\nexport function extractRkmLinks(rkmDetail) {\n if (!rkmDetail) return [];\n const { link } = rkmDetail;\n const links = _.isArray(link) ? link : _.isPlainObject(link) ? [link] : [];\n return links.map((x) => ({\n text: x['#text'],\n typ: x['@typ'],\n }));\n}\n\nexport function extractRkmDescription(rkmDetail) {\n return rkmDetail && rkmDetail.popis;\n}\n\nexport function extractRkmTitle(rkmDetail) {\n const maxLength = 20;\n const description = extractRkmDescription(rkmDetail);\n const words = _.words(description && description.replace(/<\\/?[^>]+(>|$)/g, ''));\n if (!words || !words[0]) return null;\n let res = words[0];\n let len = res.length;\n for (let i = 1; i < words.length; i++) {\n const word = words[i];\n const nextWord = words[i + 1] || '';\n\n if (word.length <= 2) {\n if (len + word.length + nextWord.length <= maxLength) {\n res = `${res} ${word}`;\n len += word.length;\n } else {\n return res;\n }\n } else {\n if (len + word.length <= maxLength) {\n res = `${res} ${word}`;\n len += word.length;\n } else {\n return res;\n }\n }\n }\n return res;\n}\n\nexport function extractRkmIconDescription(rkmDetail) {\n return rkmDetail && rkmDetail.popis_icon;\n}\n\nexport function extractRkmIcons(rkmDetail) {\n return (rkmDetail.ikonky || '')\n .split(',')\n .map((x) => x.trim())\n .filter((x) => x);\n}\n\nexport function extractRkmKm(rkmDetail) {\n if (!rkmDetail) return null;\n if (_.isNumber(rkmDetail.rkm)) return rkmDetail.rkm;\n const km = parseFloat(rkmDetail.km.replace(',', '.'));\n return km;\n}\n\nfunction convertPoint(point, res, icon, rkmDetail, title) {\n if (!point) return;\n if (_.isArray(point)) {\n point.forEach((x) => convertPoint(x, res, icon, rkmDetail, title));\n }\n const gps = parseGps(point.gps);\n if (!gps) return;\n res.push({\n title,\n gps,\n icon,\n point,\n rkmDetail,\n });\n}\n\nexport function extractMapPoints(rkmDetail, camps = null, shownObjects = null) {\n const test = (name) => !shownObjects || shownObjects[name];\n const res = [];\n if (!rkmDetail) return [];\n if (camps !== true) {\n if (test('jez-x')) convertPoint(rkmDetail.jez, res, 'jez-x', rkmDetail, 'Jez');\n if (test('zacatek_konec')) convertPoint(rkmDetail.zacatek, res, 'zacatek', rkmDetail, 'Začátek');\n if (test('zacatek_konec')) convertPoint(rkmDetail.konec, res, 'konec', rkmDetail, 'Konec');\n\n if (test('most')) convertPoint(rkmDetail.most, res, 'most', rkmDetail, 'Most');\n if (test('jidlo')) convertPoint(rkmDetail.obcerstveni, res, 'jidlo', rkmDetail, 'Občerstvení');\n if (test('pritok')) convertPoint(rkmDetail.pritok, res, 'pritok', rkmDetail, 'Přítok');\n if (test('_other')) convertPoint(rkmDetail.zajimavost, res, 'zajim', rkmDetail, 'Zajímavost');\n }\n if (camps !== false) {\n if (test('taboriste')) convertPoint(rkmDetail.taboriste, res, 'taboriste', rkmDetail, 'Tábořiště');\n }\n return res;\n}\n\nexport function extractKnownSections(riverDetail) {\n const data = _.get(riverDetail, 'ExportReky.reka.usek_obtiznosti') || '';\n if (!data) return [];\n var parser = new DOMParser();\n var htmlDoc = parser.parseFromString(`${data}
`, 'text/html');\n\n const rows = htmlDoc.getElementsByTagName('tr');\n const res = [];\n for (let rowIndex = 0; rowIndex < rows.length; rowIndex++) {\n try {\n const tr = rows[rowIndex];\n const cells = tr.getElementsByTagName('td');\n if (cells && cells.length == 3) {\n const name = cells[0].innerText.trim();\n const [begin, end] = cells[1].innerText.split('-').map((x) => parseFloat(x.trim()));\n const difficulty = cells[2].innerText;\n res.push({ name, range: { begin, end }, difficulty });\n }\n } catch (e) {\n continue;\n }\n }\n return res;\n}\n\nexport function extractDifficultySections(riverDetail) {\n const data = _.get(riverDetail, 'ExportReky.reka.obtiznosti.obtiznost');\n const array = _.isArray(data) ? data : _.isPlainObject(data) ? [data] : [];\n return array.map((x) => ({\n begin: parseFloat(x.rkm_Od.replace(',', '.')),\n end: parseFloat(x.rkm_Do.replace(',', '.')),\n difficulty: x.stupen,\n }));\n}\n\nexport function extractDifficultyCoverage(riverDetail, range) {\n const sections = extractDifficultySections(riverDetail);\n\n return sections.reduce((dct, item) => {\n const intersection = rangeIntersection(item, range);\n if (intersection) {\n return {\n ...dct,\n [item.difficulty]: (dct[item.difficulty] || 0) + Math.abs(intersection.begin - intersection.end),\n };\n }\n return dct;\n }, {});\n}\n\nexport const isItemShown = (shownObjects) => (rkmItem) => {\n const icons = extractRkmIcons(rkmItem);\n if (icons.length == 0) return shownObjects._other;\n for (const icon of icons) {\n if (shownObjects[icon.slice(0, -2)]) return true;\n if ((icon == 'zacatek_k' || icon == 'konec_zacatek_k' || icon == 'konec_k') && shownObjects['zacatek_konec'])\n return true;\n }\n return false;\n};\n\nconst extractRiverAdditionalInfo = (path) => (riverDetail) => {\n const res = _.get(riverDetail, path);\n if (_.isPlainObject(res)) return [res];\n if (_.isArray(res)) return res;\n return [];\n};\n\nexport const extractRiverComments = extractRiverAdditionalInfo('ExportReky.reka.komentare.komentar');\nexport const extractRiverLogs = extractRiverAdditionalInfo('ExportReky.reka.zapisniky.zapisnik');\nexport const extractRiverArticles = extractRiverAdditionalInfo('ExportReky.reka.clanky.clanek');\n\nfunction getAsArray(value) {\n if (_.isPlainObject(value)) return [value];\n if (_.isArray(value)) return value;\n return [];\n}\n\n// function extractGaugesCore(gaugesData) {\n// const res = _.get(gaugesData, 'ExportRek.reka.usek');\n// return getAsArray(res);\n// }\n\nexport function extractGaugeRange(gauge) {\n const begin = parseFloat((gauge.rkmod || '').replace(',', '.'));\n const end = parseFloat((gauge.rkmdo || '').replace(',', '.'));\n return { begin, end };\n}\n\nexport function parseGauges(gaugesData) {\n return _.compact(\n getAsArray(gaugesData).map((item) => {\n const begin = parseFloat((item.rkmod || '').replace(',', '.'));\n const end = parseFloat((item.rkmdo || '').replace(',', '.'));\n\n return {\n ...item,\n range: {\n begin: _.isNaN(begin) ? null : begin,\n end: _.isNaN(end) ? null : end,\n },\n };\n })\n );\n}\n\nexport function extractRiverSemaphoreByRiver(countryGaugesData) {\n const rivers = _.get(countryGaugesData, 'ExportRek.reka');\n if (!rivers) return null;\n return _.mapValues(_.keyBy(getAsArray(rivers), '@ID_reky'), (river, id) => {\n const sections = _.map(getAsArray(_.get(river, 'usek')), 'sjizdnost')\n .filter((x) => x == 1 || x == 2 || x == 3)\n .map((x) => parseInt(x));\n return _.min(sections);\n });\n}\nexport function extractRiverSectionsBySemaphore(countryGaugesData, riverId) {\n const rivers = _.get(countryGaugesData, 'ExportRek.reka');\n if (!rivers) return [];\n const river = getAsArray(rivers).find((x) => x['@ID_reky'] == riverId);\n return getAsArray(_.get(river, 'usek')); // .filter((x) => ['1', '2', '3', 'B', 'P', 'O'].includes(x.sjizdnost));\n}\n\nexport function extractArticleLink(riverDetail, article) {\n const linkBase = _.get(riverDetail, 'ExportReky.reka.clanky.@odkaz');\n const id = _.get(article, 'ID_clanku');\n if (linkBase && id) return `${linkBase}${id}`;\n return null;\n}\n\nexport function extractArticleListLink(riverDetail) {\n const odkaz = _.get(riverDetail, 'ExportReky.reka.@odkaz');\n if (odkaz) return `${odkaz}?kilo=clanky`;\n return null;\n}\n\nexport function extractCommentListLink(riverDetail) {\n const odkaz = _.get(riverDetail, 'ExportReky.reka.@odkaz');\n if (odkaz) return `${odkaz}?kilo=komentar`;\n return null;\n}\n\nexport function extractLogListLink(riverDetail) {\n const ID_reky = _.get(riverDetail, 'ExportReky.reka.ID_reky');\n if (ID_reky) return `https://www.raft.cz/vodacky-zapisnik.aspx?ID_reky=${ID_reky}`;\n return null;\n}\n\nexport function extractArticleCount(riverDetail) {\n return _.get(riverDetail, 'ExportReky.reka.clanky.@pocet') || '??';\n}\n\nexport function extractLogCount(riverDetail) {\n return _.get(riverDetail, 'ExportReky.reka.zapisniky.@pocet') || '??';\n}\n\nexport function extractCommentCount(riverDetail) {\n return _.get(riverDetail, 'ExportReky.reka.komentare.@pocet') || '??';\n}\n\nexport function extractIdZeme(riverDetail) {\n return _.get(riverDetail, 'ExportReky.reka.ID_zeme');\n}\n\nexport function extractRiverNameFromGauge(riverGaugeDetail) {\n return _.get(riverGaugeDetail, 'ExportRek.reka.@nazev') || '??';\n}\n\nexport function extractSectionsFromGauge(riverGaugeDetail) {\n return getAsArray(_.get(riverGaugeDetail, 'ExportRek.reka.usek'));\n}\n","import _ from 'lodash';\nimport { extractMapPoints, extractRkmKm, extractRiverGuide } from './extractors';\nimport { distance, distanceGps } from '../utility/mathutil';\n\nfunction interpolateGuide(guide) {\n let lastGpsIndex = -1;\n let toInterpolateIndexes = [];\n for (let index = 0; index < guide.length; index += 1) {\n if (guide[index].gps) {\n if (lastGpsIndex >= 0) {\n const lastGps = guide[lastGpsIndex].gps;\n const lastRkm = extractRkmKm(guide[lastGpsIndex]);\n const nextGps = guide[index].gps;\n const nextRkm = extractRkmKm(guide[index]);\n for (const ii of toInterpolateIndexes) {\n const t = (extractRkmKm(guide[ii]) - lastRkm) / (nextRkm - lastRkm);\n const latitude = lastGps.latitude + (nextGps.latitude - lastGps.latitude) * t;\n const longitude = lastGps.longitude + (nextGps.longitude - lastGps.longitude) * t;\n guide[ii].gps = { latitude, longitude };\n }\n }\n\n lastGpsIndex = index;\n toInterpolateIndexes = [];\n } else {\n toInterpolateIndexes.push(index);\n }\n }\n}\n\nfunction extrapolatePoint(guide, known1, known2, compute) {\n const gps1 = guide[known1].gps;\n const gps2 = guide[known2].gps;\n const rkm1 = extractRkmKm(guide[known1]);\n const rkm2 = extractRkmKm(guide[known2]);\n const rkm = extractRkmKm(guide[compute]);\n const t = (rkm - rkm1) / (rkm2 - rkm1);\n const latitude = gps1.latitude + (gps2.latitude - gps1.latitude) * t;\n const longitude = gps1.longitude + (gps2.longitude - gps1.longitude) * t;\n guide[compute].gps = { latitude, longitude };\n}\n\nfunction extrapolateGuide(guide) {\n const firstGps = _.findIndex(guide, (x) => x['gps']);\n if (guide[firstGps + 1] && guide[firstGps + 1].gps) {\n for (let ii = 0; ii < firstGps; ii += 1) {\n extrapolatePoint(guide, firstGps, firstGps + 1, ii);\n }\n }\n\n const lastGps = _.findLastIndex(guide, (x) => x['gps']);\n if (guide[lastGps - 1] && guide[lastGps - 1].gps) {\n for (let ii = guide.length - 1; ii > lastGps; ii -= 1) {\n extrapolatePoint(guide, lastGps, lastGps - 1, ii);\n }\n }\n}\n\nexport function guideHasGps(guide) {\n return guide.filter((x) => x.gps).length >= 2;\n}\n\nexport function addGpsToGuide(guide) {\n for (const rkmDetail of guide) {\n const points = extractMapPoints(rkmDetail);\n if (points.length > 0) {\n rkmDetail.gps = points[0].gps;\n }\n }\n\n if (!guideHasGps(guide)) return;\n\n interpolateGuide(guide);\n extrapolateGuide(guide);\n}\n\nfunction indexOfNearest(guide) {\n var nearest = 0;\n for (var i = 1; i < guide.length; i++) {\n if (guide[i].distance < guide[nearest].distance) nearest = i;\n }\n return nearest;\n}\n\nfunction interpolateRkm(rkm1, rkm2, distComputed, distTotal) {\n // console.log('interpolateRkm', rkm1, rkm2, distComputed, distTotal);\n const t = distComputed / distTotal;\n return rkm1 + (rkm2 - rkm1) * t;\n}\n\nfunction addCurrentLocationEdges(guide, i0, i1) {\n const x = distanceGps(guide[i0].gps, guide[i1].gps);\n const y = guide[i0].distance;\n const z = guide[i1].distance;\n if (x * x + y * y > z * z) {\n return false;\n } else {\n // is outside\n const location = {\n currentLocation: true,\n rkm: i0 == 0 ? extractRkmKm(guide[i0]) - y : extractRkmKm(guide[i0]) + y,\n };\n\n if (i0 == 0) {\n guide.splice(0, 0, location);\n }\n if (i0 == guide.length - 1) {\n guide.push(location);\n }\n return true;\n }\n}\n\nfunction getNearest2Index(guide, nearestIndex) {\n if (nearestIndex == 0) return 1;\n if (nearestIndex == guide.length - 1) return guide.length - 2;\n return guide[nearestIndex - 1].distance < guide[nearestIndex + 1].distance ? nearestIndex - 1 : nearestIndex + 1;\n}\n\nexport function addCurrentLocationToGuide(guide, location) {\n if (guide.find((x) => !x.gps)) throw new Error('All items must have GPS');\n if (!location) throw new Error('Invalid location');\n\n guide = _.cloneDeep(guide);\n\n for (const rkmDetail of guide) {\n rkmDetail.distance = distanceGps(rkmDetail.gps, location);\n }\n\n const nearestIndex = indexOfNearest(guide);\n if (nearestIndex == 0) {\n if (addCurrentLocationEdges(guide, 0, 1)) return guide;\n }\n if (nearestIndex == guide.length - 1) {\n if (addCurrentLocationEdges(guide, guide.length - 1, guide.length - 2)) return guide;\n }\n const nearest2Index = getNearest2Index(guide, nearestIndex);\n const index1 = Math.min(nearestIndex, nearest2Index);\n const index2 = Math.max(nearestIndex, nearest2Index);\n guide.splice(index2, 0, {\n currentLocation: true,\n rkm: interpolateRkm(\n extractRkmKm(guide[index1]),\n extractRkmKm(guide[index2]),\n distanceGps(guide[index1].gps, location),\n distanceGps(guide[index1].gps, location) + distanceGps(guide[index2].gps, location)\n ),\n });\n\n return guide;\n}\n\nexport function findNearestCoordinates(riverDetail, rkm, preferIcon = null) {\n const guide = extractRiverGuide(riverDetail);\n let nearest = null;\n for (const rkmDetail of guide) {\n if (Math.abs(extractRkmKm(rkmDetail) - rkm) > 1) continue;\n const positions = extractMapPoints(rkmDetail);\n if (positions.length == 0) continue;\n if (nearest == null || Math.abs(extractRkmKm(rkmDetail) - rkm) < Math.abs(extractRkmKm(nearest) - rkm)) {\n nearest = rkmDetail;\n }\n }\n if (nearest == null) return null;\n const positions = extractMapPoints(nearest);\n const prefer = positions.find((x) => x.icon == preferIcon);\n if (prefer) return prefer.gps;\n return positions[0].gps;\n}\n","import React from 'react';\n\nexport function getOnlineStatus() {\n return typeof navigator !== 'undefined' && typeof navigator.onLine === 'boolean' ? navigator.onLine : true;\n}\n\nexport default function useOnlineStatus() {\n const [onlineStatus, setOnlineStatus] = React.useState(getOnlineStatus());\n\n const goOnline = () => setOnlineStatus(true);\n\n const goOffline = () => setOnlineStatus(false);\n\n React.useEffect(() => {\n window.addEventListener('online', goOnline);\n window.addEventListener('offline', goOffline);\n\n return () => {\n window.removeEventListener('online', goOnline);\n window.removeEventListener('offline', goOffline);\n };\n }, []);\n\n return onlineStatus;\n}\n","import localforage from 'localforage';\nimport usePromise from 'react-use-promise';\nimport { useSnackbar } from 'notistack';\nimport useLanguage from '../utility/useLanguage';\nimport useT from '../utility/useT';\nimport _ from 'lodash';\nimport { extractRiverGuide } from './extractors';\nimport { addGpsToGuide } from './guideGps';\nimport { getOnlineStatus } from '../utility/useOnlineStatus';\n\nconst maxAgeMsLong = 7 * 24 * 3600 * 1000; // one week\nconst maxAgeMsFresh = 3600 * 1000; // one hour\n\nconst lastChangedApiFormat = new Date('2020-05-14T05:56:24.554Z').getTime();\n\nexport async function getCachedResourceFromApiCore(path, cacheName, onSaveToCache, transform = (x) => x) {\n const isOnline = getOnlineStatus();\n if (!isOnline) {\n throw new Error('t:ApplicationIsOffline');\n }\n const resp = await fetch(`${process.env.REACT_APP_API_URL}/${path}`);\n const json = transform(await resp.json());\n localforage.setItem(cacheName, {\n ...json,\n downloadDate: new Date().toISOString(),\n resourcePath: path,\n });\n if (onSaveToCache) onSaveToCache(json);\n return json;\n}\n\nexport async function getCachedResourceFromApi(path, cacheName, requireFreshData, onSaveToCache, transform) {\n const cached = await localforage.getItem(cacheName);\n if (cached) {\n const isOnline = getOnlineStatus();\n if (!isOnline) return cached;\n\n const { downloadDate } = cached;\n\n if (!downloadDate || new Date(downloadDate).getTime() < lastChangedApiFormat) {\n return getCachedResourceFromApiCore(path, cacheName, onSaveToCache, transform);\n }\n\n const diff = downloadDate == null ? null : new Date().getTime() - new Date(downloadDate).getTime();\n\n if (requireFreshData) {\n if (diff == null || diff > maxAgeMsFresh) {\n return getCachedResourceFromApiCore(path, cacheName, onSaveToCache, transform);\n }\n return cached;\n } else {\n if (diff == null || diff > maxAgeMsLong) {\n getCachedResourceFromApiCore(path, cacheName, onSaveToCache, transform);\n }\n return cached;\n }\n }\n\n return getCachedResourceFromApiCore(path, cacheName, onSaveToCache, transform);\n}\n\nfunction getApiLanguage(language) {\n switch (language) {\n case 'en':\n return 'en-US';\n case 'de':\n return 'de-DE';\n case 'sk':\n return 'sk-SK';\n case 'pl':\n return 'pl-PL';\n default:\n return 'cs-CZ';\n }\n}\n\nexport async function getRiverDb(language) {\n return await getCachedResourceFromApi(\n `mobil_vodocet.ashx?reky=1&jazyk=${getApiLanguage(language)}`,\n `riverdb-${language}`\n );\n}\n\nexport function useRiverDb() {\n const language = useLanguage();\n const [result, error, state] = usePromise(() => getRiverDb(language), [language]);\n if (result && result.Staty && result.Reky) return result;\n return {\n Staty: [],\n Reky: [],\n state,\n error,\n };\n}\n\nfunction addGpsToRiver(riverDetail) {\n const guide = extractRiverGuide(riverDetail);\n addGpsToGuide(guide);\n return riverDetail;\n}\n\nexport async function getRiverDetail(ID_reky, language, onSaveToCache) {\n return await getCachedResourceFromApi(\n `mobil_vodocet.ashx?ID_reky=${ID_reky}&jazyk=${getApiLanguage(language)}`,\n `river-${language}-${ID_reky}`,\n false,\n onSaveToCache,\n addGpsToRiver\n );\n}\n\nexport function useRiverDetail(ID_reky) {\n const t = useT();\n const language = useLanguage();\n const { enqueueSnackbar } = useSnackbar();\n const [result, error, state] = usePromise(\n () => getRiverDetail(ID_reky, language, () => enqueueSnackbar(t('RiverSavedToOffline'), { variant: 'info' })),\n [ID_reky, language]\n );\n\n return result || { error, state };\n}\n\n// export async function getRiverGauges(ID_reky, onSaveToCache) {\n// return await getCachedResourceFromApi(`export_reky.ashx?ID_reky=${ID_reky}`, `gauge-${ID_reky}`, true, onSaveToCache);\n// }\n\n// export function useRiverGauges(ID_reky) {\n// const [result, error, state] = usePromise(() => getRiverGauges(ID_reky), [ID_reky]);\n\n// return result || { error, state };\n// }\n\nexport async function getCountryGauges(ID_zeme, onSaveToCache) {\n if (!ID_zeme)\n return {\n state: 'pending',\n };\n return await getCachedResourceFromApi(\n `export_reky.ashx?ID_zeme=${ID_zeme}`,\n `gauge-country-${ID_zeme}`,\n true,\n onSaveToCache\n );\n}\n\nexport function useCountryGauges(ID_zeme) {\n const [result, error, state] = usePromise(() => getCountryGauges(ID_zeme), [ID_zeme]);\n\n return result || { error, state };\n}\n\nexport async function getRiverGauges(ID_reky, onSaveToCache) {\n if (!ID_reky)\n return {\n state: 'pending',\n };\n return await getCachedResourceFromApi(\n `export_reky.ashx?ID_reky=${ID_reky}`,\n `gauge-river-${ID_reky}`,\n true,\n onSaveToCache\n );\n}\n\nexport function useRiverGauges(ID_reky) {\n const [result, error, state] = usePromise(() => getRiverGauges(ID_reky), [ID_reky]);\n\n return result || { error, state };\n}\n\nfunction dataUrltoBlob(dataurl) {\n var arr = dataurl.split(','),\n mime = arr[0].match(/:(.*?);/)[1],\n bstr = atob(arr[1]),\n n = bstr.length,\n u8arr = new Uint8Array(n);\n while (n--) {\n u8arr[n] = bstr.charCodeAt(n);\n }\n return new Blob([u8arr], { type: mime });\n}\n\nexport async function sendFeedback({ ID_reky = '0', popis, gps = null, autor, rkm = null, imageUrls = [] }) {\n var body = new FormData();\n body.append('ID_reky', ID_reky);\n body.append('popis', popis);\n body.append('gps', gps);\n body.append('autor', autor);\n body.append('rkm', rkm);\n let photoIndex = 1;\n for (const imageUrl of imageUrls) {\n body.append(`photo${photoIndex}`, dataUrltoBlob(imageUrl));\n photoIndex += 1;\n }\n\n const resp = await fetch(`${process.env.REACT_APP_API_URL}/upload_mobil.ashx`, {\n body,\n // headers: {\n // 'Content-Type': 'application/x-www-form-urlencoded',\n // },\n method: 'post',\n });\n const json = await resp.json();\n return json.Feedback;\n}\n","import React from 'react';\n\nexport default function useStateDialog() {\n const [open, setOpen] = React.useState(false);\n\n function handleClickOpen() {\n setOpen(true);\n }\n\n const onClose = () => {\n setOpen(false);\n };\n\n const dialogProps = {\n open,\n onClose,\n };\n\n return [handleClickOpen, dialogProps];\n}\n","interface NativeInterface {\n startWatchPosition();\n stopWatchPosition();\n openUrl(url: string);\n requestCamera();\n showUploadDialog();\n}\n\nexport default function nativeInterface(): NativeInterface {\n return window['jsInterface'];\n}\n","import React from 'react';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport Button from '@material-ui/core/Button';\nimport List from '@material-ui/core/List';\nimport ListItem from '@material-ui/core/ListItem';\nimport Dialog from '@material-ui/core/Dialog';\nimport Link from '@material-ui/core/Link';\nimport ListItemAvatar from '@material-ui/core/ListItemAvatar';\nimport Avatar from '@material-ui/core/Avatar';\nimport useT from '../utility/useT';\nimport { Trans } from 'react-i18next';\nimport nativeInterface from '../utility/nativeInterface';\n\nfunction ChooseFromListDialog({ title = undefined, items = [], onClose = undefined, children = null, ...other }) {\n const t = useT();\n function handleClose() {\n onClose();\n }\n const native = nativeInterface();\n\n return (\n // @ts-ignore\n \n {title}\n \n {items.map((item) => {\n const Icon = item.icon;\n const content = (\n <>\n {item.icon && (\n \n \n \n \n \n )}\n \n \n );\n\n return item.onClick || native ? (\n {\n if (item.onClick) item.onClick();\n else if (item.link && native && native.openUrl) native.openUrl(item.link);\n handleClose();\n }}\n key={item.key}\n >\n {content}\n \n ) : (\n \n {content}\n \n );\n })}\n {children}\n \n \n \n \n \n );\n}\n\nexport default ChooseFromListDialog;\n","import _ from 'lodash';\nimport React from 'react';\nimport TextField from '@material-ui/core/TextField';\nimport IconButton from '@material-ui/core/IconButton';\nimport { makeStyles } from '@material-ui/core/styles';\nimport clsx from 'clsx';\nimport AddCircleIcon from '@material-ui/icons/AddCircle';\nimport useReactRouter from 'use-react-router';\n\nimport useT from '../utility/useT';\nimport useStateDialog from '../utility/useStateDialog';\nimport ChooseFromListDialog from '../ui-elements/ChooseFromListDialog';\n\nconst useStyles = makeStyles((theme) => ({\n flexLine: {\n display: 'flex',\n },\n searchField: {\n marginLeft: '1rem',\n // marginRight: '1rem',\n marginTop: '1rem',\n flexGrow: 1,\n },\n}));\n\nexport function getSearchValue(history, routerStateField) {\n const search = history.location && history.location.state && history.location.state[`${routerStateField}_search`];\n return search;\n}\n\nexport default function SearchField({ routerStateField = undefined, onRunFilter, className = undefined }) {\n const classes = useStyles();\n const t = useT();\n const { history } = useReactRouter();\n\n const [openAddFilter, addFilterDialogProps] = useStateDialog();\n\n const [searchInState, setSearchInState] = React.useState('');\n const setSearch = (value) =>\n routerStateField\n ? history.replace(history.location.pathname, { ...history.location.state, [`${routerStateField}_search`]: value })\n : setSearchInState(value);\n const search = routerStateField ? getSearchValue(history, routerStateField) : searchInState;\n\n const setDebouncedFilter = React.useRef(\n // @ts-ignore\n _.debounce((value) => onRunFilter(value), 500)\n );\n\n const applyFilter = () => {\n onRunFilter(search);\n };\n const clearFilter = () => {\n setSearch('');\n onRunFilter('');\n };\n\n return (\n
\n {\n setSearch(e.target.value);\n // onRunFilter(e.target.value);\n // @ts-ignore\n setDebouncedFilter.current(e.target.value);\n }}\n onKeyPress={(e) => {\n if (e.key === 'Enter') applyFilter();\n }}\n onKeyDown={(e) => {\n if (e.key === 'Escape') clearFilter();\n }}\n />\n {/* {\n // @ts-ignore\n \n \n \n }\n\n */}\n
\n );\n}\n","export default function containsText(searched, ...tokens) {\n if (!searched) return true;\n const searchedNorm = searched\n .normalize('NFD')\n .replace(/[\\u0300-\\u036f]/g, '')\n .toLowerCase();\n for (const token of tokens) {\n if (!token) continue;\n const tokenNorm = token\n .normalize('NFD')\n .replace(/[\\u0300-\\u036f]/g, '')\n .toLowerCase();\n if (tokenNorm.includes(searchedNorm)) return true;\n }\n return false;\n}\n","import React from 'react';\n\nexport default function River({ size = 30 }) {\n return (\n \n \n \n \n \n );\n}\n","import React from 'react';\n\nexport default function River({ size = 30 }) {\n return (\n \n \n \n \n \n \n \n \n \n \n );\n}\n","import React from 'react';\n\nexport default function River({ size = 30 }) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import React from 'react';\nimport _ from 'lodash';\nimport useReactRouter from 'use-react-router';\nimport List from '@material-ui/core/List';\nimport ListItem from '@material-ui/core/ListItem';\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport DirectionsBoatIcon from '@material-ui/icons/DirectionsBoat';\nimport RiverIcon from '../icons/River';\nimport CreekIcon from '../icons/Creek';\nimport ChannelIcon from '../icons/Channel';\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport Flag from '../icons/Flag';\nimport useT from '../utility/useT';\n\nconst useStyles = makeStyles((theme) => ({\n notFoundWrapper: {\n padding: theme.spacing(2),\n },\n title: {\n fontSize: '1rem',\n },\n\n info: {\n fontSize: '0.875rem',\n color: 'rgba(0, 0, 0, 0.54)',\n },\n grow: {\n flexGrow: 1,\n },\n}));\n\nfunction getRiverSubtitle(river, t) {\n const difTitles = {\n Z: t('Beginner'),\n S: t('Advanced'),\n E: t('Expert'),\n };\n const { H_obtiznost, S_obtiznost, D_obtiznost } = river;\n const diffs = [H_obtiznost, S_obtiznost, D_obtiznost];\n return _.uniq(diffs)\n .map((x) => difTitles[x].toLowerCase())\n .join(', ');\n}\n\nfunction countryUrlFromRiver(river, countries) {\n const { ID_zeme } = river;\n const country = countries.find((x) => x.ID_zeme == ID_zeme);\n if (country) return country.Url;\n return null;\n}\n\nfunction RiverListItemIcon({ river }) {\n if (river.Reka == 0) return \n // if (river.Reka == 2) return \n if (river.Reka == 2) return \n return \n}\n\nfunction RiverListItem({ river, countries, riverSemaphores }) {\n const classes = useStyles();\n const t = useT();\n const { history } = useReactRouter();\n\n return (\n history.push(`/river/${river.ID_reky}`)}>\n \n\n {/*
\n
{river.Nazev}
\n
{getRiverSubtitle(river, t)}
\n
*/}\n\n \n {countries && }\n {riverSemaphores && river.ID_reky in riverSemaphores && (\n \n )}\n
\n );\n}\n\nexport default function RiverList({ rivers, countries = undefined, riverSemaphores = undefined }) {\n const { history } = useReactRouter();\n const classes = useStyles();\n const t = useT();\n\n return rivers.length > 0 ? (\n \n {rivers.map((river) => (\n \n ))}\n \n ) : (\n
{t('RiversNotFound')}
\n );\n}\n","import React from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport CircularProgress from '@material-ui/core/CircularProgress';\n\nconst useStyles = makeStyles(theme => ({\n wrapper: {\n margin: theme.spacing(2),\n // backgroundColor: theme.palette.background.paper,\n },\n message: {\n marginLeft: theme.spacing(2),\n fontSize: 14,\n position: 'relative',\n top: '-14px',\n },\n}));\n\nexport default function LoadingInfo({ message }) {\n const classes = useStyles();\n return (\n
\n \n {message}\n
\n );\n}\n","import Alert from '@material-ui/lab/Alert';\nimport AlertTitle from '@material-ui/lab/AlertTitle';\nimport React from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { Trans } from 'react-i18next';\nimport useT, { getLocalizedMessage } from '../utility/useT';\n\nconst useStyles = makeStyles((theme) => ({\n wrapper: {\n margin: theme.spacing(2),\n // backgroundColor: theme.palette.background.paper,\n },\n}));\n\nexport function extractErrorMessage(error) {\n if (error && error.message) return error.message;\n if (error) return error.toString();\n return null;\n}\n\nexport default function ErrorInfo({ message }) {\n const classes = useStyles();\n const t = useT();\n return (\n
\n \n \n Error\n \n {getLocalizedMessage(message, t)}\n \n
\n );\n}\n","import React from 'react';\nimport LoadingInfo from '../ui-elements/LoadingInfo';\nimport ErrorInfo, { extractErrorMessage } from '../ui-elements/ErrorInfo';\nimport useT from '../utility/useT';\n\nexport default function AsyncDataWrapper({ dataHolder, loadingMessage, children }) {\n return dataHolder && dataHolder.state == 'pending' ? (\n \n ) : dataHolder && dataHolder.state == 'rejected' ? (\n \n ) : (\n children\n );\n}\n\nexport function combineDataHolders(...holders) {\n if (holders.find((x) => x.state == 'rejected')) return { state: 'rejected' };\n if (holders.find((x) => x.state == 'pending')) return { state: 'pending' };\n return { state: 'loaded' };\n}\n","import _ from 'lodash';\nimport React from 'react';\nimport useStorage from './useStorage';\n\nfunction createGlobalState(defaultValue) {\n const Context = React.createContext(null);\n\n function Provider({ children }) {\n const [currentvalue, setCurrentValue] = React.useState(defaultValue);\n return {children};\n }\n\n function useValue() {\n return React.useContext(Context)[0];\n }\n\n function useSetValue() {\n return React.useContext(Context)[1];\n }\n\n return [Provider, useValue, useSetValue];\n}\n\nfunction createStorageState(storageKey, defaultValue) {\n const Context = React.createContext(null);\n\n function Provider({ children }) {\n const [currentvalue, setCurrentValue] = useStorage(storageKey, localStorage, defaultValue);\n return {children};\n }\n\n function useValue() {\n return React.useContext(Context)[0];\n }\n\n function useSetValue() {\n return React.useContext(Context)[1];\n }\n\n return [Provider, useValue, useSetValue];\n}\n\nconst [RiverSelectedSectionsProvider, useRiverSelectedSections, useSetRiverSelectedSections] = createStorageState(\n 'riverSelectedSections',\n {}\n);\nexport { RiverSelectedSectionsProvider, useRiverSelectedSections, useSetRiverSelectedSections };\n\nconst [ShownObjectsProvider, useShownObjects, useSetShownObjects] = createGlobalState({\n most: true,\n pritok: true,\n jidlo: true,\n 'jez-x': true,\n vodocet: true,\n taboriste: true,\n zacatek_konec: true,\n _other: true,\n});\n\nexport { ShownObjectsProvider, useShownObjects, useSetShownObjects };\n\nexport function useSelectedSection(riverId) {\n const selectedSections = useRiverSelectedSections();\n const res = selectedSections[riverId];\n return res || { begin: 0, end: 0 };\n}\n\nexport function useSetSelectedSection(riverId) {\n const selectedSections = useRiverSelectedSections();\n const setSelectedSections = useSetRiverSelectedSections();\n\n return (section) => {\n setSelectedSections({\n ...selectedSections,\n [riverId]: section,\n });\n };\n}\n\nconst [ClassicalGuideProvider, useClassicalGuide, useSetClassicalGuide] = createStorageState('classicalGuide', 'false');\nexport { ClassicalGuideProvider, useClassicalGuide, useSetClassicalGuide };\n\nconst [WatchPositionProvider, useWatchPosition, useSetWatchPosition] = createStorageState('watchPosition', 'false');\nexport { WatchPositionProvider, useWatchPosition, useSetWatchPosition };\n\nconst [RiverFilterProvider, useRiverFilter, useSetRiverFilter] = createStorageState('riverFilter', {\n onlyRunnable: 'false',\n\n showRivers: 'true',\n showCreeks: 'true',\n showChannels: 'true',\n\n showBeginner: 'true',\n showAdvanced: 'true',\n showExpert: 'true',\n});\nexport { RiverFilterProvider, useRiverFilter, useSetRiverFilter };\n\nconst [WarrantyClosedProvider, useWarrantyClosed, useSetWarrantyClosed] = createStorageState('warrantyClosed', 'false');\nexport { WarrantyClosedProvider, useWarrantyClosed, useSetWarrantyClosed };\n\nconst [DetailMapTypeProvider, useDetailMapType, useSetDetailMapType] = createStorageState('detailMapType', 'maps_google_photo');\nexport { DetailMapTypeProvider, useDetailMapType, useSetDetailMapType };\n","import React from 'react';\n\nexport default function useStorage(key, storageObject, initialValue) {\n // State to store our value\n // Pass initial state function to useState so logic is only executed once\n const [storedValue, setStoredValue] = React.useState(() => {\n try {\n // Get from local storage by key\n const item = storageObject.getItem(key);\n // Parse stored json or if none return initialValue\n return item ? JSON.parse(item) : initialValue;\n } catch (error) {\n // If error also return initialValue\n console.log(error);\n return initialValue;\n }\n });\n\n // Return a wrapped version of useState's setter function that ...\n // ... persists the new value to localStorage.\n const setValue = value => {\n try {\n // Allow value to be a function so we have same API as useState\n const valueToStore = value instanceof Function ? value(storedValue) : value;\n // Save state\n setStoredValue(valueToStore);\n // Save to local storage\n storageObject.setItem(key, JSON.stringify(valueToStore));\n } catch (error) {\n // A more advanced implementation would handle the error case\n console.log(error);\n }\n };\n\n return [storedValue, setValue];\n}\n","import _ from 'lodash';\n\nconst chars = ' aáäaaâbcćčdďeéěëeefghhiíiiîjklĺľmnńňnoóôooöőpqrŕřsśštťuúuůüuuvwxyýzźž0123456789'.toUpperCase();\n\nexport default function localeSort(arr, fieldName) {\n const map = {};\n\n for (let i = 0; i < arr.length; i++) {\n const index = [];\n let item = _.get(arr, `${i}.${fieldName}`, '');\n\n item.replace(/\\s+/g, ' ');\n\n for (let j = 0; j < item.length; j++) {\n let pos = null;\n const ch = item.substr(j, 1).toUpperCase();\n\n if (j + 1 < item.length && ch === 'C' && item.substr(j + 1, 1).toUpperCase() === 'H') {\n pos = 22;\n j++;\n } else {\n pos = chars.indexOf(ch);\n }\n\n index.push(pos < 10 ? '0' + pos : pos);\n }\n\n map[item] = index.join('');\n }\n\n return [...arr].sort((a, b) => {\n const a2 = map[_.get(a, fieldName, '')];\n const b2 = map[_.get(b, fieldName, '')];\n\n if (a2 > b2) return 1;\n if (a2 < b2) return -1;\n\n return 0;\n });\n}\n","import React from 'react';\nimport ClearIcon from '@material-ui/icons/Clear';\nimport IconButton from '@material-ui/core/IconButton';\nimport _ from 'lodash';\nimport AppLayout from '../layout/AppLayout';\nimport useReactRouter from 'use-react-router';\nimport { useRiverDb, useCountryGauges } from '../datalayer/api';\nimport SearchField, { getSearchValue } from '../ui-elements/SearchField';\nimport containsText from '../utility/containsText';\nimport RiverList from './RiverList';\nimport AsyncDataWrapper, { combineDataHolders } from '../ui-elements/AsyncDataWrapper';\nimport useT from '../utility/useT';\nimport { extractRiverSemaphoreByRiver } from '../datalayer/extractors';\nimport { useSetRiverFilter, useRiverFilter } from '../utility/globalState';\nimport localeSort from '../utility/localeSort';\nimport { makeStyles } from '@material-ui/core/styles';\n\nconst useStyles = makeStyles((theme) => ({\n searchDiv: {\n display: 'flex',\n alignItems: 'center',\n },\n flex1: {\n flex: '1',\n },\n}));\n\nexport default function RiverListPage() {\n const { history, match } = useReactRouter();\n const [filter, setFilter] = React.useState(getSearchValue(history, 'rivers'));\n const t = useT();\n const riverDb = useRiverDb();\n const { Staty, Reky } = riverDb;\n const { ID_zeme } = match.params;\n const rivers = Reky.filter((x) => x.ID_zeme == ID_zeme);\n const country = Staty.find((x) => x.ID_zeme == ID_zeme) || {};\n const countryGauges = useCountryGauges(ID_zeme);\n const riverSemaphores = extractRiverSemaphoreByRiver(countryGauges);\n const classes = useStyles();\n\n const riverFilter = useRiverFilter();\n const setRiverFilter = useSetRiverFilter();\n\n const handleRunFilter = (filter) => {\n setFilter(filter);\n };\n\n const riverFilterSetter = (name) => (value) => setRiverFilter((x) => ({ ...x, [name]: value }));\n\n const subMenuItems = [];\n\n const { onlyRunnable, showRivers, showCreeks, showChannels, showBeginner, showAdvanced, showExpert } = riverFilter;\n\n subMenuItems.push({\n label: t('OnlyRunnable'),\n checkboxValue: onlyRunnable,\n checkboxSetter: riverFilterSetter('onlyRunnable'),\n });\n subMenuItems.push({\n label: t('Rivers'),\n checkboxValue: showRivers,\n checkboxSetter: riverFilterSetter('showRivers'),\n });\n subMenuItems.push({\n label: t('Creeks'),\n checkboxValue: showCreeks,\n checkboxSetter: riverFilterSetter('showCreeks'),\n });\n subMenuItems.push({\n label: t('Channels'),\n checkboxValue: showChannels,\n checkboxSetter: riverFilterSetter('showChannels'),\n });\n subMenuItems.push({\n label: t('Beginner'),\n checkboxValue: showBeginner,\n checkboxSetter: riverFilterSetter('showBeginner'),\n });\n subMenuItems.push({\n label: t('Advanced'),\n checkboxValue: showAdvanced,\n checkboxSetter: riverFilterSetter('showAdvanced'),\n });\n subMenuItems.push({\n label: t('Expert'),\n checkboxValue: showExpert,\n checkboxSetter: riverFilterSetter('showExpert'),\n });\n\n const filterRiverFunc = (river) => {\n if (!containsText(filter, river.Nazev)) return false;\n if (showRivers == 'false' && river.Reka == 1) return false;\n if (showCreeks == 'false' && river.Reka == 0) return false;\n if (showChannels == 'false' && river.Reka == 2) return false;\n\n if (onlyRunnable == 'true' && riverSemaphores) {\n const { ID_reky } = river;\n const runnable = riverSemaphores[ID_reky] == 1 || riverSemaphores[ID_reky] == 2;\n if (!runnable) return false;\n }\n\n if (showBeginner == 'false' || showAdvanced == 'false' || showExpert == 'false') {\n if (showBeginner == 'true') {\n if (river.H_obtiznost == 'Z' || river.S_obtiznost == 'Z' || river.D_obtiznost == 'Z') return true;\n }\n if (showAdvanced == 'true') {\n if (river.H_obtiznost == 'S' || river.S_obtiznost == 'S' || river.D_obtiznost == 'S') return true;\n }\n if (showExpert == 'true') {\n if (river.H_obtiznost == 'E' || river.S_obtiznost == 'E' || river.D_obtiznost == 'E') return true;\n }\n return false;\n }\n return true;\n };\n\n const handleClearFilter = () => {\n setRiverFilter({\n onlyRunnable: 'false',\n\n showRivers: 'true',\n showCreeks: 'true',\n\n showBeginner: 'true',\n showAdvanced: 'true',\n showExpert: 'true',\n });\n setFilter('');\n history.replace(history.location.pathname, { ...history.location.state, rivers_search: '' });\n };\n\n return (\n \n
\n \n {(onlyRunnable != 'false' ||\n showRivers != 'true' ||\n showCreeks != 'true' ||\n showBeginner != 'true' ||\n showAdvanced != 'true' ||\n showExpert != 'true' ||\n filter) && (\n \n \n \n )}\n
\n \n \n \n
\n );\n}\n","import React from 'react';\nimport _ from 'lodash';\nimport NativeSelect from '@material-ui/core/NativeSelect';\nimport { makeStyles } from '@material-ui/core/styles';\nimport useT from '../utility/useT';\nimport { drawerWidth } from '../utility/useViewportWidth';\n\nconst useStyles = makeStyles((theme) => ({\n header: {\n // marginTop: theme.spacing(2),\n paddingTop: theme.spacing(1),\n // backgroundColor: theme.palette.background.paper,\n },\n select: {\n [theme.breakpoints.up('sm')]: {\n width: `calc(75vw - ${drawerWidth}px)`,\n },\n [theme.breakpoints.down('xs')]: {\n width: '65vw',\n },\n maxWidth: '400px',\n },\n}));\n\nexport default function KmSelector({ options, label, setSection, section, field, onChoose = undefined }) {\n const classes = useStyles();\n const t = useT();\n return (\n
\n
{label}:
\n
\n {\n if (onChoose && e.target.value == 'choose') onChoose();\n else\n setSection({\n ..._.pick(section, ['begin', 'end']),\n [field]: e.target.value,\n });\n }}\n className={classes.select}\n >\n {onChoose && }\n\n {options.map((x) => (\n \n ))}\n \n
\n
\n );\n}\n","import React from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\n\nconst useStyles = makeStyles((theme) => ({\n wrapper: {\n marginBottom: '5px',\n fontSize: '0.875rem',\n fontFamily: '\"Roboto\", \"Helvetica\", \"Arial\", sans-serif',\n // backgroundColor: theme.palette.background.paper,\n },\n bold: {\n fontWeight: 'bold',\n },\n}));\n\nexport default function NameValueView({ name, value, link = undefined }) {\n const classes = useStyles();\n if (!value) return null;\n return (\n
\n {name}: {link ? {value} : value}\n
\n );\n}\n","import React from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport DirectionsCarIcon from '@material-ui/icons/DirectionsCar';\nimport { isAndroid } from 'react-device-detect';\nimport MapIcon from '@material-ui/icons/Map';\nimport ChooseFromListDialog from '../ui-elements/ChooseFromListDialog';\nimport useT from '../utility/useT';\nimport TextField from '@material-ui/core/TextField';\n\nconst useStyles = makeStyles((theme) => ({\n textField: {\n marginLeft: '20px',\n },\n}));\n\nexport default function GpsDetailDialog({ dialogProps, coordinates }) {\n const t = useT();\n const classes = useStyles();\n if (!coordinates) return null;\n\n const menuItems = [\n {\n text: t('OpenGoogleMaps'),\n icon: DirectionsCarIcon,\n link: `http://maps.google.com/maps?daddr=${coordinates.latitude},${coordinates.longitude}`,\n },\n ];\n if (isAndroid) {\n menuItems.push({\n text: t('ChooseMap'),\n icon: MapIcon,\n link: `geo:${coordinates.latitude},${coordinates.longitude}`,\n });\n }\n\n return (\n \n \n \n );\n}\n","import React from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { parseGps } from '../datalayer/extractors';\nimport DirectionsCarIcon from '@material-ui/icons/DirectionsCar';\nimport Button from '@material-ui/core/Button';\nimport useStateDialog from '../utility/useStateDialog';\nimport GpsDetailDialog from './GpsDetailDialog';\n\nconst useStyles = makeStyles((theme) => ({\n bold: {\n fontWeight: 'bold',\n },\n root: {\n display: 'flex',\n alignItems: 'center',\n },\n grow: {\n flexGrow: 1,\n },\n button: {\n margin: theme.spacing(1),\n },\n}));\n\nexport function DriveToButton({ coordinates, className = undefined }) {\n const [openDialog, dialogProps] = useStateDialog();\n if (!coordinates) return null;\n\n return (\n <>\n openDialog()}\n >\n \n \n \n \n );\n}\n\nexport default function GpsView({ name, gps }) {\n const classes = useStyles();\n if (!gps) return null;\n const coordinates = parseGps(gps);\n if (!coordinates) return null;\n return (\n
\n
\n {name}: \n {Math.round(coordinates.latitude * 10000) / 10000}, {Math.round(coordinates.longitude * 10000) / 10000}\n
\n \n
\n );\n}\n","import React from 'react';\nimport useT from '../utility/useT';\nimport AsyncDataWrapper from '../ui-elements/AsyncDataWrapper';\n\nexport default function RiverDetailWrapper({ riverDetail, children }) {\n const t = useT();\n return (\n \n {children}\n \n );\n}\n","import React from 'react';\nimport _ from 'lodash';\nimport clsx from 'clsx';\nimport ListItem from '@material-ui/core/ListItem';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport Radio from '@material-ui/core/Radio';\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { extractGaugeRange } from '../datalayer/extractors';\nimport useT from '../utility/useT';\nimport useOnlineStatus from '../utility/useOnlineStatus';\nimport { rangeIntersectionLength } from '../utility/mathutil';\n\nconst useStyles = makeStyles(() => ({\n title: {\n fontSize: '1rem',\n },\n\n info: {\n fontSize: '0.875rem',\n color: 'rgba(0, 0, 0, 0.54)',\n },\n infoBlack: {\n fontSize: '0.875rem',\n },\n grow: {\n flexGrow: 1,\n },\n gaugeAvatar: {\n width: 'calc((100vw - 60px) / 5)',\n maxWidth: '100px',\n borderRight: '1px solid #aaa',\n padding: '2px',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'flex-end',\n },\n gaugeName: {\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n fontSize: '7pt',\n marginTop: '5px',\n textAlign: 'center',\n },\n avatarWrap: {\n display: 'flex',\n justifyContent: 'space-around',\n },\n gaugeSelected: {\n fontWeight: 'bold',\n color: 'blue',\n },\n fallback: {\n fontSize: '16pt',\n },\n}));\n\nfunction waterLevelImage(gauge) {\n switch (gauge.sjizdnost) {\n case '1':\n return '1_limit.gif';\n case '2':\n return '2_limit.gif';\n case '3':\n case 'B':\n case 'P':\n case 'O':\n return '3_limit.gif';\n default:\n return null;\n }\n}\n\nexport function Semaphore({ gauge, size = undefined, drawFallback = undefined, className = undefined }) {\n const classes = useStyles();\n if (gauge == null) return null;\n const image = waterLevelImage(gauge);\n if (!image) {\n if (drawFallback) return ?;\n return null;\n }\n\n return (\n \n );\n}\n\nexport default function GaugeListItem({\n gauge,\n section,\n handleClick,\n isGuide = false,\n showRadio = false,\n showChart = false,\n difficultySections = null,\n}) {\n const classes = useStyles();\n const t = useT();\n const online = useOnlineStatus();\n\n const gaugeRange = extractGaugeRange(gauge);\n\n const difficulties =\n difficultySections\n ?.filter((x) => rangeIntersectionLength(x, gaugeRange) >= 0.5)\n ?.map((x) => x.difficulty)\n ?.join(', ') || [];\n\n return (\n handleClick(gauge)}>\n {showRadio && isGuide && gauge.range.begin != null && gauge.range.end != null && (\n \n \n \n )}\n
\n
\n {gauge.od} {difficulties ? `(${difficulties})` : ''}\n
\n
\n {`${gauge.prutok} m3/s, ${gauge.vyska} cm`}{' '}\n {gauge.limit && (\n <>\n ({t('gaugeLimit')} {gauge.limit['#text']} {gauge.limit['@jednotka']}; {t('gauge')} {gauge?.vodocet})\n \n )}\n
\n
{`${gauge.datum} ${gauge.cas}:00`}
\n {showChart && gauge.graf && \"gauge\"}\n
\n \n
\n );\n}\n\nexport function GaugeAvatar({ gauge, selectedSection }) {\n const classes = useStyles();\n const { begin, end } = extractGaugeRange(gauge);\n const selected = selectedSection && selectedSection.begin == begin && selectedSection.end == end;\n return (\n
\n
\n \n
\n
{gauge.od}
\n
\n );\n}\n","import React from 'react';\nimport Typography from '@material-ui/core/Typography';\nimport IconButton from '@material-ui/core/IconButton';\nimport CloseIcon from '@material-ui/icons/Close';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport { makeStyles } from '@material-ui/core/styles';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n borderBottom: `1px solid ${theme.palette.divider}`,\n margin: 0,\n padding: theme.spacing(2),\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n buttonsWrapper: {\n // position: 'absolute',\n // right: theme.spacing(),\n // top: theme.spacing(),\n },\n closeButton: {\n color: theme.palette.grey[500],\n },\n}));\n\nexport default function CloseButtonDialogTitle({ children, onClose, headerButtons = null, id }) {\n const classes = useStyles();\n const handleClose = (e) => {\n e.stopPropagation();\n if (onClose) onClose();\n };\n return (\n \n {children}\n
\n {headerButtons}\n {onClose ? (\n \n \n \n ) : null}\n
\n
\n );\n}\n","import React from 'react';\nimport { useSnackbar } from 'notistack';\nimport useT from './useT';\nimport { useWatchPosition } from './globalState';\nimport nativeInterface from './nativeInterface';\n\nexport function handleGeolocationError(err, enqueueSnackbar, t) {\n if (err.code === err.PERMISSION_DENIED) {\n enqueueSnackbar(t('GeolocationNotPermitted'), {\n variant: 'warning',\n });\n } else {\n console.error(err);\n enqueueSnackbar(`${t('ErrorGettingLocation')}: ${err && err.message}`, {\n variant: 'error',\n });\n }\n}\n\nlet lastLocationDate = null;\nwindow['receiveNativePosition'] = (latitude, longitude) => {\n const date = new Date();\n if (lastLocationDate == null || date.getTime() - lastLocationDate.getTime() > 1000 * 30) {\n lastLocationDate = date;\n const setLocation = window['func_setLocation'];\n if (setLocation) {\n setLocation({ latitude, longitude });\n }\n }\n};\n\nexport default function useLocation(locationRequired = true) {\n const [location, setLocation] = React.useState(null);\n const { enqueueSnackbar } = useSnackbar();\n\n const watchPosition = useWatchPosition();\n\n const t = useT();\n\n React.useEffect(() => {\n if (locationRequired && watchPosition == 'true') {\n if (nativeInterface()) {\n window['func_enqueueSnackbar'] = enqueueSnackbar;\n window['func_setLocation'] = setLocation;\n lastLocationDate = null;\n nativeInterface().startWatchPosition();\n\n setLocation({ state: 'pending' });\n return () => {\n window['func_enqueueSnackbar'] = null;\n window['func_setLocation'] = null;\n lastLocationDate = null;\n nativeInterface().stopWatchPosition();\n };\n } else if (navigator.geolocation) {\n var locationOptions = {\n enableHighAccuracy: true,\n timeout: 30000,\n maximumAge: 30000,\n };\n\n const watchId = navigator.geolocation.watchPosition(receivePosition, onError, locationOptions);\n\n setLocation({ state: 'pending' });\n return () => {\n navigator.geolocation.clearWatch(watchId);\n };\n } else {\n setLocation(null);\n }\n } else {\n setLocation(null);\n }\n }, [locationRequired, watchPosition]);\n\n const receivePosition = (position) => {\n const { latitude, longitude } = position.coords;\n\n setLocation({ latitude, longitude });\n };\n\n const onError = (err) => {\n handleGeolocationError(err, enqueueSnackbar, t);\n setLocation({});\n };\n\n return location;\n}\n","import _ from 'lodash';\nimport React from 'react';\nimport Dialog from '@material-ui/core/Dialog';\nimport Avatar from '@material-ui/core/Avatar';\nimport TextField from '@material-ui/core/TextField';\nimport FormGroup from '@material-ui/core/FormGroup';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport Button from '@material-ui/core/Button';\nimport Typography from '@material-ui/core/Typography';\nimport useReactRouter from 'use-react-router';\nimport { Trans } from 'react-i18next';\nimport { useSnackbar } from 'notistack';\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport IconButton from '@material-ui/core/IconButton';\nimport CloseIcon from '@material-ui/icons/Close';\nimport { addCurrentLocationToGuide, guideHasGps } from '../datalayer/guideGps';\nimport { roundKm } from '../utility/mathutil';\n\nimport withMobileDialog from '@material-ui/core/withMobileDialog';\nimport CloseButtonDialogTitle from '../ui-elements/CloseButtonDialogTitle';\nimport useT from '../utility/useT';\n\nimport Camera, { FACING_MODES, IMAGE_TYPES } from 'react-html5-camera-photo';\nimport 'react-html5-camera-photo/build/css/index.css';\nimport { sendFeedback } from '../datalayer/api';\nimport { extractRkmKm, extractRiverId, extractRiverGuide } from '../datalayer/extractors';\nimport useLocation from '../utility/useLocation';\nimport nativeInterface from '../utility/nativeInterface';\nimport LoadingInfo from '../ui-elements/LoadingInfo';\n\nconst useStyles = makeStyles((theme) => ({\n wrapper: {\n margin: theme.spacing(2),\n // backgroundColor: theme.palette.background.paper,\n },\n photo: {\n maxWidth: '40vmin',\n maxHeight: '40vmin',\n margin: theme.spacing(1),\n },\n field: {\n // margin: theme.spacing.unit,\n marginLeft: theme.spacing(1),\n marginBottom: theme.spacing(1),\n marginRight: theme.spacing(1),\n },\n inputLabel: {\n marginTop: theme.spacing(1),\n marginLeft: theme.spacing(1),\n marginRight: theme.spacing(1),\n },\n button: {\n margin: theme.spacing(1),\n },\n photoWrapper: {\n position: 'relative',\n },\n deleteButton: {\n position: 'absolute',\n top: 0,\n right: 0,\n },\n closeButton: {\n position: 'absolute',\n right: theme.spacing(1),\n top: theme.spacing(1),\n },\n displayNone: {\n display: 'none',\n },\n}));\n\nfunction FeedbackDialog({ onClose = undefined, riverDetail, rkmDetail = undefined, open = undefined, ...other }) {\n const classes = useStyles();\n const t = useT();\n const [popis, setPopis] = React.useState('');\n const [autor, setAutor] = React.useState('');\n const [rkm, setRkm] = React.useState('');\n const { enqueueSnackbar } = useSnackbar();\n React.useEffect(() => setRkm(extractRkmKm(rkmDetail)), [rkmDetail]);\n const ID_reky = extractRiverId(riverDetail);\n\n const location = useLocation(open);\n\n const currentRkm = React.useMemo(() => {\n if (open && !rkmDetail && location && location.latitude && location.longitude) {\n let guide = extractRiverGuide(riverDetail);\n if (guideHasGps(guide)) {\n guide = addCurrentLocationToGuide(guide, location);\n const current = guide.find((x) => x.currentLocation);\n if (current) return roundKm(current.rkm).toString();\n }\n }\n return null;\n }, [riverDetail, location, rkmDetail]);\n\n React.useEffect(() => {\n if (currentRkm != null) setRkm(currentRkm);\n }, [currentRkm]);\n\n React.useEffect(() => {\n const native = nativeInterface();\n if (open && native && native.requestCamera) native.requestCamera();\n }, [open]);\n\n function handleClose() {\n onClose();\n }\n\n const { history } = useReactRouter();\n\n const openCamera = () =>\n history.push(history.location.pathname, {\n ...history.location.state,\n cameraIsOpen: true,\n });\n\n const cameraIsOpen = history.location.state && history.location.state.cameraIsOpen;\n\n const [imageUrls, setImageUrls] = React.useState([]);\n const [isUploading, setIsUploading] = React.useState(false);\n\n const handleSendFeedback = async () => {\n try {\n setIsUploading(true);\n const res = await sendFeedback({\n autor,\n popis,\n rkm,\n ID_reky,\n imageUrls,\n gps: location && location.latitude && location.longitude ? `${location.latitude},${location.longitude}` : null,\n });\n if (res.state == 'ok') {\n enqueueSnackbar(t('FeedbackSentOk', { count: res.images || 0 }), { variant: 'info' });\n handleClose();\n } else {\n enqueueSnackbar(res.message || t('FeedbackSendingFail'), { variant: 'error' });\n }\n } catch (err) {\n enqueueSnackbar(err.message, { variant: 'error' });\n } finally {\n setIsUploading(false);\n }\n };\n\n const inputFileRef = React.useRef(null);\n\n return (\n // @ts-ignore\n <>\n \n \n {t('SendFeedback')}\n \n {isUploading ? (\n \n ) : (\n <>\n \n {t('Description')}\n setPopis(e.target.value)} />\n \n \n {t('Author')}\n setAutor(e.target.value)} />\n \n {!rkmDetail && (\n \n {t('RiverKm')}\n setRkm(e.target.value)} />\n \n )}\n \n \n {imageUrls.length > 0 ? t('Photo') : t('WithoutPhoto')}\n \n {imageUrls.map((imageUrl) => (\n
\n \n
\n setImageUrls((value) => value.filter((x) => x != imageUrl))}>\n \n \n
\n
\n ))}\n
\n \n {\n const native = nativeInterface();\n\n if (native) {\n if (native.showUploadDialog) {\n window['receiveUploadedData'] = (data) => setImageUrls((value) => [...value, data]);\n native.showUploadDialog();\n } else {\n enqueueSnackbar('Please upgrade app from android store', { variant: 'error' });\n }\n } else {\n inputFileRef.current.click();\n }\n }}\n >\n UploadPhoto\n \n {\n const dialog = e1.target;\n if (dialog.files && dialog.files[0]) {\n const reader = new FileReader();\n reader.onload = (e2) => {\n setImageUrls((value) => [...value, e2.target.result]);\n };\n reader.readAsDataURL(dialog.files[0]);\n }\n }}\n />\n \n \n )}\n
\n history.goBack()}\n aria-labelledby=\"camera-dialog-title\"\n open={open && cameraIsOpen}\n fullScreen\n >\n {\n setImageUrls((value) => [...value, dataUri]);\n history.goBack();\n }}\n idealFacingMode={FACING_MODES.ENVIRONMENT}\n isImageMirror={false}\n imageType={IMAGE_TYPES.JPG}\n idealResolution={{ width: 1200, height: 900 }}\n />\n history.goBack()} className={classes.closeButton}>\n \n \n \n \n );\n}\n\nexport default FeedbackDialog;\n// export default RkmDetailDialog;\n","import React from 'react';\nimport useReactRouter from 'use-react-router';\n\nexport default function useRouterDialog(routerStateField) {\n const { history } = useReactRouter();\n\n const setOpen = (value) =>\n history.push(history.location.pathname, {\n ...history.location.state,\n [`${routerStateField}_dialogIsOpen`]: value,\n });\n\n function handleClickOpen() {\n setOpen(true);\n }\n\n const onClose = () => {\n history.goBack();\n };\n\n const open = (history.location.state && history.location.state[`${routerStateField}_dialogIsOpen`]) || false;\n\n const dialogProps = {\n open,\n onClose,\n };\n\n return [handleClickOpen, dialogProps];\n}\n","// @ts-nocheck\nimport _ from 'lodash';\nimport React from 'react';\nimport ListItem from '@material-ui/core/ListItem';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport ListItemAvatar from '@material-ui/core/ListItemAvatar';\nimport StreetviewIcon from '@material-ui/icons/Streetview';\nimport YoutubeIcon from '@material-ui/icons/YouTube';\nimport PhotoIcon from '@material-ui/icons/Photo';\nimport LocationOnIcon from '@material-ui/icons/LocationOn';\nimport { makeStyles } from '@material-ui/core/styles';\n\nimport {\n extractRkmKm,\n extractRkmDescription,\n extractRkmIconDescription,\n extractRkmIcons,\n extractPhotos,\n extractMapPoints,\n extractRkmLinks,\n} from '../datalayer/extractors';\n\nconst useStyles = makeStyles((theme) => ({\n streetviewIcon: {\n fontSize: '10pt',\n color: 'gold',\n // marginLeft: '2px',\n },\n youtubeIcon: {\n fontSize: '10pt',\n color: 'red',\n // marginLeft: '2px',\n },\n smallIcon: {\n fontSize: '10pt',\n // marginLeft: '2px',\n },\n iconsWrapper: {\n marginLeft: '5px',\n },\n}));\n\nfunction OverviewIcons({ rkmDetail, className = undefined }) {\n const isStreetView = React.useMemo(() => !!extractRkmLinks(rkmDetail).find((x) => x.typ == 'streetview'), [\n rkmDetail,\n ]);\n const isYoutube = React.useMemo(() => !!extractRkmLinks(rkmDetail).find((x) => x.typ == 'youtube'), [rkmDetail]);\n const isPhoto = React.useMemo(() => !!extractPhotos(rkmDetail).find((x) => x.photo_file), [rkmDetail]);\n const isLocation = React.useMemo(() => extractMapPoints(rkmDetail).length > 0, [rkmDetail]);\n\n const classes = useStyles();\n return (\n \n {isStreetView && }\n {isPhoto && }\n {isLocation && }\n {isYoutube && }\n \n );\n}\n\n// function itemTitle(rkmDetail) {\n// return <>{extractRkmKm(rkmDetail)} km;\n\n// // if (!location) return item.km;\n// // const { latitude, longitude } = location;\n// // if (!latitude || !longitude) return item.km;\n// // if (gps) {\n// // return `${item.km} (vzd ${Math.round(distance(latitude, longitude, gps.latitude, gps.longitude) * 10) / 10} km)`;\n// // }\n// // return item.km;\n// }\n\nexport default function RkmListItem({\n rkmDetail,\n onClick = undefined,\n useImageGuide = false,\n onContextMenu = undefined,\n}) {\n const classes = useStyles();\n const description = extractRkmDescription(rkmDetail);\n const descriptionIcon = extractRkmIconDescription(rkmDetail);\n const icons = extractRkmIcons(rkmDetail);\n if (useImageGuide) {\n return (\n \n \n
{extractRkmKm(rkmDetail)}
\n\n
\n \n
\n
\n\n
\n \n );\n }\n return (\n \n \n {icons.map((icon) => (\n <>\n {icon}\n
\n \n ))}\n
\n \n {extractRkmKm(rkmDetail)}\n \n \n }\n secondary={description && description.replace(/<\\/?[^>]+(>|$)/g, '')}\n />\n
\n );\n}\n","import _ from 'lodash';\nimport useReactRouter from 'use-react-router';\nimport React from 'react';\nimport Dialog from '@material-ui/core/Dialog';\nimport List from '@material-ui/core/List';\nimport RkmListItem from './RkmListItem';\nimport AppLayout from '../layout/AppLayout';\nimport LoadingInfo from '../ui-elements/LoadingInfo';\nimport useT from '../utility/useT';\n\nfunction RiverGuideDialogPage({ title, onClose = undefined, guide, onChoose }) {\n const t = useT();\n const [visible, setVisible] = React.useState(false);\n\n React.useEffect(() => {\n window.setTimeout(() => setVisible(true), 1);\n }, []);\n\n return (\n \n {!visible && }\n {visible && (\n \n {guide.map((item) => (\n {\n onChoose(item);\n if (onClose) onClose();\n }}\n />\n ))}\n \n )}\n \n );\n}\n\nexport default function RiverGuideDialog({ title, onClose = undefined, open = false, guide, riverDetail, onChoose }) {\n const { history } = useReactRouter();\n React.useEffect(() => {\n if (open && !guide) history.goBack();\n }, []);\n\n return (\n \n {open && }\n \n );\n}\n","import React from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\n\nconst useStyles = makeStyles((theme) => ({\n rkm: {\n display: 'flex',\n position: 'relative',\n top: '-25px',\n height: '20px',\n marginLeft: '5px',\n marginRight: '5px',\n },\n river: {\n display: 'flex',\n justifyContent: 'flex-end',\n position: 'relative',\n top: '-20px',\n height: '0px',\n marginLeft: '5px',\n marginRight: '5px',\n },\n}));\n\nexport default function AvatarBar({ children, usage }) {\n const classes = useStyles();\n return
{children}
;\n}\n","import React from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Avatar from '@material-ui/core/Avatar';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n marginLeft: '5px',\n marginRight: '5px',\n },\n}));\n\nexport default function AvatarButton({ Icon, onClick, color = undefined }) {\n const classes = useStyles();\n return (\n
\n \n \n \n
\n );\n}\n","import React from 'react';\nimport _ from 'lodash';\nimport AppLayout from '../layout/AppLayout';\nimport useReactRouter from 'use-react-router';\nimport { useRiverDetail, useCountryGauges } from '../datalayer/api';\nimport {\n extractRiverName,\n extractFullRiverSection,\n extractRiverBegins,\n extractRiverEnds,\n extractDifficultyCoverage,\n extractRiverSemaphoreByRiver,\n extractIdZeme,\n extractRiverSectionsBySemaphore,\n extractArticleCount,\n extractLogCount,\n extractCommentCount,\n extractRiverArticles,\n extractRiverLogs,\n extractRiverComments,\n extractRiverGuide,\n extractMapPointsFromGuide,\n extractRkmKm,\n extractRiverImage,\n extractKnownSections,\n parseGauges,\n} from '../datalayer/extractors';\nimport { useSelectedSection, useSetSelectedSection } from '../utility/globalState';\nimport { makeStyles, useTheme } from '@material-ui/core/styles';\nimport KmSelector from '../ui-elements/KmSelector';\nimport NameValueView from '../ui-elements/NameValueView';\nimport { roundKm } from '../utility/mathutil';\nimport MapIcon from '@material-ui/icons/Map';\nimport EditIcon from '@material-ui/icons/Edit';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport CommentIcon from '@material-ui/icons/Comment';\nimport CreateIcon from '@material-ui/icons/Create';\nimport ListIcon from '@material-ui/icons/List';\nimport TextFieldsIcon from '@material-ui/icons/TextFields';\nimport KeyboardTabIcon from '@material-ui/icons/KeyboardTab';\nimport DirectionsBoatIcon from '@material-ui/icons/DirectionsBoat';\nimport InfoIcon from '@material-ui/icons/Info';\nimport ShowChartIcon from '@material-ui/icons/ShowChart';\nimport { findNearestCoordinates } from '../datalayer/guideGps';\nimport { DriveToButton } from '../rkmdetail/GpsView';\nimport localforage from 'localforage';\nimport RiverDetailWrapper from './RiverDetailWrapper';\nimport useT from '../utility/useT';\nimport { GaugeAvatar } from './GaugeListItem';\nimport Chip from '@material-ui/core/Chip';\nimport { Trans } from 'react-i18next';\nimport FeedbackDialog from '../feedback/FeedbackDialog';\nimport useRouterDialog from '../utility/useRouterDialog';\nimport RiverGuideDialog from './RiverGuideDialog';\nimport AvatarBar from '../ui-elements/AvatarBar';\nimport AvatarButton from '../ui-elements/AvatarButton';\nimport { useSnackbar } from 'notistack';\nimport useOnlineStatus from '../utility/useOnlineStatus';\nimport { drawerWidth } from '../utility/useViewportWidth';\n\nconst useStyles = makeStyles((theme) => ({\n wrapper: {\n margin: theme.spacing(2),\n // backgroundColor: theme.palette.background.paper,\n },\n header: {\n //padding: theme.spacing(2),\n fontSize: '1.3rem',\n // backgroundColor: theme.palette.background.paper,\n },\n root: {\n position: 'relative',\n },\n paper: {\n backgroundColor: '#CCD',\n paddingTop: '5px',\n // paddingTop: theme.spacing(1),\n },\n paperInner: {\n backgroundColor: '#EEE',\n display: 'flex',\n padding: '10px 0',\n },\n paperInnerButton: {\n backgroundColor: '#EEE',\n display: 'flex',\n padding: '10px 0',\n\n cursor: 'pointer',\n '&:hover': {\n // @ts-ignore\n backgroundColor: '#DDD',\n },\n // paddingTop: theme.spacing(1),\n },\n iconWrapper: {\n marginLeft: theme.spacing(2),\n marginTop: 'auto',\n marginBottom: 'auto',\n // margin: 'auto 10px',\n // marginRight: '20px',\n },\n itemBodyWrapper: {\n marginLeft: theme.spacing(2),\n },\n selectedSectionBody: {\n marginTop: theme.spacing(2),\n },\n kmSelectorWrap: {\n display: 'flex',\n marginBottom: theme.spacing(2),\n\n // justifyContent: 'space-between',\n // [theme.breakpoints.up('sm')]: {\n // width: `calc(90vw - ${drawerWidth}px)`,\n // },\n // [theme.breakpoints.down('xs')]: {\n // width: '90vw',\n // },\n },\n driveToButton: {\n marginLeft: '10px',\n },\n sectionList: {\n display: 'flex',\n // border: '1px solid #aaa',\n paddingTop: '5px',\n // paddingLeft: 0,\n },\n bold: {\n fontWeight: 'bold',\n },\n headerImage: {\n backgroundImage: `url(\"${process.env.REACT_APP_ROUTE_BASE}/images/feature.jpg\")`,\n backgroundRepeat: 'no-repeat',\n backgroundSize: 'cover',\n backgroundPosition: 'center',\n width: '100%',\n height: '160px',\n },\n}));\n\nfunction enrichKmOptions(options, km) {\n if (!_.find(options, (x) => x.km == km)) {\n return _.sortBy([...options, { km, name: '' }], (x) => -x.km);\n }\n return options;\n}\n\nfunction OverviewSectionDesign({\n title,\n children = undefined,\n pathBase = undefined,\n page = undefined,\n Icon = undefined,\n button = false,\n}) {\n const classes = useStyles();\n const { history } = useReactRouter();\n const handleClick = () => {\n if (page) {\n history.push(`${pathBase}/${page}`);\n }\n };\n return (\n // \n // {Icon && (\n // \n // \n // \n // )}\n // {children}\n // \n
\n
\n {Icon && (\n
\n \n
\n )}\n
\n
{title}
\n {children}\n
\n
\n
\n );\n}\n\nfunction SelectedSectionOverview({ ID_reky, riverDetail }) {\n const classes = useStyles();\n const t = useT();\n const begins = extractRiverBegins(riverDetail, t);\n const ends = extractRiverEnds(riverDetail, t);\n const section = useSelectedSection(ID_reky);\n const setSection = useSetSelectedSection(ID_reky);\n const coverage = extractDifficultyCoverage(riverDetail, section);\n const [openGuideDialog, guideDialogProps] = useRouterDialog('guideDialog');\n const [openedGuide, setOpenedGuide] = React.useState(null);\n const [chooseGuideField, setChooseGuideField] = React.useState(null);\n\n const wholeRiver = React.useMemo(() => extractFullRiverSection(riverDetail), [riverDetail]);\n\n React.useEffect(() => {\n // @ts-ignore\n if (section.begin == 0 && section.end == 0) {\n setSection(extractFullRiverSection(riverDetail));\n }\n }, [riverDetail]);\n\n const beginCoordinates = React.useMemo(() => findNearestCoordinates(riverDetail, section.begin, 'zacatek'), [\n riverDetail,\n section.begin,\n ]);\n const endCoordinates = React.useMemo(() => findNearestCoordinates(riverDetail, section.end, 'konec'), [\n riverDetail,\n section.end,\n ]);\n\n return (\n \n {t('SelectedSection')}{' '}\n {section && section.begin == wholeRiver.begin && section.end == wholeRiver.end ? (\n \n ) : (\n setSection(wholeRiver)} />\n )}\n \n }\n >\n
\n
\n x.km == null || x.km > section.end),\n section.begin\n )}\n label={t('Begin')}\n section={section}\n setSection={setSection}\n field=\"begin\"\n onChoose={() => {\n const guide = extractRiverGuide(riverDetail).filter((x) => extractRkmKm(x) > section.end);\n setOpenedGuide(guide);\n setChooseGuideField('begin');\n // @ts-ignore\n openGuideDialog();\n }}\n />\n \n
\n
\n x.km == null || x.km < section.begin),\n section.end\n )}\n label={t('End')}\n section={section}\n setSection={setSection}\n field=\"end\"\n onChoose={() => {\n const guide = extractRiverGuide(riverDetail).filter((x) => extractRkmKm(x) < section.begin);\n setOpenedGuide(guide);\n setChooseGuideField('end');\n // @ts-ignore\n openGuideDialog();\n }}\n />\n \n
\n\n \n {_.keys(coverage).map((difficulty) => (\n \n ))}\n
\n {\n setSection({\n ..._.pick(section, ['begin', 'end']),\n [chooseGuideField]: extractRkmKm(rkm),\n });\n }}\n />\n \n );\n}\n\nfunction getSectionTitle(section, riverDetail, t) {\n const full = extractFullRiverSection(riverDetail);\n if (section.begin == full.begin && section.end == full.end) {\n return t('WholeRiver');\n }\n const begins = extractRiverBegins(riverDetail, t);\n const ends = extractRiverBegins(riverDetail, t);\n\n const begin = begins.find((x) => x.km == section.begin);\n const end = ends.find((x) => x.km == section.end);\n\n return [\n (begin && begin.name) || `km ${roundKm(section.begin)}`,\n (end && end.name) || `km ${roundKm(section.end)}`,\n ].join(' - ');\n}\n\nfunction AdditionalInfoSummary({ title, page, pathBase, icon, riverDetail, extractCount, extractItems }) {\n const count = extractCount(riverDetail);\n if (count > 0) {\n return (\n \n ItemCountDownloaded: {extractItems(riverDetail).length}, ItemCountTotal: {count}\n \n );\n }\n return null;\n}\n\nexport function RiverDetailCore({ ID_reky, riverDetail, pathBase, openFeedback, removeFromOffline }) {\n const section = useSelectedSection(ID_reky);\n const setSection = useSetSelectedSection(ID_reky);\n const { history } = useReactRouter();\n const classes = useStyles();\n const t = useT();\n const countryGauges = useCountryGauges(extractIdZeme(riverDetail));\n const sectionsBySemaphore = extractRiverSectionsBySemaphore(countryGauges, ID_reky);\n const online = useOnlineStatus();\n\n const sectionTitle = React.useMemo(() => getSectionTitle(section, riverDetail, t), [section, riverDetail]);\n const guide = React.useMemo(() => extractRiverGuide(riverDetail, section), [riverDetail, section]);\n const fullGuide = extractRiverGuide(riverDetail);\n const isGuide = fullGuide.length > 0;\n const mapPoints = React.useMemo(() => extractMapPointsFromGuide(guide), [guide]);\n\n const riverImage = React.useMemo(() => extractRiverImage(riverDetail), [riverDetail]);\n\n const theme = useTheme();\n\n return (\n
\n
\n \n
\n\n \n {online && }\n {online && }\n \n\n {isGuide && (\n \n {sectionTitle}\n \n )}\n {mapPoints.length > 0 && (\n \n {sectionTitle}\n \n )}\n \n
{t('ByDifficulty')}
\n {section && section.difficultySectionName && (\n
{section.difficultySectionName}
\n )}\n
\n {sectionsBySemaphore.length > 0 && (\n \n
{t('ByWaterLevel')}
\n {\n
\n {sectionsBySemaphore.map((gauge) => (\n \n ))}\n
\n }\n
\n )}\n {isGuide && }\n \n \n \n \n \n
\n );\n}\n\nexport default function RiverDetailPage() {\n const { history, match } = useReactRouter();\n const { ID_reky } = match.params;\n const t = useT();\n const [openFeedback, feedbackDialogProps] = useRouterDialog('feedbackDetail');\n const { enqueueSnackbar } = useSnackbar();\n const online = useOnlineStatus();\n\n const riverDetail = useRiverDetail(ID_reky);\n const pathBase = `/river/${ID_reky}`;\n const name = extractRiverName(riverDetail);\n\n const handleRemoveFromOffline = async () => {\n const keys = await localforage.keys();\n for (const key of keys) {\n const m = key.match(/(river|gauge)-..-(\\d+)/);\n if (m && m[2] == ID_reky) await localforage.removeItem(key);\n }\n enqueueSnackbar(t('RiverRemovedFromOffline'), { variant: 'warning' });\n // await localforage.removeItem(`river-${ID_reky}`);\n // await localforage.removeItem(`gauge-${ID_reky}`);\n history.goBack();\n };\n\n const subMenuItems = [];\n\n if (online) {\n subMenuItems.push(\n {\n label: t('RemoveFromOffline'),\n handler: handleRemoveFromOffline,\n },\n {\n label: t('SendFeedback'),\n handler: openFeedback,\n }\n );\n }\n\n return (\n \n \n \n \n \n \n );\n}\n","import _ from 'lodash';\nimport React from 'react';\nimport useReactRouter from 'use-react-router';\nimport { getSearchValue } from './SearchField';\n\nexport default function NativeRouterSearchField({ routerStateField, onRunFilter, className, placeholder }) {\n const { history } = useReactRouter();\n\n const search = (history.location && history.location.state && history.location.state[routerStateField]) || '';\n\n const setSearch = (value) => {\n if (search) {\n if (value) history.replace(history.location.pathname, { ...history.location.state, [routerStateField]: value });\n else history.goBack();\n } else {\n if (value) history.push(history.location.pathname, { ...history.location.state, [routerStateField]: value });\n }\n };\n\n const setDebouncedFilter = React.useRef(\n // @ts-ignore\n _.debounce((value) => onRunFilter(value), 500)\n );\n\n React.useEffect(() => {\n setDebouncedFilter.current(search);\n if (!search) onRunFilter(search);\n }, [search]);\n\n const applyFilter = () => {\n onRunFilter(search);\n };\n const clearFilter = () => {\n history.goBack();\n onRunFilter('');\n };\n\n return (\n {\n setSearch(e.target.value);\n // onRunFilter(e.target.value);\n // setDebouncedFilter.current(e.target.value);\n }}\n onKeyPress={(e) => {\n if (e.key === 'Enter') applyFilter();\n }}\n onKeyDown={(e) => {\n if (e.key === 'Escape') clearFilter();\n }}\n autoComplete=\"off\"\n />\n );\n}\n","import Alert from '@material-ui/lab/Alert';\nimport AlertTitle from '@material-ui/lab/AlertTitle';\nimport React from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { Trans } from 'react-i18next';\n\nconst useStyles = makeStyles((theme) => ({\n wrapper: {\n margin: theme.spacing(2),\n // backgroundColor: theme.palette.background.paper,\n },\n}));\n\nexport default function InfoBox({ title = undefined, onClose = undefined, message }) {\n const classes = useStyles();\n return (\n
\n \n {title}\n {message}\n \n
\n );\n}\n","import React from 'react';\nimport AppLayout from '../layout/AppLayout';\nimport Grid from '@material-ui/core/Grid';\nimport useReactRouter from 'use-react-router';\nimport _ from 'lodash';\nimport { useRiverDb } from '../datalayer/api';\nimport LoadingInfo from '../ui-elements/LoadingInfo';\nimport ErrorInfo, { extractErrorMessage } from '../ui-elements/ErrorInfo';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Flag from '../icons/Flag';\nimport NativeRouterSearchField from '../ui-elements/NativeRouterSearchField';\nimport { getSearchValue } from '../ui-elements/SearchField';\nimport RiverList from '../riverlist/RiverList';\nimport containsText from '../utility/containsText';\nimport useT from '../utility/useT';\nimport InfoBox from '../ui-elements/InfoBox';\nimport { useSetWarrantyClosed, useWarrantyClosed } from '../utility/globalState';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n backgroundImage: `url(\"${process.env.REACT_APP_ROUTE_BASE}/images/homebg.jpg\")`,\n backgroundRepeat: 'no-repeat',\n backgroundAttachment: 'fixed',\n backgroundSize: 'cover',\n backgroundPosition: 'center',\n minHeight: '100vh',\n },\n tileWrapper: {\n position: 'relative',\n height: '120px',\n },\n tileBackground: {\n position: 'absolute',\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n // color: 'white',\n margin: '2px',\n // @ts-ignore\n backgroundColor: theme.tileBackgroundColor,\n // @ts-ignore\n opacity: theme.tileBackgroundOpacity,\n // backgroundColor: '#22223377',\n\n // border: '1px solid #555'\n },\n tileContent: {\n position: 'absolute',\n display: 'flex',\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n cursor: 'pointer',\n '&:hover': {\n // @ts-ignore\n backgroundColor: theme.tileBackgroundColor,\n },\n },\n tileInner: {\n margin: 'auto',\n textAlign: 'center',\n flex: 1,\n },\n searchbox: {\n fontSize: '1rem',\n padding: '15px',\n backgroundColor: '#FFFFFFCC',\n width: '70vw',\n // margin: '0 15vw',\n outline: 'none',\n border: '0px solid',\n borderRadius: '10px',\n },\n searchboxWrapper: {\n padding: '5vh 0px',\n display: 'flex',\n justifyContent: 'space-around',\n },\n searchResultWrapper: {\n // @ts-ignore\n backgroundColor: theme.tileBackgroundColor,\n // @ts-ignore\n opacity: theme.tileBackgroundOpacity,\n },\n counts: {\n // whiteSpace: 'nowrap',\n // overflow: 'hidden',\n // textOverflow: 'ellipsis',\n // margin: '0px 5px',\n }\n}));\n\nfunction CountryTile({ country }) {\n const classes = useStyles();\n const { history } = useReactRouter();\n const t = useT();\n\n return (\n history.push(`/country/${country.ID_zeme}`)}>\n
\n
\n
\n
\n \n
{country.Nazev}
\n {/* {country.riverCount}\n {country.creekCount} */}\n
\n {_.compact([\n country.riverCount > 0 ? `${t('rivers')}: ${country.riverCount}` : null,\n country.creekCount > 0 ? `${t('creeks')}: ${country.creekCount}` : null,\n // country.channelCount > 0 ? `${t('channels')}: ${country.channelCount}` : null,\n ]).join(', ')}\n
\n
\n
\n
\n
\n );\n}\n\nexport default function CountryListPage() {\n const classes = useStyles();\n const { history } = useReactRouter();\n const { Staty, Reky: rivers, state, error } = useRiverDb();\n const warrantyClosed = useWarrantyClosed();\n const setWarrantyClosed = useSetWarrantyClosed();\n const countries = Staty.map((x) => ({\n ...x,\n riverCount: rivers.filter((river) => river.ID_zeme == x.ID_zeme && river.Reka == 1).length,\n creekCount: rivers.filter((river) => river.ID_zeme == x.ID_zeme && river.Reka == 0).length,\n channelCount: rivers.filter((river) => river.ID_zeme == x.ID_zeme && river.Reka == 2).length,\n })).filter((x) => x.riverCount > 0 || x.creekCount > 0 || x.channelCount > 0);\n const t = useT();\n\n const [filter, setFilter] = React.useState(getSearchValue(history, 'homepage'));\n\n const handleRunFilter = (filter) => {\n setFilter(filter);\n };\n\n return (\n \n {state == 'pending' ? (\n \n ) : state == 'rejected' ? (\n \n ) : (\n
\n
\n \n
\n {warrantyClosed == 'false' && (\n setWarrantyClosed('true')} />\n )}\n {filter ? (\n
\n containsText(filter, river.Nazev))} countries={Staty} />\n
\n ) : (\n \n {countries.map((country) => (\n \n ))}\n \n )}\n
\n )}\n
\n );\n}\n","import _ from 'lodash';\nimport React from 'react';\nimport AppLayout from '../layout/AppLayout';\nimport Button from '@material-ui/core/Button';\nimport List from '@material-ui/core/List';\nimport ListItem from '@material-ui/core/ListItem';\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport Paper from '@material-ui/core/Paper';\nimport localforage from 'localforage';\nimport useReactRouter from 'use-react-router';\nimport RiverList from '../riverlist/RiverList';\nimport { useRiverDb } from '../datalayer/api';\nimport useLanguage from '../utility/useLanguage';\nimport useT from '../utility/useT';\n\nexport default function OfflineDataPage() {\n const { history, match } = useReactRouter();\n\n const [cachedRivers, setCachedRivers] = React.useState([]);\n const [reloadCounter, setReloadCounter] = React.useState(0);\n const language = useLanguage();\n const t = useT();\n\n const { Staty, Reky } = useRiverDb();\n const { ID_zeme } = match.params;\n\n async function handleLoadOfflineKeys() {\n const keys = await localforage.keys();\n const riverIdList = keys\n .map((x) => x.match(`river-${language}-(\\\\d+)`))\n .filter((x) => x)\n .map((x) => parseInt(x[1]));\n\n setCachedRivers(Reky.filter((x) => riverIdList.includes(x.ID_reky)));\n }\n\n React.useEffect(() => {\n handleLoadOfflineKeys();\n }, [reloadCounter, language, Reky]);\n\n function handleClearOffline() {\n localforage.clear();\n setReloadCounter((x) => x + 1);\n }\n\n const subMenuItems = [];\n\n subMenuItems.push({\n label: t('EraseOfflineData'),\n handler: handleClearOffline,\n });\n\n return (\n \n \n \n );\n}\n","import React from 'react';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport Button from '@material-ui/core/Button';\nimport ListItem from '@material-ui/core/ListItem';\nimport List from '@material-ui/core/List';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\nimport Dialog from '@material-ui/core/Dialog';\nimport Link from '@material-ui/core/Link';\nimport ListItemAvatar from '@material-ui/core/ListItemAvatar';\nimport Avatar from '@material-ui/core/Avatar';\nimport useT from '../utility/useT';\nimport { Trans } from 'react-i18next';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { useSetShownObjects, useShownObjects } from '../utility/globalState';\n\nconst useStyles = makeStyles(() => ({\n icon: {\n fontSize: '18pt',\n },\n}));\n\nfunction ItemImage({ name }) {\n const classes = useStyles();\n if (name == 'zacatek_konec') return ;\n if (name == '_other') return ?;\n return {name};\n}\n\nfunction Item({ title, name, shownObjects, setShownObjects }) {\n const handleClick = () => {\n setShownObjects({\n ...shownObjects,\n [name]: !shownObjects[name],\n });\n };\n\n return (\n \n \n \n \n \n \n \n );\n}\n\nfunction ObjectFilterDialog({ onClose = undefined, ...other }) {\n const t = useT();\n function handleClose() {\n onClose();\n }\n const shownObjects = useShownObjects();\n const setShownObjects = useSetShownObjects();\n\n return (\n // @ts-ignore\n \n ShowObjectsTitle\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport default ObjectFilterDialog;\n","import React from 'react';\n\nexport default function Marker({ size, color = '#00AEEF' }) {\n return (\n \n \n \n \n \n );\n}\n","import React from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport MarkerIcon from '../icons/Marker';\nimport clsx from 'clsx';\nimport MyLocationIcon from '@material-ui/icons/MyLocation';\n\nconst useStyles = makeStyles((theme) => ({\n marker: {\n position: 'absolute',\n transform: `translate(-20px, -40px)`,\n },\n currentMarker: {\n position: 'absolute',\n transform: `translate(-10px, -10px)`,\n color: 'blue',\n },\n}));\n\nexport default function Marker({\n isHighlighted = false,\n anchor = undefined,\n onClick = undefined,\n left = undefined,\n top = undefined,\n image = undefined,\n}) {\n const classes = useStyles();\n const style = {\n left,\n top,\n cursor: onClick ? 'pointer' : 'default',\n };\n\n return (\n // @ts-ignore\n
\n {image ? (\n {image}\n ) : (\n \n )}\n
\n );\n}\n\nexport function CurrentPositionMarker({ anchor = undefined, left = undefined, top = undefined }) {\n const classes = useStyles();\n\n const style = {\n left,\n top,\n };\n\n return (\n // @ts-ignore\n
\n \n
\n );\n}\n","import React from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport AppBar from '@material-ui/core/AppBar';\nimport Toolbar from '@material-ui/core/Toolbar';\nimport useDimensions from '../utility/useDimensions';\n\nconst useStyles = makeStyles((them) => ({\n root: {\n visibility: 'hidden',\n position: 'fixed',\n },\n}));\n\nexport default function AppBarMeasure({ onChangeHeight }) {\n const classes = useStyles();\n const [containerRef, { height }] = useDimensions();\n React.useEffect(() => {\n if (height > 0) {\n onChangeHeight(height);\n }\n }, [height]);\n\n return (\n
\n \n \n \n
\n );\n}\n","import { useLayoutEffect, useState, useCallback } from 'react';\nimport ResizeObserver from 'resize-observer-polyfill';\n\n// Export hook\nexport default function useDimensions(dependencies = []) {\n const [node, setNode] = useState(null);\n const ref = useCallback(newNode => {\n setNode(newNode);\n }, []);\n\n // Keep track of measurements\n const [dimensions, setDimensions] = useState({\n x: 0,\n y: 0,\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n width: 0,\n height: 0,\n });\n\n // Define measure function\n const measure = useCallback(innerNode => {\n const rect = innerNode.getBoundingClientRect();\n setDimensions({\n x: rect.left,\n y: rect.top,\n left: rect.left,\n top: rect.top,\n right: rect.right,\n bottom: rect.bottom,\n width: rect.width,\n height: rect.height,\n });\n }, []);\n\n useLayoutEffect(() => {\n if (!node) {\n return;\n }\n\n // Set initial measurements\n measure(node);\n\n // Observe resizing of element\n const resizeObserver = new ResizeObserver(() => {\n measure(node);\n });\n\n resizeObserver.observe(node);\n\n // Cleanup\n return () => {\n resizeObserver.disconnect();\n };\n }, [node, measure, ...dependencies]);\n\n return [ref, dimensions, node];\n}\n","import _ from 'lodash';\nimport React from 'react';\nimport Fab from '@material-ui/core/Fab';\nimport MyLocationIcon from '@material-ui/icons/MyLocation';\nimport LocationSearchingIcon from '@material-ui/icons/LocationSearching';\nimport LocationDisabledIcon from '@material-ui/icons/LocationDisabled';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { useWatchPosition, useSetWatchPosition } from '../utility/globalState';\n\nconst useStyles = makeStyles((theme) => ({\n fab: {\n margin: theme.spacing(1),\n position: 'fixed',\n right: '1rem',\n bottom: '1rem',\n },\n})); \n\nexport default function LocationFab({ onClickLocation, hasGps }) {\n const classes = useStyles();\n const watchPosition = useWatchPosition();\n const setWatchPosition = useSetWatchPosition();\n\n return (\n <>\n {' '}\n {hasGps && (\n \n \n \n )}\n {watchPosition == 'true' && !hasGps && (\n {\n setWatchPosition('false');\n }}\n >\n \n \n )}\n {watchPosition == 'false' && (\n {\n setWatchPosition('true');\n }}\n >\n \n \n )}\n \n );\n}\n","import React from 'react';\nimport _ from 'lodash';\nimport Map from 'pigeon-maps';\nimport Marker, { CurrentPositionMarker } from './Marker';\nimport AppBarMeasure from '../ui-elements/AppBarMeasure';\nimport useWindowSize from '../utility/useWindowSize';\nimport useViewportWidth from '../utility/useViewportWidth';\nimport useLocation from '../utility/useLocation';\nimport { makeStyles } from '@material-ui/core/styles';\nimport ErrorInfo from '../ui-elements/ErrorInfo';\nimport useT from '../utility/useT';\nimport LocationFab from './LocationFab';\n\nexport const mapProviders = {\n osm: (x, y, z) => {\n const s = String.fromCharCode(97 + ((x + y + z) % 3));\n return `https://${s}.tile.openstreetmap.org/${z}/${x}/${y}.png`;\n },\n wikimedia: (x, y, z, dpr) => {\n return `https://maps.wikimedia.org/osm-intl/${z}/${x}/${y}${dpr >= 2 ? '@2x' : ''}.png`;\n },\n mapycz: (x, y, z) => {\n return `https://mapserver.mapy.cz/base-m/${z}-${x}-${y}`;\n },\n mapycz_turist: (x, y, z) => {\n return `https://mapserver.mapy.cz/turist-m/${z}-${x}-${y}`;\n },\n mapycz_photo: (x, y, z) => {\n // return `https://mapserver.mapy.cz/bing/${z}-${x}-${y}`;\n // return google maps instead\n return `https://khms3.google.com/kh/v=917?x=${x}&y=${y}&z=${z}`;\n },\n maps_google_photo: (x, y, z) => {\n return `https://khms3.google.com/kh/v=917?x=${x}&y=${y}&z=${z}`;\n },\n};\n\nexport const mapAttribution = {\n mapycz: (\n \n \n mapy.cz\n \n \n ),\n};\n\nconst useStyles = makeStyles((theme) => ({\n currentIconWrapper: {\n margin: 'auto',\n },\n}));\n\nfunction convertPoint(point, extractPoint) {\n if (extractPoint) point = extractPoint(point);\n return [point.latitude, point.longitude];\n}\n\nfunction PointsMap({\n onClick = null,\n points = [],\n isHighlighted = null,\n extractPoint = undefined,\n onMarkerClick = undefined,\n extractImage = undefined,\n}) {\n const classes = useStyles();\n // console.log('points', points);\n // console.log('isHighlighted', isHighlighted);\n // const size = useViewportSize();\n // const coords = locations.map(location => location.coordinates);\n const [appBarHeight, setAppBarHeight] = React.useState(0);\n const winSize = useWindowSize();\n const location = useLocation();\n const width = useViewportWidth();\n const t = useT();\n\n const highlighted = isHighlighted ? points.find(isHighlighted) : undefined;\n\n const getDefaultCenter = () =>\n highlighted\n ? convertPoint(highlighted, extractPoint)\n : points.length > 0\n ? convertPoint(points[0], extractPoint)\n : [14.4248281, 50.1129869];\n\n const [center, setCenter] = React.useState(getDefaultCenter);\n const [zoom, setZoom] = React.useState(12);\n\n const handleBoundsChange = ({ center, zoom, bounds, initial }) => {\n setCenter(center);\n setZoom(zoom);\n };\n\n return width > 0 && winSize.height > 0 && points.length > 0 && appBarHeight > 0 ? (\n <>\n \n {points.map((point, index) => (\n onMarkerClick(point) : undefined}\n image={extractImage ? extractImage(point) : undefined}\n />\n ))}\n {location && location.latitude > 0 && location.longitude > 0 && (\n \n )}\n \n \n 0 && location.longitude > 0}\n onClickLocation={() => {\n setCenter([location.latitude, location.longitude]);\n }}\n />\n \n ) : (\n
\n \n \n
\n );\n}\n\nexport default PointsMap;\n","import React from 'react';\n\nexport default function Camp({ size = 30, color = 'black' }) {\n return (\n \n \n \n \n );\n}\n","import React from 'react';\nimport _ from 'lodash';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Map from 'pigeon-maps';\nimport Marker from '../maps/Marker';\nimport useViewportWidth from '../utility/useViewportWidth';\nimport { mapProviders, mapAttribution } from '../maps/PointsMap';\nimport { extractMapPoints } from '../datalayer/extractors';\nimport useStateDialog from '../utility/useStateDialog';\nimport GpsDetailDialog from './GpsDetailDialog';\nimport useOnlineStatus from '../utility/useOnlineStatus';\nimport { useDetailMapType } from '../utility/globalState';\nimport { distance } from '../utility/mathutil';\n\nconst useStyles = makeStyles((theme) => ({\n headerImage: {\n backgroundImage: `url(\"${process.env.REACT_APP_ROUTE_BASE}/images/feature.jpg\")`,\n backgroundRepeat: 'no-repeat',\n backgroundSize: 'cover',\n backgroundPosition: 'center',\n width: '100vw',\n height: '160px',\n },\n}));\n\nfunction getDefaultZoom(points, diam) {\n if (points.length == 1) return 18;\n if (points.length == 0) return 15;\n if (diam > 1) return 13;\n if (diam > 0.3) return 14;\n if (diam > 0.1) return 15;\n return 16;\n}\n\nexport default function RkmDetailMap({ rkmDetail }) {\n const { gps } = rkmDetail || {};\n const classes = useStyles();\n\n const [selectedGps, setSelectedGps] = React.useState(null);\n const [openDialog, dialogProps] = useStateDialog();\n const online = useOnlineStatus();\n const mapType = useDetailMapType();\n\n const width = useViewportWidth();\n\n const points = React.useMemo(() => extractMapPoints(rkmDetail), [rkmDetail]);\n const [center, zoom] = React.useMemo(() => {\n if (!points || points.length == 0) return [gps, 15];\n const minlat = _.minBy(points, 'gps.latitude').gps.latitude;\n const minlon = _.minBy(points, 'gps.longitude').gps.longitude;\n const maxlat = _.maxBy(points, 'gps.latitude').gps.latitude;\n const maxlon = _.maxBy(points, 'gps.longitude').gps.longitude;\n const diam = distance(minlat, minlon, maxlat, maxlon);\n return [\n {\n latitude: (minlat + maxlat) / 2,\n longitude: (minlon + maxlon) / 2,\n },\n getDefaultZoom(points, diam),\n ];\n }, [points, gps]);\n\n if (!center || !online) return
;\n if (!width) return null;\n\n return (\n <>\n \n {points.map((point, index) => (\n {\n setSelectedGps(point.gps);\n // @ts-ignore\n openDialog();\n }}\n image={point.icon}\n />\n ))}\n \n \n \n );\n}\n","import _ from 'lodash';\nimport React from 'react';\nimport Paper from '@material-ui/core/Paper';\nimport { makeStyles } from '@material-ui/core/styles';\n\nconst useStyles = makeStyles((theme) => ({\n wrapper: {\n margin: theme.spacing(1),\n // backgroundColor: theme.palette.background.paper,\n },\n}));\n\nexport default function Panel({ children }) {\n const classes = useStyles();\n return (\n
\n \n
{children}
\n
\n
\n );\n}\n","import _ from 'lodash';\nimport React from 'react';\nimport Dialog from '@material-ui/core/Dialog';\nimport { makeStyles, useTheme } from '@material-ui/core/styles';\nimport Avatar from '@material-ui/core/Avatar';\nimport StreetviewIcon from '@material-ui/icons/Streetview';\nimport YoutubeIcon from '@material-ui/icons/YouTube';\nimport EditIcon from '@material-ui/icons/Edit';\nimport useReactRouter from 'use-react-router';\nimport CloseIcon from '@material-ui/icons/Close';\nimport NavigateNextIcon from '@material-ui/icons/NavigateNext';\nimport NavigateBeforeIcon from '@material-ui/icons/NavigateBefore';\nimport NameValueView from '../ui-elements/NameValueView';\nimport List from '@material-ui/core/List';\nimport ListItem from '@material-ui/core/ListItem';\nimport { formatDistance } from '../utility/mathutil';\nimport CampIcon from '../icons/Camp';\nimport LayersIcon from '@material-ui/icons/Layers';\n\nimport withMobileDialog from '@material-ui/core/withMobileDialog';\nimport CloseButtonDialogTitle from '../ui-elements/CloseButtonDialogTitle';\nimport useT from '../utility/useT';\nimport {\n extractRkmDescription,\n extractPhotos,\n extractRkmKm,\n extractMapPoints,\n extractRiverName,\n extractRkmTitle,\n extractRiverGuide,\n extractNextRkmDetail,\n extractBeforeRkmDetail,\n extractRkmLinks,\n} from '../datalayer/extractors';\n// import CampInfoView from './CampInfoView';\nimport GpsView from './GpsView';\nimport useRouterDialog from '../utility/useRouterDialog';\nimport FeedbackDialog from '../feedback/FeedbackDialog';\nimport { Button } from '@material-ui/core';\nimport { Trans } from 'react-i18next';\nimport AppLayout from '../layout/AppLayout';\nimport RkmDetailMap from './RkmDetailMap';\nimport RkmListItem from '../riverdetail/RkmListItem';\nimport { findByLabelText } from '@testing-library/react';\nimport AvatarBar from '../ui-elements/AvatarBar';\nimport AvatarButton from '../ui-elements/AvatarButton';\nimport Panel from '../ui-elements/Panel';\nimport useOnlineStatus from '../utility/useOnlineStatus';\nimport { useSetDetailMapType } from '../utility/globalState';\n\nconst useStyles = makeStyles((theme) => ({\n wrapper: {\n margin: theme.spacing(2),\n // backgroundColor: theme.palette.background.paper,\n },\n image: {\n maxWidth: '100%',\n },\n iframe: {\n width: '100%',\n height: '100%',\n },\n closeButton: {\n position: 'absolute',\n right: theme.spacing(1),\n top: theme.spacing(1),\n },\n streetviewButton: {\n color: 'gold',\n },\n rkmSeparator: {\n color: 'gray',\n backgroundColor: '#EEE',\n marginTop: '20px',\n },\n campIconWrapper: {\n marginRight: '10px',\n },\n}));\n\nexport function CampInfoView({\n nazev,\n adresa,\n web,\n telefon,\n provoz,\n dalsi_moznosti,\n prijezd,\n gps,\n aktivity,\n ikonky_tab,\n}) {\n const classes = useStyles();\n const t = useT();\n\n if (!nazev) return null;\n\n return (\n <>\n \n \n \n {' '}\n {nazev}\n \n \n
\n \n \n \n \n \n \n \n
\n
\n \n );\n}\n\nfunction RkmDetailPage({ riverDetail, rkmDetail: rkmDetailInit = undefined }) {\n const theme = useTheme();\n const { history } = useReactRouter();\n const classes = useStyles();\n const t = useT();\n const [rkmDetail, setRkmDetail] = React.useState(rkmDetailInit);\n // const description = extractRkmDescription(rkmDetail);\n const title = React.useMemo(() => extractRkmTitle(rkmDetail), [rkmDetail]);\n const photosAll = extractPhotos(rkmDetail);\n const photos = photosAll.filter((x) => x.photo_file);\n // const km = extractRkmKm(rkmDetail);\n // const pointsNoCamps = extractMapPoints(rkmDetail, false);\n const pointsAll = extractMapPoints(rkmDetail);\n const camps = extractMapPoints(rkmDetail, true);\n // const riverName = extractRiverName(riverDetail);\n const links = extractRkmLinks(rkmDetail);\n const online = useOnlineStatus();\n const setDetailMapType = useSetDetailMapType();\n\n const [openFeedback, feedbackDialogProps] = useRouterDialog('feedbackDetail');\n\n const openLink = (link) =>\n history.push(history.location.pathname, {\n ...history.location.state,\n currentLinkUrl: link,\n });\n\n const currentLinkUrl = history.location.state && history.location.state.currentLinkUrl;\n\n //console.log()\n //theme.palette.primary.main\n\n // // const headerButtons = [];\n // const headerButtons = [\n // // @ts-ignore\n // \n // \n // ,\n // ];\n\n // if (photo_sfer) {\n // headerButtons.push(\n // \n // \n // \n // );\n // }\n\n const rkmNextDetail = React.useMemo(() => extractNextRkmDetail(extractRiverGuide(riverDetail), rkmDetail), [\n riverDetail,\n rkmDetail,\n ]);\n const rkmBeforeDetail = React.useMemo(() => extractBeforeRkmDetail(extractRiverGuide(riverDetail), rkmDetail), [\n riverDetail,\n rkmDetail,\n ]);\n\n const handleGoNext = () => {\n setRkmDetail(rkmNextDetail);\n };\n\n return (\n \n \n \n setRkmDetail(rkmBeforeDetail) : null}\n color={rkmBeforeDetail ? theme.palette.primary.main : null}\n />\n setRkmDetail(rkmNextDetail) : null}\n color={rkmNextDetail ? theme.palette.primary.main : null}\n />\n\n {online && }\n {online &&\n links.map((link) => (\n <>\n {link.typ == 'youtube' && (\n openLink(link.text)} color=\"red\" />\n )}\n {link.typ == 'streetview' && (\n openLink(link.text)} color=\"gold\" />\n )}\n \n ))}\n {online && rkmDetail && rkmDetail.gps && (\n setDetailMapType((x) => (x == 'maps_google_photo' ? 'mapycz_turist' : 'maps_google_photo'))}\n color={theme.palette.primary.main}\n />\n )}\n \n\n {camps.map((camp) => (\n \n ))}\n {/* \n
\n \n
\n\n
\n */}\n {/* */}\n {t('Description')}\n {rkmDetail && }\n\n {!online && pointsAll.length > 0 && (\n <>\n {t('GPS')}\n
\n {pointsAll.map((point) => (\n \n ))}\n
\n \n )}\n\n {online &&\n (photos || []).map((photo) => (\n <>\n {photo.photo_title}\n {photo.photo_title}\n \n ))}\n\n {rkmNextDetail && (\n \n {t('FollowsAfter')} {formatDistance(extractRkmKm(rkmDetail), extractRkmKm(rkmNextDetail))}\n \n )}\n\n {rkmNextDetail && }\n {/*
*/}\n\n \n\n history.goBack()} aria-labelledby=\"camera-dialog-title\" open={!!currentLinkUrl} fullScreen>\n {!!currentLinkUrl &&