{"version":3,"sources":["utils/backend.js","components/grade.js","components/loader.js","pages/add-crag.js","components/breadcrumb.js","components/modal-dialog.js","components/tick-rocks-logo.js","components/navbar.js","pages/add-ascent.js","pages/add-beta-video.js","pages/add-climb.js","pages/add-crag-photo.js","pages/add-image.js","utils/splines.js","components/canvas-overlay.js","hooks/useWindowSize.js","components/topo-plotter.js","pages/add-line.js","pages/add-sector.js","components/crag-component-box.js","components/page-footer.js","pages/add-comment.js","pages/remove-page.js","pages/comments.js","pages/area.js","components/ascent-type.js","components/like-vote.js","components/beta-video.js","components/drawer-dialog.js","components/edit-button.js","pages/crag/crag-grades.js","pages/crag/sectors.js","components/vote-conflict-warning.js","components/crag-banner.js","components/line-image.js","components/votes.js","pages/vote-climb-broken.js","pages/climb.js","pages/crag-list.js","pages/crag-photo.js","components/photo-grid.js","backend/useToken.js","backend/useAuthorizedFetcher.js","backend/useBackend.js","backend/useQuery.js","pages/crag/index.js","backend/useClimbs.js","pages/crags.js","components/feed.js","pages/feedpage.js","components/filter-slider.js","hooks/use-callback-ref.js","components/range-slider.js","components/mapbox-map.js","components/map-popup-portal.js","components/search-result.js","components/map-popup.js","components/search-map.js","mapbox/add-marker.js","mapbox/isochrone.js","mapbox/route-markers.js","mapbox/utils.js","utils/functions.js","components/search-results.js","utils/constants.js","pages/filter-search.js","pages/image.js","pages/landing.js","pages/line.js","pages/map.js","components/cordinate-distance-calc.js","components/icons.js","pages/sector/climb.js","pages/sector/index.js","components/user-profile-banner.js","pages/settings.js","pages/user-photos.js","pages/user-profile.js","pages/user-ticks.js","pages/vote-access-information.js","pages/vote-banner.js","pages/vote-climb-description.js","pages/vote-climb-grade.js","pages/vote-climb-name.js","pages/vote-crag-description.js","pages/vote-crag-name.js","pages/vote-rating.js","pages/vote-sector-coordinates.js","pages/vote-sector-name.js","styles/theme.js","app.js","reportWebVitals.js","components/auth0-provider.js","index.js"],"names":["useToken","useAuth0","getAccessTokenSilently","isAuthenticated","useSwr","token","data","error","fetcher","resource","process","length","fetch","then","response","status","json","authorizedFetcher","tokenHeader","Authorization","args","headers","useAuthorizedFetcher","isLoading","errorAuth","errorToken","useState","isFetching","setIsFetching","finally","useBackend","key","JSON","stringify","mutate","useCrag","cragId","crag","useSector","sectorId","sector","useClimb","climbId","climb","useImage","imageId","image","useCragPhoto","cragPhotoId","cragPhoto","useGradeSystemGrade","gradeSystemGradeId","grade","useUser","userId","user","useCurrentUser","auth0User","auth0Error","sub","useQuery","collection","query","limit","offset","method","body","useSectors","sectors","useClimbs","climbs","useImages","images","useLines","lines","useCragPhotos","cragPhotos","useComments","relatedId","comments","useGradeSystemGrades","gradeSystemGrades","countVotes","votes","countedVotes","Object","entries","reduce","count","vote","stringified","value","map","parse","sort","countA","countB","mostVoted","conflicting","totalVotes","sum","useUserVote","isLoadingUser","userVote","undefined","userVotes","filter","user_id","useAscents","ascents","useBetaVideos","betaVideos","useBackendMatchMutate","useSWRConfig","cache","matcher","Map","Error","keys","test","push","mutations","Promise","all","Grade","gradeId","as","Loader","h","maxWidth","mt","align","justify","isIndeterminate","color","AddCrag","history","useHistory","cragName","setCragName","attemptedEmptyName","setAttemptedEmptyName","margin","padding","id","isRequired","placeholder","onChange","event","target","onClick","public","replace","navigateToAddedCrag","variant","RockBreadcrumb","breadcrumbs","props","textColor","useColorModeValue","separator","ChevronRight","fontWeight","fontSize","base","sm","md","fontFamily","breadcrumb","index","link","RouterLink","to","text","px","CragBreadcrumb","extra","name_votes","useCragBreadcrumbs","SectorBreadcrumb","errorSector","crag_id","errorCrag","useSectorBreadcrumbs","ClimbBreadcrumb","errorClimb","sector_id","useClimbBreadcrumbs","ImageBreadcrumb","errorImage","useImageBreadcrumbs","ModalDialog","button","children","useDisclosure","isOpen","onOpen","onClose","preserveScrollBarGap","marginTop","py","TickRocksLogo","colorGreen","colorWhite","w","mr","newColorGreen","newColorWhite","newH","newW","newMr","xmlns","viewBox","d","fill","stroke","strokeWidth","strokeMiterlimit","NavBar","loginWithRedirect","logout","btnRef","React","useRef","useColorMode","colorMode","toggleColorMode","buttonColor","PhoneMenuItems","isLast","_hover","background","width","minWidth","pt","pb","paddingRight","paddingLeft","pl","SearchModal","searchText","setSearchText","quickSearch","useQuickSearch","errorQuickSearch","oldQuickSearch","setOldQuickSearch","useEffect","QuickSearchResults","listStyleType","maxH","overflowY","sx","borderRadius","backgroundColor","result","type","displayName","resultId","resultType","lineHeight","most_voted_grade","average_rating","rating","starRatedColor","numberOfStars","name","starEmptyColor","starDimension","starSpacing","size","colorScheme","height","Search","display","pointerEvents","border","alignSelf","isReadOnly","minW","lg","ml","MenuDrawer","Hamburger","ref","placement","direction","xs","letterSpacing","textAlign","display_name","src","appState","returnTo","window","location","pathname","cursor","position","zIndex","top","xxl","xl","pr","bg","boxShadow","bgColor","Moon","Sun","mx","href","isExternal","label","show","flexBasis","MenuButton","QuickSearchResultItem","mb","AddAscent","ascent","useParams","authError","Date","now","ascentDate","setAscentDate","ascent_date","editAscentDate","setEditAscentDate","attempts","setAttempts","editAttempts","setEditAttempts","anonymous","setAnonymous","ascentType","setAscentType","ascent_type","editAscentType","setEditAscentType","description","setDescription","editDescription","setEditDescription","backendMatchMutate","my","DatePicker","selected","alignItems","step","min","defaultValue","isChecked","climb_id","AddBetaVideo","betaVideo","videoUrl","setVideoUrl","video_url","editVideoUrl","setEditVideoUrl","timestamp","setTimestamp","editTimestamp","setEditTimestamp","youtubeVideoId","url","regExp","match","youtube_parser","attemptedWrongVideo","setAttemptedWrongVideo","like_votes","errorUserVote","voteBetaVideo","ratio","title","frameBorder","allow","video","AddClimb","errorGradeSystemGrades","climbName","setClimbName","gradeSystem","setGradeSystem","setGrade","voteClimbName","systems","Set","gradeSystemGrade","system","resolve","navigateToAddedClimb","AddCragPhoto","fetcherError","addCragPhoto","base64Image","base64_image","navigateToCrag","accept","onDrop","files","file","reject","reader","FileReader","onabort","onerror","onload","readAsDataURL","catch","console","getRootProps","getInputProps","borderColor","AddImage","addImage","LINE_COLOR","SELECTED_COLOR","calculateControlPoints","x0","y0","x1","y1","x2","y2","t","d01","Math","sqrt","pow","d12","fa","fb","p1x","p1y","p2x","p2y","x","y","drawBeizerSplines","ctx","relativePoints","lineWidth","points","point","canvas","strokeStyle","beginPath","moveTo","lineTo","controlPoints","i","concat","quadraticCurveTo","bezierCurveTo","drawMarkers","line","fontColor","font","markerColor","markerSize","fillStyle","arc","PI","textBaseline","fillText","CanvasOverlay","draw","imageLoaded","setImageLoaded","canvasRef","imageRef","windowSize","setSize","updateSize","innerWidth","innerHeight","addEventListener","removeEventListener","useWindowSize","renderCanvas","useCallback","current","getContext","getBoundingClientRect","aspectRatio","style","round","requestAnimationFrame","alt","onLoad","left","TopoPlotter","linePath","setLinePath","parsedLines","line_path_votes","clearRect","forEach","path","drawPathPoints","onMouseUp","bounds","mouseX","pageX","scrollX","mouseY","pageY","scrollY","previousPoints","AddLine","errorClimbs","setClimbId","image_id","errorLines","maxW","lineId","navigateToAddedLine","disabled","AddSector","sectorName","setSectorName","latitude","setLatitude","longitude","setLongitude","voteSectorCoordinates","coordinates","parseFloat","precision","_","navigateToAddedSector","CragComponentBox","PageFooter","flex","marginBottom","textDecor","AddComment","commentId","boxBg","comment","setComment","attemptedEmptyComment","setAttemptedEmptyComment","relatedIds","relatedType","at","m","reply","comment_id","related_id","values","related_type","all_related_ids","created","last_edited","last_activity","RemovePage","item","itemType","itemPath","removeItem","Comments","wrap","Comment","flexDirection","onToggle","IconButton","icon","ChevronDown","wordBreak","toISOString","slice","replies","Reply","in","animateOpacity","Area","headingColor","headingShadow","minHeight","maxHeight","layers","amount","textShadow","bottom","flexWrap","Add","AscentType","closeDelay","hasArrow","boxSize","LikeVote","voteUrl","itemId","likeVotes","setLikeVotes","likeVoteContent","BetaVideo","borderBottom","_last","isLoaded","DrawerDialog","header","footer","finalFocusRef","del","EditButton","isRound","MdEdit","CragGrades","selection","reducedGrades","a","b","itemM","numberOfClimbs","transition","SectorGrades","borderBottomRadius","flexGrow","SectorGrid","setShow","responsiveColumns","useBreakpointValue","xxs","xxxl","startingHeight","overflowX","columns","gridAutoFlow","spacing","marginLeft","marginRight","Sector","errorImages","onPointerEnter","onPointerLeave","objectFit","verticalAlign","bgImage","bgPosition","bgRepeat","bgSize","textOverflow","whiteSpace","borderTopRadius","SectorList","SectorListItem","VoteConflictWarning","anyVotes","includes","WarningTwo","CragBannerMenuButton","buttonicon","CragBannerMenuDivider","CragBannerMenu","bannerColor","CragBannerSectors","CragBanner","cragError","banner_votes","cragPhotoError","fit","justifyContent","CragFrontPageBanner","bgParallaxAmount","cragParallaxAmount","errorSectors","coordinate_votes","LineImage","selectedIndex","Array","isArray","right","Edit","Votes","countedVoteItem","maxVoteCount","max","countedVote","checkboxes","setCheckboxes","newCheckboxes","VoteClimbBroken","broken_votes","climbBroken","setClimbBroken","publicVote","setPublicVote","voteClimbBroken","navigateToClimb","Climb","errorAscents","errorBetaVideos","buttonBg","countedGradeVotes","grade_votes","maxGradeVoteCount","rating_votes","ImageWithLines","xxxs","shadow","borderWidth","_expanded","_focus","description_votes","Ascents","Ascent","defaultSortAscending","linkColor","CragList","className","paddingBottom","RouteTable","sortKey","setSortKey","sortAscending","setSortAscending","gradeMap","assign","fuzzyUnifiedRank","fuzzy_unified_rank","rank","currentSortKey","currentSortAscending","climbA","climbB","sortField","TableRow","currentUserId","isTicked","ColumnHeading","SortableColumn","TriangleUp","TriangleDown","visibility","climb_type_votes","NameCell","ClimbTagIcons","RatingCell","AscentsCell","ClimbTypeCell","climbType","SectorCell","TickedCell","CragPhotoPage","currentUser","PhotoGrid","p","CragPhoto","imgId","img","checkResponseStatus","endpoint","requestOptions","get","blob","queryString","object","newObject","split","join","toLowerCase","camelToUnderscore","camelToUnderscoreObject","kwargs","options","uri","backend","useSWR","replaceLocalMutate","shouldRevalidate","promise","onMutate","Crag","errorCragPhotos","boulderClimbs","sportClimbs","traditionalClimbs","access_information_votes","overflowWrap","overflow","Crags","crags","useCrags","divider","Feed","FeedItemBox","FeedItem","FeedPage","FilterSlider","useCallbackRef","fn","dependencies","useLayoutEffect","RangeSlider","fromArray","onChangeEnd","lowerValue","setLowerValue","upperValue","setUpperValue","onChangeCallback","lowerChangeEnd","upperChangeEnd","handleLowerChangeEnd","handleUpperChangeEnd","minimum","maximum","displayFunction","pos","MapboxMap","lng","lat","zoom","onMapLoad","mapEffects","deps","mapLoaded","setMapLoaded","stylesLoaded","setStylesLoaded","mapContainer","mapboxMap","effects","mapboxgl","container","center","attributionControl","remove","on","addControl","AttributionControl","MapPopupPortal","domNode","ReactDOM","createPortal","SearchResult","MapPopup","climbIndex","setClimbIndex","nClimbs","leftArrow","rightArrow","nMoreClimbs","ChevronLeft","oldIndex","SearchMap","searchArea","setLocationCallback","setLocation","popupRoutes","setPopupRoutes","popupRef","resize","marker","Marker","draggable","setLngLat","addTo","lnglat","getLngLat","addLocationMarker","e","features","queryRenderedFeatures","feature","popupContainer","document","createElement","Popup","closeButton","geometry","setDOMContent","properties","getSource","setData","addSource","addLayer","source","paint","addSearchArea","removeLayer","removeSource","removeSearchArea","routesFeatures","layout","addRouteMarkers","grouped","climb_count","climbsToGeoJson","SearchResults","climbTypes","FilterSearch","setClimbType","drivingDistance","setDrivingDistance","drivingDistanceEnd","setDrivingDistanceEnd","linearDistance","setLinearDistance","linearDistanceEnd","setLinearDistanceEnd","gradeRange","setGradeRange","gradeRangeEnd","setGradeRangeEnd","stars","setStars","starsEnd","setStarsEnd","setAscents","ascentsEnd","setAscentsEnd","distanceType","setDistanceType","isochrone","setIsochrone","circleToPolygon","numberOfEdges","sphericalArea","setSphericalArea","handleDrivingDistanceChangeEnd","handleLinearDistanceChangeEnd","handleStarsEnd","handleAscentsEnd","fontGrades","params","paramString","useSearchClimbs","grade_ids","sliderGrades","lowerBound","upperBound","lowerFuzzyGrade","upperFuzzyGrade","getEquivalentGrades","within_polygon","minimum_average_rating","minimum_ascents","max_distance","searchClimbError","requestString","res","getIsochrone","distanceSlider","gradeArray","gap","RockImage","Landing","autoPlay","muted","loop","SignedIn","bgcolor","Line","useLine","errorLine","CalcDistance","lat1","lon1","lat2","lon2","dLat","toRad","dLon","newLat1","newLat2","sin","cos","f","atan2","toString","substr","Value","VideoIcon","newColor","climbIdsWithLines","nearbySectors","nearbySector","has","setSelectedIndex","isEmpty","onMouseMove","hasSelected","whitespace","onMouseOver","UserProfileBanner","Star","Settings","userError","setDisplayName","templateColumns","colSpan","UserPhotos","erroruser","errorphotos","UserProfile","UserTicks","table","log","VoteAccessInformation","accessInfornation","setAccessInformation","voteAccessInformation","VoteBanner","banner","setBanner","BannerVotes","voteOptions","voteBanner","voteOption","countedVotesDict","dict","VoteClimbDescription","climbDescription","setClimbDescription","inputBg","voteClimbDescription","VoteClimbGrade","setGradeId","previouslyVotedGrade","errorPreviouslyVotedGrade","mostVotedGrade","errorMostVotedGrade","voteClimbGrade","VoteClimbName","VoteCragDescription","cragDescription","setCragDescription","voteCragDescription","VoteCragName","voteCragName","VoteRating","setRating","voteRating","VoteSectorCoordinates","navigateToSector","VoteSectorName","voteSectorName","breakpoints","createBreakpoints","theme","extendTheme","config","useSystemColorMode","initialColorMode","colors","black","offwhite","brand","fonts","mono","icons","logo","App","resetCSS","exact","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","Auth0ProviderWithHistory","domain","clientId","redirectUri","origin","onRedirectCallback","audience","scope","accessToken","render","getElementById"],"mappings":"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","file":"static/js/main.e840444f.chunk.js","sourcesContent":["import { useState } from 'react'\nimport useSwr, { useSWRConfig } from 'swr'\nimport { useAuth0 } from '@auth0/auth0-react'\n\nconst useToken = () => {\n const { getAccessTokenSilently, isAuthenticated } = useAuth0()\n const { data, error } = useSwr(\n isAuthenticated ? 'token' : null,\n getAccessTokenSilently\n )\n return { token: data, error }\n}\n\nconst fetcher = (...args) => {\n const resource = `${process.env.REACT_APP_BACKEND}${args[0]}`\n return (args.length === 1 ? fetch(resource) : fetch(resource, args[1])).then(\n (response) => {\n if (response.status >= 400) {\n throw response\n }\n return response.json()\n }\n )\n}\n\nconst authorizedFetcher = (token, ...args) => {\n const tokenHeader = {\n Authorization: `Bearer ${token}`,\n }\n return fetcher(\n args[0],\n args.length === 1\n ? { headers: tokenHeader }\n : {\n ...args[1],\n headers: {\n ...(args[1].headers ? args[1].headers : {}),\n ...tokenHeader,\n },\n }\n )\n}\n\nconst autoAuthorizedFetcher = (getAccessTokenSilently, ...args) => {\n return getAccessTokenSilently().then((token) =>\n authorizedFetcher(token, ...args)\n )\n}\n\nconst useAuthorizedFetcher = () => {\n const { isAuthenticated, isLoading, error: errorAuth } = useAuth0()\n const { token, errorToken } = useToken()\n const [isFetching, setIsFetching] = useState(false)\n return {\n isLoading,\n isAuthenticated,\n authorizedFetcher: token\n ? (...args) => {\n setIsFetching(true)\n return authorizedFetcher(token, ...args).finally(() =>\n setIsFetching(false)\n )\n }\n : null,\n isFetching,\n error: errorToken || errorAuth,\n }\n}\n\nconst useBackend = (key, ...args) => {\n const { token, errorToken } = useToken()\n const { data, error, mutate } = useSwr(\n key ? [key, token, JSON.stringify(args)] : null,\n (key) =>\n token ? authorizedFetcher(token, key, ...args) : fetcher(key, ...args)\n )\n return {\n data,\n error: error || errorToken,\n mutate,\n }\n}\n\nconst useAuthorizedBackend = (key, ...args) => {\n const { token, errorToken } = useToken()\n const { data, error } = useSwr(token ? key : null, (key) =>\n authorizedFetcher(token, key, ...args)\n )\n return {\n data,\n error: error || errorToken,\n }\n}\n\nconst useCrag = (cragId) => {\n const { data: crag, error } = useBackend(cragId ? `/crags/${cragId}` : null)\n return { crag, error }\n}\n\nconst useSector = (sectorId) => {\n const { data: sector, error } = useBackend(\n sectorId ? `/sectors/${sectorId}` : null\n )\n return { sector, error }\n}\n\nconst useClimb = (climbId) => {\n const {\n data: climb,\n error,\n mutate,\n } = useBackend(climbId ? `/climbs/${climbId}` : null)\n return { climb, error, mutate }\n}\n\nconst useImage = (imageId) => {\n const { data: image, error } = useBackend(\n imageId ? `/images/${imageId}` : null\n )\n return { image, error }\n}\n\nconst useLine = (lineId) => {\n const { data: line, error } = useBackend(lineId ? `/lines/${lineId}` : null)\n return { line, error }\n}\n\nconst useCragPhoto = (cragPhotoId) => {\n const { data: cragPhoto, error } = useBackend(\n cragPhotoId ? `/crag_photos/${cragPhotoId}` : null\n )\n return { cragPhoto, error }\n}\n\nconst useGradeSystemGrade = (gradeSystemGradeId) => {\n const { data: grade, error } = useBackend(\n gradeSystemGradeId ? `/grade-system-grades/${gradeSystemGradeId}` : null\n )\n return { grade, error }\n}\n\nconst useUser = (userId) => {\n const {\n data: user,\n error,\n mutate,\n } = useBackend(userId ? `/users/${userId}` : null)\n return { user, error, mutate }\n}\n\nconst useCurrentUser = () => {\n const { user: auth0User, error: auth0Error } = useAuth0()\n const { user, error, mutate } = useUser(auth0User?.sub)\n return {\n user,\n error: auth0Error || error,\n mutate,\n }\n}\n\nconst useQuery = (collection, query, limit, offset) =>\n useBackend(\n collection && query\n ? `/${collection}/query?limit=${limit}&offset=${offset}`\n : null,\n {\n method: 'POST',\n body: JSON.stringify(query),\n }\n )\n\nconst useCrags = (query, limit = 20, offset = 0) => {\n const { data: crags, error } = useQuery('crags', query, limit, offset)\n return { crags, error }\n}\n\nconst useSectors = (query, limit = 20, offset = 0) => {\n const { data: sectors, error } = useQuery('sectors', query, limit, offset)\n return { sectors, error }\n}\n\nconst useClimbs = (query, limit = 20, offset = 0) => {\n const { data: climbs, error } = useQuery('climbs', query, limit, offset)\n return { climbs, error }\n}\n\nconst useImages = (query, limit = 20, offset = 0) => {\n const { data: images, error } = useQuery('images', query, limit, offset)\n return { images, error }\n}\n\nconst useLines = (query, limit = 20, offset = 0) => {\n const { data: lines, error } = useQuery('lines', query, limit, offset)\n return { lines, error }\n}\n\nconst useCragPhotos = (query, limit = 20, offset = 0) => {\n const { data: cragPhotos, error } = useQuery(\n 'crag_photos',\n query,\n limit,\n offset\n )\n return { cragPhotos, error }\n}\n\nconst useComments = (relatedId, limit = 20, offset = 0) => {\n const {\n data: comments,\n error,\n mutate,\n } = useBackend(\n relatedId\n ? `/comments?related_id=${relatedId}&limit=${limit}&offset=${offset}`\n : null,\n {\n method: 'GET',\n }\n )\n\n return { comments, error, mutate }\n}\n\nconst useGradeSystemGrades = () => {\n const { data: gradeSystemGrades, error } = useBackend('/grade-system-grades')\n return { gradeSystemGrades, error }\n}\n\nconst useQuickSearch = (text) => {\n const { data: quickSearch, error } = useBackend(`/quick-search?text=${text}`)\n return { quickSearch, error }\n}\n\nconst countVotes = (votes) => {\n const countedVotes = Object.entries(\n votes.reduce((count, vote) => {\n const stringified = JSON.stringify(vote.value)\n if (stringified in count) {\n count[stringified] += 1\n } else {\n count[stringified] = 1\n }\n return count\n }, {})\n ).map(([value, votes]) => ({ value: JSON.parse(value), count: votes }))\n countedVotes.sort((countA, countB) => (countA.count > countB.count ? 1 : -1))\n return countedVotes\n}\n\nconst mostVoted = (votes) =>\n !votes || votes.length === 0 ? null : countVotes(votes)[0].value\n\nconst conflicting = (votes) => {\n if (!votes || votes.length === 0) {\n return null\n } else {\n const countedVotes = countVotes(votes)\n const totalVotes = countedVotes.reduce((sum, vote) => sum + vote.count, 0)\n return countedVotes[0].count / totalVotes <= 0.75\n }\n}\n\nconst useUserVote = (votes) => {\n const { user, isLoading: isLoadingUser, error } = useAuth0()\n const isLoading = isLoadingUser || !votes\n if (isLoading || error) {\n return {\n userVote: undefined,\n error,\n }\n } else {\n const userVotes = votes.filter((vote) => vote.user_id === user?.sub)\n const userVote = userVotes && userVotes.length >= 1 ? userVotes[0] : null\n return {\n userVote,\n error,\n }\n }\n}\n\nconst useSearchClimbs = (body, params) => {\n const paramString = Object.entries(params)\n .map(([key, value]) => `${key}=${value}`)\n .join('&')\n const { data: climbs, error } = useBackend(`/search-climbs?${paramString}`, {\n method: 'POST',\n body: JSON.stringify(body),\n })\n return { climbs, error }\n}\n\nconst useAscents = (query, limit = 20, offset = 0) => {\n const { data: ascents, error } = useQuery('ascents', query, limit, offset)\n return { ascents, error }\n}\n\nconst useBetaVideos = (query, limit = 20, offset = 0) => {\n const { data: betaVideos, error } = useQuery(\n 'beta_videos',\n query,\n limit,\n offset\n )\n return { betaVideos, error }\n}\n\nfunction useBackendMatchMutate() {\n const { cache, mutate } = useSWRConfig()\n return (matcher, ...args) => {\n if (!(cache instanceof Map)) {\n throw new Error(\n 'matchMutate requires the cache provider to be a Map instance'\n )\n }\n\n const keys = []\n\n for (const key of cache.keys()) {\n if (matcher.test(key)) {\n keys.push(key)\n }\n }\n\n const mutations = keys.map((key) => mutate(key, ...args))\n return Promise.all(mutations)\n }\n}\n\nexport {\n useToken,\n fetcher,\n authorizedFetcher,\n autoAuthorizedFetcher,\n useAuthorizedFetcher,\n useBackend,\n useAuthorizedBackend,\n useCrag,\n useSector,\n useClimb,\n useImage,\n useLine,\n useCragPhoto,\n useGradeSystemGrade,\n useCrags,\n useSectors,\n useClimbs,\n useImages,\n useLines,\n useCragPhotos,\n useGradeSystemGrades,\n useUser,\n useCurrentUser,\n useQuickSearch,\n useComments,\n countVotes,\n mostVoted,\n conflicting,\n useUserVote,\n useSearchClimbs,\n useAscents,\n useBetaVideos,\n useBackendMatchMutate,\n}\n","import { Skeleton } from '@chakra-ui/react'\nimport { useGradeSystemGrade } from '../utils/backend.js'\n\nexport default function Grade({ gradeId }) {\n const { grade, error } = useGradeSystemGrade(gradeId)\n\n if (error) {\n return Failed to load grade.\n }\n\n if (grade === undefined) {\n return (\n \n ?\n \n )\n }\n\n return {grade.grade}\n}\n","import { CircularProgress, Container, Flex } from '@chakra-ui/react'\n\nexport default function Loader() {\n return (\n \n \n \n \n \n )\n}\n","import {\n Alert,\n AlertIcon,\n Button,\n Center,\n Container,\n FormControl,\n FormLabel,\n Heading,\n Input,\n Text,\n} from '@chakra-ui/react'\nimport { useState } from 'react'\nimport { useHistory } from 'react-router-dom'\nimport Loader from '../components/loader.js'\nimport { useAuthorizedFetcher } from '../utils/backend.js'\n\nexport default function AddCrag() {\n const { authorizedFetcher, isLoading, error } = useAuthorizedFetcher()\n const history = useHistory()\n const [cragName, setCragName] = useState('')\n const [attemptedEmptyName, setAttemptedEmptyName] = useState(false)\n\n const addCrag = () =>\n authorizedFetcher('/crags', {\n method: 'POST',\n body: JSON.stringify({}),\n })\n\n const voteCragName = (cragId) =>\n authorizedFetcher(`/crags/${cragId}/name_votes`, {\n method: 'POST',\n body: JSON.stringify({\n value: cragName,\n public: true,\n }),\n })\n\n const navigateToAddedCrag = (cragId) => history.replace(`/crags/${cragId}`)\n\n const handleSubmit = () => {\n if (cragName === '') {\n setAttemptedEmptyName(true)\n } else {\n setAttemptedEmptyName(false)\n addCrag().then((crag) =>\n voteCragName(crag.id).then(() => navigateToAddedCrag(crag.id))\n )\n }\n }\n\n if (error) {\n return (\n \n \n Failed to load auth token.\n \n \n )\n }\n\n if (!authorizedFetcher && !isLoading) {\n return (\n \n \n You need to login to add stuff and vote.\n \n \n )\n }\n\n if (!authorizedFetcher && isLoading) {\n return \n }\n\n return (\n \n Add crag\n \n Crag name\n setCragName(event.target.value)}\n />\n \n \n {attemptedEmptyName === true && (\n \n \n Crag name can't be empty\n \n )}\n \n )\n}\n","import { ChevronRightIcon } from '@chakra-ui/icons'\nimport {\n Box,\n Breadcrumb,\n BreadcrumbItem,\n BreadcrumbLink,\n Code,\n Tag,\n useColorModeValue,\n} from '@chakra-ui/react'\nimport { Link as RouterLink } from 'react-router-dom'\nimport {\n mostVoted,\n useClimb,\n useCrag,\n useImage,\n useSector,\n} from '../utils/backend.js'\n\nconst useCragBreadcrumbs = (cragId) => {\n const { crag, error } = useCrag(cragId)\n return {\n breadcrumbs: crag && [\n { text: mostVoted(crag.name_votes), link: `/crags/${crag.id}` },\n ],\n error: error,\n }\n}\n\nconst useSectorBreadcrumbs = (sectorId) => {\n const { sector, errorSector } = useSector(sectorId)\n const { crag, errorCrag } = useCrag(sector?.crag_id)\n return {\n breadcrumbs: crag &&\n sector && [\n { text: mostVoted(crag.name_votes), link: `/crags/${crag.id}` },\n {\n text: mostVoted(sector.name_votes),\n link: `/crags/${crag.id}/sectors/${sector.id}`,\n },\n ],\n error: errorCrag || errorSector,\n }\n}\n\nconst useClimbBreadcrumbs = (climbId) => {\n const { climb, errorClimb } = useClimb(climbId)\n const { sector, errorSector } = useSector(climb?.sector_id)\n const { crag, errorCrag } = useCrag(sector?.crag_id)\n return {\n breadcrumbs: crag &&\n sector &&\n climb && [\n { text: mostVoted(crag.name_votes), link: `/crags/${crag.id}` },\n {\n text: mostVoted(sector.name_votes),\n link: `/crags/${crag.id}/sectors/${sector.id}`,\n },\n {\n text: mostVoted(climb.name_votes),\n link: `/crags/${crag.id}/sectors/${sector.id}/climbs/${climb.id}`,\n },\n ],\n error: errorCrag || errorSector || errorClimb,\n }\n}\n\nconst useImageBreadcrumbs = (imageId) => {\n const { image, errorImage } = useImage(imageId)\n const { sector, errorSector } = useSector(image?.sector_id)\n const { crag, errorCrag } = useCrag(sector?.crag_id)\n return {\n breadcrumbs: crag &&\n sector &&\n image && [\n { text: mostVoted(crag.name_votes), link: `/crags/${crag.id}` },\n {\n text: mostVoted(sector.name_votes),\n link: `/crags/${crag.id}/sectors/${sector.id}`,\n },\n {\n text: image-id: {image.id}
,\n link: `/crags/${crag.id}/sectors/${sector.id}/images/${image.id}`,\n },\n ],\n error: errorCrag || errorSector || errorImage,\n }\n}\n\nfunction RockBreadcrumb({ breadcrumbs, ...props }) {\n const textColor = useColorModeValue('black', 'white')\n return (\n }\n fontWeight=\"normal\"\n fontSize={{ base: 'sm', sm: 'sm', md: 'md' }}\n fontFamily=\"sans-serif\"\n {...props}\n >\n {breadcrumbs.map((breadcrumb, index) => (\n \n {breadcrumb.link && index !== breadcrumbs.length - 1 ? (\n \n \n {breadcrumb.text}\n \n \n ) : (\n \n {breadcrumb.text}\n \n )}\n \n ))}\n \n )\n}\n\nfunction CragBreadcrumb({ cragId, extra, ...props }) {\n const { breadcrumbs, error } = useCragBreadcrumbs(cragId)\n\n if (breadcrumbs === undefined) {\n return ''\n }\n\n if (error) {\n return 'Unable to load breadcrumb'\n }\n\n return (\n \n )\n}\n\nfunction SectorBreadcrumb({ sectorId, extra, ...props }) {\n const { breadcrumbs, error } = useSectorBreadcrumbs(sectorId)\n\n if (breadcrumbs === undefined) {\n return ''\n }\n\n if (error) {\n return 'Unable to load breadcrumb'\n }\n\n return (\n \n )\n}\n\nfunction ClimbBreadcrumb({ climbId, extra, ...props }) {\n const { breadcrumbs, error } = useClimbBreadcrumbs(climbId)\n\n if (breadcrumbs === undefined) {\n return ''\n }\n\n if (error) {\n return 'Unable to load breadcrumb'\n }\n\n return (\n \n )\n}\n\nfunction ImageBreadcrumb({ imageId, extra, ...props }) {\n const { breadcrumbs, error } = useImageBreadcrumbs(imageId)\n\n if (breadcrumbs === undefined) {\n return ''\n }\n\n if (error) {\n return 'Unable to load breadcrumb'\n }\n\n return (\n \n )\n}\n\nexport {\n RockBreadcrumb,\n useCragBreadcrumbs,\n useSectorBreadcrumbs,\n useClimbBreadcrumbs,\n CragBreadcrumb,\n SectorBreadcrumb,\n ClimbBreadcrumb,\n ImageBreadcrumb,\n}\n","import { useDisclosure } from '@chakra-ui/hooks'\nimport {\n Box,\n Modal,\n ModalCloseButton,\n ModalContent,\n ModalOverlay,\n} from '@chakra-ui/react'\nimport React from 'react'\n\nexport default function ModalDialog({\n padding = '20px',\n button,\n children,\n ...props\n}) {\n const { isOpen, onOpen, onClose } = useDisclosure()\n return (\n <>\n {button}\n\n \n \n \n \n {children}\n \n \n >\n )\n}\n","import { Box } from '@chakra-ui/react'\n\nexport function TickRocksLogo({ colorGreen, colorWhite, h, w, mr, props }) {\n const newColorGreen = colorGreen || '#3CAB70'\n const newColorWhite = colorWhite || '#fff'\n const newH = h || '30px'\n const newW = w || '45px'\n const newMr = mr || '10px'\n return (\n \n \n \n )\n}\n","import { useAuth0 } from '@auth0/auth0-react'\nimport { useColorMode, useColorModeValue } from '@chakra-ui/color-mode'\nimport { HamburgerIcon, MoonIcon, SearchIcon, SunIcon } from '@chakra-ui/icons'\nimport {\n Avatar,\n Box,\n Button,\n Center,\n Drawer,\n DrawerBody,\n DrawerContent,\n DrawerOverlay,\n Flex,\n Heading,\n HStack,\n Input,\n InputGroup,\n InputLeftElement,\n Link,\n ListItem,\n Menu,\n MenuButton,\n MenuDivider,\n MenuItem,\n MenuList,\n Modal,\n ModalBody,\n ModalCloseButton,\n ModalContent,\n ModalHeader,\n ModalOverlay,\n show,\n Spacer,\n Tag,\n Text,\n Tooltip,\n UnorderedList,\n useDisclosure,\n Wrap,\n} from '@chakra-ui/react'\nimport React, { useEffect, useState } from 'react'\nimport { Link as RouterLink } from 'react-router-dom'\nimport StarRatings from 'react-star-ratings'\nimport Grade from '../components/grade'\nimport AddCrag from '../pages/add-crag'\nimport { mostVoted, useCurrentUser, useQuickSearch } from '../utils/backend'\nimport { CragBreadcrumb, SectorBreadcrumb } from './breadcrumb'\nimport ModalDialog from './modal-dialog'\nimport { TickRocksLogo } from './tick-rocks-logo'\n\nexport function NavBar() {\n const { isAuthenticated, loginWithRedirect, logout } = useAuth0()\n const { user } = useCurrentUser()\n const btnRef = React.useRef()\n const { colorMode, toggleColorMode } = useColorMode()\n\n const buttonColor = useColorModeValue('white', 'gold')\n const PhoneMenuItems = ({ children, isLast, to = '/', ...props }) => {\n return (\n \n {children} \n \n )\n }\n\n const { isOpen, onOpen, onClose } = useDisclosure()\n function SearchModal() {\n const [searchText, setSearchText] = useState(null)\n const { quickSearch, error: errorQuickSearch } = useQuickSearch(searchText)\n const [oldQuickSearch, setOldQuickSearch] = useState(undefined)\n useEffect(() => {\n if (quickSearch !== undefined && quickSearch.length >= 1) {\n setOldQuickSearch(quickSearch)\n }\n }, [quickSearch])\n const QuickSearchResults = ({ quickSearch }) => {\n if (quickSearch === undefined && oldQuickSearch === undefined) {\n return ''\n } else if (errorQuickSearch) {\n return No results\n } else {\n return (\n \n {(quickSearch || oldQuickSearch).map((result) => {\n if (result.type === 'crag') {\n return (\n \n )\n } else if (result.type === 'sector') {\n return (\n \n \n \n {mostVoted(result.sector.name_votes)}\n \n\n \n \n >\n }\n resultId={result.id}\n resultType={result.type}\n onClose={onClose}\n >\n )\n } else if (result.type === 'climb') {\n return (\n \n \n {mostVoted(result.climb.name_votes)}\n \n {result.climb.average_rating >= 1 ? (\n \n ) : (\n ''\n )}\n \n \n >\n }\n resultId={result.id}\n resultType={result.type}\n onClose={onClose}\n >\n \n \n \n \n \n )\n } else {\n return 'Unknown result type'\n }\n })}\n \n )\n }\n }\n\n return (\n <>\n \n \n\n \n }\n />\n \n \n \n \n \n \n \n \n setSearchText(event.target.value)}\n value={searchText || ''}\n />\n \n \n \n \n \n \n \n \n \n >\n )\n }\n\n function MenuDrawer() {\n const { isOpen, onOpen, onClose } = useDisclosure()\n return (\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n tick.rocks\n \n \n\n \n Map\n \n Feed\n Crags\n Add crag\n\n \n {isAuthenticated ? (\n <>\n \n \n \n {user?.display_name}\n \n \n \n Ticklist\n \n Settings\n \n Sign Out \n \n >\n ) : (\n \n loginWithRedirect({\n appState: { returnTo: window.location.pathname },\n })\n }\n _hover={{\n background: '#3CAB70',\n cursor: 'pointer',\n }}\n color=\"White\"\n width=\"100%\"\n height=\"100%\"\n minWidth=\"100px\"\n fontWeight=\"semibold\"\n pt=\"5\"\n pb=\"5\"\n >\n Sign in\n \n )}\n \n \n \n \n >\n )\n }\n\n return (\n \n \n \n \n \n \n\n \n \n \n\n \n \n \n tick.rocks\n \n \n \n \n ALPHA\n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Add Crag}>\n \n \n \n\n \n\n {isAuthenticated ? (\n \n ) : (\n \n loginWithRedirect({\n appState: { returnTo: window.location.pathname },\n })\n }\n _hover={{\n background: 'brand.300',\n cursor: 'pointer',\n }}\n color=\"white\"\n width=\"100%\"\n minWidth=\"100px\"\n pt=\"4\"\n pb=\"4\"\n paddingRight={{ base: 0, sm: 1 }}\n paddingLeft={{ base: 0, sm: 1 }}\n fontWeight=\"semibold\"\n >\n Sign in\n \n )}\n \n \n \n \n \n )\n}\n\nconst QuickSearchResultItem = ({\n onClose,\n link,\n displayName,\n resultType,\n key,\n children,\n}) => {\n return (\n \n \n \n \n {resultType}\n \n \n {displayName}\n \n {children}\n \n \n \n )\n}\n","import {\n Button,\n Center,\n Checkbox,\n Container,\n FormControl,\n FormLabel,\n Heading,\n HStack,\n Input,\n NumberDecrementStepper,\n NumberIncrementStepper,\n NumberInput,\n NumberInputField,\n NumberInputStepper,\n Radio,\n RadioGroup,\n Text,\n VStack,\n} from '@chakra-ui/react'\nimport React, { useState } from 'react'\nimport DatePicker from 'react-datepicker'\nimport 'react-datepicker/dist/react-datepicker.css'\nimport { useParams } from 'react-router-dom'\nimport { ClimbBreadcrumb } from '../components/breadcrumb.js'\nimport Loader from '../components/loader.js'\nimport { TickRocksLogo } from '../components/tick-rocks-logo.js'\nimport {\n useAuthorizedFetcher,\n useBackendMatchMutate,\n} from '../utils/backend.js'\n\nexport default function AddAscent({ ascent }, onClose) {\n const { climbId } = useParams()\n const { authorizedFetcher, isLoading, authError } = useAuthorizedFetcher()\n const [ascentDate, setAscentDate] = useState(Date.now())\n const [editAscentDate, setEditAscentDate] = useState(\n Date.parse(ascent?.ascent_date)\n )\n const [attempts, setAttempts] = useState(null)\n const [editAttempts, setEditAttempts] = useState(ascent?.attempts)\n const [anonymous, setAnonymous] = useState(false)\n const [ascentType, setAscentType] = useState(null)\n const [editAscentType, setEditAscentType] = useState(ascent?.ascent_type)\n const [description, setDescription] = useState(null)\n const [editDescription, setEditDescription] = useState(ascent?.description)\n const backendMatchMutate = useBackendMatchMutate()\n\n const editAscent = () =>\n authorizedFetcher(`/ascents/${ascent.id}`, {\n method: 'PUT',\n body: JSON.stringify({\n climb_id: climbId,\n ascent_date: editAscentDate,\n ascent_type: editAscentType,\n attempts: editAttempts,\n description: editDescription,\n public: !anonymous,\n }),\n })\n\n const addAscent = () =>\n authorizedFetcher('/ascents', {\n method: 'POST',\n body: JSON.stringify({\n climb_id: climbId,\n ascent_date: ascentDate,\n ascent_type: ascentType,\n attempts: attempts,\n description: description,\n public: !anonymous,\n }),\n })\n\n const handleSubmit = () => {\n if (ascent != null) {\n editAscent().then(() => backendMatchMutate(/^.*\\/ascents.*$/))\n } else {\n addAscent().then(() => backendMatchMutate(/^.*\\/ascents.*$/))\n }\n }\n\n if (authError) {\n return (\n \n \n Failed to load page.\n \n \n )\n }\n\n if (!authorizedFetcher && !isLoading) {\n return (\n \n \n You need to login to add stuff and vote.\n \n \n )\n }\n\n if (!authorizedFetcher && isLoading) {\n return \n }\n\n return (\n \n \n {ascent ? 'Edit' : 'Add'} ascent\n \n \n Ascent date\n \n \n \n Ascent type\n \n \n Flash\n On-sight\n Redpoint\n \n \n \n \n \n \n Number of attempts\n \n \n \n \n \n \n \n \n \n \n \n Description\n setEditDescription(event.target.value)\n : (event) => setDescription(event.target.value)\n }\n defaultValue={ascent ? editDescription : description}\n >\n \n \n \n \n Anonymous\n {\n setAnonymous(!anonymous)\n }}\n />\n \n \n \n \n )\n}\n","import {\n Alert,\n AlertIcon,\n AspectRatio,\n Box,\n Button,\n Center,\n Container,\n FormControl,\n FormLabel,\n Heading,\n Input,\n Text,\n} from '@chakra-ui/react'\nimport { useState } from 'react'\nimport { useParams } from 'react-router-dom'\nimport { ClimbBreadcrumb } from '../components/breadcrumb.js'\nimport Loader from '../components/loader.js'\nimport {\n useAuthorizedFetcher,\n useBackendMatchMutate,\n useUserVote,\n} from '../utils/backend.js'\n\nexport default function AddBetaVideo({ betaVideo }) {\n const { climbId } = useParams()\n const backendMatchMutate = useBackendMatchMutate()\n const { authorizedFetcher, isLoading, authError } = useAuthorizedFetcher()\n const [videoUrl, setVideoUrl] = useState('')\n const [editVideoUrl, setEditVideoUrl] = useState(betaVideo?.video_url)\n const [timestamp, setTimestamp] = useState('')\n const [editTimestamp, setEditTimestamp] = useState(betaVideo?.timestamp)\n const youtubeVideoId = youtube_parser(editVideoUrl ? editVideoUrl : videoUrl)\n const [attemptedWrongVideo, setAttemptedWrongVideo] = useState(false)\n const { userVote, error: errorUserVote } = useUserVote(betaVideo?.like_votes)\n\n const editBetaVideo = () =>\n authorizedFetcher(`/beta_videos/${betaVideo.id}`, {\n method: 'PUT',\n body: JSON.stringify({\n climb_id: climbId,\n video_url: editVideoUrl,\n timestamp: editTimestamp,\n }),\n })\n\n const addBetaVideo = () =>\n authorizedFetcher('/beta_videos', {\n method: 'POST',\n body: JSON.stringify({\n climb_id: climbId,\n video_url: videoUrl,\n timestamp: timestamp,\n }),\n })\n\n const voteBetaVideo = (betaVideo) => {\n const body = JSON.stringify({\n value: true,\n })\n return userVote\n ? authorizedFetcher(`/climbs/${betaVideo}/like_votes/${userVote.id}`, {\n method: 'PUT',\n body: body,\n })\n : authorizedFetcher(`/climbs/${betaVideo}/like_votes`, {\n method: 'POST',\n body: body,\n })\n }\n\n const handleSubmit = () => {\n if (youtubeVideoId === false) {\n setAttemptedWrongVideo(true)\n } else if (betaVideo != null) {\n setAttemptedWrongVideo(false)\n editBetaVideo().then(() => backendMatchMutate(/^.*\\/.*$/))\n } else {\n setAttemptedWrongVideo(false)\n addBetaVideo().then((video) =>\n Promise.all([voteBetaVideo(video.id)]).then(() =>\n backendMatchMutate(/^.*\\/.*$/)\n )\n )\n }\n }\n\n if (authError || errorUserVote) {\n return (\n \n \n Failed to load page.\n \n \n )\n }\n\n if (!authorizedFetcher && !isLoading) {\n return (\n \n \n You need to login to add stuff and vote.\n \n \n )\n }\n\n if ((!authorizedFetcher && isLoading) || climbId === undefined) {\n return \n }\n\n return (\n \n \n {betaVideo ? 'Edit' : 'Add'} beta video\n \n YouTube-link\n setEditVideoUrl(event.target.value)\n : (event) => setVideoUrl(event.target.value)\n }\n />\n \n \n Comment\n setEditTimestamp(event.target.value)\n : (event) => setTimestamp(event.target.value)\n }\n >\n \n Preview\n {youtubeVideoId ? (\n \n \n \n \n \n ) : (\n \n \n Error with video-url, please try again.\n \n )}\n\n \n \n )\n}\n\nfunction youtube_parser(url) {\n var regExp =\n /^.*((youtu.be\\/)|(v\\/)|(\\/u\\/\\w\\/)|(embed\\/)|(watch\\?))\\??v?=?([^#&?]*).*/\n var match = url.match(regExp)\n return match && match[7].length === 11 ? match[7] : false\n}\n","import {\n Button,\n Center,\n Container,\n FormControl,\n FormLabel,\n Heading,\n Input,\n Select,\n Text,\n} from '@chakra-ui/react'\nimport { useState } from 'react'\nimport { useHistory, useParams } from 'react-router-dom'\nimport { SectorBreadcrumb } from '../components/breadcrumb.js'\nimport Loader from '../components/loader.js'\nimport {\n useAuthorizedFetcher,\n useGradeSystemGrades,\n useSector,\n} from '../utils/backend.js'\n\nexport default function AddClimb() {\n const { cragId, sectorId } = useParams()\n const { sector, error: errorSector } = useSector(sectorId)\n const { gradeSystemGrades, error: errorGradeSystemGrades } =\n useGradeSystemGrades()\n\n const history = useHistory()\n const { authorizedFetcher, isLoading, authError } = useAuthorizedFetcher()\n const [climbName, setClimbName] = useState('')\n const [gradeSystem, setGradeSystem] = useState(null)\n const [grade, setGrade] = useState(null)\n\n const addClimb = () =>\n authorizedFetcher('/climbs', {\n method: 'POST',\n body: JSON.stringify({ crag_id: cragId, sector_id: sectorId }),\n })\n\n const voteClimbName = (climbId) =>\n authorizedFetcher(`/climbs/${climbId}/name_votes`, {\n method: 'POST',\n body: JSON.stringify({\n value: climbName,\n public: true,\n }),\n })\n\n const voteGrade = (climbId) =>\n grade\n ? authorizedFetcher(`/climbs/${climbId}/grade_votes`, {\n method: 'POST',\n body: JSON.stringify({\n value: grade,\n public: true,\n }),\n })\n : Promise.resolve()\n\n const navigateToAddedClimb = (climbId) =>\n history.replace(`/crags/${cragId}/sectors/${sectorId}/climbs/${climbId}`)\n\n const handleSubmit = () =>\n addClimb().then((climb) =>\n Promise.all([voteGrade(climb.id), voteClimbName(climb.id)]).then(() =>\n navigateToAddedClimb(climb.id)\n )\n )\n\n if (authError || errorSector || errorGradeSystemGrades) {\n return (\n \n \n Failed to load page.\n \n \n )\n }\n\n if (!authorizedFetcher && !isLoading) {\n return (\n \n \n You need to login to add stuff and vote.\n \n \n )\n }\n\n if (\n (!authorizedFetcher && isLoading) ||\n sector === undefined ||\n gradeSystemGrades === undefined\n ) {\n return \n }\n\n const systems = [\n ...new Set(\n gradeSystemGrades.map((gradeSystemGrade) => gradeSystemGrade.system)\n ),\n ]\n\n return (\n \n \n Add climb\n \n Climb name\n setClimbName(event.target.value)}\n />\n \n \n Grade system\n \n \n \n Grade\n \n \n \n \n )\n}\n","import { Box, Center, Container, Heading, Text } from '@chakra-ui/react'\nimport Dropzone from 'react-dropzone'\nimport { useHistory, useParams } from 'react-router-dom'\nimport { CragBreadcrumb } from '../components/breadcrumb.js'\nimport Loader from '../components/loader.js'\nimport { useAuthorizedFetcher } from '../utils/backend.js'\n\nexport default function AddCragPhoto() {\n const { cragId } = useParams()\n const history = useHistory()\n const {\n authorizedFetcher,\n isLoading,\n error: fetcherError,\n } = useAuthorizedFetcher()\n\n const addCragPhoto = (base64Image) =>\n authorizedFetcher('/crag_photos', {\n method: 'POST',\n body: JSON.stringify({\n crag_id: cragId,\n base64_image: base64Image,\n }),\n })\n\n const navigateToCrag = () => history.replace(`/crags/${cragId}`)\n\n const onDropImages = (files) => {\n Promise.all(\n files.map((file) =>\n new Promise((resolve, reject) => {\n const reader = new FileReader()\n reader.onabort = () => reject('File reading was aborted')\n reader.onerror = () => reject('File reading has failed')\n reader.onload = () => resolve(reader.result)\n reader.readAsDataURL(file)\n }).then(addCragPhoto)\n )\n )\n .then(navigateToCrag)\n .catch(console.error)\n }\n\n if (fetcherError) {\n return (\n \n \n Failed to load page.\n \n \n )\n }\n\n if (!authorizedFetcher && !isLoading) {\n return (\n \n \n You need to login to add stuff and vote.\n \n \n )\n }\n\n if (!authorizedFetcher && isLoading) {\n return \n }\n\n return (\n \n \n Add crag photo\n \n {({ getRootProps, getInputProps }) => (\n \n \n \n \n Drag and drop images here or click to select (only jpeg allowed)\n \n \n \n )}\n \n \n )\n}\n","import { Box, Center, Container, Heading, Text } from '@chakra-ui/react'\nimport Dropzone from 'react-dropzone'\nimport { useHistory, useParams } from 'react-router-dom'\nimport { SectorBreadcrumb } from '../components/breadcrumb.js'\nimport Loader from '../components/loader.js'\nimport { useAuthorizedFetcher, useSector } from '../utils/backend.js'\n\nexport default function AddImage() {\n const { cragId, sectorId } = useParams()\n const { sector, error: errorSector } = useSector(sectorId)\n const history = useHistory()\n const {\n authorizedFetcher,\n isLoading,\n error: fetcherError,\n } = useAuthorizedFetcher()\n\n const addImage = (base64Image) =>\n authorizedFetcher('/images', {\n method: 'POST',\n body: JSON.stringify({\n sector_id: sectorId,\n base64_image: base64Image,\n }),\n })\n\n const navigateToSector = () =>\n history.replace(`/crags/${cragId}/sectors/${sectorId}`)\n\n const navigateToAddedImage = (imageId) =>\n history.replace(`/crags/${cragId}/sectors/${sectorId}/images/${imageId}`)\n\n const onDropImages = (files) => {\n Promise.all(\n files.map((file) =>\n new Promise((resolve, reject) => {\n const reader = new FileReader()\n reader.onabort = () => reject('File reading was aborted')\n reader.onerror = () => reject('File reading has failed')\n reader.onload = () => resolve(reader.result)\n reader.readAsDataURL(file)\n }).then(addImage)\n )\n )\n .then((images) =>\n images.length >= 2\n ? navigateToSector()\n : navigateToAddedImage(images[0].id)\n )\n .catch(console.error)\n }\n\n if (fetcherError || errorSector) {\n return (\n \n \n Failed to load page.\n \n \n )\n }\n\n if (!authorizedFetcher && !isLoading) {\n return (\n \n \n You need to login to add stuff and vote.\n \n \n )\n }\n\n if ((!authorizedFetcher && isLoading) || sector === undefined) {\n return \n }\n\n return (\n \n \n Add image\n \n {({ getRootProps, getInputProps }) => (\n \n \n \n \n Drag and drop images here or click to select (only jpeg allowed)\n \n \n \n )}\n \n \n )\n}\n","export const LINE_COLOR = '#ED2939'\nexport const SELECTED_COLOR = '#ECC94B'\n\nfunction calculateControlPoints(x0, y0, x1, y1, x2, y2, t = 0.5) {\n const d01 = Math.sqrt(Math.pow(x1 - x0, 2) + Math.pow(y1 - y0, 2))\n const d12 = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2))\n const fa = (t * d01) / (d01 + d12) // scaling factor for triangle Ta\n const fb = (t * d12) / (d01 + d12) // ditto for Tb, simplifies to fb=t-fa\n const p1x = x1 - fa * (x2 - x0) // x2-x0 is the width of triangle T\n const p1y = y1 - fa * (y2 - y0) // y2-y0 is the height of T\n const p2x = x1 + fb * (x2 - x0)\n const p2y = y1 + fb * (y2 - y0)\n return [\n { x: p1x, y: p1y },\n { x: p2x, y: p2y },\n ]\n}\n\nexport const drawBeizerSplines = (\n ctx,\n { t = 0.5, color = '#ECC94B', lineWidth = 6 },\n relativePoints\n) => {\n // For details, see http://scaledinnovation.com/analytics/splines/aboutSplines.html\n if (relativePoints.length < 2) {\n return\n }\n\n const points = relativePoints.map((point) => ({\n x: ctx.canvas.width * point.x,\n y: ctx.canvas.height * point.y,\n }))\n\n ctx.strokeStyle = color\n ctx.lineWidth = lineWidth\n ctx.beginPath()\n ctx.moveTo(points[0].x, points[0].y)\n\n if (points.length === 2) {\n ctx.lineTo(points[1].x, points[1].y)\n ctx.stroke()\n return\n }\n\n let controlPoints = []\n for (let i = 0; i < points.length - 2; i++) {\n controlPoints = controlPoints.concat(\n calculateControlPoints(\n points[i].x,\n points[i].y,\n points[i + 1].x,\n points[i + 1].y,\n points[i + 2].x,\n points[i + 2].y,\n t\n )\n )\n }\n\n ctx.quadraticCurveTo(\n controlPoints[0].x,\n controlPoints[0].y,\n points[1].x,\n points[1].y\n )\n ctx.stroke()\n for (let i = 1; i < points.length - 2; i++) {\n ctx.bezierCurveTo(\n controlPoints[2 * i - 1].x,\n controlPoints[2 * i - 1].y,\n controlPoints[2 * i].x,\n controlPoints[2 * i].y,\n points[i + 1].x,\n points[i + 1].y\n )\n ctx.stroke()\n }\n\n ctx.quadraticCurveTo(\n controlPoints[controlPoints.length - 1].x,\n controlPoints[controlPoints.length - 1].y,\n points[points.length - 1].x,\n points[points.length - 1].y\n )\n ctx.stroke()\n}\n\nexport const drawMarkers = (\n ctx,\n {\n fontColor = 'white',\n font = '20px serif',\n backgroundColor = '#252A32',\n markerColor = '#ED2939',\n markerSize = 12,\n },\n line,\n index\n) => {\n const x = line[0].x * ctx.canvas.width\n const y = line[0].y * ctx.canvas.height\n ctx.beginPath()\n ctx.fillStyle = backgroundColor\n ctx.arc(x, y, markerSize, 0, 2 * Math.PI, false)\n ctx.fill()\n ctx.beginPath()\n ctx.strokeStyle = markerColor\n ctx.lineWidth = 3\n ctx.arc(x, y, markerSize, 0, 2 * Math.PI, false)\n ctx.stroke()\n ctx.fillStyle = fontColor\n ctx.font = font\n ctx.textAlign = 'center'\n ctx.textBaseline = 'middle'\n ctx.fillText(`${index + 1}`, x, y)\n}\n\nexport const drawPathPoints = (ctx, { color = '#ECC94B' }, path) => {\n ctx.fillStyle = color\n path.forEach((point) => {\n const { x, y } = {\n x: point.x * ctx.canvas.width,\n y: point.y * ctx.canvas.height,\n }\n ctx.beginPath()\n ctx.arc(x, y, 8, 0, 2 * Math.PI, false)\n ctx.fill()\n })\n}\n","import { Box } from '@chakra-ui/layout'\nimport { Image } from '@chakra-ui/react'\nimport { useCallback, useEffect, useRef, useState } from 'react'\nimport useWindowSize from '../hooks/useWindowSize'\n\nexport default function CanvasOverlay({ image, draw, ...props }) {\n const [imageLoaded, setImageLoaded] = useState(false)\n const canvasRef = useRef()\n const imageRef = useRef()\n const windowSize = useWindowSize()\n\n const renderCanvas = useCallback(() => {\n if (!imageLoaded || !canvasRef.current) {\n return\n }\n const ctx = canvasRef.current.getContext('2d')\n\n if (draw) {\n draw(ctx)\n }\n }, [draw, imageLoaded])\n\n useEffect(() => {\n if (!imageLoaded) {\n return\n }\n const { width } = canvasRef.current.getBoundingClientRect()\n // Set the canvas HTML width attribute to agree with its CSS width value\n // see: https://html.spec.whatwg.org/multipage/canvas.html#attr-canvas-width\n canvasRef.current.width = width\n const aspectRatio = imageRef.current.height / imageRef.current.width\n canvasRef.current.style.height = `${Math.round(aspectRatio * width)}px`\n canvasRef.current.height = Math.round(aspectRatio * width)\n requestAnimationFrame(renderCanvas)\n }, [windowSize, imageLoaded, renderCanvas])\n\n useEffect(() => {\n if (!imageLoaded) return\n\n requestAnimationFrame(renderCanvas)\n }, [renderCanvas, imageLoaded])\n\n return (\n \n setImageLoaded(true)}\n />\n\n \n \n )\n}\n","// Stolen from https://stackoverflow.com/questions/19014250/rerender-view-on-browser-resize-with-react\nimport { useEffect, useState } from 'react'\n\nexport default function useWindowSize() {\n const [size, setSize] = useState([0, 0])\n useEffect(() => {\n function updateSize() {\n setSize([window.innerWidth, window.innerHeight])\n }\n window.addEventListener('resize', updateSize)\n updateSize()\n return () => window.removeEventListener('resize', updateSize)\n }, [])\n return size\n}\n","import { useCallback } from 'react'\nimport { mostVoted } from '../utils/backend'\nimport {\n drawBeizerSplines,\n drawMarkers,\n drawPathPoints,\n LINE_COLOR,\n SELECTED_COLOR,\n} from '../utils/splines'\nimport CanvasOverlay from './canvas-overlay'\n\nexport default function TopoPlotter({ image, linePath, setLinePath, lines }) {\n const parsedLines = lines?.map((line) => mostVoted(line.line_path_votes))\n\n const draw = useCallback(\n (ctx) => {\n ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height)\n parsedLines.forEach((line, index) => {\n drawBeizerSplines(ctx, { color: LINE_COLOR, lineWidth: 3 }, line)\n drawMarkers(ctx, {}, line, index)\n })\n drawBeizerSplines(ctx, { color: SELECTED_COLOR }, linePath)\n drawPathPoints(ctx, { color: SELECTED_COLOR }, linePath)\n },\n [linePath, parsedLines]\n )\n\n const handleMouseUp = (event) => {\n const canvas = event.target\n const bounds = canvas.getBoundingClientRect()\n const mouseX = event.pageX - bounds.left - window.scrollX\n const mouseY = event.pageY - bounds.top - window.scrollY\n setLinePath((previousPoints) => [\n ...previousPoints,\n {\n x: mouseX / canvas.width,\n y: mouseY / canvas.height,\n },\n ])\n }\n\n return \n}\n","import {\n Button,\n Center,\n Container,\n FormControl,\n FormLabel,\n Heading,\n Select,\n Text,\n} from '@chakra-ui/react'\nimport { useState } from 'react'\nimport { useHistory, useParams } from 'react-router-dom'\nimport { ImageBreadcrumb } from '../components/breadcrumb.js'\nimport Loader from '../components/loader.js'\nimport TopoPlotter from '../components/topo-plotter.js'\nimport {\n mostVoted,\n useAuthorizedFetcher,\n useClimbs,\n useImage,\n useLines,\n} from '../utils/backend.js'\n\nexport default function AddLine() {\n const { cragId, sectorId, imageId } = useParams()\n const history = useHistory()\n const { image, error: errorImage } = useImage(imageId)\n const { climbs, error: errorClimbs } = useClimbs({ sector_id: sectorId }, 100)\n const { authorizedFetcher, authError } = useAuthorizedFetcher()\n const [climbId, setClimbId] = useState('')\n const [linePath, setLinePath] = useState([])\n const { lines, error: errorLines } = useLines(\n imageId ? { image_id: imageId } : null\n )\n\n if (errorImage || errorClimbs || errorLines) {\n return (\n \n \n Failed to load image.\n \n \n )\n }\n\n const addLine = () =>\n authorizedFetcher('/lines', {\n method: 'POST',\n body: JSON.stringify({\n sector_id: sectorId,\n image_id: imageId,\n climb_id: climbId,\n }),\n })\n\n const voteLinePath = (lineId) =>\n authorizedFetcher(`/lines/${lineId}/line_path_votes`, {\n method: 'POST',\n body: JSON.stringify({\n value: linePath,\n public: true,\n }),\n })\n\n const navigateToAddedLine = (lineId) =>\n history.replace(`/crags/${cragId}/sectors/${sectorId}/lines/${lineId}`)\n\n const handleSubmit = () =>\n addLine().then((line) =>\n voteLinePath(line.id).then(() => navigateToAddedLine(line.id))\n )\n\n if (authError) {\n return (\n \n \n Failed to load auth token.\n \n \n )\n }\n\n if (!authorizedFetcher || climbs === undefined) {\n return \n }\n\n return (\n \n \n Add line\n \n Climb\n \n \n \n Line path\n \n \n \n\n \n \n )\n}\n","import {\n Button,\n Center,\n Container,\n FormControl,\n FormLabel,\n Heading,\n HStack,\n Input,\n NumberInput,\n NumberInputField,\n Text,\n} from '@chakra-ui/react'\nimport { useState } from 'react'\nimport { useHistory, useParams } from 'react-router-dom'\nimport { CragBreadcrumb } from '../components/breadcrumb.js'\nimport Loader from '../components/loader.js'\nimport { useAuthorizedFetcher } from '../utils/backend.js'\n\nexport default function AddSector() {\n const { cragId } = useParams()\n const { authorizedFetcher, isLoading, error } = useAuthorizedFetcher()\n const history = useHistory()\n const [sectorName, setSectorName] = useState('')\n const [latitude, setLatitude] = useState(null)\n const [longitude, setLongitude] = useState(null)\n\n const addSector = () =>\n authorizedFetcher('/sectors', {\n method: 'POST',\n body: JSON.stringify({ crag_id: cragId }),\n })\n\n const voteSectorName = (sectorId) =>\n authorizedFetcher(`/sectors/${sectorId}/name_votes`, {\n method: 'POST',\n body: JSON.stringify({\n value: sectorName,\n public: true,\n }),\n })\n\n const voteSectorCoordinates = (sectorId) =>\n latitude &&\n longitude &&\n authorizedFetcher(`/sectors/${sectorId}/coordinate_votes`, {\n method: 'POST',\n body: JSON.stringify({\n value: {\n type: 'Point',\n coordinates: [parseFloat(longitude), parseFloat(latitude)],\n },\n public: true,\n }),\n })\n\n const navigateToAddedSector = (sectorId) =>\n history.replace(`/crags/${cragId}/sectors/${sectorId}`)\n\n const handleSubmit = () =>\n addSector().then((sector) =>\n Promise.all([\n voteSectorName(sector.id),\n voteSectorCoordinates(sector.id),\n ]).then((_) => navigateToAddedSector(sector.id))\n )\n\n if (error) {\n return (\n \n \n Failed to load auth token.\n \n \n )\n }\n\n if (!authorizedFetcher && !isLoading) {\n return (\n \n \n You need to login to add stuff and vote.\n \n \n )\n }\n\n if (!authorizedFetcher && isLoading) {\n return \n }\n\n return (\n \n \n Add sector\n \n Sector name\n setSectorName(event.target.value)}\n />\n \n \n \n Latitude\n \n setLatitude(event.target.value)}\n />\n \n \n \n Longitude\n \n setLongitude(event.target.value)}\n />\n \n \n \n \n \n )\n}\n","import { Box } from '@chakra-ui/react'\nimport React from 'react'\n\nfunction CragComponentBox({ children, ...props }) {\n return (\n \n {children}\n \n )\n}\n\nexport { CragComponentBox }\n","import { Box, Flex, Heading, Image, Link, Spacer, Text } from '@chakra-ui/react'\nimport { Link as RouterLink } from 'react-router-dom'\nimport { TickRocksLogo } from './tick-rocks-logo'\n\nexport function PageFooter({ ...props }) {\n return (\n \n \n \n \n \n \n tick.rocks\n open-source climbing\n \n \n \n \n \n tick.rocks is an{' '}\n \n open-source\n {' '}\n project for catalogueing, finding, and ticking off climbing problems\n and routes. Please help us grow by adding your local crag, pre-tick a\n couple of projects and join our community. tick.rocks is built on top\n of our open climbing database:{' '}\n \n opencrags.com\n \n \n \n \n \n {' '}\n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n","import { useColorModeValue } from '@chakra-ui/color-mode'\nimport {\n Alert,\n AlertIcon,\n Avatar,\n Box,\n Button,\n Center,\n Container,\n Flex,\n FormControl,\n Input,\n InputGroup,\n InputRightElement,\n Text,\n} from '@chakra-ui/react'\nimport { useState } from 'react'\nimport { useParams } from 'react-router-dom'\nimport Loader from '../components/loader.js'\nimport {\n useAuthorizedFetcher,\n useBackendMatchMutate,\n useCurrentUser,\n} from '../utils/backend.js'\n\nexport default function AddComment({ commentId }) {\n const boxBg = useColorModeValue('gray.200', 'gray.800')\n const { authorizedFetcher, isLoading, error } = useAuthorizedFetcher()\n const [comment, setComment] = useState('')\n const [attemptedEmptyComment, setAttemptedEmptyComment] = useState(false)\n const { user } = useCurrentUser()\n const relatedIds = useParams()\n const relatedType = Object.keys(relatedIds).at(-1).replace('Id', '')\n const backendMatchMutate = useBackendMatchMutate()\n\n const addComment = () =>\n authorizedFetcher('/comments', {\n method: 'POST',\n body: JSON.stringify({\n comment: comment,\n related_id: Object.values(relatedIds).at(-1),\n related_type: relatedType,\n all_related_ids: Object.values(relatedIds),\n created: Date(),\n last_edited: Date(),\n last_activity: Date(),\n }),\n })\n\n const addReply = () =>\n authorizedFetcher(`/comments/${commentId}/replies`, {\n method: 'POST',\n body: JSON.stringify({\n reply: comment,\n comment_id: commentId,\n }),\n })\n\n const handleSubmit = () => {\n if (comment === '') {\n setAttemptedEmptyComment(true)\n }\n if (commentId != null) {\n setAttemptedEmptyComment(false)\n addReply().then(() => backendMatchMutate(/^.*\\/comments.*$/))\n } else {\n setAttemptedEmptyComment(false)\n addComment().then(() => backendMatchMutate(/^.*\\/comments.*$/))\n }\n }\n\n if (error) {\n return (\n \n \n Failed to load auth token.\n \n \n )\n }\n\n if (!authorizedFetcher && !isLoading) {\n return (\n \n \n You need to login to add comments.\n \n \n )\n }\n\n if (!authorizedFetcher && isLoading) {\n return \n }\n return (\n \n \n \n )\n}\n","import {\n Box,\n Button,\n Center,\n Container,\n Heading,\n HStack,\n Text,\n} from '@chakra-ui/react'\nimport Loader from '../components/loader.js'\nimport {\n useAuthorizedFetcher,\n useBackendMatchMutate,\n} from '../utils/backend.js'\n\nexport default function RemovePage({ item, itemType, itemPath }) {\n const { authorizedFetcher, isLoading, error } = useAuthorizedFetcher()\n const backendMatchMutate = useBackendMatchMutate()\n\n const handleRemove = () => {\n removeItem().then(() => backendMatchMutate(/^.*\\/.*$/))\n }\n\n const removeItem = () =>\n authorizedFetcher(`/${itemPath}/${item.id}`, {\n method: 'DELETE',\n })\n\n if (error) {\n return (\n \n \n Failed to load auth token.\n \n \n )\n }\n\n if (!authorizedFetcher && !isLoading) {\n return (\n \n \n Not signed in.\n \n \n )\n }\n\n if (!authorizedFetcher && isLoading) {\n return \n }\n return (\n \n Remove {itemType}\n Are you sure? You can't undo this action afterwards. \n \n \n \n \n \n )\n}\n","import { useColorModeValue } from '@chakra-ui/color-mode'\nimport { ChevronDownIcon } from '@chakra-ui/icons'\nimport {\n Avatar,\n Box,\n Button,\n Collapse,\n Flex,\n IconButton,\n Menu,\n MenuButton,\n MenuItem,\n MenuList,\n Spacer,\n Text,\n useDisclosure,\n Wrap,\n} from '@chakra-ui/react'\nimport ModalDialog from '../components/modal-dialog'\nimport { Link as RouterLink } from 'react-router-dom'\nimport AddComment from '../pages/add-comment'\nimport {\n useAuthorizedFetcher,\n useComments,\n useCurrentUser,\n useUser,\n useCrag,\n useSector,\n useClimb,\n} from '../utils/backend'\nimport RemovePage from './remove-page'\nimport {\n CragBreadcrumb,\n SectorBreadcrumb,\n ClimbBreadcrumb,\n} from '../components/breadcrumb'\n\nexport default function Comments({ relatedId, wrap }) {\n const { comments, error: errorComments } = useComments(relatedId)\n\n if (errorComments) {\n return 'Error loading comments'\n }\n\n if (comments === undefined) {\n return ''\n }\n\n return (\n \n {wrap ? (\n \n {comments.length === 0 ? (\n There are no comments.\n ) : (\n comments.map((comment) => (\n \n \n \n ))\n )}\n \n ) : (\n \n {comments.length === 0 ? (\n There are no comments.\n ) : (\n comments.map((comment) => (\n \n \n \n ))\n )}\n \n )}\n\n \n \n )\n}\n\nfunction Comment({ comment }) {\n const boxBg = useColorModeValue('gray.200', 'gray.800')\n const { isAuthenticated } = useAuthorizedFetcher()\n const { isOpen, onToggle } = useDisclosure()\n const { user } = useUser(comment?.user_id)\n const { crag } = useCrag(comment?.all_related_ids[0])\n const { sector } = useSector(comment?.all_related_ids[1])\n const { climb } = useClimb(comment?.all_related_ids[2])\n\n return (\n \n {\n \n {comment.related_type === 'crag' ? (\n \n ) : (\n ''\n )}\n {comment.related_type === 'sector' ? (\n \n ) : (\n ''\n )}\n {comment.related_type === 'climb' ? (\n \n ) : (\n ''\n )}\n \n }\n \n \n \n \n \n \n {user?.display_name || 'No display name'}\n \n \n {user?.id === useCurrentUser().user?.id ? (\n \n ) : (\n ''\n )}\n \n {comment.comment}\n \n \n \n {new Date(comment.created).toISOString().slice(0, 10)}\n {comment.last_edited !== comment.created ? (\n \n {' (edited: '}\n {new Date(comment.last_edited).toISOString().slice(0, 10)}\n {') '}\n \n ) : (\n ''\n )}\n \n {isAuthenticated ? (\n \n \n \n \n ) : (\n ''\n )}\n \n \n {comment.replies.length === 0\n ? ''\n : comment.replies.map((reply) => (\n \n \n \n ))}{' '}\n {' '}\n \n \n \n \n \n \n )\n}\n\nfunction Reply({ reply }) {\n const boxBg = useColorModeValue('gray.200', 'gray.800')\n const { isAuthenticated } = useAuthorizedFetcher()\n const { isOpen, onToggle } = useDisclosure()\n const { user } = useUser(reply?.user_id)\n\n return (\n \n \n \n \n \n \n \n {user?.display_name || 'No display name'}\n \n \n {user?.id === useCurrentUser().user?.id ? (\n \n ) : (\n ''\n )}\n \n {reply.reply}\n \n \n \n {new Date(reply.created).toISOString().slice(0, 10)}\n {reply.last_edited !== reply.created ? (\n \n {' (edited: '}\n {new Date(reply.last_edited).toISOString().slice(0, 10)}\n {') '}\n \n ) : (\n ''\n )}\n \n {isAuthenticated ? (\n \n \n \n \n ) : (\n ''\n )}\n \n\n \n \n \n \n \n \n )\n}\n\nexport { Comments }\n","import { useColorModeValue } from '@chakra-ui/color-mode'\nimport { AddIcon } from '@chakra-ui/icons'\nimport {\n Box,\n Button,\n Container,\n Flex,\n Heading,\n IconButton,\n Link,\n Spacer,\n Stack,\n Text,\n} from '@chakra-ui/react'\nimport { Link as RouterLink } from 'react-router-dom'\nimport { ParallaxBanner } from 'react-scroll-parallax'\nimport { CragComponentBox } from '../components/crag-component-box'\nimport ModalDialog from '../components/modal-dialog.js'\nimport { PageFooter } from '../components/page-footer.js'\nimport AddSector from './add-sector.js'\nimport Comments from './comments.js'\n\nexport default function Area() {\n const bg = useColorModeValue('offwhite', 'gray.700')\n const boxBg = useColorModeValue('gray.100', 'gray.600')\n const headingColor = useColorModeValue('gray.900', 'gray.100')\n const headingShadow = useColorModeValue(\n 'none',\n '3px 3px 3px rgba(0, 0, 0, 0.2)'\n )\n\n return (\n \n \n {' '}\n \n \n \n Uppsala\n \n \n in the kingdom of{' '}\n \n Sweden\n \n \n \n \n ),\n },\n ]}\n style={{\n minHeight: 'inherit',\n maxHeight: 'inherit',\n }}\n >\n \n \n \n \n \n 4,500 Boulders on high quality granite\n \n \n \n ),\n },\n ]}\n style={{\n minHeight: 'inherit',\n maxHeight: 'inherit',\n }}\n >\n {' '}\n \n \n \n \n Magical open landscapes\n \n \n \n ),\n },\n ]}\n style={{\n minHeight: 'inherit',\n maxHeight: 'inherit',\n }}\n >\n {' '}\n \n \n \n \n \n \n \n \n Crags\n \n \n\n \n \n \n }\n display={{ base: 'block', md: 'none' }}\n boxShadow=\"xl\"\n colorScheme=\"brand\"\n color=\"white\"\n >\n \n \n }\n >\n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n Recent comments\n \n \n \n \n \n \n \n \n \n )\n}\n","import { Tag, TagLeftIcon, TagLabel, Icon, Tooltip } from '@chakra-ui/react'\n\nimport React from 'react'\n\nexport default function AscentType({ ascent }) {\n const RedPoint = (props) => (\n \n \n \n )\n const OnSight = (props) => (\n \n \n \n )\n\n const Flash = (props) => (\n \n \n \n )\n\n if (ascent.ascent_type === 'redpoint') {\n return (\n \n \n \n Redpoint\n \n \n )\n }\n\n if (ascent.ascent_type === 'onsight') {\n return (\n \n \n \n On-sight\n \n \n )\n }\n if (ascent.ascent_type === 'flash') {\n return (\n \n \n \n Flash!\n \n \n )\n }\n return ''\n}\n","import { Box, Button } from '@chakra-ui/react'\nimport { useEffect, useState } from 'react'\nimport { useAuthorizedFetcher, useUserVote } from '../utils/backend.js'\n\nexport default function LikeVote({ item, votes, voteUrl, itemId, fetcher }) {\n const { userVote, error: errorUserVote } = useUserVote(item?.voteUrl)\n const [likeVotes, setLikeVotes] = useState(true)\n const {\n authorizedFetcher,\n isLoading,\n error: authError,\n } = useAuthorizedFetcher()\n\n useEffect(() => {\n if (likeVotes === null && userVote) {\n setLikeVotes(userVote.value)\n }\n }, [likeVotes, userVote])\n\n const likeVoteContent = (itemId) => {\n const body = JSON.stringify({\n value: likeVotes,\n public: true,\n })\n return userVote\n ? authorizedFetcher(`/${fetcher}/${itemId}/${voteUrl}/${votes.id}`, {\n method: 'PUT',\n body: body,\n })\n : authorizedFetcher(`/${fetcher}/${itemId}/${voteUrl}`, {\n method: 'POST',\n body: body,\n })\n }\n const handleSubmit = () => likeVoteContent(itemId)\n\n if (isLoading) {\n return null\n }\n\n if (errorUserVote || authError) {\n return null\n }\n\n return (\n \n \n \n )\n}\n","import { ChevronDownIcon } from '@chakra-ui/icons'\nimport {\n Box,\n Flex,\n Heading,\n IconButton,\n Image,\n Menu,\n MenuButton,\n MenuItem,\n MenuList,\n Skeleton,\n} from '@chakra-ui/react'\nimport Linkify from 'react-linkify'\nimport { Link as RouterLink } from 'react-router-dom'\nimport AddBetaVideo from '../pages/add-beta-video'\nimport RemovePage from '../pages/remove-page'\nimport { useCurrentUser, useUser } from '../utils/backend'\nimport LikeVote from './like-vote'\nimport ModalDialog from './modal-dialog'\nexport default function BetaVideo({ betaVideo }) {\n const { user } = useUser(betaVideo.user_id)\n const youtubeVideoId = youtube_parser(betaVideo.video_url)\n\n return (\n \n \n \n \n \n \n \n }\n >\n \n \n \n \n \n \n \n {user?.display_name || 'Unnamed user'}\n \n {betaVideo.timestamp}\n \n \n \n \n {user?.id === useCurrentUser().user?.id ? (\n \n \n {betaVideo.like_votes.length} likes\n \n ) : (\n \n \n \n )}\n \n \n \n \n )\n}\n\nfunction youtube_parser(url) {\n var regExp =\n /^.*((youtu.be\\/)|(v\\/)|(\\/u\\/\\w\\/)|(embed\\/)|(watch\\?))\\??v?=?([^#&?]*).*/\n var match = url.match(regExp)\n return match && match[7].length === 11 ? match[7] : false\n}\n\nexport { BetaVideo, youtube_parser }\n","import { useDisclosure } from '@chakra-ui/hooks'\nimport {\n Box,\n Drawer,\n DrawerBody,\n DrawerCloseButton,\n DrawerContent,\n DrawerFooter,\n DrawerHeader,\n DrawerOverlay,\n} from '@chakra-ui/react'\nimport React from 'react'\n\nexport default function DrawerDialog({\n button,\n header,\n footer,\n children,\n placement,\n ...props\n}) {\n const { isOpen, onOpen, onClose } = useDisclosure()\n const btnRef = React.useRef()\n\n return (\n <>\n \n {button}\n \n \n \n \n {header}\n \n {children}\n {footer}\n \n {' '}\n >\n )\n}\n","import { IconButton, Icon } from '@chakra-ui/react'\nimport { MdEdit } from 'react-icons/md'\n\nexport default function EditButton(props) {\n return (\n }\n {...props}\n />\n )\n}\n","import { Box, Center, Container, Flex, Text } from '@chakra-ui/react'\nimport React from 'react'\nimport { Link as RouterLink, useParams } from 'react-router-dom'\nimport Grade from '../../components/grade'\nimport { useClimbs } from '../../utils/backend'\n\nfunction CragGrades({ selection, children, ...props }) {\n const { cragId } = useParams()\n const { climbs, error: errorClimbs } = useClimbs({ crag_id: cragId })\n if (errorClimbs) {\n return (\n \n \n Failed to load climbs.\n \n \n )\n }\n\n if (climbs === undefined) {\n return
Climbs undefined.\n }\n\n if (climbs.length < 1) {\n return This crag does not yet have any climbs.\n }\n\n const reducer = (climbs, most_voted_grade) => {\n if (climbs[most_voted_grade] == null) {\n climbs[most_voted_grade] = 1\n } else {\n ++climbs[most_voted_grade]\n }\n return climbs\n }\n\n const reducedGrades = climbs\n .sort((a, b) => (a.itemM > b.itemM ? 1 : -1))\n .map((reducedGrades) => reducedGrades.most_voted_grade)\n .reduce(reducer, {})\n\n const numberOfClimbs = Object.keys(climbs).length + 1\n\n return (\n \n \n \n {Object.entries(reducedGrades).map((grade) => {\n const height = (grade[1] / numberOfClimbs) * 15\n return (\n \n \n \n {grade[1]}\n \n \n \n \n \n \n )\n })}\n \n \n \n )\n}\n\nfunction SectorGrades({ sectorId, selection, children, ...props }) {\n const { climbs, error: errorClimbs } = useClimbs({ sector_id: sectorId })\n if (errorClimbs) {\n return (\n \n \n Failed to load climbs.\n \n \n )\n }\n\n if (climbs === undefined) {\n return Climbs undefined.\n }\n\n if (climbs.length < 1) {\n return (\n \n This crag does not yet have any climbs.\n \n )\n }\n\n const reducer = (climbs, most_voted_grade) => {\n if (climbs[most_voted_grade] == null) {\n climbs[most_voted_grade] = 1\n } else {\n ++climbs[most_voted_grade]\n }\n return climbs\n }\n\n const reducedGrades = climbs\n .sort((a, b) => (a.itemM > b.itemM ? 1 : -1))\n .map((reducedGrades) => reducedGrades.most_voted_grade)\n .reduce(reducer, {})\n\n const numberOfClimbs = Object.keys(climbs).length + 1\n\n return (\n \n \n \n {Object.entries(reducedGrades).map((grade) => {\n const height = (grade[1] / numberOfClimbs) * 10\n return (\n \n \n \n {grade[1]}\n \n \n \n \n \n \n )\n })}\n \n \n \n )\n}\n\nexport { CragGrades, SectorGrades }\n","import {\n Box,\n Button,\n Center,\n Collapse,\n Fade,\n Flex,\n LinkBox,\n SimpleGrid,\n useBreakpointValue,\n useDisclosure,\n} from '@chakra-ui/react'\nimport { useState } from 'react'\nimport { Link as RouterLink } from 'react-router-dom'\nimport { useImages } from '../../utils/backend.js'\nimport { SectorGrades } from './crag-grades.js'\n\nfunction SectorGrid({ sectors, children, ...props }) {\n const [show, setShow] = useState(false)\n const handleToggle = () => setShow(!show)\n const responsiveColumns = useBreakpointValue({\n base: 3,\n xxs: 3,\n xs: 3,\n sm: 4,\n md: 5,\n lg: 5,\n xl: 5,\n xxl: 5,\n xxxl: 5,\n })\n return (\n \n \n \n {children}\n \n \n \n {sectors.length > responsiveColumns ? (\n \n ) : (\n ''\n )}\n \n \n )\n}\n\nfunction Sector({ cragId, sectorId, children, ...props }) {\n const { images, error: errorImages } = useImages({ sector_id: sectorId })\n const { isOpen, onToggle } = useDisclosure()\n\n if (errorImages) {\n return null\n }\n\n return (\n \n \n 0\n ? images[0].base64_image\n : '/icon-no-image.svg'\n }\n bgPosition=\"center\"\n borderRadius=\"15px\"\n bgRepeat=\"no-repeat\"\n bgSize=\"cover\"\n position=\"relative\"\n transition=\"all .2s\"\n >\n \n \n \n \n \n \n {children}\n \n \n \n \n )\n}\n\nfunction SectorList({ sectors, children, ...props }) {\n return (\n \n \n {children}\n \n \n )\n}\n\nfunction SectorListItem({ cragId, sectorId, children, ...props }) {\n const { images, error: errorImages } = useImages({ sector_id: sectorId })\n const { isOpen, onToggle } = useDisclosure()\n\n if (errorImages) {\n return null\n }\n\n return (\n \n \n 0\n ? images[0].base64_image\n : '/icon-no-image.svg'\n }\n bgPosition=\"center\"\n borderRadius=\"15px\"\n bgRepeat=\"no-repeat\"\n bgSize=\"cover\"\n position=\"relative\"\n transition=\"all .2s\"\n >\n \n \n \n \n \n \n {children}\n \n \n \n \n )\n}\n\nexport { SectorGrid, Sector, SectorList, SectorListItem }\n","import { Tooltip } from '@chakra-ui/tooltip'\nimport { WarningTwoIcon } from '@chakra-ui/icons'\nimport { conflicting } from '../utils/backend.js'\n\nexport default function VoteConflictWarning({ votes, anyVotes }) {\n const allVotes = votes ? [votes] : anyVotes\n\n const conflict = allVotes.map(conflicting).includes(true)\n\n return conflict ? (\n \n \n \n ) : (\n ''\n )\n}\n","import { useColorModeValue } from '@chakra-ui/color-mode'\nimport {\n Box,\n Button,\n Center,\n Flex,\n Heading,\n Image,\n LinkBox,\n Spacer,\n Text,\n VStack,\n Wrap,\n} from '@chakra-ui/react'\nimport React from 'react'\nimport { Link as RouterLink, useParams } from 'react-router-dom'\nimport { ParallaxBanner } from 'react-scroll-parallax'\nimport { mostVoted, useCrag, useCragPhoto, useSectors } from '../utils/backend'\nimport DrawerDialog from './drawer-dialog'\nimport EditButton from './edit-button'\nimport { SectorList, SectorListItem } from '../pages/crag/sectors'\nimport VoteConflictWarning from './vote-conflict-warning'\n\nfunction CragBannerMenuButton({ children, to, buttonicon, ...props }) {\n const bg = useColorModeValue('gray.200', 'white')\n return (\n \n \n \n {children}\n \n \n \n )\n}\n\nfunction CragBannerMenuDivider({ ...props }) {\n const bg = useColorModeValue('gray.200', 'white')\n return (\n \n \n \n )\n}\n\nfunction CragBannerMenu({ children }) {\n const bannerColor = useColorModeValue('gray.600', 'gray.800')\n const { cragId } = useParams()\n const { crag, error: cragError } = useCrag(cragId)\n\n if (cragError) {\n return null\n }\n\n return (\n \n \n \n \n \n Overview\n \n \n Sectors}\n header={\n \n Sectors of {mostVoted(crag?.name_votes)}{' '}\n \n \n \n \n }\n >\n \n \n \n \n Problems\n \n \n \n Map\n \n \n \n Access\n \n \n\n {children}\n \n \n \n \n )\n}\n\nfunction CragBanner({ children, cragId, ...props }) {\n const { crag, error: cragError } = useCrag(cragId)\n const { cragPhoto, error: cragPhotoError } = useCragPhoto(\n crag && crag.banner_votes.length >= 1 ? mostVoted(crag.banner_votes) : null\n )\n\n if (\n crag === undefined ||\n (cragPhoto === undefined && crag.banner_votes.length >= 1)\n ) {\n return 'Loading...'\n }\n\n if (cragError || cragPhotoError) {\n return 'Error loading crag photo'\n }\n\n return (\n \n \n \n \n \n {children}\n \n \n \n \n \n \n )\n}\n\nfunction CragFrontPageBanner({\n bgParallaxAmount,\n cragParallaxAmount,\n children,\n cragId,\n ...props\n}) {\n const { crag, error: cragError } = useCrag(cragId)\n const { cragPhoto, error: cragPhotoError } = useCragPhoto(\n crag && crag.banner_votes.length >= 1 ? mostVoted(crag.banner_votes) : null\n )\n\n if (\n crag === undefined ||\n (cragPhoto === undefined && crag.banner_votes.length >= 1)\n ) {\n return 'Loading...'\n }\n\n if (cragError || cragPhotoError) {\n return 'Error loading crag photo'\n }\n\n return (\n \n \n \n \n \n \n \n \n \n \n {children}\n \n ),\n },\n ]}\n style={{\n minHeight: 'inherit',\n maxHeight: 'inherit',\n }}\n >\n \n \n )\n}\n\nfunction CragBannerSectors() {\n const { cragId } = useParams()\n const { crag, error: cragError } = useCrag(cragId)\n const { sectors, error: errorSectors } = useSectors({ crag_id: cragId }, 100)\n\n if (cragError || errorSectors) {\n return null\n }\n\n return (\n \n {sectors && sectors.length > 0 ? (\n \n {sectors\n .filter((sector) => sector.name_votes.length >= 1 && sector)\n .map((sector) => (\n \n {mostVoted(sector.name_votes)}\n \n \n ))}\n \n ) : (\n No sectors has been added yet.\n )}\n \n )\n}\n\nexport { CragBanner, CragBannerMenu, CragBannerMenuButton, CragFrontPageBanner }\n","import { useCallback } from 'react'\nimport {\n drawBeizerSplines,\n drawMarkers,\n LINE_COLOR,\n SELECTED_COLOR,\n} from '../utils/splines'\nimport { Flex, Box } from '@chakra-ui/react'\nimport { IconButton } from '@chakra-ui/react'\nimport { EditIcon } from '@chakra-ui/icons'\nimport { Link as RouterLink } from 'react-router-dom'\nimport { mostVoted } from '../utils/backend'\nimport CanvasOverlay from './canvas-overlay'\n\nexport default function LineImage({ image, lines, selectedIndex, ...props }) {\n if (!lines) {\n lines = []\n } else if (!Array.isArray(lines)) {\n lines = [lines]\n }\n\n const parsedLines = lines.map((line) => mostVoted(line.line_path_votes))\n\n const draw = useCallback(\n (ctx) => {\n ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height)\n parsedLines.forEach((line, index) => {\n const color = index === selectedIndex ? SELECTED_COLOR : LINE_COLOR\n drawBeizerSplines(ctx, { color, lineWidth: 3 }, line)\n drawMarkers(ctx, { markerColor: color }, line, index)\n })\n },\n [parsedLines, selectedIndex]\n )\n\n return (\n \n \n \n \n }\n />\n \n \n \n )\n}\n","import React, { useState } from 'react'\nimport { Box, Heading, Text, Progress, Checkbox } from '@chakra-ui/react'\n\nimport { countVotes } from '../utils/backend.js'\n\nexport default function Votes({ votes, countedVoteItem, value, onChange }) {\n const countedVotes = countVotes(votes)\n const maxVoteCount = Math.max(countedVotes.map(({ count }) => count))\n const [checkboxes, setCheckboxes] = useState(\n countedVotes.map(\n (countedVote) =>\n JSON.stringify(countedVote.value) === JSON.stringify(value)\n )\n )\n\n return (\n \n Votes\n {countedVotes.length === 0 ? (\n There are no votes.\n ) : (\n countedVotes.map((countedVote, index) => (\n \n {\n const newCheckboxes = checkboxes.map(() => false)\n newCheckboxes[index] = !checkboxes[index]\n setCheckboxes(newCheckboxes)\n if (newCheckboxes[index]) {\n onChange(countedVote)\n } else {\n onChange(null)\n }\n }}\n >\n {countedVoteItem(countedVote, maxVoteCount)}\n \n \n \n ))\n )}\n \n )\n}\n","import {\n Box,\n Button,\n Center,\n Checkbox,\n Container,\n FormControl,\n FormLabel,\n Text,\n} from '@chakra-ui/react'\nimport { useEffect, useState } from 'react'\nimport { useHistory, useParams } from 'react-router-dom'\nimport Loader from '../components/loader.js'\nimport Votes from '../components/votes.js'\nimport {\n mostVoted,\n useAuthorizedFetcher,\n useClimb,\n useUserVote,\n} from '../utils/backend.js'\n\nexport default function VoteClimbBroken() {\n const { cragId, sectorId, climbId } = useParams()\n const { climb, error: errorClimb } = useClimb(climbId)\n const { userVote, error: errorUserVote } = useUserVote(climb?.broken_votes)\n const {\n authorizedFetcher,\n isLoading,\n error: authError,\n } = useAuthorizedFetcher()\n const history = useHistory()\n const [climbBroken, setClimbBroken] = useState(true)\n const [publicVote, setPublicVote] = useState(true)\n\n useEffect(() => {\n if (climbBroken === null && userVote) {\n setClimbBroken(userVote.value)\n setPublicVote(userVote.public)\n }\n }, [climbBroken, userVote])\n\n const voteClimbBroken = (climbId) => {\n const body = JSON.stringify({\n value: climbBroken,\n public: publicVote,\n })\n return userVote\n ? authorizedFetcher(`/climbs/${climbId}/broken_votes/${userVote.id}`, {\n method: 'PUT',\n body: body,\n })\n : authorizedFetcher(`/climbs/${climbId}/broken_votes`, {\n method: 'POST',\n body: body,\n })\n }\n\n const navigateToClimb = (climbId) =>\n history.replace(`/crags/${cragId}/sectors/${sectorId}/climbs/${climbId}`)\n\n const handleSubmit = () =>\n voteClimbBroken(climbId).then(() => navigateToClimb(climbId))\n\n if (authError || errorClimb || errorUserVote) {\n return (\n \n \n Failed to load page.\n \n \n )\n }\n\n if (!authorizedFetcher && !isLoading) {\n return (\n \n \n You need to login to vote.\n \n \n )\n }\n\n if (!climb || userVote === undefined) {\n return \n }\n\n return (\n \n {' '}\n Votes for {mostVoted(climb.name_votes)} as broken\n (\n \n {countedVote.value} ({countedVote.count} votes)\n \n )}\n onChange={(countedVote) => {\n if (countedVote === null) {\n setClimbBroken(false)\n } else {\n setClimbBroken(countedVote.value)\n }\n }}\n value={userVote?.value || null}\n />\n \n Anonymous\n {\n setPublicVote(!publicVote)\n }}\n />\n \n You can vote anonymously if you want but your vote will have a\n slightly lower value than if you openly support it.\n \n \n \n \n )\n}\n","import { useColorModeValue } from '@chakra-ui/color-mode'\nimport { ChevronDownIcon } from '@chakra-ui/icons'\nimport {\n Alert,\n AlertIcon,\n AspectRatio,\n Avatar,\n Box,\n Button,\n Center,\n Collapse,\n Container,\n Flex,\n Heading,\n HStack,\n IconButton,\n Link,\n LinkBox,\n ListItem,\n Menu,\n MenuButton,\n MenuItem,\n MenuList,\n OrderedList,\n Progress,\n Skeleton,\n Spacer,\n Text,\n} from '@chakra-ui/react'\nimport React from 'react'\nimport Linkify from 'react-linkify'\nimport { Link as RouterLink, useParams } from 'react-router-dom'\nimport StarRatings from 'react-star-ratings'\nimport AscentType from '../components/ascent-type.js'\nimport { BetaVideo, youtube_parser } from '../components/beta-video.js'\nimport { ClimbBreadcrumb } from '../components/breadcrumb.js'\nimport { CragBanner, CragBannerMenu } from '../components/crag-banner.js'\nimport EditButton from '../components/edit-button.js'\nimport Grade from '../components/grade.js'\nimport LineImage from '../components/line-image.js'\nimport Loader from '../components/loader.js'\nimport ModalDialog from '../components/modal-dialog.js'\nimport { PageFooter } from '../components/page-footer.js'\nimport { TickRocksLogo } from '../components/tick-rocks-logo.js'\nimport VoteConflictWarning from '../components/vote-conflict-warning.js'\nimport {\n countVotes,\n mostVoted,\n useAscents,\n useBetaVideos,\n useClimb,\n useCurrentUser,\n useImage,\n useLines,\n useUser,\n} from '../utils/backend.js'\nimport AddAscent from './add-ascent.js'\nimport AddBetaVideo from './add-beta-video.js'\nimport Comments from './comments.js'\nimport RemovePage from './remove-page.js'\nimport VoteClimbBroken from './vote-climb-broken.js'\n\nexport default function Climb() {\n const { cragId, sectorId, climbId } = useParams()\n const { climb, error: errorClimb } = useClimb(climbId)\n const { lines, error: errorLines } = useLines({ climb_id: climbId })\n const { ascents, error: errorAscents } = useAscents({ climb_id: climbId })\n const { betaVideos, error: errorBetaVideos } = useBetaVideos({\n climb_id: climbId,\n })\n\n const bg = useColorModeValue('gray.100', 'gray.700')\n const boxBg = useColorModeValue('offwhite', 'gray.800')\n const buttonBg = useColorModeValue('gray.200', 'gray.600')\n\n if (errorClimb || errorLines || errorAscents || errorBetaVideos) {\n return (\n \n \n Failed to load climb.\n \n \n )\n }\n\n if (climb === undefined || lines === undefined || ascents === undefined) {\n return \n }\n\n const countedGradeVotes = countVotes(climb.grade_votes)\n const maxGradeVoteCount = Math.max(Object?.values(countedGradeVotes))\n\n return (\n \n \n \n \n \n \n \n {climb.name_votes.length >= 1\n ? mostVoted(climb.name_votes)\n : 'No name votes'}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {climb.rating_votes.length >= 1 ? (\n \n ) : (\n 'No rating votes'\n )}\n \n \n \n \n \n \n \n \n \n \n \n \n \n {climb.broken_votes.length >= 1 ? (\n \n \n \n This problem is flagged as broken by{' '}\n {climb.broken_votes.length} user(s).\n \n \n ) : (\n ''\n )}\n\n {lines.length === 0 ? (\n \n {' '}\n \n \n There are no drawn lines for this climb. Go to\n Sector, Edit, New Topo.\n \n {' '}\n \n \n ) : (\n \n {lines.map((line) => (\n \n ))}\n \n )}\n \n {betaVideos?.length > 0 ? (\n \n \n \n \n Most popular beta video\n \n \n \n \n \n \n \n \n \n ) : (\n \n )}\n \n \n \n \n Comments\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 {climb.name_votes.length >= 1\n ? mostVoted(climb.name_votes)\n : 'No name votes'}\n {', '}\n \n \n \n \n \n \n \n \n {climb.description_votes.length >= 1\n ? mostVoted(climb.description_votes)\n : 'Edit to add description'}\n \n \n \n \n \n \n \n \n Grade votes\n \n \n \n \n {countedGradeVotes.length === 0 ? (\n There are no grade votes.\n ) : (\n countedGradeVotes.map((vote) => (\n \n \n \n ({vote.count} votes)\n \n \n \n ))\n )}\n \n \n \n \n Rating\n\n \n \n \n \n \n {climb.rating_votes.length >= 1 ? (\n \n ) : (\n 'No rating votes'\n )}\n \n {' '}\n \n \n Beta videos\n \n \n \n }\n >\n \n \n \n\n \n {betaVideos?.length === 0\n ? 'There are no beta videos.'\n : betaVideos?.map((betaVideo) => (\n \n ))}\n \n \n \n \n External Links\n\n \n \n \n \n \n \n \n Link\n \n \n \n \n Link\n \n \n \n \n \n \n Ticks\n \n \n \n \n \n }\n >\n \n \n \n \n \n \n \n \n Pre-ticks\n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nfunction Ascents({ ascents }) {\n const [show, setShow] = React.useState(false)\n const handleToggle = () => setShow(!show)\n return (\n \n {ascents.length > 9 ? (\n \n \n {ascents.length === 0\n ? 'There are no ascents.'\n : ascents\n .filter((ascent) => ascent.public === true)\n .map((ascent) => )}\n \n \n {show ? (\n ''\n ) : (\n \n )}\n \n \n ) : (\n \n {ascents.length === 0\n ? 'There are no ascents.'\n : ascents\n .filter((ascent) => ascent.public === true)\n .map((ascent) => )}\n \n )}\n \n )\n}\n\nfunction Ascent({ ascent }) {\n const { user } = useUser(ascent.user_id)\n\n return (\n \n \n \n \n \n \n \n \n \n {user?.display_name || 'Unnamed user'} \n \n \n \n {new Date(ascent.ascent_date).toISOString().slice(0, 10)}\n \n \n \n \n\n \n \n \n \n \n \n \n \n \n {ascent.description}\n \n \n \n \n {user?.id === useCurrentUser().user?.id ? (\n \n ) : (\n ''\n )}\n \n \n \n \n )\n}\n\nfunction ImageWithLines({ line }) {\n const { image, error: errorImage } = useImage(line.image_id)\n\n const boxBg = useColorModeValue('gray.300', 'gray.600')\n // const { lines: otherLines, error: errorOtherLines } = useLines({ image_id: line.image_id })\n\n if (errorImage) {\n return (\n \n Failed to load image/lines.\n \n )\n }\n\n if (image === undefined) {\n return \n }\n\n return (\n \n \n \n )\n}\n","import { useState } from 'react'\nimport { Table, Tbody, Td, Th, Thead, Tr, Link, HStack } from '@chakra-ui/react'\nimport { CragBanner, CragBannerMenu } from '../components/crag-banner'\nimport { useColorMode } from '@chakra-ui/color-mode'\nimport { Box, Flex, LinkBox, Heading, Text } from '@chakra-ui/layout'\nimport { Link as RouterLink, useParams } from 'react-router-dom'\nimport StarRatings from 'react-star-ratings'\nimport { TriangleDownIcon, TriangleUpIcon } from '@chakra-ui/icons'\nimport { FaCommentDots, FaVideo, FaHeartBroken } from 'react-icons/fa'\nimport { TickRocksLogo } from '../components/tick-rocks-logo.js'\nimport {\n useCrag,\n mostVoted,\n useClimbs,\n useGradeSystemGrades,\n useSector,\n useBetaVideos,\n useComments,\n useAscents,\n useCurrentUser,\n} from '../utils/backend'\n\nconst defaultSortAscending = false\nconst linkColor = 'blue.500'\n\nexport default function CragList() {\n const { cragId } = useParams()\n const { crag, error: errorCrag } = useCrag(cragId)\n const { climbs, error: errorClimbs } = useClimbs({ crag_id: cragId })\n\n if (crag === undefined || climbs === undefined) {\n return null\n }\n\n if (errorCrag || errorClimbs) {\n return Error\n }\n return (\n \n \n \n \n \n List of:{' '}\n {crag.name_votes.length >= 1\n ? mostVoted(crag.name_votes)\n : 'No name votes'}\n \n \n \n \n \n \n \n
\n \n \n \n )\n}\n\nconst RouteTable = ({ climbs }) => {\n const [sortKey, setSortKey] = useState('rating')\n const [sortAscending, setSortAscending] = useState(defaultSortAscending)\n\n const { gradeSystemGrades, error } = useGradeSystemGrades()\n if (gradeSystemGrades === undefined || error) {\n return null // TODO: return a loader\n }\n const gradeMap = Object.assign(\n {},\n ...gradeSystemGrades.map((grade) => ({\n [grade.id]: {\n fuzzyUnifiedRank: grade.fuzzy_unified_rank,\n grade: grade.grade,\n rank: grade.rank,\n system: grade.system,\n },\n }))\n )\n\n return (\n \n \n \n \n \n \n Ascents\n \n Sector\n Ticked\n
\n \n \n {climbs\n .sort((climbA, climbB) =>\n sortField(climbA, sortKey, gradeMap) <\n sortField(climbB, sortKey, gradeMap)\n ? sortAscending\n ? -1\n : 1\n : sortField(climbB, sortKey, gradeMap) <\n sortField(climbA, sortKey, gradeMap)\n ? sortAscending\n ? 1\n : -1\n : 0\n )\n .map((climb) => (\n \n \n {/* TODO: should display grade, not most voted */}\n {gradeMap[climb.most_voted_grade]?.grade} | \n \n \n \n \n \n \n ))}\n \n
\n )\n}\n\nconst TableRow = ({ children, climb }) => {\n const { colorMode } = useColorMode()\n const currentUserId = useCurrentUser().user?.id\n const { ascents, error: errorAscents } = useAscents({ climb_id: climb.id })\n if (ascents === undefined || errorAscents || colorMode === undefined) {\n return null\n }\n const isTicked =\n ascents.filter((ascent) => ascent.user_id === currentUserId).length >= 1\n return (\n \n {children}\n
\n )\n}\n\nconst ColumnHeading = ({ children, onClick, cursor }) => {\n return (\n \n {children}\n | \n )\n}\n\nconst SortableColumn = ({\n name,\n sortKey,\n currentSortKey,\n setSortKey,\n currentSortAscending,\n setSortAscending,\n}) => {\n return (\n {\n if (currentSortKey === sortKey) {\n if (currentSortAscending !== defaultSortAscending) {\n setSortKey(null)\n setSortAscending(defaultSortAscending)\n } else {\n setSortAscending(!defaultSortAscending)\n }\n } else {\n setSortKey(sortKey)\n setSortAscending(defaultSortAscending)\n }\n }}\n cursor=\"pointer\"\n >\n {name} \n {sortKey === currentSortKey ? (\n currentSortAscending ? (\n \n ) : (\n \n )\n ) : (\n \n )}\n \n )\n}\n\nconst sortField = (climb, sortKey, gradeMap) => {\n if (sortKey === 'name') {\n return mostVoted(climb.name_votes)\n }\n if (sortKey === 'grade') {\n // TODO: should be average grade, not most voted\n return gradeMap[climb.most_voted_grade]?.fuzzyUnifiedRank\n }\n if (sortKey === 'rating') {\n return climb.average_rating\n }\n if (sortKey === 'type') {\n return mostVoted(climb.climb_type_votes)\n }\n}\n\nconst NameCell = ({ climb }) => {\n const { sector, error } = useSector(climb.sector_id)\n if (sector === undefined || error) {\n return null\n }\n return (\n \n \n \n {mostVoted(climb.name_votes)}\n {' '}\n \n \n | \n )\n}\n\nconst ClimbTagIcons = ({ climb }) => {\n const { betaVideos } = useBetaVideos({\n climb_id: climb.id,\n })\n const { comments } = useComments(climb.id)\n return (\n \n {comments !== undefined && comments.length >= 1 ? (\n = 2\n ? `${comments.length} comments`\n : `${comments.length} comment`\n }\n />\n ) : (\n ''\n )}\n {betaVideos !== undefined && betaVideos.length >= 1 ? (\n = 2\n ? `${betaVideos.length} beta videos`\n : `${betaVideos.length} beta video`\n }\n />\n ) : (\n ''\n )}\n {climb.broken_votes !== undefined && climb.broken_votes.length >= 1 ? (\n \n ) : (\n ''\n )}\n \n )\n}\n\nconst RatingCell = ({ climb }) => {\n return (\n \n {climb.rating_votes.length >= 1 ? (\n \n ) : (\n 'No votes yet'\n )}\n | \n )\n}\n\nconst AscentsCell = ({ climb }) => {\n const { ascents } = useAscents({ climb_id: climb.id })\n return (\n {ascents !== undefined && ascents.length > 0 ? ascents.length : 0} | \n )\n}\n\nconst ClimbTypeCell = ({ climb }) => {\n const climbType = mostVoted(climb.climb_type_votes)\n return (\n \n {(climbType !== undefined) & (climbType !== null)\n ? climbType.value\n : 'No votes yet'}\n | \n )\n}\n\nconst SectorCell = ({ climb }) => {\n const { sector, error } = useSector(climb.sector_id)\n if (sector === undefined || error) {\n return null\n }\n return (\n \n \n {mostVoted(sector.name_votes)}\n {' '}\n | \n )\n}\n\nconst TickedCell = ({ climb }) => {\n const currentUserId = useCurrentUser().user?.id\n const { ascents, error: errorAscents } = useAscents({ climb_id: climb.id })\n if (ascents === undefined || errorAscents) {\n return null\n }\n const isTicked =\n ascents.filter((ascent) => ascent.user_id === currentUserId).length >= 1\n return (\n \n \n | \n )\n}\n","import { Box, Button, Center, Image, Text } from '@chakra-ui/react'\nimport React from 'react'\nimport 'react-medium-image-zoom/dist/styles.css'\nimport {\n authorizedFetcher,\n useCragPhoto,\n useCurrentUser,\n useUser,\n} from '../utils/backend'\n\nexport default function CragPhotoPage({ cragPhotoId }) {\n const { cragPhoto, error } = useCragPhoto(cragPhotoId)\n const { user } = useUser(cragPhoto?.user_id)\n const { user: currentUser } = useCurrentUser()\n\n const deleteImage = () =>\n authorizedFetcher(`/crag_photos/${cragPhotoId}}`, {\n method: 'DELETE',\n })\n\n if (cragPhoto === undefined || user === undefined) {\n return ''\n }\n\n if (error) {\n return Error fetching photo\n }\n return (\n \n \n Uploaded by: {user?.display_name}\n \n {user?.id === currentUser.id ? (\n \n ) : (\n ''\n )}\n \n \n \n \n \n \n )\n}\n","import {\n Avatar,\n Box,\n Fade,\n SimpleGrid,\n Text,\n useDisclosure,\n} from '@chakra-ui/react'\nimport React from 'react'\nimport CragPhotoPage from '../pages/crag-photo'\nimport { useUser } from '../utils/backend'\nimport ModalDialog from './modal-dialog'\n\nfunction PhotoGrid({ cragPhotos, error, children, ...props }) {\n if (cragPhotos === undefined) {\n return ''\n }\n\n if (error) {\n return Error fetching photos\n }\n\n return (\n \n {children}\n \n {cragPhotos.map((cragPhoto) => {\n return (\n \n )\n })}\n \n \n )\n}\n\nfunction CragPhoto({ img, cragId, imgId, userId, ...props }) {\n const { isOpen, onToggle } = useDisclosure()\n const { user } = useUser(userId)\n return (\n \n \n \n \n \n Uploaded by {user?.display_name}\n \n \n \n \n \n \n \n }\n size=\"4xl\"\n width=\"100%\"\n >\n \n \n \n )\n}\n\nexport { PhotoGrid }\n","import useSwr from 'swr'\nimport { useAuth0 } from '@auth0/auth0-react'\n\nexport const useToken = () => {\n const { getAccessTokenSilently, isAuthenticated } = useAuth0()\n const { data, error } = useSwr(\n isAuthenticated ? 'token' : null,\n getAccessTokenSilently\n )\n return { token: data, error }\n}\n","import { useToken } from './useToken'\n\nconst checkResponseStatus = (response) => {\n if (response.status >= 400) {\n throw response\n }\n return response\n}\n\nexport const useAuthorizedFetcher = () => {\n const { token } = useToken()\n\n if (token) {\n return (endpoint, requestOptions = {}) =>\n fetch(`${process.env.REACT_APP_BACKEND}${endpoint}`, {\n ...requestOptions,\n method: requestOptions?.method ? requestOptions.method : 'get',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${token}`,\n ...requestOptions?.headers,\n },\n body: requestOptions?.body\n ? JSON.stringify(requestOptions.body)\n : undefined,\n })\n .then(checkResponseStatus)\n .then((response) => {\n if (response.headers.get('content-type') === 'application/json') {\n return response.json()\n } else {\n return response.blob()\n }\n })\n } else {\n return null\n }\n}\n","import { useAuth0 } from '@auth0/auth0-react'\nimport { useAuthorizedFetcher } from './useAuthorizedFetcher.js'\nimport useSWR from 'swr'\nimport { useSWRConfig } from 'swr'\nimport { stringify } from 'query-string'\n\nconst camelToUnderscore = (key) => {\n var result = key.replace(/([A-Z])/g, ' $1')\n return result.split(' ').join('_').toLowerCase()\n}\n\nconst camelToUnderscoreObject = (object) =>\n Object.keys(object).reduce(\n (newObject, key) =>\n Object.assign(newObject, { [camelToUnderscore(key)]: object[key] }),\n {}\n )\n\nconst removeUndefined = (object) =>\n Object.keys(object).reduce(\n (newObject, key) =>\n object[key] === undefined || object[key] === ''\n ? newObject\n : Object.assign(newObject, { [key]: object[key] }),\n {}\n )\n\nconst queryString = (query) => {\n return stringify(camelToUnderscoreObject(removeUndefined(query)))\n}\n\nexport const useBackend = (endpoint, kwargs = {}) => {\n const query = kwargs?.query\n const options = kwargs?.options\n const { mutate } = useSWRConfig()\n const { user } = useAuth0()\n const authorizedFetcher = useAuthorizedFetcher()\n\n const uri =\n Object.keys(query ?? {}).length === 0\n ? endpoint\n : `${endpoint}?${queryString(query)}`\n\n const key = [uri, user?.sub]\n\n const backend = useSWR(\n authorizedFetcher && uri ? key : null,\n (_) => authorizedFetcher(uri, options),\n options\n )\n\n // Local bound mutate is mutating new object if the key changes\n // https://github.com/vercel/swr/issues/1732\n const replaceLocalMutate = (data, shouldRevalidate) => {\n // options?.onMutate?.(data);\n const promise = options?.onMutate?.(data)\n return Promise.all([\n mutate(key, data, shouldRevalidate),\n ...(promise ? [promise] : []),\n ])\n }\n\n return {\n ...backend,\n mutate: replaceLocalMutate,\n isLoading: backend.data === undefined && backend.error === undefined,\n key,\n }\n}\n","import { useBackend } from './useBackend'\n\nexport const useQuery = (collection, query, limit, offset) =>\n useBackend(collection && query ? `/${collection}/query` : null, {\n query: {\n limit: limit,\n offset: offset,\n },\n options: {\n method: 'POST',\n body: query,\n },\n })\n// useBackend(\n// collection && query\n// ? `/${collection}/query?limit=${limit}&offset=${offset}`\n// : null,\n// {\n// method: 'POST',\n// body: JSON.stringify(query),\n// }\n// )\n","import { useColorModeValue } from '@chakra-ui/color-mode'\nimport { AddIcon, ChevronDownIcon, EditIcon } from '@chakra-ui/icons'\nimport {\n Alert,\n AlertIcon,\n AlertTitle,\n Avatar,\n AvatarGroup,\n Box,\n Button,\n Center,\n CloseButton,\n Container,\n Flex,\n Heading,\n IconButton,\n Link,\n LinkBox,\n Menu,\n MenuButton,\n MenuItem,\n MenuList,\n Spacer,\n Stack,\n Tag,\n Text,\n Wrap,\n} from '@chakra-ui/react'\nimport Linkify from 'react-linkify'\nimport { Link as RouterLink, useParams } from 'react-router-dom'\nimport {\n CragBannerMenu,\n CragFrontPageBanner,\n} from '../../components/crag-banner.js'\nimport { CragComponentBox } from '../../components/crag-component-box'\nimport { CragGrades } from './crag-grades.js'\nimport EditButton from '../../components/edit-button.js'\nimport Loader from '../../components/loader.js'\nimport ModalDialog from '../../components/modal-dialog.js'\nimport { PageFooter } from '../../components/page-footer.js'\nimport { PhotoGrid } from '../../components/photo-grid.js'\nimport { Sector, SectorGrid } from './sectors.js'\nimport VoteConflictWarning from '../../components/vote-conflict-warning.js'\nimport {\n countVotes,\n mostVoted,\n useCrag,\n useCragPhotos,\n useSectors,\n} from '../../utils/backend.js'\nimport AddCragPhoto from '../add-crag-photo.js'\nimport AddSector from '../add-sector.js'\nimport Comments from '../comments.js'\nimport { useClimbs } from '../../backend/useClimbs.js'\n\nexport default function Crag() {\n const bg = useColorModeValue('gray.200', 'gray.700')\n const boxBg = useColorModeValue('offwhite', 'gray.600')\n const headingColor = useColorModeValue('gray.900', 'gray.100')\n const headingShadow = useColorModeValue(\n 'none',\n '3px 3px 3px rgba(0, 0, 0, 0.2)'\n )\n\n const { cragId } = useParams()\n const { crag, error: errorCrag } = useCrag(cragId)\n const { cragPhotos, error: errorCragPhotos } = useCragPhotos({\n crag_id: cragId,\n })\n const { sectors, error: errorSectors } = useSectors({ crag_id: cragId }, 100)\n\n const climbs = useClimbs(cragId ? { crag_id: cragId } : null, 100)\n const boulderClimbs = climbs.data?.filter(\n (climb) =>\n climb.climb_type_votes.filter((vote) => vote.value === 'boulder')\n .length >= 1\n )?.length\n const sportClimbs = climbs.data?.filter(\n (climb) =>\n climb.climb_type_votes.filter((vote) => vote.value === 'sport').length >=\n 1\n )\n const traditionalClimbs = climbs.data?.filter(\n (climb) =>\n climb.climb_type_votes.filter((vote) => vote.value === 'traditional')\n .length >= 1\n )?.length\n\n if (errorCrag || errorSectors) {\n return (\n \n \n Failed to load crag.\n \n \n )\n }\n\n if (crag === undefined || sectors === undefined) {\n return \n }\n return (\n \n \n \n \n {crag.name_votes.length >= 1\n ? mostVoted(crag.name_votes)\n : 'No name votes'}\n \n \n \n \n \n \n \n \n \n in the area of{' '}\n \n Uppsala, Sweden\n \n \n \n {boulderClimbs >= 1 && (\n \n {boulderClimbs} Boulders\n \n )}\n {sportClimbs >= 1 && (\n \n {sportClimbs} Sport routes\n \n )}\n {traditionalClimbs >= 1 && (\n \n {traditionalClimbs} Trad routes\n \n )}\n \n \n \n \n \n {countVotes(crag?.access_information_votes)\n .filter((vote) => vote.count > 1)\n .map((vote) => (\n \n \n \n Access Issue!\n {vote.value} ({vote.count} votes)\n \n \n ))}\n\n \n \n New comment!\n Rasmus: Kul och så men va i hela jäv... View now\n \n \n \n \n \n \n \n \n \n \n \n Description\n \n \n \n \n \n \n \n \n \n \n {crag.description_votes.length === 0\n ? 'No description has been added.'\n : mostVoted(crag.description_votes)}\n \n \n \n \n\n \n \n \n Access\n \n \n \n \n \n \n \n \n \n \n {crag.access_information_votes.length === 0\n ? 'No access information has been added.'\n : mostVoted(crag.access_information_votes)}\n \n \n \n \n \n \n Authors\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 Sectors\n \n \n\n \n \n \n }\n display={{ base: 'block', md: 'none' }}\n boxShadow=\"xl\"\n colorScheme=\"brand\"\n color=\"white\"\n >\n \n \n }\n >\n \n \n \n \n \n \n \n \n \n\n \n {sectors.length > 0 ? (\n \n {sectors\n .filter((sector) => sector.name_votes.length >= 1 && sector)\n .map((sector) => (\n \n {mostVoted(sector.name_votes)}\n \n \n ))}\n \n ) : (\n No sectors has been added yet.\n )}\n \n \n \n \n \n \n \n Recent comments\n \n \n\n \n \n \n }\n display={{ base: 'block', md: 'none' }}\n boxShadow=\"xl\"\n colorScheme=\"brand\"\n color=\"white\"\n >\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Photos of{' '}\n {crag.name_votes.length >= 1\n ? mostVoted(crag.name_votes)\n : 'No name votes'}\n \n \n \n \n }\n display={{ base: 'block', md: 'none' }}\n boxShadow=\"xl\"\n colorScheme=\"brand\"\n color=\"white\"\n >\n \n \n }\n >\n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n","import { useQuery } from './useQuery'\n\nexport const useClimbs = (query, limit = 20, offset = 0) => {\n return useQuery('climbs', query, limit, offset)\n}\n","import {\n Box,\n Button,\n Center,\n Container,\n Heading,\n HStack,\n Link,\n Skeleton,\n StackDivider,\n Stat,\n StatLabel,\n StatNumber,\n Text,\n VStack,\n} from '@chakra-ui/react'\nimport { Link as RouterLink } from 'react-router-dom'\nimport Loader from '../components/loader.js'\nimport { mostVoted, useClimbs, useCrags, useSectors } from '../utils/backend.js'\n\nexport default function Crags() {\n const { crags, error } = useCrags({})\n\n if (error) {\n return (\n \n \n Failed to load crags.\n \n \n )\n }\n\n if (crags === undefined) {\n return \n }\n\n if (crags.length === 0) {\n return (\n \n \n There are no crags to show.\n \n \n )\n }\n\n return (\n \n \n \n }\n spacing={6}\n alignItems=\"left\"\n width=\"100%\"\n >\n {crags\n .filter((crag) => crag.name_votes.length >= 1)\n .map((crag) => (\n \n ))}\n \n \n \n )\n}\n\nfunction Crag({ crag }) {\n const { sectors, error: errorSectors } = useSectors({ crag_id: crag.id })\n const { climbs, error: errorClimbs } = useClimbs({ crag_id: crag.id })\n\n if (errorSectors || errorClimbs) {\n return Failed to load crag.\n }\n\n return (\n \n \n \n \n {mostVoted(crag.name_votes)}\n \n \n \n \n Sectors\n {sectors ? sectors.length : '?'}\n \n \n Climbs\n {climbs ? climbs.length : '?'}\n \n \n \n \n \n \n )\n}\n","import { useColorModeValue } from '@chakra-ui/color-mode'\nimport {\n Avatar,\n Box,\n Button,\n HStack,\n Image,\n Text,\n VStack,\n} from '@chakra-ui/react'\n\nexport default function Feed(filter) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nfunction FeedItemBox({ children }) {\n const bg = useColorModeValue('gray.200', 'gray.600')\n return (\n \n {children}\n \n )\n}\n\nfunction FeedItem({ itemId, itemType }) {\n if (itemType === 'content') {\n return (\n \n \n \n UserName added new content {' '}\n {' '}\n \n \n \n \n \n )\n }\n if (itemType === 'ascent') {\n return (\n \n \n \n UserName just ticked! {' '}\n \n \n \n \n \n \n \n )\n }\n if (itemType === 'photo') {\n return (\n \n \n \n UserName added new photo!{' '}\n \n \n \n \n \n \n \n \n \n )\n }\n if (itemType === 'betavideo') {\n return (\n \n \n \n UserName added new beta video for ... {' '}\n \n\n \n \n )\n } else return 's'\n}\n","import { Box } from '@chakra-ui/react'\nimport { CragComponentBox } from '../components/crag-component-box.js'\nimport Feed from '../components/feed.js'\nimport { PageFooter } from '../components/page-footer.js'\n\nexport default function FeedPage() {\n return (\n <>\n \n \n \n \n \n \n >\n )\n}\n","import {\n Box,\n Heading,\n HStack,\n Slider,\n SliderFilledTrack,\n SliderThumb,\n SliderTrack,\n Text,\n} from '@chakra-ui/react'\n\nexport default function FilterSlider({ label, ...props }) {\n return (\n \n \n {label}\n \n \n \n \n \n \n \n {props.value}\n \n \n \n \n )\n}\n","import { useCallback, useLayoutEffect, useRef } from 'react'\n\nexport default function useCallbackRef(fn, dependencies = []) {\n // More or less stolen from:\n // https://github.com/chakra-ui/chakra-ui/blob/7e2cb4c344cabf9ddd607a632affd84060dcb424/packages/hooks/src/use-callback-ref.ts\n const ref = useRef(fn)\n\n useLayoutEffect(() => {\n ref.current = fn\n })\n return useCallback(\n (...args) => {\n return ref.current?.(...args)\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [...dependencies]\n )\n}\n","import { Text } from '@chakra-ui/layout'\nimport { Box } from '@chakra-ui/layout'\nimport { SliderThumb } from '@chakra-ui/slider'\nimport { SliderFilledTrack } from '@chakra-ui/slider'\nimport { SliderTrack } from '@chakra-ui/slider'\nimport { Slider } from '@chakra-ui/slider'\nimport { useCallback, useEffect, useState } from 'react'\nimport useCallbackRef from '../hooks/use-callback-ref'\n\nexport default function RangeSlider({\n min,\n max,\n step = 1,\n fromArray,\n value,\n onChange,\n onChangeEnd,\n ...props\n}) {\n const [lowerValue, setLowerValue] = useState(value[0])\n const [upperValue, setUpperValue] = useState(value[1])\n const onChangeCallback = useCallbackRef(onChange)\n const lowerChangeEnd = useCallbackRef((lowerValue) =>\n onChangeEnd([lowerValue, upperValue])\n )\n const upperChangeEnd = useCallbackRef((upperValue) =>\n onChangeEnd([lowerValue, upperValue])\n )\n\n const handleLowerChangeEnd = useCallback(\n () => lowerChangeEnd(lowerValue),\n [lowerChangeEnd, lowerValue]\n )\n const handleUpperChangeEnd = useCallback(\n () => upperChangeEnd(upperValue),\n [upperChangeEnd, upperValue]\n )\n\n useEffect(() => {\n onChangeCallback([lowerValue, upperValue])\n }, [lowerValue, upperValue, onChangeCallback])\n\n if ((fromArray && min) || (fromArray && max)) {\n throw new Error('fromArray should not be used with the min or max prop.')\n }\n\n const minimum = fromArray ? 0 : min\n const maximum = fromArray ? fromArray.length - 1 : max\n const displayFunction = fromArray\n ? (index) => fromArray[index]\n : (index) => index\n\n return (\n \n \n setUpperValue(Math.max(lowerValue, value))}\n onChangeEnd={handleUpperChangeEnd}\n >\n \n \n \n \n {displayFunction(upperValue)}\n \n \n \n \n {\n // To make sure both sliders don't get stuck at 0\n // (only the lower value one is clickable)\n if (lowerValue === 0 && upperValue === 0) {\n setUpperValue(value)\n }\n setLowerValue(Math.min(value, upperValue))\n }}\n onChangeEnd={handleLowerChangeEnd}\n >\n \n \n \n\n \n {displayFunction(lowerValue)}\n \n \n \n \n )\n}\n","import { Box } from '@chakra-ui/react'\n// eslint-disable-next-line import/no-webpack-loader-syntax\nimport mapboxgl from '!mapbox-gl'\nimport { useEffect, useRef, useState } from 'react'\nimport useCallbackRef from '../hooks/use-callback-ref'\n\nexport default function MapboxMap({\n lng = 17.194966,\n lat = 59.821977,\n zoom = 8,\n onMapLoad,\n mapEffects,\n deps,\n h = '50vh',\n}) {\n const [mapLoaded, setMapLoaded] = useState(false)\n const [stylesLoaded, setStylesLoaded] = useState(false)\n const mapContainer = useRef()\n const mapboxMap = useRef()\n const onLoad = useCallbackRef(onMapLoad)\n const effects = useCallbackRef(mapEffects)\n\n useEffect(() => {\n if (mapboxMap.current) {\n return\n }\n\n mapboxMap.current = new mapboxgl.Map({\n container: mapContainer.current,\n style: 'mapbox://styles/trabuchhobbes/ckml1bv0s28tu17ntgo22j7i9',\n center: [lng, lat],\n attributionControl: false,\n zoom,\n })\n\n setMapLoaded(true)\n\n return () => mapboxMap.current.remove()\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [onLoad])\n\n useEffect(() => {\n if (!mapLoaded) return\n\n mapboxMap.current.on('load', () => {\n mapboxMap.current.addControl(\n new mapboxgl.AttributionControl(),\n 'top-left'\n )\n\n onLoad(mapboxMap.current)\n })\n\n mapboxMap.current.on('styledata', () => {\n setStylesLoaded(true)\n })\n }, [mapLoaded, onLoad])\n\n useEffect(() => {\n if (!mapLoaded || !stylesLoaded) return\n\n effects(mapboxMap.current)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [lat, lng, zoom, effects, ...deps, stylesLoaded, mapLoaded])\n\n return \n}\n","import ReactDOM from 'react-dom'\n\nexport default function MapPopupPortal({ domNode, children }) {\n if (!domNode) {\n return null\n }\n return ReactDOM.createPortal(children, domNode)\n}\n","import { Box, Link, Skeleton, Text } from '@chakra-ui/react'\nimport { Link as RouterLink } from 'react-router-dom'\nimport { mostVoted, useGradeSystemGrade } from '../utils/backend'\n\nexport default function SearchResult({ climb }) {\n const { grade, error } = useGradeSystemGrade(mostVoted(climb.grade_votes))\n if (error) {\n return Failed to load grade.\n }\n\n if (grade === undefined) {\n return (\n \n ?\n \n )\n }\n return (\n \n \n {mostVoted(climb.name_votes)}, {grade.grade}\n \n \n )\n}\n","import { IconButton } from '@chakra-ui/button'\nimport { useColorModeValue } from '@chakra-ui/color-mode'\nimport { ChevronLeftIcon, ChevronRightIcon } from '@chakra-ui/icons'\nimport { Flex, Text, VStack } from '@chakra-ui/layout'\nimport { useState } from 'react'\nimport SearchResult from './search-result'\nexport default function MapPopup({ climbs }) {\n const [climbIndex, setClimbIndex] = useState(0)\n const textColor = useColorModeValue('black', 'black')\n\n if (!climbs) return null\n\n const climb = climbs[climbIndex]\n const nClimbs = climbs.length\n\n let leftArrow = null\n let rightArrow = null\n let nMoreClimbs = null\n\n if (nClimbs > 1) {\n leftArrow = (\n }\n flex=\"0 0 0\"\n size=\"xs\"\n variant=\"ghost\"\n onClick={() =>\n setClimbIndex((oldIndex) => (oldIndex - 1 + nClimbs) % nClimbs)\n }\n />\n )\n rightArrow = (\n }\n flex=\"0 0 0\"\n size=\"xs\"\n onClick={() => setClimbIndex((oldIndex) => (oldIndex + 1) % nClimbs)}\n variant=\"ghost\"\n />\n )\n nMoreClimbs = (\n {`${nClimbs - 1} more climb${\n nClimbs > 2 ? 's' : ''\n }...`}\n )\n }\n\n return (\n \n \n {leftArrow}\n \n {rightArrow}\n \n {nMoreClimbs}\n \n )\n}\n","import { addLocationMarker } from '../mapbox/add-marker'\nimport useCallbackRef from '../hooks/use-callback-ref'\nimport MapboxMap from './mapbox-map'\nimport { addSearchArea, removeSearchArea } from '../mapbox/isochrone'\nimport { addRouteMarkers } from '../mapbox/route-markers'\nimport { climbsToGeoJson } from '../mapbox/utils'\nimport { useRef, useState } from 'react'\n// eslint-disable-next-line import/no-webpack-loader-syntax\nimport mapboxgl from '!mapbox-gl'\nimport MapPopupPortal from './map-popup-portal'\nimport MapPopup from './map-popup'\n\nexport default function SearchMap({\n h,\n searchArea,\n climbs,\n location,\n zoom = 7,\n setLocation,\n}) {\n const setLocationCallback = useCallbackRef(setLocation)\n const [popupRoutes, setPopupRoutes] = useState(null)\n const popupRef = useRef(null)\n\n const onMapLoad = (map) => {\n map.resize()\n\n addLocationMarker(\n map,\n location.latitude,\n location.longitude,\n setLocationCallback\n )\n\n map.on('click', (e) => {\n const features = map.queryRenderedFeatures(e.point, {\n layers: ['routes'],\n })\n if (!features.length) {\n setPopupRoutes(null)\n return\n }\n\n const feature = features[0]\n\n const popupContainer = window.document.createElement('div')\n popupRef.current = popupContainer\n\n new mapboxgl.Popup({\n offset: [0, -20],\n maxWidth: '360px',\n closeButton: false,\n })\n .setLngLat(feature.geometry.coordinates)\n .setDOMContent(popupContainer)\n .addTo(map)\n\n setPopupRoutes(JSON.parse(feature.properties.climbs))\n })\n }\n\n const mapEffects = (map) => {\n if (searchArea) {\n addSearchArea(map, searchArea)\n } else {\n removeSearchArea(map)\n }\n\n if (climbs) {\n addRouteMarkers(map, climbsToGeoJson(climbs))\n }\n }\n\n return (\n <>\n \n \n \n \n >\n )\n}\n","// eslint-disable-next-line import/no-webpack-loader-syntax\nimport mapboxgl from '!mapbox-gl'\n\nexport function addLocationMarker(map, lat, lng, setLocation) {\n const marker = new mapboxgl.Marker({ draggable: true })\n .setLngLat([lng, lat])\n .addTo(map)\n\n marker.on('dragend', () => {\n const lnglat = marker.getLngLat()\n setLocation({\n longitude: lnglat.lng,\n latitude: lnglat.lat,\n })\n })\n}\n","export function addSearchArea(map, searchArea) {\n if (map.getSource('searchArea')) {\n map.getSource('searchArea').setData(searchArea)\n } else {\n map.addSource('searchArea', {\n type: 'geojson',\n data: searchArea,\n })\n map.addLayer({\n id: 'searchArea',\n source: 'searchArea',\n type: 'fill',\n paint: { 'fill-color': '#BF4040', 'fill-opacity': 0.2 },\n })\n map.addLayer({\n id: 'searchArea-outline',\n source: 'searchArea',\n type: 'line',\n paint: {\n 'line-width': 1,\n 'line-color': '#bf0000',\n },\n })\n }\n}\n\nexport function removeSearchArea(map) {\n if (map.getSource('searchArea')) {\n map.removeLayer('searchArea')\n map.removeLayer('searchArea-outline')\n map.removeSource('searchArea')\n }\n}\n","export function addRouteMarkers(map, routesFeatures) {\n if (map.getSource('routes')) {\n map.getSource('routes').setData(routesFeatures)\n } else {\n map.addSource('routes', {\n type: 'geojson',\n data: routesFeatures,\n })\n\n map.addLayer({\n id: 'routes',\n type: 'symbol',\n source: 'routes',\n layout: {\n 'icon-image': 'mapbox-marker-icon-green',\n 'icon-anchor': 'center',\n 'icon-allow-overlap': true,\n },\n })\n\n map.addLayer({\n id: 'routes-count-overlay',\n type: 'circle',\n source: 'routes',\n filter: ['>', 'climb_count', 1],\n paint: {\n 'circle-color': '#cfefcf',\n 'circle-radius': 10,\n 'circle-stroke-color': 'black',\n 'circle-stroke-width': 1,\n 'circle-translate': [13, -24],\n },\n })\n\n map.addLayer({\n id: 'routes-count',\n type: 'symbol',\n source: 'routes',\n filter: ['>', 'climb_count', 1],\n layout: {\n 'text-field': '{climb_count}',\n 'text-font': ['DIN Offc Pro Medium', 'Arial Unicode MS Bold'],\n 'text-size': 12,\n 'text-anchor': 'center',\n 'text-offset': [1.05, -2],\n },\n })\n }\n}\n","import { groupBy } from '../utils/functions'\n\nexport function climbsToGeoJson(climbs) {\n const sectors = Object.values(groupBy(climbs, 'sector_id'))\n return {\n type: 'FeatureCollection',\n features: sectors.map((climbs) => ({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: climbs[0].coordinates },\n properties: {\n climbs,\n climb_count: climbs.length,\n },\n })),\n }\n}\n","export const groupBy = (array, key) => {\n return array.reduce((grouped, item) => {\n grouped[item[key]] = grouped[item[key]] || []\n grouped[item[key]].push(item)\n return grouped\n }, {})\n}\n","import { Box, Heading } from '@chakra-ui/react'\nimport SearchResult from './search-result'\n\nexport default function SearchResults({ climbs }) {\n if (!climbs || !climbs.length) return null\n\n return (\n <>\n Results\n \n {climbs.map((climb) => (\n \n ))}\n \n >\n )\n}\n","export const climbTypes = ['Boulder', 'Sport', 'Trad']\n","import { useColorModeValue } from '@chakra-ui/color-mode'\nimport { Flex, Heading, HStack } from '@chakra-ui/layout'\nimport { Box, Center, Container, Text } from '@chakra-ui/react'\nimport { Select } from '@chakra-ui/select'\nimport circleToPolygon from 'circle-to-polygon'\nimport { useCallback, useEffect, useState } from 'react'\nimport FilterSlider from '../components/filter-slider'\nimport Loader from '../components/loader'\nimport RangeSlider from '../components/range-slider'\nimport SearchMap from '../components/search-map'\nimport SearchResults from '../components/search-results'\nimport { useGradeSystemGrades, useSearchClimbs } from '../utils/backend'\nimport { climbTypes } from '../utils/constants'\n\nexport default function FilterSearch({ ...props }) {\n const [climbType, setClimbType] = useState('')\n const [drivingDistance, setDrivingDistance] = useState(60)\n const [drivingDistanceEnd, setDrivingDistanceEnd] = useState(60)\n const [linearDistance, setLinearDistance] = useState(100)\n const [linearDistanceEnd, setLinearDistanceEnd] = useState(100)\n const [gradeRange, setGradeRange] = useState([7, 30])\n const [gradeRangeEnd, setGradeRangeEnd] = useState([7, 30])\n const [stars, setStars] = useState(0)\n const [starsEnd, setStarsEnd] = useState(0)\n const [ascents, setAscents] = useState(0)\n const [ascentsEnd, setAscentsEnd] = useState(0)\n const [location, setLocation] = useState({\n longitude: 18.103421414223476,\n latitude: 59.356688222237636,\n })\n\n const [distanceType, setDistanceType] = useState('Linear')\n const [isochrone, setIsochrone] = useState(null)\n const [sphericalArea, setSphericalArea] = useState(\n circleToPolygon(\n [location.longitude, location.latitude],\n linearDistanceEnd * 1000,\n { numberOfEdges: 100 }\n )\n )\n const handleDrivingDistanceChangeEnd = useCallback(\n (value) => setDrivingDistanceEnd(value),\n [setDrivingDistanceEnd]\n )\n const handleLinearDistanceChangeEnd = useCallback(\n (value) => setLinearDistanceEnd(value),\n [setLinearDistanceEnd]\n )\n const handleStarsEnd = useCallback(\n (value) => setStarsEnd(value),\n [setStarsEnd]\n )\n const handleAscentsEnd = useCallback(\n (value) => setAscentsEnd(value),\n [setAscentsEnd]\n )\n\n const { gradeSystemGrades, error: errorGradeSystemGrades } =\n useGradeSystemGrades()\n\n const fontGrades = gradeSystemGrades\n ?.filter(({ system }) => system === 'Fontainebleau grading system')\n .sort((a, b) => a.rank - b.rank)\n\n const getEquivalentGrades = (sliderGrades, gradeRange) => {\n const [lowerBound, upperBound] = gradeRange\n const lowerFuzzyGrade = sliderGrades[lowerBound].fuzzy_unified_rank\n const upperFuzzyGrade = sliderGrades[upperBound].fuzzy_unified_rank\n\n return gradeSystemGrades.filter(\n (grade) =>\n grade.fuzzy_unified_rank >= lowerFuzzyGrade &&\n grade.fuzzy_unified_rank <= upperFuzzyGrade\n )\n }\n\n const boxBg = useColorModeValue('offwhite', 'blackAlpha.700')\n const { climbs, searchClimbError } = useSearchClimbs(\n {\n ...(fontGrades && {\n grade_ids: getEquivalentGrades(fontGrades, gradeRangeEnd).map(\n (grade) => grade.id\n ),\n }),\n ...(distanceType === 'Driving' &&\n isochrone !== null && {\n within_polygon: isochrone.features[0].geometry.coordinates[0],\n }),\n },\n {\n longitude: location.longitude,\n latitude: location.latitude,\n // Don't filter on min rating if it is set to 0 (to\n // include problems with no avg rating).\n ...(starsEnd && { minimum_average_rating: starsEnd }),\n ...(ascentsEnd && { minimum_ascents: ascentsEnd }),\n ...(distanceType === 'Linear' && { max_distance: linearDistanceEnd }),\n }\n )\n\n useEffect(() => {\n if (distanceType === 'Linear')\n setSphericalArea(\n circleToPolygon(\n [location.longitude, location.latitude],\n linearDistanceEnd * 1000,\n { numberOfEdges: 100 }\n )\n )\n }, [distanceType, linearDistanceEnd, location.latitude, location.longitude])\n\n useEffect(() => {\n if (distanceType !== 'Driving') {\n return\n }\n\n const getIsochrone = async () => {\n const requestString = `https://api.mapbox.com/isochrone/v1/mapbox/driving/${location.longitude}%2C${location.latitude}?contours_minutes=${drivingDistanceEnd}&polygons=true&denoise=1&generalize=500&access_token=${process.env.REACT_APP_MAPBOX_TOKEN}`\n const response = await fetch(requestString).then((res) => res.json())\n setIsochrone(response)\n }\n\n getIsochrone()\n }, [drivingDistanceEnd, distanceType, location.longitude, location.latitude])\n\n if (errorGradeSystemGrades || searchClimbError) {\n return (\n \n \n Failed to load page.\n \n \n )\n }\n\n if (gradeSystemGrades === undefined) {\n return \n }\n\n const gradeArray = fontGrades?.map(({ grade }) => grade)\n\n let distanceSlider\n let searchArea\n\n if (distanceType === 'Linear') {\n distanceSlider = (\n setLinearDistance(value)}\n onChangeEnd={handleLinearDistanceChangeEnd}\n min={0}\n max={500}\n >\n )\n searchArea = sphericalArea\n } else if (distanceType === 'Driving') {\n distanceSlider = (\n setDrivingDistance(value)}\n onChangeEnd={handleDrivingDistanceChangeEnd}\n min={10}\n step={5}\n max={60}\n >\n )\n searchArea = isochrone\n }\n\n const handleDistanceTypeChange = (event) => {\n const type = event.target.value\n setDistanceType(type)\n if (type === 'Linear') {\n setSphericalArea(\n circleToPolygon(\n [location.longitude, location.latitude],\n linearDistance * 1000,\n { numberOfEdges: 100 }\n )\n )\n }\n }\n return (\n \n \n \n \n \n \n \n\n \n\n {distanceSlider}\n\n \n \n Grade\n \n setGradeRange(value)}\n onChangeEnd={(value) => setGradeRangeEnd(value)}\n w=\"80%\"\n fromArray={gradeArray}\n />\n \n\n setStars(value)}\n onChangeEnd={handleStarsEnd}\n />\n\n setAscents(value)}\n onChangeEnd={handleAscentsEnd}\n />\n\n \n \n \n \n )\n}\n","import { Button, Center, Container, Link, Text } from '@chakra-ui/react'\nimport { Link as RouterLink, useParams } from 'react-router-dom'\nimport { ImageBreadcrumb } from '../components/breadcrumb.js'\nimport LineImage from '../components/line-image.js'\nimport Loader from '../components/loader.js'\nimport { useImage, useLines } from '../utils/backend.js'\n\nexport default function RockImage() {\n const { cragId, sectorId, imageId } = useParams()\n const { image, error: errorImage } = useImage(imageId)\n const { lines, error: errorLines } = useLines(\n imageId ? { image_id: imageId } : null\n )\n\n if (errorImage || errorLines) {\n return (\n \n \n Failed to load image.\n \n \n )\n }\n\n if (image === undefined || lines === undefined) {\n return \n }\n\n return (\n \n \n \n \n \n \n \n )\n}\n","import { useAuth0 } from '@auth0/auth0-react'\nimport {\n Avatar,\n Box,\n Button,\n Center,\n Container,\n Flex,\n Heading,\n HStack,\n Link,\n SimpleGrid,\n Text,\n} from '@chakra-ui/react'\nimport { Link as RouterLink } from 'react-router-dom'\nimport Loader from '../components/loader.js'\nimport { PageFooter } from '../components/page-footer.js'\nimport { TickRocksLogo } from '../components/tick-rocks-logo.js'\nimport { useCurrentUser } from '../utils/backend'\n\nexport default function Landing() {\n return (\n \n \n \n \n \n \n \n {' '}\n \n \n \n \n Big tick Move of the Month - September: Emil Abrahamsson, Total\n Eclipse, 8A+, Cul de Chen, Fontaniebleau, France.\n \n \n \n \n \n \n \n tick.rocks\n \n \n open-source climbing\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n )\n}\n\nfunction SignedIn() {\n const { isLoading, isAuthenticated, loginWithRedirect } = useAuth0()\n const { user } = useCurrentUser()\n if (isLoading) {\n return \n }\n\n if (!isAuthenticated && !isLoading) {\n return (\n \n \n \n You need to{' '}\n \n loginWithRedirect({\n appState: {\n returnTo: window.location.pathname,\n },\n })\n }\n color=\"brand.300\"\n >\n login\n {' '}\n to add stuff and vote.\n \n \n \n )\n } else {\n return (\n \n \n \n \n \n \n Welcome back {user?.display_name}\n !
\n What would you like to do today?\n \n \n \n )\n }\n}\n","import { Center, Code, Container, Text } from '@chakra-ui/react'\nimport { useParams } from 'react-router-dom'\nimport { ImageBreadcrumb } from '../components/breadcrumb.js'\nimport LineImage from '../components/line-image.js'\nimport Loader from '../components/loader.js'\nimport { useImage, useLine } from '../utils/backend.js'\n\nexport default function Line() {\n const { lineId } = useParams()\n const { line, error: errorLine } = useLine(lineId)\n const { image, error: errorImage } = useImage(line?.image_id)\n\n if (errorImage || errorLine) {\n return (\n \n \n Failed to load line.\n \n \n )\n }\n\n if (image === undefined || line === undefined) {\n return \n }\n\n return (\n \n line-id: {line.id} }]}\n />\n \n \n )\n}\n","import { AddIcon } from '@chakra-ui/icons'\nimport { Box, Button, ButtonGroup, IconButton } from '@chakra-ui/react'\nimport MapPopupPortal from '../components/map-popup-portal.js'\nimport MapPopup from '../components/map-popup.js'\nimport MapboxMap from '../components/mapbox-map.js'\n\nexport default function Map() {\n return (\n <>\n \n \n \n \n \n \n \n \n \n \n \n } />\n \n \n >\n )\n}\n","import { Text } from '@chakra-ui/react'\nimport React from 'react'\n\nexport function CalcDistance({ lat1, lon1, lat2, lon2 }) {\n var R = 6371 // km\n var dLat = toRad(lat2 - lat1)\n var dLon = toRad(lon2 - lon1)\n const newLat1 = toRad(lat1)\n const newLat2 = toRad(lat2)\n\n var a =\n Math.sin(dLat / 2) * Math.sin(dLat / 2) +\n Math.sin(dLon / 2) *\n Math.sin(dLon / 2) *\n Math.cos(newLat1) *\n Math.cos(newLat2)\n var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a))\n var d = R * c * 1000\n var e = d.toString()\n var f = e.substr(0, 3)\n return {f}m\n}\n\n// Converts numeric degrees to radians\nfunction toRad(Value) {\n return (Value * Math.PI) / 180\n}\n","import { Box } from '@chakra-ui/react'\n\nexport function VideoIcon({ color, h, w, mr, props }) {\n const newColor = color || '#fff'\n const newH = h || '15px'\n const newW = w || '20px'\n const newMr = mr || '1px'\n return (\n \n \n \n )\n}\n","import { useColorModeValue } from '@chakra-ui/color-mode'\nimport { Box, Flex, HStack, Link, Text } from '@chakra-ui/react'\nimport { Link as RouterLink } from 'react-router-dom'\nimport StarRatings from 'react-star-ratings'\nimport Grade from '../../components/grade.js'\nimport { VideoIcon } from '../../components/icons.js'\nimport Loader from '../../components/loader.js'\nimport VoteConflictWarning from '../../components/vote-conflict-warning.js'\nimport { mostVoted, useBetaVideos, useClimb } from '../../utils/backend.js'\n\nexport function Climb({ cragId, sectorId, climbId }) {\n const textColor = useColorModeValue('black', 'white')\n const { climb, error } = useClimb(climbId)\n const { betaVideos, error: errorBetaVideos } = useBetaVideos({\n climb_id: climbId,\n })\n\n if (error || errorBetaVideos) {\n return Failed to load climb.\n }\n\n if (climb === undefined) {\n return \n }\n\n return (\n \n \n \n {mostVoted(climb.name_votes)}\n {climb.grade_votes.length >= 1 && (\n \n )}\n \n \n \n \n {betaVideos?.length >= 1 && (\n \n \n \n )}\n \n \n {climb.rating_votes.length >= 1 && (\n = 3 ? 'gold' : 'gray'\n }\n numberOfStars={5}\n name=\"rating\"\n starEmptyColor=\"none\"\n starDimension=\"20px\"\n starSpacing=\"1px\"\n />\n )}\n \n \n \n \n )\n}\n","import { useColorModeValue } from '@chakra-ui/color-mode'\nimport { AddIcon, ChevronDownIcon, EditIcon } from '@chakra-ui/icons'\nimport {\n Alert,\n AlertDescription,\n AlertIcon,\n AlertTitle,\n Box,\n Button,\n Center,\n Container,\n Flex,\n Heading,\n HStack,\n IconButton,\n Link,\n LinkBox,\n ListItem,\n Menu,\n MenuButton,\n MenuItem,\n MenuList,\n OrderedList,\n Stack,\n Text,\n UnorderedList,\n Spacer,\n} from '@chakra-ui/react'\nimport { isEmpty } from 'lodash'\nimport { useState } from 'react'\nimport { Link as RouterLink, useParams } from 'react-router-dom'\nimport { SectorBreadcrumb } from '../../components/breadcrumb.js'\nimport { CalcDistance } from '../../components/cordinate-distance-calc.js'\nimport { CragBanner, CragBannerMenu } from '../../components/crag-banner.js'\nimport EditButton from '../../components/edit-button.js'\nimport Grade from '../../components/grade.js'\nimport LineImage from '../../components/line-image.js'\nimport Loader from '../../components/loader.js'\nimport ModalDialog from '../../components/modal-dialog.js'\nimport { PageFooter } from '../../components/page-footer.js'\nimport VoteConflictWarning from '../../components/vote-conflict-warning.js'\nimport {\n mostVoted,\n useClimbs,\n useImages,\n useLines,\n useSector,\n useSectors,\n} from '../../utils/backend.js'\nimport AddClimb from '../add-climb.js'\nimport AddImage from '../add-image.js'\nimport { Comments } from '../comments.js'\nimport { Climb } from './climb.js'\n\nexport default function Sector() {\n const bg = useColorModeValue('gray.100', 'gray.700')\n const boxBg = useColorModeValue('offwhite', 'gray.800')\n\n const headingShadow = '3px 3px 3px rgba(0, 0, 0, 0.2)'\n const { cragId, sectorId } = useParams()\n const { sectors, error: errorSectors } = useSectors({ crag_id: cragId }, 100)\n const { sector, error: errorSector } = useSector(sectorId)\n const { climbs, error: errorClimbs } = useClimbs({ sector_id: sectorId })\n const { lines, error: errorLines } = useLines({ sector_id: sectorId })\n const { images, error: errorImages } = useImages({ sector_id: sectorId })\n\n if (errorSector || errorClimbs || errorLines || errorImages || errorSectors) {\n return (\n \n \n Failed to load sector.\n \n \n )\n }\n\n if (\n sector === undefined ||\n climbs === undefined ||\n lines === undefined ||\n images === undefined ||\n sectors === undefined\n ) {\n return \n }\n\n const climbIdsWithLines = new Set(\n Object.values(lines).map((line) => line.climb_id)\n )\n\n const nearbySectors = sectors.filter(\n (nearbySector) =>\n nearbySector.name_votes.length >= 1 &&\n nearbySector.coordinate_votes.length >= 1 &&\n sector.id !== nearbySector.id\n )\n\n return (\n \n \n \n \n \n {sector.name_votes.length >= 1\n ? mostVoted(sector.name_votes)\n : 'No name votes'}\n \n \n \n \n \n \n \n \n {sector.coordinate_votes.length >= 1\n ? `Coordinates: ${JSON.stringify(\n mostVoted(sector.coordinate_votes).coordinates\n )}`\n : 'No coordinate votes'}\n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n }\n display={{ base: 'block', md: 'none' }}\n boxShadow=\"xl\"\n colorScheme=\"brand\"\n color=\"white\"\n >\n \n \n }\n >\n \n \n \n \n \n }\n display={{ base: 'block', md: 'none' }}\n boxShadow=\"xl\"\n colorScheme=\"brand\"\n color=\"white\"\n >\n \n \n }\n >\n \n \n \n \n \n\n \n \n \n {images &&\n images.map((image) => (\n \n ))}\n \n \n {climbs.filter(\n (climb) =>\n climb.name_votes.length >= 1 &&\n !climbIdsWithLines.has(climb.id)\n ).length >= 1 && (\n <>\n \n \n \n \n \n \n \n There are undrawn lines on this sector.\n \n Please edit and add topo to contribute.\n \n \n \n \n \n \n \n {climbs\n .filter(\n (climb) =>\n climb.name_votes.length >= 1 &&\n !climbIdsWithLines.has(climb.id)\n )\n .map((climb) => (\n \n \n \n \n {mostVoted(climb.name_votes)}\n \n \n {climb.grade_votes.length >= 1 && (\n \n )}\n \n \n \n ))}\n \n \n \n \n >\n )}\n \n \n \n \n \n \n Comments\n \n \n \n \n \n \n \n \n {sector.coordinate_votes.length >= 1 && nearbySectors.length >= 2 && (\n \n \n \n Sectors close by:\n \n \n {nearbySectors.map((nearbySector) => (\n \n \n {mostVoted(nearbySector.name_votes)}\n \n \n \n \n ))}\n \n \n \n )}\n \n \n \n \n \n )\n}\n\nfunction ImageWithLines({ cragId, sectorId, image, sectorName }) {\n const boxBg = useColorModeValue('gray.300', 'gray.600')\n const [selectedIndex, setSelectedIndex] = useState(null)\n\n const { lines, error } = useLines({ image_id: image.id })\n\n if (error) {\n return (\n \n Failed to load lines.\n \n )\n }\n\n if (lines === undefined) {\n return \n }\n\n if (lines === isEmpty()) {\n return Emptiiii\n }\n const parsedLines = lines.map((line) => mostVoted(line.line_path_votes))\n\n const handleMouseMove = (event) => {\n const canvas = event.target\n const bounds = canvas.getBoundingClientRect()\n const mouseX = event.pageX - bounds.left - window.scrollX\n const mouseY = event.pageY - bounds.top - window.scrollY\n\n let hasSelected = false\n parsedLines.forEach((points, index) => {\n const { x, y } = {\n x: points[0].x * canvas.width,\n y: points[0].y * canvas.height,\n }\n const distance = Math.sqrt((mouseX - x) ** 2 + (mouseY - y) ** 2)\n if (distance < 12) {\n setSelectedIndex(index)\n hasSelected = true\n }\n })\n if (!hasSelected && selectedIndex !== null) {\n setSelectedIndex(null)\n }\n }\n\n return (\n \n \n \n \n \n \n \n \n \n \n Sector: {sectorName}\n \n \n \n \n \n \n \n \n \n {lines.map((line, index) => (\n setSelectedIndex(index)}\n >\n \n \n ))}\n \n \n \n \n \n \n \n \n )\n}\n","import { useColorModeValue } from '@chakra-ui/color-mode'\nimport { StarIcon } from '@chakra-ui/icons'\nimport {\n Avatar,\n Box,\n Button,\n Center,\n Flex,\n Heading,\n Image,\n LinkBox,\n Spacer,\n Text,\n VStack,\n} from '@chakra-ui/react'\nimport { Link as RouterLink } from 'react-router-dom'\nimport { useUser } from '../utils/backend.js'\nexport default function UserProfileBanner({ userId, ...props }) {\n const bannerColor = useColorModeValue('gray.300', 'gray.800')\n const { user, error: errorUser } = useUser(userId)\n\n if (errorUser) {\n return null\n }\n\n return (\n <>\n \n \n \n \n \n \n \n \n {user?.display_name}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Latest updates\n \n Ticks (3345)\n \n Pre-ticks (534)\n \n Beta Videos (666)\n \n \n Photos (32)\n \n \n Settings\n \n \n \n \n \n >\n )\n}\n\nfunction MenuButton({ children, to, buttonicon, ...props }) {\n return (\n \n \n \n {children}\n \n \n \n )\n}\n","import { useColorModeValue } from '@chakra-ui/color-mode'\nimport {\n Avatar,\n Box,\n Button,\n Center,\n Container,\n Flex,\n FormLabel,\n Grid,\n GridItem,\n HStack,\n Input,\n Text,\n Textarea,\n} from '@chakra-ui/react'\nimport { useEffect, useState } from 'react'\nimport { CragComponentBox } from '../components/crag-component-box.js'\nimport Loader from '../components/loader.js'\nimport { PageFooter } from '../components/page-footer.js'\nimport UserProfileBanner from '../components/user-profile-banner.js'\nimport { useAuthorizedFetcher, useCurrentUser } from '../utils/backend.js'\n\nexport default function Settings() {\n const { user, userError, mutate } = useCurrentUser()\n const { authorizedFetcher, isLoading, authError } = useAuthorizedFetcher()\n const [displayName, setDisplayName] = useState(null)\n const bg = useColorModeValue('offwhite', 'gray.700')\n\n useEffect(() => {\n if (displayName === null && user) {\n setDisplayName(user?.display_name)\n }\n }, [displayName, user])\n\n const updateDisplayName = () => {\n user.display_name === null\n ? authorizedFetcher('/users', {\n method: 'POST',\n body: JSON.stringify({\n display_name: displayName,\n }),\n })\n : authorizedFetcher(`/users/${user?.id}`, {\n method: 'PUT',\n body: JSON.stringify({\n display_name: displayName,\n }),\n })\n mutate({ ...user, display_name: displayName })\n }\n\n if (userError || authError) {\n return (\n \n \n Failed to load page.\n \n \n )\n }\n\n if (!authorizedFetcher && !isLoading) {\n return (\n \n \n \n You need to login before you can change your settings.\n \n \n \n )\n }\n\n if (!user || (!authorizedFetcher && isLoading)) {\n return \n }\n\n return (\n \n \n \n \n \n \n \n \n Profile Picture\n \n \n \n \n \n \n \n \n \n \n Display name\n \n \n \n setDisplayName(event.target.value)}\n />\n {' '}\n \n \n Country\n \n \n \n \n {' '}\n \n \n Language\n \n \n \n \n {' '}\n \n \n Date of birth\n \n \n \n \n \n \n \n Climbing since\n \n \n \n \n {' '}\n \n \n Presentation\n \n \n \n \n \n \n \n Height\n \n \n \n \n \n \n \n Weight\n \n \n \n \n \n \n \n Wingspan\n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n","import { useColorModeValue } from '@chakra-ui/color-mode'\nimport { Box, Center, Container, Text } from '@chakra-ui/react'\nimport { useParams } from 'react-router-dom'\nimport { CragComponentBox } from '../components/crag-component-box.js'\nimport Loader from '../components/loader.js'\nimport { PageFooter } from '../components/page-footer.js'\nimport { PhotoGrid } from '../components/photo-grid.js'\nimport UserProfileBanner from '../components/user-profile-banner.js'\nimport { useCragPhotos, useUser } from '../utils/backend.js'\n\nexport default function UserPhotos() {\n const { userId } = useParams()\n const { user, error: erroruser } = useUser(userId)\n const { cragPhotos, error: errorphotos } = useCragPhotos({ user_id: userId })\n\n const bg = useColorModeValue('gray.50', 'gray.700')\n if (erroruser) {\n return (\n \n \n Failed to load user.\n \n \n )\n }\n\n if (user === undefined) {\n return \n }\n\n return (\n <>\n \n \n \n \n \n \n \n \n \n >\n )\n}\n","import { useColorModeValue } from '@chakra-ui/color-mode'\nimport { Box, Center, Container, Text } from '@chakra-ui/react'\nimport { useParams } from 'react-router-dom'\nimport { CragComponentBox } from '../components/crag-component-box.js'\nimport Feed from '../components/feed.js'\nimport Loader from '../components/loader.js'\nimport { PageFooter } from '../components/page-footer.js'\nimport UserProfileBanner from '../components/user-profile-banner.js'\nimport { useUser } from '../utils/backend.js'\n\nexport default function UserProfile() {\n const { userId } = useParams()\n const { user, error: erroruser } = useUser(userId)\n const bg = useColorModeValue('gray.50', 'gray.700')\n if (erroruser) {\n return (\n \n \n Failed to load user.\n \n \n )\n }\n\n if (user === undefined) {\n return \n }\n\n return (\n <>\n \n \n \n \n \n \n \n \n \n >\n )\n}\n","import { useColorModeValue } from '@chakra-ui/color-mode'\nimport {\n Box,\n Button,\n Center,\n Container,\n Heading,\n Table,\n Tbody,\n Td,\n Text,\n Th,\n Thead,\n Tr,\n} from '@chakra-ui/react'\nimport React from 'react'\nimport { Link as RouterLink, useParams } from 'react-router-dom'\nimport AscentType from '../components/ascent-type.js'\nimport { CragComponentBox } from '../components/crag-component-box.js'\nimport Grade from '../components/grade.js'\nimport Loader from '../components/loader.js'\nimport ModalDialog from '../components/modal-dialog.js'\nimport { PageFooter } from '../components/page-footer.js'\nimport UserProfileBanner from '../components/user-profile-banner.js'\nimport {\n mostVoted,\n useAscents,\n useClimb,\n useCrag,\n useCurrentUser,\n useUser,\n} from '../utils/backend.js'\nimport AddAscent from './add-ascent.js'\n\nexport default function UserTicks() {\n const { userId } = useParams()\n const { error: erroruser } = useUser(userId)\n const { ascents } = useAscents({})\n\n const bg = useColorModeValue('gray.50', 'gray.700')\n const table = useColorModeValue('gray.50', 'gray.600')\n console.log(ascents)\n\n if (erroruser) {\n return (\n \n \n Failed to load user.\n \n \n )\n }\n\n if (ascents === undefined) {\n return \n }\n if (ascents === null) {\n return 'No ticks logged yet, get tickin!'\n }\n\n return (\n \n \n \n \n Ticks\n \n \n \n \n Date | \n Climb | \n Crag | \n Grade | \n Go | \n
\n \n \n {ascents.map((ascent) => (\n \n ))}\n \n
\n \n \n \n )\n}\n\nfunction Ascent({ children, ascent, isLast, to = '/', ...props }) {\n const { climb, error: errorClimb } = useClimb(ascent.climb_id)\n const climbName = mostVoted(climb?.name_votes)\n const { crag, error: errorCrag } = useCrag(climb?.crag_id)\n const cragName = mostVoted(crag?.name_votes)\n const { user } = useUser(ascent.user_id)\n const currentUser = useCurrentUser().user\n\n if (errorClimb || errorCrag) {\n return ''\n }\n\n return (\n \n {new Date(ascent.ascent_date).toISOString().slice(0, 10)} | \n \n \n \n {climbName}\n {' '}\n {ascent.description}\n \n | \n \n \n {cragName}\n \n | \n \n \n | \n \n \n | \n\n {currentUser?.id === user?.id ? (\n \n \n \n \n \n \n }\n >\n \n \n {' '}\n \n | \n ) : (\n ''\n )}\n
\n )\n}\n","import {\n Button,\n Center,\n Checkbox,\n Container,\n FormControl,\n FormLabel,\n Heading,\n Text,\n Textarea,\n} from '@chakra-ui/react'\nimport { useEffect, useState } from 'react'\nimport { useHistory, useParams } from 'react-router-dom'\nimport { CragBreadcrumb } from '../components/breadcrumb.js'\nimport Loader from '../components/loader.js'\nimport Votes from '../components/votes.js'\nimport { useAuthorizedFetcher, useCrag, useUserVote } from '../utils/backend.js'\n\nexport default function VoteAccessInformation() {\n const { cragId } = useParams()\n const { crag, error: errorCrag } = useCrag(cragId)\n const { userVote, error: errorUserVote } = useUserVote(\n crag?.access_information_votes\n )\n const {\n authorizedFetcher,\n isLoading,\n error: errorAuth,\n } = useAuthorizedFetcher()\n const history = useHistory()\n const [accessInfornation, setAccessInformation] = useState(null)\n const [publicVote, setPublicVote] = useState(true)\n\n useEffect(() => {\n if (accessInfornation === null && userVote) {\n setAccessInformation(userVote.value)\n setPublicVote(userVote.public)\n }\n }, [accessInfornation, userVote])\n\n const voteAccessInformation = () => {\n const body = JSON.stringify({\n value: accessInfornation,\n public: publicVote,\n })\n return userVote\n ? authorizedFetcher(\n `/crags/${cragId}/access_information_votes/${userVote.id}`,\n {\n method: 'PUT',\n body: body,\n }\n )\n : authorizedFetcher(`/crags/${cragId}/access_information_votes`, {\n method: 'POST',\n body: body,\n })\n }\n\n const navigateToCrag = () => history.replace(`/crags/${cragId}`)\n\n const handleSubmit = () => voteAccessInformation().then(navigateToCrag)\n\n if (errorAuth || errorCrag || errorUserVote) {\n return (\n \n \n Failed to load page.\n \n \n )\n }\n\n if (!authorizedFetcher && !isLoading) {\n return (\n \n \n You need to login to vote.\n \n \n )\n }\n\n if (!crag || userVote === undefined) {\n return \n }\n\n return (\n \n \n Vote for access information\n (\n \n {countedVote.value} ({countedVote.count} votes)\n \n )}\n onChange={(countedVote) => {\n if (countedVote === null) {\n setAccessInformation('')\n } else {\n setAccessInformation(countedVote.value)\n }\n }}\n value={userVote?.value || null}\n />\n Your vote\n \n Access information\n \n \n Anonymous\n {\n setPublicVote(!publicVote)\n }}\n />\n \n You can vote anonymously if you want but your vote will have a\n slightly lower value than if you openly support it.\n \n \n \n \n )\n}\n","import {\n Box,\n Button,\n Center,\n Checkbox,\n Container,\n FormControl,\n FormLabel,\n Heading,\n Image,\n Progress,\n Text,\n} from '@chakra-ui/react'\nimport { useEffect, useState } from 'react'\nimport { useHistory, useParams } from 'react-router-dom'\nimport { CragBreadcrumb } from '../components/breadcrumb.js'\nimport Loader from '../components/loader.js'\nimport {\n countVotes,\n useAuthorizedFetcher,\n useCrag,\n useCragPhotos,\n useUserVote,\n} from '../utils/backend.js'\n\nexport default function VoteBanner() {\n const { cragId } = useParams()\n const { crag, error: errorCrag } = useCrag(cragId)\n const { cragPhotos, errorCragPhotos } = useCragPhotos({ crag_id: cragId })\n const { userVote, error: errorUserVote } = useUserVote(crag?.banner_votes)\n const {\n authorizedFetcher,\n isLoading,\n error: errorAuth,\n } = useAuthorizedFetcher()\n const history = useHistory()\n const [banner, setBanner] = useState(null)\n const [publicVote, setPublicVote] = useState(true)\n\n useEffect(() => {\n if (banner === null && userVote) {\n setBanner(userVote.value)\n setPublicVote(userVote.public)\n }\n }, [banner, userVote])\n\n const voteBanner = () => {\n const body = JSON.stringify({\n value: banner,\n public: publicVote,\n })\n return userVote\n ? authorizedFetcher(`/crags/${cragId}/banner_votes/${userVote.id}`, {\n method: 'PUT',\n body: body,\n })\n : authorizedFetcher(`/crags/${cragId}/banner_votes`, {\n method: 'POST',\n body: body,\n })\n }\n\n const navigateToCrag = () => history.replace(`/crags/${cragId}`)\n\n const handleSubmit = () => voteBanner().then(navigateToCrag)\n\n if (errorAuth || errorCrag || errorUserVote || errorCragPhotos) {\n return (\n \n \n Failed to load page.\n \n \n )\n }\n\n if (!authorizedFetcher && !isLoading) {\n return (\n \n \n You need to login to vote.\n \n \n )\n }\n\n if (\n crag === undefined ||\n userVote === undefined ||\n cragPhotos === undefined\n ) {\n return \n }\n\n return (\n \n \n Vote for crag banner\n {\n if (cragPhotoId === null) {\n setBanner('')\n } else {\n setBanner(cragPhotoId)\n }\n }}\n value={userVote?.value || null}\n />\n Add a crag photo if you want to chose from another option.\n Your vote\n \n Anonymous\n {\n setPublicVote(!publicVote)\n }}\n />\n \n You can vote anonymously if you want but your vote will have a\n slightly lower value than if you openly support it.\n \n \n \n \n )\n}\n\nexport function BannerVotes({ voteOptions, votes, value, onChange }) {\n const countedVotes = countVotes(votes)\n const maxVoteCount = Math.max(countedVotes.map(({ count }) => count))\n const [checkboxes, setCheckboxes] = useState(\n voteOptions.map(\n (voteOption) => JSON.stringify(voteOption.id) === JSON.stringify(value)\n )\n )\n const countedVotesDict = countedVotes.reduce(\n (dict, countedVote) => ({\n [countedVote.value]: countedVote.count,\n ...dict,\n }),\n {}\n )\n\n return (\n \n Votes\n {voteOptions.length === 0 ? (\n There are no crag photos.\n ) : (\n voteOptions.map((voteOption, index) => (\n \n \n {\n const newCheckboxes = checkboxes.map(() => false)\n newCheckboxes[index] = !checkboxes[index]\n setCheckboxes(newCheckboxes)\n if (newCheckboxes[index]) {\n onChange(voteOption.id)\n } else {\n onChange(null)\n }\n }}\n >\n ({countedVotesDict[voteOption.id] || 0} votes)\n \n \n \n ))\n )}\n \n )\n}\n","import {\n Box,\n Button,\n Center,\n Checkbox,\n Container,\n Flex,\n FormControl,\n FormLabel,\n Heading,\n Input,\n Text,\n useColorModeValue,\n} from '@chakra-ui/react'\nimport { useEffect, useState } from 'react'\nimport { useHistory, useParams } from 'react-router-dom'\nimport { ClimbBreadcrumb } from '../components/breadcrumb.js'\nimport {\n CragBanner,\n CragBannerMenu,\n CragBannerMenuButton,\n} from '../components/crag-banner.js'\nimport Loader from '../components/loader.js'\nimport Votes from '../components/votes.js'\nimport {\n mostVoted,\n useAuthorizedFetcher,\n useClimb,\n useUserVote,\n} from '../utils/backend.js'\n\nexport default function VoteClimbDescription() {\n const { cragId, sectorId, climbId } = useParams()\n const { climb, error: errorClimb } = useClimb(climbId)\n const { userVote, error: errorUserVote } = useUserVote(\n climb?.description_votes\n )\n const {\n authorizedFetcher,\n isLoading,\n error: authError,\n } = useAuthorizedFetcher()\n const history = useHistory()\n const [climbDescription, setClimbDescription] = useState(null)\n const [publicVote, setPublicVote] = useState(true)\n const bg = useColorModeValue('offwhite', 'gray.700')\n const boxBg = useColorModeValue('gray.100', 'gray.800')\n const inputBg = useColorModeValue('gray.300', 'gray.700')\n\n useEffect(() => {\n if (climbDescription === null && userVote) {\n setClimbDescription(userVote.value)\n setPublicVote(userVote.public)\n }\n }, [climbDescription, userVote])\n\n const voteClimbDescription = (climbId) => {\n const body = JSON.stringify({\n value: climbDescription,\n public: publicVote,\n })\n return userVote\n ? authorizedFetcher(\n `/climbs/${climbId}/description_votes/${userVote.id}`,\n {\n method: 'PUT',\n body: body,\n }\n )\n : authorizedFetcher(`/climbs/${climbId}/description_votes`, {\n method: 'POST',\n body: body,\n })\n }\n\n const navigateToClimb = (climbId) =>\n history.replace(`/crags/${cragId}/sectors/${sectorId}/climbs/${climbId}`)\n\n const handleSubmit = () =>\n voteClimbDescription(climbId).then(() => navigateToClimb(climbId))\n\n if (authError || errorClimb || errorUserVote) {\n return (\n \n \n Failed to load page.\n \n \n )\n }\n\n if (!authorizedFetcher && !isLoading) {\n return (\n \n \n You need to login to vote.\n \n \n )\n }\n\n if (!climb || userVote === undefined) {\n return \n }\n\n return (\n \n \n \n \n \n \n Edit:{' '}\n {climb.description_votes.length >= 1\n ? mostVoted(climb.description_votes)\n : 'No description votes'}{' '}\n \n \n \n Edit\n \n\n \n \n \n (\n \n {countedVote.value} ({countedVote.count} votes)\n \n )}\n onChange={(countedVote) => {\n if (countedVote === null) {\n setClimbDescription('')\n } else {\n setClimbDescription(countedVote.value)\n }\n }}\n value={userVote?.value || null}\n />\n Your vote\n \n Climb Description\n \n setClimbDescription(event.target.value)\n }\n />\n \n \n Anonymous\n {\n setPublicVote(!publicVote)\n }}\n />\n \n You can vote anonymously if you want but your vote will have\n a slightly lower value than if you openly support it.\n \n \n\n \n \n \n \n \n \n \n )\n}\n","import {\n Button,\n Center,\n Checkbox,\n Container,\n FormControl,\n FormLabel,\n Heading,\n HStack,\n Select,\n Text,\n} from '@chakra-ui/react'\nimport { useEffect, useState } from 'react'\nimport { useHistory, useParams } from 'react-router-dom'\nimport { ClimbBreadcrumb } from '../components/breadcrumb.js'\nimport Grade from '../components/grade.js'\nimport Loader from '../components/loader.js'\nimport Votes from '../components/votes.js'\nimport {\n mostVoted,\n useAuthorizedFetcher,\n useClimb,\n useGradeSystemGrade,\n useGradeSystemGrades,\n useUserVote,\n} from '../utils/backend.js'\n\nexport default function VoteClimbGrade() {\n const { cragId, sectorId, climbId } = useParams()\n const { climb, error: errorClimb } = useClimb(climbId)\n const { userVote, error: errorUserVote } = useUserVote(climb?.grade_votes)\n const {\n authorizedFetcher,\n isLoading,\n error: authError,\n } = useAuthorizedFetcher()\n const history = useHistory()\n const { gradeSystemGrades, error: errorGradeSystemGrades } =\n useGradeSystemGrades()\n const [gradeSystem, setGradeSystem] = useState(null)\n const [gradeId, setGradeId] = useState(null)\n const [publicVote, setPublicVote] = useState(true)\n\n const { grade: previouslyVotedGrade, error: errorPreviouslyVotedGrade } =\n useGradeSystemGrade(userVote?.value)\n\n useEffect(() => {\n if (gradeId === null && previouslyVotedGrade) {\n setGradeId(previouslyVotedGrade.id)\n setGradeSystem(previouslyVotedGrade.system)\n setPublicVote(userVote.public)\n }\n }, [gradeId, userVote, previouslyVotedGrade])\n\n const { grade: mostVotedGrade, error: errorMostVotedGrade } =\n useGradeSystemGrade(climb ? mostVoted(climb.grade_votes) : null)\n\n useEffect(() => {\n if (mostVotedGrade && gradeId === null && gradeSystem === null) {\n setGradeSystem(mostVotedGrade.system)\n }\n }, [mostVotedGrade, gradeId, gradeSystem])\n\n const voteClimbGrade = (climbId) =>\n userVote\n ? authorizedFetcher(`/climbs/${climbId}/grade_votes/${userVote.id}`, {\n method: 'PUT',\n body: JSON.stringify({\n value: gradeId,\n public: publicVote,\n }),\n })\n : authorizedFetcher(`/climbs/${climbId}/grade_votes`, {\n method: 'POST',\n body: JSON.stringify({\n value: gradeId,\n public: publicVote,\n }),\n })\n\n const navigateToClimb = (climbId) =>\n history.replace(`/crags/${cragId}/sectors/${sectorId}/climbs/${climbId}`)\n\n const handleSubmit = () =>\n voteClimbGrade(climbId).then(() => navigateToClimb(climbId))\n\n if (\n authError ||\n errorClimb ||\n errorPreviouslyVotedGrade ||\n errorGradeSystemGrades ||\n errorMostVotedGrade ||\n errorUserVote\n ) {\n return (\n \n \n Failed to load page.\n \n \n )\n }\n\n if (!authorizedFetcher && !isLoading) {\n return (\n \n \n You need to login to vote.\n \n \n )\n }\n\n if (\n climb === undefined ||\n gradeSystemGrades === undefined ||\n userVote === undefined\n ) {\n return \n }\n\n const systems = [\n ...new Set(\n gradeSystemGrades.map((gradeSystemGrade) => gradeSystemGrade.system)\n ),\n ]\n\n return (\n \n \n Vote for grade\n (\n \n \n ({countedVote.count} votes)\n \n )}\n onChange={(countedVote) => {\n if (countedVote === null) {\n setGradeId('')\n } else {\n setGradeId(countedVote.value)\n }\n }}\n value={userVote?.value || null}\n />\n Your vote\n \n Grade system\n \n \n \n Grade\n \n \n \n Anonymous\n {\n setPublicVote(!publicVote)\n }}\n />\n \n You can vote anonymously if you want but your vote will have a\n slightly lower value than if you openly support it.\n \n \n\n \n \n )\n}\n","import {\n Box,\n Button,\n Center,\n Checkbox,\n Container,\n Flex,\n FormControl,\n FormLabel,\n Heading,\n Input,\n Text,\n useColorModeValue,\n} from '@chakra-ui/react'\nimport { useEffect, useState } from 'react'\nimport { useHistory, useParams } from 'react-router-dom'\nimport { ClimbBreadcrumb } from '../components/breadcrumb.js'\nimport {\n CragBanner,\n CragBannerMenu,\n CragBannerMenuButton,\n} from '../components/crag-banner.js'\nimport Loader from '../components/loader.js'\nimport Votes from '../components/votes.js'\nimport {\n mostVoted,\n useAuthorizedFetcher,\n useClimb,\n useUserVote,\n} from '../utils/backend.js'\n\nexport default function VoteClimbName() {\n const { cragId, sectorId, climbId } = useParams()\n const { climb, error: errorClimb } = useClimb(climbId)\n const { userVote, error: errorUserVote } = useUserVote(climb?.name_votes)\n const {\n authorizedFetcher,\n isLoading,\n error: authError,\n } = useAuthorizedFetcher()\n const history = useHistory()\n const [climbName, setClimbName] = useState(null)\n const [publicVote, setPublicVote] = useState(true)\n const bg = useColorModeValue('offwhite', 'gray.700')\n const boxBg = useColorModeValue('gray.100', 'gray.800')\n const inputBg = useColorModeValue('gray.300', 'gray.700')\n\n useEffect(() => {\n if (climbName === null && userVote) {\n setClimbName(userVote.value)\n setPublicVote(userVote.public)\n }\n }, [climbName, userVote])\n\n const voteClimbName = (climbId) => {\n const body = JSON.stringify({\n value: climbName,\n public: publicVote,\n })\n return userVote\n ? authorizedFetcher(`/climbs/${climbId}/name_votes/${userVote.id}`, {\n method: 'PUT',\n body: body,\n })\n : authorizedFetcher(`/climbs/${climbId}/name_votes`, {\n method: 'POST',\n body: body,\n })\n }\n\n const navigateToClimb = (climbId) =>\n history.replace(`/crags/${cragId}/sectors/${sectorId}/climbs/${climbId}`)\n\n const handleSubmit = () =>\n voteClimbName(climbId).then(() => navigateToClimb(climbId))\n\n if (authError || errorClimb || errorUserVote) {\n return (\n \n \n Failed to load page.\n \n \n )\n }\n\n if (!authorizedFetcher && !isLoading) {\n return (\n \n \n You need to login to vote.\n \n \n )\n }\n\n if (!climb || userVote === undefined) {\n return \n }\n\n return (\n \n \n \n \n \n \n Edit:{' '}\n {climb.name_votes.length >= 1\n ? mostVoted(climb.name_votes)\n : 'No name votes'}{' '}\n \n \n \n Edit\n \n\n \n \n \n (\n \n {countedVote.value} ({countedVote.count} votes)\n \n )}\n onChange={(countedVote) => {\n if (countedVote === null) {\n setClimbName('')\n } else {\n setClimbName(countedVote.value)\n }\n }}\n value={userVote?.value || null}\n />\n Your vote\n \n Climb name\n setClimbName(event.target.value)}\n />\n \n \n Anonymous\n {\n setPublicVote(!publicVote)\n }}\n />\n \n You can vote anonymously if you want but your vote will have\n a slightly lower value than if you openly support it.\n \n \n\n \n \n \n \n \n \n \n )\n}\n","import {\n Button,\n Center,\n Checkbox,\n Container,\n FormControl,\n FormLabel,\n Heading,\n Text,\n Textarea,\n} from '@chakra-ui/react'\nimport { useEffect, useState } from 'react'\nimport { useHistory, useParams } from 'react-router-dom'\nimport { CragBreadcrumb } from '../components/breadcrumb.js'\nimport Loader from '../components/loader.js'\nimport Votes from '../components/votes.js'\nimport { useAuthorizedFetcher, useCrag, useUserVote } from '../utils/backend.js'\n\nexport default function VoteCragDescription() {\n const { cragId } = useParams()\n const { crag, error: errorCrag } = useCrag(cragId)\n const { userVote, error: errorUserVote } = useUserVote(\n crag?.description_votes\n )\n const {\n authorizedFetcher,\n isLoading,\n error: errorAuth,\n } = useAuthorizedFetcher()\n const history = useHistory()\n const [cragDescription, setCragDescription] = useState(null)\n const [publicVote, setPublicVote] = useState(true)\n\n useEffect(() => {\n if (cragDescription === null && userVote) {\n setCragDescription(userVote.value)\n setPublicVote(userVote.public)\n }\n }, [cragDescription, userVote])\n\n const voteCragDescription = () => {\n const body = JSON.stringify({\n value: cragDescription,\n public: publicVote,\n })\n return userVote\n ? authorizedFetcher(`/crags/${cragId}/description_votes/${userVote.id}`, {\n method: 'PUT',\n body: body,\n })\n : authorizedFetcher(`/crags/${cragId}/description_votes`, {\n method: 'POST',\n body: body,\n })\n }\n\n const navigateToCrag = () => history.replace(`/crags/${cragId}`)\n\n const handleSubmit = () => voteCragDescription().then(navigateToCrag)\n\n if (errorAuth || errorCrag || errorUserVote) {\n return (\n \n \n Failed to load page.\n \n \n )\n }\n\n if (!authorizedFetcher && !isLoading) {\n return (\n \n \n You need to login to vote.\n \n \n )\n }\n\n if (!crag || userVote === undefined) {\n return \n }\n\n return (\n \n \n Vote for Description\n (\n \n {countedVote.value} ({countedVote.count} votes)\n \n )}\n onChange={(countedVote) => {\n if (countedVote === null) {\n setCragDescription('')\n } else {\n setCragDescription(countedVote.value)\n }\n }}\n value={userVote?.value || null}\n />\n Your vote\n \n Description\n \n \n Anonymous\n {\n setPublicVote(!publicVote)\n }}\n />\n \n You can vote anonymously if you want but your vote will have a\n slightly lower value than if you openly support it.\n \n \n \n \n )\n}\n","import {\n Button,\n Center,\n Checkbox,\n Container,\n FormControl,\n FormLabel,\n Heading,\n Input,\n Text,\n} from '@chakra-ui/react'\nimport { useEffect, useState } from 'react'\nimport { useHistory, useParams } from 'react-router-dom'\nimport { CragBreadcrumb } from '../components/breadcrumb.js'\nimport Loader from '../components/loader.js'\nimport Votes from '../components/votes.js'\nimport { useAuthorizedFetcher, useCrag, useUserVote } from '../utils/backend.js'\n\nexport default function VoteCragName() {\n const { cragId } = useParams()\n const { crag, error: errorCrag } = useCrag(cragId)\n const { userVote, error: errorUserVote } = useUserVote(crag?.name_votes)\n const {\n authorizedFetcher,\n isLoading,\n error: errorAuth,\n } = useAuthorizedFetcher()\n const history = useHistory()\n const [cragName, setCragName] = useState(null)\n const [publicVote, setPublicVote] = useState(true)\n\n useEffect(() => {\n if (cragName === null && userVote) {\n setCragName(userVote.value)\n setPublicVote(userVote.public)\n }\n }, [cragName, userVote])\n\n const voteCragName = (cragId) => {\n const body = JSON.stringify({\n value: cragName,\n public: publicVote,\n })\n return userVote\n ? authorizedFetcher(`/crags/${cragId}/name_votes/${userVote.id}`, {\n method: 'PUT',\n body: body,\n })\n : authorizedFetcher(`/crags/${cragId}/name_votes`, {\n method: 'POST',\n body: body,\n })\n }\n\n const navigateToCrag = (cragId) => history.replace(`/crags/${cragId}`)\n\n const handleSubmit = () =>\n voteCragName(cragId).then(() => navigateToCrag(cragId))\n\n if (errorAuth || errorCrag || errorUserVote) {\n return (\n \n \n Failed to load page.\n \n \n )\n }\n\n if (!authorizedFetcher && !isLoading) {\n return (\n \n \n You need to login to vote.\n \n \n )\n }\n\n if (!crag || userVote === undefined) {\n return \n }\n\n return (\n \n \n Vote for crag name\n (\n \n {countedVote.value} ({countedVote.count} votes)\n \n )}\n onChange={(countedVote) => {\n if (countedVote === null) {\n setCragName('')\n } else {\n setCragName(countedVote.value)\n }\n }}\n value={userVote?.value || null}\n />\n Your vote\n \n Crag name\n setCragName(event.target.value)}\n />\n \n \n Anonymous\n {\n setPublicVote(!publicVote)\n }}\n />\n \n You can vote anonymously if you want but your vote will have a\n slightly lower value than if you openly support it.\n \n \n \n \n )\n}\n","import {\n Box,\n Button,\n Center,\n Checkbox,\n Container,\n Flex,\n FormControl,\n FormLabel,\n Heading,\n Slider,\n SliderFilledTrack,\n SliderThumb,\n SliderTrack,\n Text,\n} from '@chakra-ui/react'\nimport { useEffect, useState } from 'react'\nimport { useHistory, useParams } from 'react-router-dom'\nimport { ClimbBreadcrumb } from '../components/breadcrumb.js'\nimport Loader from '../components/loader.js'\nimport Votes from '../components/votes.js'\nimport {\n useAuthorizedFetcher,\n useClimb,\n useUserVote,\n} from '../utils/backend.js'\n\nexport default function VoteRating() {\n const { cragId, sectorId, climbId } = useParams()\n const { climb, error: errorClimb, mutate } = useClimb(climbId)\n const { userVote, error: errorUserVote } = useUserVote(climb?.rating_votes)\n const {\n authorizedFetcher,\n isLoading,\n error: authError,\n } = useAuthorizedFetcher()\n const history = useHistory()\n const [rating, setRating] = useState(null)\n const [publicVote, setPublicVote] = useState(true)\n\n useEffect(() => {\n if (rating === null && userVote) {\n setRating(userVote.value)\n setPublicVote(userVote.public)\n }\n }, [rating, userVote])\n\n const voteRating = () => {\n const body = JSON.stringify({\n value: rating,\n public: publicVote,\n })\n return userVote\n ? authorizedFetcher(`/climbs/${climbId}/rating_votes/${userVote.id}`, {\n method: 'PUT',\n body: body,\n })\n : authorizedFetcher(`/climbs/${climbId}/rating_votes`, {\n method: 'POST',\n body: body,\n })\n }\n\n const navigateToClimb = () =>\n history.replace(`/crags/${cragId}/sectors/${sectorId}/climbs/${climbId}`)\n\n const handleSubmit = () => voteRating().then(mutate).then(navigateToClimb)\n\n if (authError || errorClimb || errorUserVote) {\n return (\n \n \n Failed to load page.\n \n \n )\n }\n\n if (!authorizedFetcher && !isLoading) {\n return (\n \n \n You need to login to vote.\n \n \n )\n }\n\n if (!climb || userVote === undefined) {\n return \n }\n\n return (\n \n \n Vote for rating\n (\n \n {countedVote.value} stars ({countedVote.count} votes)\n \n )}\n onChange={(countedVote) => {\n if (countedVote === null) {\n setRating('')\n } else {\n setRating(countedVote.value)\n }\n }}\n value={userVote?.value || null}\n />\n Your vote\n \n Rating\n \n \n {rating === null ? 0 : rating} / 5 stars\n \n \n \n \n \n \n \n \n \n \n \n \n \n Anonymous\n {\n setPublicVote(!publicVote)\n }}\n />\n \n You can vote anonymously if you want but your vote will have a\n slightly lower value than if you openly support it.\n \n \n\n \n \n )\n}\n","import {\n Button,\n Center,\n Checkbox,\n Container,\n FormControl,\n FormLabel,\n Heading,\n NumberInput,\n NumberInputField,\n Text,\n} from '@chakra-ui/react'\nimport { useEffect, useState } from 'react'\nimport { useHistory, useParams } from 'react-router-dom'\nimport { SectorBreadcrumb } from '../components/breadcrumb.js'\nimport Loader from '../components/loader.js'\nimport Votes from '../components/votes.js'\nimport {\n useAuthorizedFetcher,\n useSector,\n useUserVote,\n} from '../utils/backend.js'\n\nexport default function VoteSectorCoordinates() {\n const { cragId, sectorId } = useParams()\n const { sector, error: errorSector } = useSector(sectorId)\n const { userVote, error: errorUserVote } = useUserVote(\n sector?.coordinate_votes\n )\n const {\n authorizedFetcher,\n isLoading,\n error: authError,\n } = useAuthorizedFetcher()\n const history = useHistory()\n const [latitude, setLatitude] = useState(null)\n const [longitude, setLongitude] = useState(null)\n const [publicVote, setPublicVote] = useState(true)\n\n useEffect(() => {\n if (latitude === null && longitude === null && userVote) {\n setLatitude(userVote.value.coordinates[1])\n setLongitude(userVote.value.coordinates[0])\n setPublicVote(userVote.public)\n }\n }, [latitude, longitude, userVote])\n\n const voteSectorCoordinates = (sectorId) => {\n const body = JSON.stringify({\n value: {\n type: 'Point',\n coordinates: [longitude, latitude],\n },\n public: publicVote,\n })\n return userVote\n ? authorizedFetcher(\n `/sectors/${sectorId}/coordinate_votes/${userVote.id}`,\n {\n method: 'PUT',\n body: body,\n }\n )\n : authorizedFetcher(`/sectors/${sectorId}/coordinate_votes`, {\n method: 'POST',\n body: body,\n })\n }\n\n const navigateToSector = (sectorId) =>\n history.replace(`/crags/${cragId}/sectors/${sectorId}`)\n\n const handleSubmit = () =>\n voteSectorCoordinates(sectorId).then(() => navigateToSector(sectorId))\n\n if (authError || errorSector || errorUserVote) {\n return (\n \n \n Failed to load page.\n \n \n )\n }\n\n if (!authorizedFetcher && !isLoading) {\n return (\n \n \n You need to login to vote.\n \n \n )\n }\n\n if (!sector || userVote === undefined) {\n return \n }\n\n return (\n \n \n Vote for sector coordinates\n (\n \n {JSON.stringify(countedVote.value.coordinates)} ({countedVote.count}{' '}\n votes)\n \n )}\n onChange={(countedVote) => {\n if (countedVote === null) {\n setLatitude('')\n setLongitude('')\n } else {\n setLatitude([countedVote.value.coordinates[1]])\n setLongitude([countedVote.value.coordinates[0]])\n }\n }}\n value={userVote?.value || null}\n />\n Your vote\n \n Latitude\n \n setLatitude(event.target.value)}\n />\n \n \n \n Longitude\n \n setLongitude(event.target.value)}\n />\n \n \n \n Anonymous\n {\n setPublicVote(!publicVote)\n }}\n />\n \n You can vote anonymously if you want but your vote will have a\n slightly lower value than if you openly support it.\n \n \n\n \n \n )\n}\n","import {\n Button,\n Center,\n Checkbox,\n Container,\n FormControl,\n FormLabel,\n Heading,\n Input,\n Text,\n} from '@chakra-ui/react'\nimport { useEffect, useState } from 'react'\nimport { useHistory, useParams } from 'react-router-dom'\nimport { SectorBreadcrumb } from '../components/breadcrumb.js'\nimport Loader from '../components/loader.js'\nimport Votes from '../components/votes.js'\nimport {\n useAuthorizedFetcher,\n useSector,\n useUserVote,\n} from '../utils/backend.js'\n\nexport default function VoteSectorName() {\n const { cragId, sectorId } = useParams()\n const { sector, error: errorSector } = useSector(sectorId)\n const { userVote, error: errorUserVote } = useUserVote(sector?.name_votes)\n const {\n authorizedFetcher,\n isLoading,\n error: authError,\n } = useAuthorizedFetcher()\n const history = useHistory()\n const [sectorName, setSectorName] = useState(null)\n const [publicVote, setPublicVote] = useState(true)\n\n useEffect(() => {\n if (sectorName === null && userVote) {\n setSectorName(userVote.value)\n setPublicVote(userVote.public)\n }\n }, [sectorName, userVote])\n\n const voteSectorName = (sectorId) => {\n const body = JSON.stringify({\n value: sectorName,\n public: publicVote,\n })\n return userVote\n ? authorizedFetcher(`/sectors/${sectorId}/name_votes/${userVote.id}`, {\n method: 'PUT',\n body: body,\n })\n : authorizedFetcher(`/sectors/${sectorId}/name_votes`, {\n method: 'POST',\n body: body,\n })\n }\n\n const navigateToSector = (sectorId) =>\n history.replace(`/crags/${cragId}/sectors/${sectorId}`)\n\n const handleSubmit = () =>\n voteSectorName(sectorId).then(() => navigateToSector(sectorId))\n\n if (authError || errorSector || errorUserVote) {\n return (\n \n \n Failed to load page.\n \n \n )\n }\n\n if (!authorizedFetcher && !isLoading) {\n return (\n \n \n You need to login to vote.\n \n \n )\n }\n\n if (!sector || userVote === undefined) {\n return \n }\n\n return (\n \n \n Vote for sector name\n (\n \n {countedVote.value} ({countedVote.count} votes)\n \n )}\n onChange={(countedVote) => {\n if (countedVote === null) {\n setSectorName('')\n } else {\n setSectorName(countedVote.value)\n }\n }}\n value={userVote?.value || null}\n />\n Your vote\n \n Sector name\n setSectorName(event.target.value)}\n />\n \n \n Anonymous\n {\n setPublicVote(!publicVote)\n }}\n />\n \n You can vote anonymously if you want but your vote will have a\n slightly lower value than if you openly support it.\n \n \n\n \n \n )\n}\n","import { extendTheme } from '@chakra-ui/react'\nimport { createBreakpoints } from '@chakra-ui/theme-tools'\n\nconst fonts = { mono: `'Menlo', monospace` }\n\nconst breakpoints = createBreakpoints({\n xxs: '21em', // Iphone SE\n xs: '30em', // Iphone SE\n sm: '40em', // Iphone 6 typ\n md: '52em',\n lg: '64em',\n xl: '80em',\n xxl: '120em', // 1920px\n xxxl: '160em', // 2560px\n})\n\nconst theme = extendTheme({\n config: {\n useSystemColorMode: true,\n initialColorMode: 'dark',\n },\n colors: {\n black: '#16161D',\n offwhite: '#f8f8ff',\n brand: {\n 100: '#2d3748',\n 200: '#3CAB70',\n 300: '#2E8B57',\n 400: '#3CAB70',\n 500: '#3CAB70',\n 600: '#2E8B57',\n 700: '#dfaa72',\n },\n },\n fonts,\n breakpoints,\n\n icons: {\n logo: {\n path: (\n \n ),\n viewBox: '0 0 3000 3163',\n },\n },\n})\n\nexport default theme\n","import { ChakraProvider } from '@chakra-ui/react'\nimport { Route, Switch } from 'react-router'\nimport { ParallaxProvider } from 'react-scroll-parallax'\nimport { SWRConfig } from 'swr'\nimport { NavBar } from './components/navbar.js'\nimport AddAscent from './pages/add-ascent'\nimport AddBetaVideo from './pages/add-beta-video'\nimport AddClimb from './pages/add-climb.js'\nimport AddCragPhoto from './pages/add-crag-photo'\nimport AddCrag from './pages/add-crag.js'\nimport AddImage from './pages/add-image.js'\nimport AddLine from './pages/add-line.js'\nimport AddSector from './pages/add-sector.js'\nimport Area from './pages/area'\nimport Climb from './pages/climb.js'\nimport CragList from './pages/crag-list'\nimport CragPhoto from './pages/crag-photo'\nimport Crag from './pages/crag/index.js'\nimport Crags from './pages/crags.js'\nimport FeedPage from './pages/feedpage'\nimport FilterSearch from './pages/filter-search'\nimport RockImage from './pages/image.js'\nimport Landing from './pages/landing.js'\nimport Line from './pages/line.js'\nimport Map from './pages/map'\nimport Sector from './pages/sector/index.js'\nimport Settings from './pages/settings.js'\nimport UserPhotos from './pages/user-photos'\nimport UserProfile from './pages/user-profile'\nimport UserTicks from './pages/user-ticks'\nimport VoteAccessInformation from './pages/vote-access-information'\nimport VoteBanner from './pages/vote-banner'\nimport VoteClimbBroken from './pages/vote-climb-broken'\nimport VoteClimbDescription from './pages/vote-climb-description'\nimport VoteClimbGrade from './pages/vote-climb-grade.js'\nimport VoteClimbName from './pages/vote-climb-name.js'\nimport VoteCragDescription from './pages/vote-crag-description'\nimport VoteCragName from './pages/vote-crag-name.js'\nimport VoteRating from './pages/vote-rating'\nimport VoteSectorCoordinates from './pages/vote-sector-coordinates'\nimport VoteSectorName from './pages/vote-sector-name.js'\nimport theme from './styles/theme'\n\nfunction App() {\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 \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 \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 \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\nexport default App\n","const reportWebVitals = (onPerfEntry) => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry)\n getFID(onPerfEntry)\n getFCP(onPerfEntry)\n getLCP(onPerfEntry)\n getTTFB(onPerfEntry)\n })\n }\n}\n\nexport default reportWebVitals\n","import { Auth0Provider } from '@auth0/auth0-react'\nimport React from 'react'\nimport { useHistory } from 'react-router-dom'\n\nconst Auth0ProviderWithHistory = ({ children }) => {\n const history = useHistory()\n\n const onRedirectCallback = (appState) => {\n history.push(appState?.returnTo || window.location.pathname)\n }\n\n return (\n \n {children}\n \n )\n}\n\nexport default Auth0ProviderWithHistory\n","import React from 'react'\nimport ReactDOM from 'react-dom'\nimport './index.css'\nimport App from './app.js'\nimport reportWebVitals from './reportWebVitals'\nimport { BrowserRouter as Router } from 'react-router-dom'\nimport Auth0ProviderWithHistory from './components/auth0-provider.js'\n// eslint-disable-next-line import/no-webpack-loader-syntax\nimport mapboxgl from '!mapbox-gl'\nimport './styles/mapbox.css'\nimport theme from './styles/theme.js'\n\nimport { ColorModeScript } from '@chakra-ui/react'\nmapboxgl.accessToken = process.env.REACT_APP_MAPBOX_TOKEN\n\nReactDOM.render(\n \n \n \n \n \n ,\n document.getElementById('root')\n)\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals()\n"],"sourceRoot":""}