{"version":3,"sources":["helpers/Helper.js","components/SkiArea/SkiAreaDetail/Listings/ListingListTable.js","components/SkiArea/SkiAreaDetail/Listings/AccommodationListTable.js","components/CustomHooks/useAuth.js","ScrollToTop.js","components/Common/Autocomplete.js","components/Common/Loader.js","components/Common/Home.js","components/Common/Login.js","components/Common/Register.js","components/Common/ConfirmEmail.js","components/Common/ForgotPassword.js","components/Common/ResetPassword.js","components/Common/Contact.js","components/Common/WayPointAutocomplete.js","components/Common/RouteFinder.js","components/Common/CommonPage.js","components/Common/GeneralSearch.js","static-contents/Snow_Japan_Color_Logo.svg","components/Common/Header.js","components/Common/MainNav.js","components/Common/SearchMemberBar.js","static-contents/sj-logo-round.png","components/Common/Footer.js","components/SkiArea/MapPath.js","components/SkiArea/JapanMap.js","components/SkiArea/Home.js","components/Common/PrefectureCheckList.js","components/Common/TownCheckList.js","components/Common/AreaCheckList.js","components/SkiArea/SearchResult.js","components/SkiArea/SkiAreaSearch.js","components/SkiArea/SkiAreaSearchContainer.js","components/CustomHooks/useSkiAreaPhotos.js","components/SkiArea/SkiAreaPhotoDetail.js","components/SkiArea/SkiAreaPhotos.js","components/CustomHooks/useSkiAreaReviews.js","components/SkiArea/SkiAreaReviewDetail.js","components/SkiArea/SkiAreaReviews.js","components/SkiArea/Areas.js","components/SkiArea/Prefectures.js","components/SkiArea/Towns.js","components/SkiArea/Listings.js","components/SkiArea/SkiAreaContainer.js","components/SkiArea/SkiAreaListMap.js","components/Common/SkiAreaMapContainer.js","components/SkiArea/SkiAreaList.js","components/SkiArea/SkiAreaDetail/SkiAreaDetailTabs.js","components/SkiArea/SkiAreaDetail/SkiAreaInfo.js","components/SkiArea/SkiAreaDetail/BasicInfo/CourseMap.js","components/SkiArea/SkiAreaDetail/BasicInfo/SkiMountain.js","components/SkiArea/SkiAreaDetail/BasicInfo/SkiSnowBoard.js","components/SkiArea/SkiAreaDetail/BasicInfo/Facilities.js","components/SkiArea/SkiAreaDetail/BasicInfo/SeasonOpeningTime.js","components/SkiArea/SkiAreaDetail/BasicInfo/LiftTicketCharges.js","components/SkiArea/SkiAreaDetail/BasicInfo/ContactInformation.js","components/SkiArea/SkiAreaDetail/BasicInfo/BasicInfoContainer.js","components/SkiArea/SkiAreaDetail/DailyReport/DailyReportContainer.js","components/SkiArea/SkiAreaDetail/History/HistoryContainer.js","components/SkiArea/SkiAreaDetail/Listings/ListingsContainer.js","components/SkiArea/SkiAreaDetail/Location/LocationContainer.js","components/SkiArea/SkiAreaDetail/Photos/PhotoDetail.js","components/SkiArea/SkiAreaDetail/Photos/PhotosContainer.js","components/SkiArea/SkiAreaDetail/Reviews/ReviewDetail.js","components/SkiArea/SkiAreaDetail/Reviews/ReviewsContainer.js","components/SkiArea/SkiAreaDetail/RouteFinder/RouteFinderContainer.js","components/Common/SnowChart.js","components/Common/SeasonSnowChart.js","components/SkiArea/SkiAreaDetail/SnowData/SnowTable.js","components/SkiArea/SkiAreaDetail/SnowData/SnowDataContainer.js","components/SkiArea/SkiAreaDetail/Weather/WeatherContainer.js","components/SkiArea/SkiAreaDetail/Spotlight/SpotlightContainer.js","components/SkiArea/SkiAreaDetail/SkiAreaDetailContainer.js","components/DailyReport/Home.js","components/DailyReport/AllReportCalendar.js","components/DailyReport/Calendar.js","components/DailyReport/OfficialSnowDepth.js","components/DailyReport/Webcams.js","components/DailyReport/DailyReportContainer.js","components/DailyReport/Detail/DetailTabs.js","components/DailyReport/Detail/Common/DailyReportInfo.js","components/DailyReport/Detail/Common/DailyObservedSnowfall.js","components/DailyReport/Detail/Common/RecentDailyReports.js","components/DailyReport/Detail/Common/SnowfallStatistics.js","components/DailyReport/Detail/Common/DetailDailyReport.js","components/DailyReport/Detail/ObservedSnowfallAnalysis/DailySnowfall.js","components/DailyReport/Detail/ObservedSnowfallAnalysis/MonthlySnowfall.js","components/DailyReport/Detail/ObservedSnowfallAnalysis/MonthlySnowfallTable.js","components/DailyReport/Detail/ObservedSnowfallAnalysis/SeasonSnowfall.js","components/DailyReport/Detail/ObservedSnowfallAnalysis/DaylySnowfallTable.js","components/DailyReport/Detail/ObservedSnowfallAnalysis/ObservedSnowfallAnalysisContainer.js","components/DailyReport/Detail/SnowDepthAnalysis/SnowDepthAnalysisContainer.js","components/DailyReport/Detail/Weather/WeatherContainer.js","components/DailyReport/Detail/Season/SeasonSummary.js","components/DailyReport/Detail/Season/SeasonReportCalendar.js","components/DailyReport/Detail/Season/SeasonContainer.js","components/DailyReport/Detail/Archives/MonthlyReportsListing.js","components/DailyReport/Detail/Archives/MonthlyReportsListingContainer.js","components/DailyReport/Detail/Archives/ArchivesContainer.js","components/DailyReport/Detail/YearlyAnalysisTab.js","components/DailyReport/Detail/About/AboutDailyReport.js","components/DailyReport/Detail/DetailContainer.js","components/Common/NearbySkiAreaCheckList.js","components/Accommodation/SearchResult.js","components/Accommodation/Home.js","components/Accommodation/AccommodationContainer.js","components/Accommodation/AccommodationDetail/AccommodationDetailTabs.js","components/Accommodation/AccommodationDetail/AccommodationInfo.js","components/Accommodation/AccommodationDetail/BasicInfo/BasicInfoContainer.js","components/Accommodation/AccommodationDetail/Photographs/PhotographsContainer.js","components/Accommodation/AccommodationDetail/RouteFinder/RouteFinderContainer.js","components/Accommodation/AccommodationDetail/AccommodationDetailContainer.js","components/Listing/Home.js","components/Listing/ListingList.js","components/Listing/ListingListContainer.js","components/Listing/ListingDetail.js","components/Listing/ListingContainer.js","components/Guide/Home.js","components/Guide/GuideDetail.js","components/Guide/GuideContainer.js","components/Member/Home.js","components/Member/MemberReviewDetail.js","components/Member/MemberReviews.js","components/Member/ResortAutocomplete.js","components/Member/MemberSubmitReview.js","components/Member/MemberPhotoDetail.js","components/Member/MemberPhotos.js","components/Common/Uploader.js","components/Member/MemberUploadPhoto.js","components/Member/MemberContainer.js","App.js","reportWebVitals.js","index.js","components/SkiArea/SkiAreaListTable.js","components/Accommodation/AccommodationListTable.js","components/Listing/ListingListTable.js"],"names":["RenderBreak","text","alteredText","String","split","forEach","item","GetPCIconImageName","iconId","iconImageName","GetWindCIconImageName","GetWthConditionIconImageName","GetVConditionIconImageName","GetCurrentSeasonName","thisDate","Date","thisMonth","getMonth","thisYear","getFullYear","GetPreviousSeasonName","GetTotalMonthDays","monthName","todayDays","ListingListTable","tableData","headingColumns","dataMapping","breakOn","tableClass","data","map","row","index","rowData","i","key","undefined","objName","push","val","eval","UniqueName","SectionUniqueName","IntroductionText","ImageName","to","window","$baseListingUrl","src","alt","Name","className","data-heading","dangerouslySetInnerHTML","__html","col","AccommodationListTable","title","AccommodationUniqueName","PrefectureUniqueName","AccommodationPrefectureUniqueName","TownUniqueName","AccommodationTownUniqueName","TownTypeStr","AccommodationTownTypeStr","AreaUniqueName","AccommodationAreaUniqueName","TopIntroText","ListingImageName","$baseAccommodationUrl","AuthContext","createContext","auth","setAuth","user","setUser","useAuth","useContext","AuthProvider","children","useState","checkLogin","a","thisSessionUser","JSON","parse","sessionStorage","getItem","axios","method","url","$baseSJAPIUrl","FullName","Email","Token","then","loginStatusResult","loggedInUser","UserName","setItem","stringify","err","console","log","useEffect","Provider","value","ScrollToTop","props","location","useLocation","scrollTo","Autocomplete","suggestionsListComponent","skiAreaList","activeSuggestion","setActiveSuggestion","filteredSkiAreas","setFilteredSkiAreas","showSuggestions","setShowSuggestions","userInput","setUserInput","navigate","useNavigate","onClick","e","currentTarget","innerText","selectedSkiAreaNameParts","selectedSkiAreaList","filter","skiArea","trim","length","selectedSkiArea","path","$baseSkiAreaUrl","PrefectureName","type","onChange","thisFilteredSkiAreas","toLowerCase","indexOf","NameJapanese","TownName","TownNameJapanese","AreaName","AreaNameJapanese","onKeyDown","keyCode","Loader","Home","setSkiAreaList","slidingImageList","setSlidingImageList","dailyReportList","setDailyReportList","homeLinkList","setHomeLinkList","setWeatherImportResult","mainHomePageSeason","setMainHomePageSeason","fetchSkiAreaSlidingImagesDailyReportsAndHomeLinks","$baseAPIUrl","resSlidingImage","resDailyReportLatest","resSlidingLinks","dataResortList","resGeneralMessages","Title","resWeatherData","homeLink","LinkTimestamp","LinkType","pathname","URLLink","rel","HeadlineText","href","target","Carousel","controls","indicators","fade","pause","interval","slidingImage","Item","Image","$baseAppUrl","fluid","Id","$baseGuideUrl","$baseRouteFinderUrl","$baseDailyReportUrl","dailyReport","NowReportWeekDay","NowReportDayTh","NowReportMonthFull","NowReportYear","NowReportHourMinute","Login","errMsg","setErrMsg","formerrors","setFormErrors","Username","Password","values","setValues","handleChange","event","name","slice","validate","errors","Object","keys","handleSubmit","preventDefault","RememberMe","loginResult","loggedInUserResult","ResultType","$baseMemberUrl","Message","response","Helmet","content","Form","onSubmit","Row","Group","controlId","Label","Control","placeholder","Button","USER_NAME_REGEX","EMAIL_REGEX","PWD_REGEX","Register","success","setSuccess","isVisible","setIsVisible","ConfirmPassword","test","registrationResult","registeredUser","errRef","current","focus","aria-describedby","icon","faQuestionCircle","Collapse","in","id","aria-label","ConfirmEmail","useParams","statusCode","setStatusCode","nonSuccessMessage","useSearchParams","searchParams","token","get","thisToken","confirmEmailResult","StatusCode","HandleConfirmEmail","ForgotPassword","forgotPasswordResult","forgotPassword","ResetPassword","thisData","resetPasswordResult","invokeCollapse","Contact","successMessage","setSuccessMessage","txtName","txtEmail","txtConfirmEmail","txtContent","SendContactEmail","email","subject","optSubject","dataContact","Check","inline","label","as","rows","WayPointAutocomplete","onRoutePointSelect","initialValue","slNo","controlName","readOnly","coords","newRoutePoint","location_latitude","Location_Latitude","location_longitude","Location_Longitude","input","isValidCoordinate","containerStyle","width","height","center","lat","lng","RouteFinder","params","resort","setResort","generalMessageRouteFinder","setGeneralMessageRouteFinder","originPoint","setOriginPoint","destinationPoint","setDestinationPoint","wayPoints","setWayPoints","showMap","setShowMap","summaryPanel","document","getElementById","alphabetArray","isLoaded","useJsApiLoader","googleMapsApiKey","setMap","directionsResponse","setDirectionsResponse","onLoad","useCallback","onUnmount","fetchResortData","resortUniqueName","dataResort","destinationLocation","fetchData","directionsService","google","maps","DirectionsService","waypts","routeWayPoint","wayPointCoords","join","stopover","routeOriginPoint","originCoords","routeDestinationPoint","destinationCoords","route","origin","destination","waypoints","optimizeWaypoints","travelMode","TravelMode","DRIVING","results","clearRoute","newValue","currentLocation","navigator","geolocation","getCurrentPosition","position","latitude","longitude","alert","wayPoint","newWayPoints","setWayPoint","class","splice","removeWayPoint","disabled","variant","mapContainerStyle","zoom","options","zoomControl","streetViewControl","mapTypeControl","fullscreenControl","directions","panel","CommonPage","guide","setGuide","fetchGuides","guideUniqueName","resGuide","commonPageNmae","HtmlContent","GeneralSearch","accommodationList","setAccommodationList","listingsList","setListingsList","guideList","setGuideList","fetchSearchedSkiArea","keyword","areaIds","dataSkiAreaList","allAreaIds","Set","MainArea_Id","currentElement","dataAccommodationList","dataListingsList","dataGuidesList","SkiAreaListTable","SectionName","Header","textlogo","MainNav","nowList","setNowList","selectedClassNameResort","setSelectedClassNameResort","selectedClassNameNows","setSelectedClassNameNows","selectedClassNameGuide","setSelectedClassNameGuide","selectedClassNameListing","setSelectedClassNameListing","selectedClassNameAbout","setSelectedClassNameAbout","isSkiAreaShown","setIsSkiAreaShown","isDailyReportsShown","setIsDailyReportsShown","isGuideShown","setIsGuideShown","isListingShown","setIsListingShown","isAboutShown","setIsAboutShown","subPageURL","setSubPageURL","fetchNowList","resNowList","thisPathName","classNameResort","classNameNows","classNameGuide","classNameListing","classNameAbout","thisSubPageURL","includes","endsWith","hideSkiAreaSubMenu","hideDailyReportsSubMenu","hideGuideSubMenu","hideListingSubMenu","hideAboutSubMenu","Navbar","bg","expand","collapseOnSelect","Nav","NavDropdown","show","onMouseEnter","onMouseLeave","onSelect","Link","eventKey","now","Brand","Toggle","aria-controls","style","float","marginTop","SearchMemberBar","loggedinUser","setLoggedinUser","setKeyword","logout","logoutStatusResult","FormControl","size","onBlur","Footer","todayYear","setTodayYear","fetchTodayDate","resTodayDate","todayDateParts","roundlogo","MapPath","jpjsconfig","thisJPJSConfig","generalJPJSConfig","thisConfig","thisPathStyle","Stroke","borderColor","active","Fill","upColor","cursor","trigger","open","fill","stroke","vectorEffect","VectorEffect","d","Data","closeOnDocumentClick","keepTooltipInside","JapanMap","version","xmlns","viewBox","xmlSpace","points","strokeDasharray","x1","y1","x2","y2","SkiAreaHome","skiAreaHomePage","setSkiAreaHomePage","prefectureList","setPrefectureList","areaList","setAreaList","townList","setTownList","resPrefecture","resArea","resTown","DropdownButton","align","evtKey","evt","Dropdown","prefecture","TotalResorts","area","town","PrefectureCheckList","selectedPrefectures","prefectureData","setPrefectureData","checked","newData","uniqueName","toggle","CheckboxText","styled","span","Disabled","TownCheckList","selectedTowns","townData","setTownData","prefectures","allTowns","selTowns","selectedTownUniqueNames","obj","refreshTownOpetions","townType","townTypeStr","prefectureUniqueName","AreaCheckList","selectedAreas","areaData","setAreaData","allAreas","selAreas","selectedAreaUniqueNames","refreshAreaOpetions","SearchResult","allSkiAreaList","ClearSort","areas","towns","noFilter","searchedSkiAreaList","setSearchedSkiAreaList","buttonTitle","setButtonTitle","sortColumn","setSortColumn","sortOrder","setSortOrder","searchFilterPrefecture","setSearchFilterPrefecture","searchFilterArea","setSearchFilterArea","searchFilterTown","setSearchFilterTown","ClearSortValues","sort","PerpareSearchFilter","sortedResult","b","nameA","nameB","reverse","MaximumElevation","MinimumElevation","VerticalDifference","TotalSkiLifts","TotalSkiCourses","LongestCourse","SteepestSlope","SkiAreaSearch","setAllSkiAreaList","setPrefectures","setSelectedPrefectures","setAllAreas","setSelectedAreas","setAllTowns","setSelectedTowns","useRef","setShow","setNoFilter","getSearchResult","thisSkiAreaList","searchedSkiAreas","selectedPrefectureList","searchedSkiAreasPrefecture","searchedSkiAreasArea","searchedSkiAreasTown","prefectureUniqueNames","selectedAreaList","areaUniqueNames","selectedTownList","townUniqueNames","resultSkiAreaList","uniquePrefectures","Map","p","getAllSkiAreaPrefectures","allSkiAreas","uniqueAreas","getAllSkiAreaAreas","uniqueTowns","t","getAllSkiAreaTowns","selPrefectures","Offcanvas","onHide","closeButton","Body","SkiAreaSearchContainer","fetchSkiAreaList","useSkiAreaPhotos","queryPhoto","userName","pageNumberPhoto","loadingPhoto","setLoadingPhoto","errorPhoto","setErrorPhoto","photos","setPhotos","hasMorePhoto","setHasMorePhoto","resortid","username","cancelToken","CancelToken","c","cancelPhoto","resPhoto","prevPhotos","catch","isCancel","SkiAreaPhotoDetail","photo","Caption","ResortUniqueName","ResortName","CreatedByUserName","PhotoFileName","CreatedAtDayTh","CreatedAtMonthFull","CreatedAtYear","SkiAreaPhotos","setPaegNumberPhoto","observerPhoto","lastPhotoElementRef","nodePhoto","disconnect","IntersectionObserver","entriesPhoto","isIntersecting","prevPageNumberPhoto","observe","ref","useSkiAreaReviews","queryReview","pageNumberReview","loadingReview","setLoadingReview","errorReview","setErrorReview","reviews","setReviews","hasMoreReview","setHasMoreReview","cancelReview","resReview","prevReviews","SkiAreaReviewDetail","review","Headline","ReviewText","DateVisited","ThingsILiked","ThingsIDidnotLike","ReaderName","SubmittedDayTh","SubmittedMonthFull","SubmittedYear","SkiAreaReviews","setPaegNumberReview","observerReview","lastReviewElementRef","nodeReview","entriesReview","prevPageNumberReview","Areas","fetchAreas","Prefectures","fetchPrefectures","Towns","fetchTown","Listings","SkiAreaContainer","SkiAreaListMap","mapPath","setMapPath","thisPrefecture","thisArea","thisTown","MapImage","SkiAreaMapContainer","mapCenter","mapZoom","selected","setSelected","parseFloat","selectedItem","maximumElevation","minimumElevation","verticalDifference","totalSkiLifts","totalSkiCourses","longestCourse","steepestSlope","townUniqueName","clickable","onCloseClick","SkiAreaList","setPrefecture","setArea","setTown","setOpen","requestType","fetchPrefecture","fetchArea","areaUniqueName","mapZoomLevel","tableTitle","pageTitle","parseInt","Location_MapZoomLevel","aria-expanded","SkiAreaDetailTabs","skiAreaDailyReport","skiAreaLatestWeather","hasListings","baseUrlPath","subItemName","setSubItemName","thisButtonTitle","ResortSpotlightUrl","ReportId","NumberOfReviews","NumberOfPhotos","SkiAreaInfo","PrefectureNameJapanese","CourseMap","courseMapSmall","CourseMapSmall","replace","courseMapLarge","CourseMapLarge","SkiMountain","SkiSnowBoard","nearbySkiAreaList","nearbySkiAreas","setNearbySkiAreas","thisNearbySkiAreas","IsConnected","SkiersAllowed","SnowboardersAllowed","BeginnersCourses","IntermediateCourses","AdvancedCourses","RopeWays","Gondolas","QuadLifts","TripleLifts","PairLifts","SingleLifts","OtherLifts","SkiersPercent","SnowboardersPercent","nearbySkiArea","SkiAreaPrefectureName","SkiAreaTownUniqueName","SkiAreaUniqueName","SkiAreaName","Distance","Facilities","SnowParkFacilities","InformationOnChildren","SchoolInformation","EquipmentRentalInformation","SeasonOpeningTime","colSpan","Array","x","OpeningDate","ClosingDate","OpeningTimeComments","LiftTicketCharges","ticketChargeList","setTicketChargeList","fetchLiftTicket","dataTicket","ChildTicketLabel","OlderChildTicketLabel","SeniorTicketLabel","ticketCharge","NameOfTicket","AdultTicket","ChildTicket","OlderChildTicket","SeniorTicket","LiftTicketInformation","ContactInformation","Address","Telephone","BasicContainer","requestUrl","showSnowData","PlannedSeasonDates","SnowDepth","SnowDepthCompareToYesterday","WeatherDayTh","WeatherMonthFull","WeatherYear","IntroductoryText","RegionName","RegionUrl","DailyReportContainer","NowName","NowUniqueName","MainReport","LiftOperation","Photo1","Photo2","Photo3","HistoryContainer","ListingsContainer","nearbyAccommodations","areaSectionListings","areaSectionListing","sectionName","listings","LocationContainer","setLocation","fetchLocation","dataLocation","allowFullScreen","ShinkansenStation_Id","ShinkansenLine_Id","KMFromShinkansenStation","ShinkansenStationName","ShinkansenLineName","TrainStation1_Id","TrainLine1_Id","KMFromStation1","TrainStation1Name","TrainLine1Name","TrainStation2_Id","TrainLine2_Id","KMFromStation2","TrainStation2Name","TrainLine2Name","TravelInformation","ShuttleBusInformation","Interchange1_Id","Expressway1_Id","KMFromInterchange1","Interchange1Name","Expressway1Name","Interchange2_Id","Expressway2_Id","KMFromInterchange2","Interchange2Name","Expressway2Name","Interchange3_Id","Expressway3_Id","KMFromInterchange3","Interchange3Name","Expressway3Name","RouteNumber","KMFromRoute","OtherPrefecturalRoadNumber","Direction","Parking","StreetViewMap1","StreetViewMap2","aria-hidden","PhotoDetail","PhotosContainer","ReviewDetail","ReviewsContainer","RouteFinderContainer","SnowChart","resortName","snowData","getSnowDataValue","season","dailySnowData","dailyData","Season","CreatedAt","dataItem","valueCounter","WeatherMonth","UTC","Number","WeatherDay","resortWeatherSnowDataSeries","colors","chart","zoomType","backgroundColor","borderWidth","fontFamily","fontSize","fontWeight","subtitle","xAxis","dateTimeLabelFormats","month","year","legend","itemStyle","yAxis","min","labels","tooltip","headerFormat","pointFormat","exporting","enabled","plotOptions","spline","marker","series","credits","highcharts","Highcharts","SeasonSnowChart","chartOptions","setResortWeatherSnowDataSeries","thisSeason","thisResortWeatherSnowDataSeries","GetResortWeatherSnowDataSeries","thisOptions","SnowTable","getMonthlySeasonSnowDepthValue","monthlySeasonSnowfallData","snowSeason","dailySnowDepthData","dailySnowDepthDataList","totalDays","runCallback","cb","GetDailyData","monthlyData","day","elm","dailySnowDepth","GetDayTh","dayTh","currentSeason","overflowX","seasonData","seasonSnowData","seasonName","seasonDailySnowDepth","SnowDataContainer","setSnowData","fetchSnowData","resortId","dataSnowData","thisSnowData","symbol","radius","states","hover","lineWidth","threshold","seasons","WeatherContainer","openPrecipitationMap","setOpenPrecipitationMap","openAnimateForecasts","setOpenAnimateForecasts","HotelBookingLink1","HotelBookingLink2Text","HotelBookingLink1Text","WeatherFeedUrl","SpotlightContainer","listingDetail","setListingDetail","fetchListing","thisResort","dataListingDetail","SkiAreaDetailContainer","setShowSnowData","setSkiAreaDailyReport","setSkiAreaLatestWeather","setNearbyAccommodations","setAreaSectionListings","setHasListings","getAreaListingValue","sectionUniqueName","listingList","listingSectionData","getListingSectionName","dataResortLatestWeather","dataNearbySkiAreas","thisNearbySkiAreaList","nr","FromSkiAreaUniqueName","ToSkiAreaName","ToSkiAreaUniqueName","ToSkiAreaPrefectureName","SkiAreaPrefectureUniqueName","ToSkiAreaPrefectureUniqueName","SkiAreaTownName","ToSkiAreaTownName","ToSkiAreaTownUniqueName","SkiAreaTownTypeStr","ToSkiAreaTownTypeStr","SkiAreaAreaName","ToSkiAreaAreaName","SkiAreaAreaUniqueName","ToSkiAreaAreaUniqueName","FromSkiAreaName","FromSkiAreaPrefectureName","FromSkiAreaPrefectureUniqueName","FromSkiAreaTownName","FromSkiAreaTownUniqueName","FromSkiAreaTownTypeStr","FromSkiAreaAreaName","FromSkiAreaAreaUniqueName","dataSkiAreaDailyReport","dataNearbyAccommodations","dataAreaListings","listingDataSeries","generalMessageList","setSeneralMessageList","dailyReportMessage","setDailyReportMessage","dailyReportWeatherMapUrl","setDailyReportWeatherMapUrl","latestSkiAreaWeatherList","setLatestSkiAreaWeatherList","setSeasonTotalSnowList","singleSkiAreaWeatherReport","fetchGeneralMessagesAndDailyReports","thisSeasonName","generalMessageIds","resSeasonTotalSnow","filter_type","resSkiAreaWeather","maxCreated","latestSkiAreaWeather","overflow","NewSnowfallResortA","skiAreaWeather","AllReportCalendar","nowYear","nowMonth","dailySnowfallMonthlyList","MONTHS","date","setMonth","getStartDayOfMonth","startDay","setStartDay","startDate","getDay","getDayOrdinal","containerId","containerIdSelector","days","_","dayClassName","allDailyReports","calDay","dailySnowfallData","NowReportDay","getDailySnowfallReports","Calendar","years","setYears","dailySnowfallList","setDailySnowfallList","fetchDailyObservedSnowfall","resDailySnowfall","getDailySnowfallMonthlyList","NowReportMonth","OfficialSnowDepth","allSkiAreaWeatherList","setAllSkiAreaWeatherList","lastUpdateDate","setLastUpdateDate","nameSorted","setNameSorted","townSorted","setTownSorted","prefectureSorted","setPrefectureSorted","snowDepthSorted","setSnowDepthSorted","changeSorted","setChangeSorted","fetchSkiAreaWeatherList","thisMatch","latestReport","townNameA","townNameB","prefectureNameA","prefectureNameB","faAngleDoubleDown","faAngleDoubleUp","Webcams","generalMessageWebCam","setGeneralMessageWebCam","fetchGeneralMessage","Description","currentSeasonName","DetailTabs","nowUniqueName","DailyReportInfo","isArchive","reportType","TemperatureBottom","TemperatureTop","WeatherConditionIcon","WeatherCondition","PrecipitationConditionIcon","PrecipitationCondition","WindConditionIcon","WindCondition","VisibilityConditionIcon","VisibilityCondition","DailyObservedSnowfall","chartRef","accumulatedSnowData","dailyAccumulatedSnow","thisDailySnowfallDataSeries","dailySnowfallDataSeries","update","accumulatedSnowDataSeries","allowChartUpdate","RecentDailyReports","last7daysDailyReports","SnowfallStatistics","snowfallTotalList","setSnowfallTotalList","seasonDailyReportList","setSeasonDailyReportList","fetchSeasonDailyReportAndSnowfallTotal","nowId","resSnowfallTotal","resSeasonDailyReport","Now_Id","TotalSnow7Days","TotalSnow14Days","TotalSnowCurrentMonth","TotalSnowCurrentSeason","TotalSnow7DaysData","find","TotalType","TotalSnow14DaysData","TotalSnowCurrentMonthData","TotalSnowCurrentSeasonData","DetailDailyReport","thisReport","setThisReport","fetchDailyReport","reportUniqueName","resDailyReport","DailySnowfall","fetchDailySnowfall","getSnowfallValue","currentSesson","previousSeason","seriesVisible","minorTickInterval","MonthlySnowfall","monthlySnowfall","monthlySnowfallData","TotalSnow","monthlySnowfallDataSeries","categories","crosshair","footerFormat","shared","useHTML","shadow","column","pointPadding","candlestick","lineColor","background2","MonthlySnowfallTable","totalSeasonSnowfall","PrevMonthTotalSnow1","PrevMonthTotalSnow2","PrevMonthTotalSnow3","PrevMonthTotalSnow4","PrevMonthTotalSnow5","PrevMonthTotalSnow6","GetBlankCells","novemberData","blankCells","snowdata","newSnowfall","seasonSnowfall","SeasonSnowfall","seasonSnowfallList","setSeasonSnowfallList","fetchSeasonSnowfall","resSeasonSnowfall","seasonSnowfallData","seasonSnowfallDataSeries","DaylySnowfallTable","getMonthlySeasonSnowfallValue","dailySnowfallDataList","GetDailyDataCell","reportDate","dailySnowfall","seasonDailySnowfall","ObservedSnowfallAnalysisContainer","setMonthlySnowfall","fetchMonthlySnowfallWithPrevMonth","resMonthlySnowfallWithPrevMonth","SnowDepthAnalysisContainer","ResortAName","skiAreaName","setSkiAreaName","dailyReportSkiAreas","setDailyReportSkiAreas","showChart","setShowChart","fetchDailyReportSkiAreas","dailyReportId","dailyReportSkiAreaData","ResortAId","selectedSkiAreaId","Resort_Id","WeatherMapUrl","SeasonSummary","seasonNameParts","dailyReportSeasonSummary","setDailyReportSeasonSummary","fetchSeasonSummary","resSeasonSummary","TotalSnowfall","TotalSnowfallDays","MostDailySnowfall","MostDailySnowfallDate","NovemberSnowfall","NovemberSnowfallDays","DecemberSnowfall","DecemberSnowfallDays","JanuarySnowfall","JanuarySnowfallDays","FebruarySnowfall","FebruarySnowfallDays","MarchSnowfall","MarchSnowfallDays","AprilSnowfall","AprilSnowfallDays","SeasonReportCalendar","getDailySnowfall","snowfall","snowfallCSS","getReportCSS","archiveUrl","goToDetail","SeasonContainer","Frame","div","MonthlyReportsListing","dailyDataList","MonthlyReportsListingContainer","setSeasonName","ArchivesContainer","nowSeasons","YearlyAnalysisTab","AboutDailyReport","DetailContainer","setLatestReport","setNowSeasons","fetchLatestReportAndNowSeasons","resLatestReport","resNowSeasons","isActive","NearbySkiAreaCheckList","selectedSkiAreas","skiAreaData","setSkiAreaData","selSkiAreas","selecteSkidAreaUniqueNames","refreshSkiAreaOpetions","accommodationUniqueName","allAccommodationList","searchedAccommodationList","setSearchedAccommodationList","searchFilterNearbySkiArea","setSearchFilterNearbySkiArea","selectedNearbySkiAreas","AccommodationHome","uniqueSkiAreas","allNearbySkyAreaList","accommodationHomePage","setAccommodationHomePage","setAllAccommodationList","setSelectedSkiAreas","fetchAccommodationHomePage","thisAccommodationList","searchedAccommodation","searchedAccommodationPrefecture","searchedAccommodationArea","searchedAccommodationTown","searchedAccommodationSkiArea","skiAreaUniqueNames","accommodationUniqueNames","resultAccommodationList","getAccommodationPrefectures","allAccommodations","getAllAccommodationAreas","getAllAccommodationTowns","sa","AccommodationContainer","setAllNearbySkyAreaList","setuniqueSkiAreas","fetchAccommodationList","thisParam","dataNearbySkyAras","getAllAccommodationNearbySkiAreas","nearbySkyAreas","allUniqueSkiAreas","AccommodationDetailTabs","hotel","AccommodationInfo","accommodation","WebUrl","nearbySkyAraList","accommodationPhotos","sortedAccommodationPhotos","firstAccommodationPhoto","SortOrder","FileName","PageContent","nearbySkyAra","PhotographsContainer","currentImage","setCurrentImage","viewerIsOpen","setViewerIsOpen","photoList","setPhotoList","openLightbox","thisAccommodationPhotos","accommodationPhotoList","ImageWidth","ImageHeight","fetchAccommodationPhotos","onClose","currentIndex","views","srcset","srcSet","caption","AccommodationDetailContainer","setAccommodation","setAccommodationPhotos","nearbySkyAras","setNearbySkyAras","fetchAccommodationPhotosAndNearbySkyAras","hotelUniqueName","dataAccommodation","dataAccommodationPhotos","dataNearbySkyAreas","listingSectionList","listingIntroductionText","setListingIntroductionText","fetchListingMessage","drop","listingSection","SectionIcon","ListingList","setListings","ListingListContainer","ListingDetail","listingUniqueName","ListingContainer","section_name","listing_name","setListingList","setListingSectionList","fetchListingSectionsAndListings","resListingSections","resListings","GuideHome","guideHomePage","setGuideHomePage","fetchGuideHomePage","GuideDetail","guide_name","resGuides","guides","guideDetail","IsHomePage","GuideContainer","MemberHome","memberHomePage","setMemberHomePage","userFullName","setUserFullName","MemberReviewDetail","MemberReviews","ResortAutocomplete","onResortSelect","MemberSubmitReview","resortUniqueNameFromParam","setResortUniqueNameFromParam","setThisResort","setResortUniqueName","SnowConditionOnVisit","resort_unique","passedResort","inputData","ResortRanking","UserType","reviewSubmissionResult","reviewSubmission","MemberPhotoDetail","confirm","photoDeleteResult","photoDelete","handleDeletePhoto","MemberPhotos","Uploader","imageTypeRegex","MemberUploadPhoto","imageFiles","setImageFiles","images","setImages","uploadStarted","setUploadStarted","setValidSelectPhoto","fileReaders","file","fileReader","FileReader","onload","result","readAsDataURL","readyState","abort","formData","FormData","append","headers","photoUploadResult","accept","multiple","required","files","validImageFiles","hasErrorWithSelectedFiles","match","fileSizeKiloBytes","Photos","image","idx","MemberContainer","fetchSkiAreas","App","StrictMode","exact","element","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","render"],"mappings":"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","file":"static/js/main.ba5659d0.chunk.js","sourcesContent":["export function RenderBreak(text) {\r\n    let alteredText = ''\r\n    String(text).split('\\r\\n\\r\\n').forEach(function (item) {\r\n        alteredText = alteredText + '<p>' + item + '</p>'\r\n    })\r\n\r\n    return alteredText;\r\n}\r\n\r\n// Get Precipitation Condition Icon Name\r\nexport function GetPCIconImageName(iconId) {\r\n    let iconImageName = ''\r\n\r\n    switch (iconId) {\r\n        case 1:\r\n            iconImageName = 'LightSnow.svg'\r\n            break;\r\n        case 2:\r\n            iconImageName = 'ModerateSnow.svg'\r\n            break;\r\n        case 3:\r\n            iconImageName = 'HeavySnow.svg'\r\n            break;\r\n        case 4:\r\n            iconImageName = 'Sleet.svg'\r\n            break;\r\n        case 5:\r\n            iconImageName = 'LightRain.svg'\r\n            break;\r\n        case 6:\r\n            iconImageName = 'ModerateRain.svg'\r\n            break;\r\n        case 7:\r\n            iconImageName = 'HeavyRain.svg'\r\n            break;\r\n        case 8:\r\n            iconImageName = 'NoPrecipitation.svg'\r\n            break;\r\n        default:\r\n        // code block\r\n    }\r\n\r\n    return iconImageName;\r\n}\r\n\r\n// Get Wind Condition Icon Name\r\nexport function GetWindCIconImageName(iconId) {\r\n    let iconImageName = ''\r\n\r\n    switch (iconId) {\r\n        case 1:\r\n            iconImageName = 'NoWind.svg'\r\n            break;\r\n        case 2:\r\n            iconImageName = 'LightWind.svg'\r\n            break;\r\n        case 3:\r\n            iconImageName = 'ModerateWind.svg'\r\n            break;\r\n        case 4:\r\n            iconImageName = 'StrongWind.svg'\r\n            break;\r\n        default:\r\n        // code block\r\n    }\r\n\r\n    return iconImageName;\r\n}\r\n\r\n// Get Weather Condition Icon Name\r\nexport function GetWthConditionIconImageName(iconId) {\r\n    let iconImageName = ''\r\n\r\n    switch (iconId) {\r\n        case 1:\r\n            iconImageName = 'Bluebird.svg'\r\n            break;\r\n        case 2:\r\n            iconImageName = 'PartlyCloudy.svg'\r\n            break;\r\n        case 3:\r\n            iconImageName = 'MostlyCloudy.svg'\r\n            break;\r\n        case 4:\r\n            iconImageName = 'CloudCover.svg'\r\n            break;\r\n        case 5:\r\n            iconImageName = 'Foggy.svg'\r\n            break;\r\n        case 6:\r\n            iconImageName = 'Thunderstorm.svg'\r\n            break;\r\n        case 7:\r\n            iconImageName = 'Hazy.svg'\r\n            break;\r\n        case 8:\r\n            iconImageName = 'Rain.svg'\r\n            break;\r\n        case 9:\r\n            iconImageName = 'WeatherSleet.svg'\r\n            break;\r\n        case 10:\r\n            iconImageName = 'Snow.svg'\r\n            break;\r\n        default:\r\n        // code block\r\n    }\r\n\r\n    return iconImageName;\r\n}\r\n\r\n// Get Visibility Condition Icon Name\r\nexport function GetVConditionIconImageName(iconId) {\r\n    let iconImageName = ''\r\n\r\n    switch (iconId) {\r\n        case 1:\r\n            iconImageName = 'Excellent.svg'\r\n            break;\r\n        case 2:\r\n            iconImageName = 'VeryGood.svg'\r\n            break;\r\n        case 3:\r\n            iconImageName = 'FairDecent.svg'\r\n            break;\r\n        case 4:\r\n            iconImageName = 'VariedLimited.svg'\r\n            break;\r\n        case 5:\r\n            iconImageName = 'Poor.svg'\r\n            break;\r\n        case 6:\r\n            iconImageName = 'VeryPoor.svg'\r\n            break;\r\n        default:\r\n        // code block\r\n    }\r\n\r\n    return iconImageName;\r\n}\r\n\r\nexport function GetCurrentSeasonName() {\r\n    let seasonName = ''\r\n\r\n    const thisDate = new Date();\r\n    let thisMonth = thisDate.getMonth();\r\n    let thisYear = thisDate.getFullYear();\r\n\r\n    if (thisMonth < 10) {\r\n        seasonName = (thisYear - 1) + '-' + thisYear\r\n    }\r\n    else {\r\n        seasonName = thisYear + '-' + (thisYear + 1)\r\n    }\r\n\r\n    return seasonName;\r\n}\r\n\r\nexport function GetPreviousSeasonName() {\r\n    let seasonName = ''\r\n\r\n    const thisDate = new Date();\r\n    let thisMonth = thisDate.getMonth();\r\n    let thisYear = thisDate.getFullYear();\r\n\r\n    if (thisMonth < 10) {\r\n        seasonName = (thisYear - 2) + '-' + (thisYear - 1)\r\n    }\r\n    else {\r\n        seasonName = (thisYear - 1) + '-' + thisYear\r\n    }\r\n\r\n    return seasonName;\r\n}\r\n\r\nexport function GetTotalMonthDays(monthName) {\r\n    let todayDays = 0\r\n\r\n    switch (monthName) {\r\n        case 'November':\r\n        case 'April':\r\n            todayDays = 30\r\n            break;\r\n        case 'December':\r\n        case 'January':\r\n        case 'March':\r\n            todayDays = 31\r\n            break;\r\n        case 'February':\r\n            todayDays = 29\r\n            break;\r\n        default:\r\n    }\r\n\r\n    return todayDays;\r\n}","/* eslint no-eval: 0 */\nimport PropTypes from 'prop-types';\nimport { Link } from 'react-router-dom'\nimport { RenderBreak } from '../../../../helpers/Helper'\n\nconst ListingListTable = ({ tableData, headingColumns, dataMapping, breakOn = 'medium' }) => {\n  let tableClass = 'table-container__table';\n\n  if (breakOn === 'small') {\n    tableClass += ' table-container__table--break-sm';\n  } else if (breakOn === 'medium') {\n    tableClass += ' table-container__table--break-md';\n  } else if (breakOn === 'large') {\n    tableClass += ' table-container__table--break-lg';\n  }\n\n  const data = tableData.map((row, index) => {\n    let rowData = [];\n    let i = 0;\n\n    for (const key in row) {\n\n      if (dataMapping[i] === undefined) {\n        continue;\n      }\n\n      var objName = 'row.' + dataMapping[i]\n\n      rowData.push({\n        key: headingColumns[i],\n        val: eval(objName),\n        UniqueName: row.UniqueName,\n        SectionUniqueName: row.SectionUniqueName,\n        IntroductionText: row.IntroductionText,\n        ImageName: row.ImageName\n      });\n      i++;\n    }\n\n    return <tr key={index}>\n      {rowData.map((data, index) => {\n        if (index === 0) {\n          return <td key={index}>\n            <Link to={`${window.$baseListingUrl}/${data.SectionUniqueName}/${data.UniqueName}`}><img src={`https://www.snowjapan.com/UploadedFiles/ListingImages/${data.ImageName}`} alt={`${data.Name}`} /></Link>\n          </td>\n        } else if (index === 1) {\n          return <td key={index} className='sj-first-column' data-heading={data.key}>\n            <Link to={`${window.$baseListingUrl}/${data.SectionUniqueName}/${data.UniqueName}`}><h5>{data.val}</h5></Link>\n            {(data.IntroductionText !== null && data.IntroductionText !== undefined && data.IntroductionText !== '') &&\n              <div dangerouslySetInnerHTML={{ __html: RenderBreak(data.IntroductionText) }} />\n            }\n          </td>\n        }\n        else {\n          return <td key={index} data-heading={data.key}>\n            {data.val}\n          </td>\n        }\n      }\n      )}\n    </tr>\n  });\n\n  return (\n    <div className=\"table-container\">\n      <table className={`sj-list-table sj-accommodation-table ${tableClass}`}>\n        <thead>\n          <tr>\n            {headingColumns.map((col, index) => {\n              return <th key={index}>{col}</th>\n            })}\n          </tr>\n        </thead>\n        <tbody>\n          {data}\n        </tbody>\n      </table>\n    </div>\n  );\n}\n\nListingListTable.propTypes = {\n  tableData: PropTypes.arrayOf(PropTypes.object).isRequired,\n  headingColumns: PropTypes.arrayOf(PropTypes.string).isRequired,\n  title: PropTypes.string.isRequired,\n  breakOn: PropTypes.oneOf(['small', 'medium', 'large'])\n}\n\nexport default ListingListTable;","/* eslint no-eval: 0 */\nimport PropTypes from 'prop-types';\nimport { Link } from 'react-router-dom'\nimport { RenderBreak } from '../../../../helpers/Helper'\n\nconst AccommodationListTable = ({ tableData, headingColumns, dataMapping, title, breakOn = 'medium' }) => {\n  let tableClass = 'table-container__table';\n\n  if (breakOn === 'small') {\n    tableClass += ' table-container__table--break-sm';\n  } else if (breakOn === 'medium') {\n    tableClass += ' table-container__table--break-md';\n  } else if (breakOn === 'large') {\n    tableClass += ' table-container__table--break-lg';\n  }\n\n  const data = tableData.map((row, index) => {\n    let rowData = [];\n    let i = 0;\n\n    for (const key in row) {\n\n      if (dataMapping[i] === undefined) {\n        continue;\n      }\n\n      var objName = 'row.' + dataMapping[i]\n\n      rowData.push({\n        key: headingColumns[i],\n        val: eval(objName),\n        UniqueName: row.AccommodationUniqueName,\n        PrefectureUniqueName: row.AccommodationPrefectureUniqueName,\n        TownUniqueName: row.AccommodationTownUniqueName,\n        TownTypeStr: row.AccommodationTownTypeStr,\n        AreaUniqueName: row.AccommodationAreaUniqueName,\n        TopIntroText: row.TopIntroText,\n        ListingImageName: row.ListingImageName\n      });\n      i++;\n    }\n\n    return <tr key={index}>\n      {rowData.map((data, index) => {\n        if (index === 0) {\n          return <td key={index}><Link to={`${window.$baseAccommodationUrl}/${data.PrefectureUniqueName}/${data.TownUniqueName}/${data.UniqueName}`}><img src={`https://www.snowjapan.com/UploadedFiles/ListingImages/${data.ListingImageName}`} alt={`${data.Name}`} /></Link></td>\n        } else if (index === 1) {\n          return <td key={index} data-heading={data.key}>\n            <Link to={`${window.$baseAccommodationUrl}/${data.PrefectureUniqueName}/${data.TownUniqueName}/${data.UniqueName}`}><h5>{data.val}</h5></Link>\n            {(data.TopIntroText !== null && data.TopIntroText !== undefined && data.TopIntroText !== '') &&\n              <div dangerouslySetInnerHTML={{ __html: RenderBreak(data.TopIntroText) }} />\n            }\n          </td>\n        }\n        else {\n          return <td key={index} data-heading={data.key}>\n            {data.val}\n          </td>\n        }\n      }\n      )}\n    </tr>\n  });\n\n  return (\n    <div className=\"table-container\">\n      <div className=\"left-aligned\">\n        <h4>{title}</h4>\n      </div>\n      <table className={`sj-list-table sj-accommodation-table ${tableClass}`}>\n        <thead>\n          <tr>\n            {headingColumns.map((col, index) => {\n              return <th key={index}>{col}</th>\n            })}\n          </tr>\n        </thead>\n        <tbody>\n          {data}\n        </tbody>\n      </table>\n    </div>\n  );\n}\n\nAccommodationListTable.propTypes = {\n  tableData: PropTypes.arrayOf(PropTypes.object).isRequired,\n  headingColumns: PropTypes.arrayOf(PropTypes.string).isRequired,\n  title: PropTypes.string.isRequired,\n  breakOn: PropTypes.oneOf(['small', 'medium', 'large'])\n}\n\nexport default AccommodationListTable;","import { createContext, useContext, useEffect, useState } from 'react';\r\nimport axios from 'axios'\r\n\r\nconst AuthContext = createContext({\r\n    auth: null,\r\n    setAuth: () => { },\r\n    user: null,\r\n    setUser: () => { }\r\n});\r\n\r\n\r\nexport function useAuth() {\r\n    return useContext(AuthContext);\r\n}\r\n\r\n//const AuthProvider = (children) => {\r\nexport function AuthProvider({ children }) {\r\n    const [auth, setAuth] = useState(null);\r\n    const [user, setUser] = useState(null);\r\n\r\n    const checkLogin = async () => {\r\n        if (auth === null || !auth) {\r\n            const thisSessionUser = JSON.parse(sessionStorage.getItem('sessionUser'))\r\n            if (thisSessionUser !== null) {\r\n                try {\r\n                    axios({\r\n                        method: 'POST',\r\n                        url: `${window.$baseSJAPIUrl}/Account/CheckLoginStatus`,\r\n                        data: {\r\n                            FullName: thisSessionUser.FullName,\r\n                            Email: thisSessionUser.Email,\r\n                            Token: thisSessionUser.Token\r\n                        }\r\n                    }).then(loginStatusResult => {\r\n                        let loggedInUser = loginStatusResult.data\r\n                        if (loggedInUser.UserName !== null && loggedInUser.UserName !== '') {\r\n                            sessionStorage.setItem('sessionUser', JSON.stringify(loggedInUser))\r\n                            setAuth(true)\r\n                            setUser(loggedInUser)\r\n                        }\r\n                    })\r\n                } catch (err) {\r\n                    console.log(err)\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    useEffect(() => {\r\n        checkLogin()\r\n    }, [auth, user]);\r\n\r\n    return (\r\n        <AuthContext.Provider value={{ auth, setAuth, user, setUser }}>\r\n            {children}\r\n        </AuthContext.Provider>\r\n    );\r\n};\r\n\r\n//export default AuthProvider;","// ScrollToTop.jsx\r\nimport { useEffect } from \"react\";\r\nimport { useLocation } from \"react-router\";\r\n\r\nconst ScrollToTop = (props) => {\r\n    const location = useLocation();\r\n    useEffect(() => {\r\n        window.scrollTo(0, 0);\r\n    }, [location]);\r\n\r\n    return <>{props.children}</>\r\n};\r\n\r\nexport default ScrollToTop;","import { useState, Fragment } from 'react'\r\nimport { useNavigate } from 'react-router-dom'\r\n\r\nconst Autocomplete = ({ skiAreaList }) => {\r\n\r\n    const [activeSuggestion, setActiveSuggestion] = useState(0)\r\n    const [filteredSkiAreas, setFilteredSkiAreas] = useState([])\r\n    const [showSuggestions, setShowSuggestions] = useState(false)\r\n    const [userInput, setUserInput] = useState('')\r\n\r\n    //const history = useHistory()\r\n    const navigate = useNavigate();\r\n\r\n    const onChange = (e) => {\r\n        let selectedSkiAreaNameParts = e.currentTarget.value.split('(')\r\n\r\n        const userInput = selectedSkiAreaNameParts[0].trim();\r\n\r\n        const thisFilteredSkiAreas = skiAreaList.filter(\r\n            //skiArea => (skiArea.Name.toLowerCase().indexOf(userInput.toLowerCase()) === 0 || skiArea.Name.toLowerCase().indexOf(userInput.toLowerCase()) === 0 || skiArea.NameJapanese.indexOf(userInput) === 0 || skiArea.TownName.toLowerCase().indexOf(userInput.toLowerCase()) === 0 || skiArea.TownNameJapanese.indexOf(userInput) === 0 || (skiArea.AreaName !== null && skiArea.AreaName !== undefined && skiArea.AreaName.toLowerCase().indexOf(userInput.toLowerCase()) === 0) || (skiArea.AreaNameJapanese !== null && skiArea.AreaNameJapanese !== undefined && skiArea.AreaNameJapanese.indexOf(userInput) === 0))\r\n            skiArea => (skiArea.Name.toLowerCase().indexOf(userInput.toLowerCase()) >= 0 || skiArea.NameJapanese.indexOf(userInput) >= 0 || skiArea.TownName.toLowerCase().indexOf(userInput.toLowerCase()) >= 0 || skiArea.TownNameJapanese.indexOf(userInput) >= 0 || (skiArea.AreaName !== null && skiArea.AreaName !== undefined && skiArea.AreaName.toLowerCase().indexOf(userInput.toLowerCase()) >= 0) || (skiArea.AreaNameJapanese !== null && skiArea.AreaNameJapanese !== undefined && skiArea.AreaNameJapanese.indexOf(userInput) >= 0))\r\n        );\r\n\r\n        setActiveSuggestion(0)\r\n        setFilteredSkiAreas(thisFilteredSkiAreas)\r\n        setShowSuggestions(true)\r\n        setUserInput(e.currentTarget.value)\r\n    };\r\n\r\n    const onClick = e => {\r\n        setActiveSuggestion(0)\r\n        setFilteredSkiAreas([])\r\n        setShowSuggestions(false)\r\n        setUserInput(e.currentTarget.innerText)\r\n\r\n        let selectedSkiAreaNameParts = e.currentTarget.innerText.split('(')\r\n\r\n        const selectedSkiAreaList = skiAreaList.filter(\r\n            skiArea => (skiArea.Name === selectedSkiAreaNameParts[0].trim())\r\n        );\r\n\r\n        if (selectedSkiAreaList.length > 0) {\r\n\r\n            let selectedSkiArea = selectedSkiAreaList[0];\r\n\r\n            let path = `${window.$baseSkiAreaUrl}/${selectedSkiArea.PrefectureUniqueName}/${selectedSkiArea.TownUniqueName}/${selectedSkiArea.UniqueName}`;\r\n            //history.push(path);\r\n            navigate(path);\r\n        }\r\n    };\r\n\r\n    const onKeyDown = (e) => {\r\n        if (e.keyCode === 13) {\r\n            setActiveSuggestion(0)\r\n            setShowSuggestions(false)\r\n            let selectedSkiArea = filteredSkiAreas[activeSuggestion]\r\n            if (selectedSkiArea !== null && selectedSkiArea !== undefined) {\r\n                setUserInput(selectedSkiArea.Name)\r\n                let path = `${window.$baseSkiAreaUrl}/${selectedSkiArea.PrefectureUniqueName}/${selectedSkiArea.TownUniqueName}/${selectedSkiArea.UniqueName}`;\r\n                //history.push(path);\r\n                navigate(path);\r\n            }\r\n        }\r\n        else if (e.keyCode === 38) {\r\n            if (activeSuggestion === 0) {\r\n                return;\r\n            }\r\n\r\n            setActiveSuggestion(activeSuggestion - 1)\r\n        }\r\n        else if (e.keyCode === 40) {\r\n            if (activeSuggestion - 1 === filteredSkiAreas.length) {\r\n                return;\r\n            }\r\n            setActiveSuggestion(activeSuggestion + 1)\r\n        }\r\n    };\r\n\r\n    let suggestionsListComponent;\r\n\r\n    if (showSuggestions && userInput) {\r\n        if (filteredSkiAreas.length) {\r\n            suggestionsListComponent = (\r\n                <ul className=\"suggestions\">\r\n                    {filteredSkiAreas.map((skiArea, index) => {\r\n                        let className;\r\n\r\n                        if (index === activeSuggestion) {\r\n                            className = \"suggestion-active\";\r\n                        }\r\n\r\n                        return (\r\n                            <li className={className} key={index} onClick={onClick}>\r\n                                {skiArea.Name} ({skiArea.PrefectureName})\r\n                            </li>\r\n                        );\r\n                    })}\r\n                </ul>\r\n            );\r\n        } else {\r\n            suggestionsListComponent = (\r\n                <div className=\"no-suggestions\">\r\n                    <em>No ski area found</em>\r\n                </div>\r\n            );\r\n        }\r\n    }\r\n\r\n    return (\r\n        <Fragment>\r\n            <input className=\"search-input-box\" type=\"text\" onChange={onChange} onKeyDown={onKeyDown} value={userInput} />\r\n            {suggestionsListComponent}\r\n        </Fragment>\r\n    );\r\n};\r\n\r\nexport default Autocomplete;","import '../../Loader.scss'\r\n\r\nconst Loader = () => {\r\n    return (\r\n        <div className=\"container\">\r\n            <div className=\"loader\">\r\n                <div className=\"loader--dot\"></div>\r\n                <div className=\"loader--dot\"></div>\r\n                <div className=\"loader--dot\"></div>\r\n                <div className=\"loader--dot\"></div>\r\n                <div className=\"loader--dot\"></div>\r\n                <div className=\"loader--dot\"></div>\r\n                <div className=\"loader--text\"></div>\r\n            </div>\r\n        </div>\r\n    );\r\n}\r\n\r\nexport default Loader;","import { Carousel, Image } from 'react-bootstrap'\r\nimport { Link } from 'react-router-dom'\r\nimport axios from 'axios'\r\nimport { useState, useEffect } from 'react'\r\nimport Autocomplete from \"./Autocomplete\";\r\nimport Loader from \"./Loader\"\r\n\r\nconst Home = () => {\r\n    const [skiAreaList, setSkiAreaList] = useState([])\r\n    const [slidingImageList, setSlidingImageList] = useState([]);\r\n    const [dailyReportList, setDailyReportList] = useState([]);\r\n    const [homeLinkList, setHomeLinkList] = useState([]);\r\n    const [weatherImportResult, setWeatherImportResult] = useState('');\r\n    const [mainHomePageSeason, setMainHomePageSeason] = useState('');\r\n\r\n    const fetchSkiAreaSlidingImagesDailyReportsAndHomeLinks = async () => {\r\n        axios({\r\n            method: 'POST',\r\n            url: `${window.$baseAPIUrl}/home/sliding-images`\r\n        }).then(resSlidingImage => {\r\n            setSlidingImageList(resSlidingImage.data)\r\n            return axios({\r\n                method: 'POST',\r\n                url: `${window.$baseAPIUrl}/dailyreport/latest/all`\r\n            })\r\n        }).then(resDailyReportLatest => {\r\n            setDailyReportList(resDailyReportLatest.data)\r\n            return axios({\r\n                method: 'POST',\r\n                url: `${window.$baseAPIUrl}/home/home-inks`\r\n            })\r\n        }).then(resSlidingLinks => {\r\n            setHomeLinkList(resSlidingLinks.data)\r\n            return axios({\r\n                method: 'POST',\r\n                url: `${window.$baseAPIUrl}/skiarea/home/list`\r\n            })\r\n        }).then(dataResortList => {\r\n            setSkiAreaList(dataResortList.data)\r\n            return axios({\r\n                method: 'POST',\r\n                url: `${window.$baseAPIUrl}/generalmessage/HomePageSeason`\r\n            })\r\n        }).then(resGeneralMessages => {\r\n            console.log(resGeneralMessages)\r\n            setMainHomePageSeason(resGeneralMessages.data.Title)\r\n            return axios({\r\n                method: 'POST',\r\n                url: `${window.$baseSJAPIUrl}/weatherdata`\r\n            })\r\n        }).then(resWeatherData => {\r\n            setWeatherImportResult(resWeatherData.data)\r\n        })\r\n    };\r\n\r\n    useEffect(() => {\r\n        fetchSkiAreaSlidingImagesDailyReportsAndHomeLinks()\r\n    }, []);\r\n\r\n    if (slidingImageList.length <= 0) {\r\n        return (\r\n            <Loader />\r\n        )\r\n    } else {\r\n        return (\r\n            <div className=\"sj-row-no-margin-padding\">\r\n                <div className=\"row sj-row-no-margin-padding sj-no-bg\">\r\n                    <div className=\"col-lg-6 sj-row-no-margin-padding\">\r\n                        <div>\r\n                            <div className='sj-box sj-box-dark-blue sj-round-full Montserrat-font'>\r\n                                Let SnowJapan introduce you to the wonderful world of skiing and snowboarding in Japan. Before starting, <Link to='/about-snowjapan'>learn more about SnowJapan here</Link>.\r\n                            </div>\r\n                            <div className='sj-row'>\r\n                                <Link to='/about-snowjapan-japanese'>日本語による紹介はこちらから</Link>\r\n                            </div>\r\n                        </div>\r\n                        <div>\r\n                            {homeLinkList.map((homeLink, index) => (\r\n                                <div key={index}>\r\n                                    <div className=\"row sj-row sj-box sj-box-gray sj-round-half sj-row-small-margin-padding\">\r\n                                        <div className=\"col-6\">\r\n                                            <h5>{homeLink.Title}</h5>\r\n                                        </div>\r\n                                        <div className=\"col-6 right-aligned\">\r\n                                            <h5>{homeLink.LinkTimestamp}</h5>\r\n                                        </div>\r\n                                    </div>\r\n                                    <div className='sj-padding-left-15'>\r\n                                        {homeLink.LinkType === 'Internal' &&\r\n                                            <Link to={{ pathname: `${homeLink.URLLink}` }} rel='noreferrer'>{homeLink.HeadlineText}</Link>\r\n                                        }\r\n                                        {homeLink.LinkType === 'External' &&\r\n                                            <a href={`${homeLink.URLLink}`} target='_blank' rel='noreferrer'>{homeLink.HeadlineText}</a>\r\n                                        }\r\n                                    </div>\r\n                                </div>\r\n                            ))}\r\n                        </div>\r\n                    </div>\r\n                    <div className=\"col-lg-6 sj-row-no-margin-padding sj-padding-left-10\">\r\n                        <Carousel controls={false} indicators={false} fade={true} pause='hover' interval='3000'>\r\n                            {slidingImageList.map(slidingImage => (\r\n                                <Carousel.Item key={slidingImage.Id}>\r\n                                    <Image src={`${window.$baseAppUrl}/UploadedFiles/SlidingImages/${slidingImage.Name}`} fluid='true' alt={`sliding ${slidingImage.Name}`} className=\"sj-round-full d-block w-100\" />\r\n                                </Carousel.Item>\r\n                            ))}\r\n                        </Carousel>\r\n                    </div>\r\n                </div>\r\n                <div className=\"sj-row\">\r\n                    <div className=\"sj-box sj-box-dark-gray sj-round-full center-aligned mt-2 mb-3\">\r\n                        <Link to={window.$baseSkiAreaUrl}><h4>Discover Japan's ski areas</h4></Link>\r\n                    </div>\r\n                    <div className=\"row sj-no-bg sj-row-no-margin-padding\">\r\n                        <div className=\"col-md-3 m-0 mt-2 p-0 sj-list-icon-holder\">\r\n                            <Link to={window.$baseSkiAreaUrl}>\r\n                                <Image src='https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-SkiArea.svg' fluid='true' alt='Ski Area' />\r\n                            </Link>\r\n                        </div>\r\n                        <div className=\"col-md-9 sj-list-text-holder\">\r\n                            <div>\r\n                                There are over 450 operating ski areas in Japan. They can be found across the country's mountainous regions, from Hokkaido in the north to Kyushu in the south. About half are located in three prefectures - Hokkaido, Nagano and Niigata. Japan's ski areas range from huge interconnected resorts with modern facilities to very small local ski hills. SnowJapan introduces them in detail and offers various ways to discover them.\r\n                            </div>\r\n                            <div className='mt-3'>\r\n                                <Link to={window.$baseSkiAreaUrl}><h5>Ski Areas index</h5></Link>\r\n                            </div>\r\n                            <div className='mt-3'>\r\n                                <Link to={`${window.$baseSkiAreaUrl}/discover`}><h5>Discovery search</h5></Link>\r\n                            </div>\r\n                            <div className='mt-3'>\r\n                                <Link to={`${window.$baseGuideUrl}/the-japan-skiing-experience/the-ski-season-in-japan`}><h5>The Japanese ski season</h5></Link>\r\n                            </div>\r\n                            <div className='mt-3'>\r\n                                <Link to={`${window.$baseRouteFinderUrl}`}><h5>Route Finder</h5></Link>\r\n                            </div>\r\n                            <div className=\"mt-3\">\r\n                                <h5>Quick search (ski area, town, area)</h5>\r\n                                <Autocomplete skiAreaList={skiAreaList} />\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                <div className=\"sj-row\">\r\n                    <div className=\"sj-box sj-box-dark-gray sj-round-full center-aligned mt-5 mb-3\">\r\n                        <Link to={window.$baseDailyReportUrl}><h4>Exclusive daily weather and snow reports</h4></Link>\r\n                    </div>\r\n                    <div className=\"row sj-no-bg sj-row-no-margin-padding\">\r\n                        <div className=\"col-md-3 m-0 mt-2 p-0 sj-list-icon-holder\">\r\n                            <Link to={window.$baseDailyReportUrl}>\r\n                                <Image src='https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-Daily-Reports.svg' fluid='true' alt='Daily Report' />\r\n                            </Link>\r\n                            <br />\r\n                            <div className=\"sj-box sj-box-red sj-round-full mt-2 center-aligned\">\r\n                                <h5 className='p-1'>{mainHomePageSeason}</h5>\r\n                            </div>\r\n                        </div>\r\n                        <div className=\"col-md-9 sj-list-text-holder\">\r\n                            <div>\r\n                                SnowJapan publishes exclusive daily snow and weather reports from popular snow regions of Japan in the winter season. Our reports are 100% independent and hype-free. Each section includes detailed data, snowfall analysis and archives.\r\n                            </div>\r\n                            <div className='mt-4'>\r\n                                <table className='table-container__table sj-table-home'>\r\n                                    <tbody>\r\n                                        {dailyReportList.map(dailyReport => (\r\n                                            <tr key={dailyReport.Id}>\r\n                                                <td>\r\n                                                    <h6><Link to={`${window.$baseDailyReportUrl}/${dailyReport.UniqueName}`}>{dailyReport.Name}</Link></h6>\r\n                                                </td>\r\n                                                <td>\r\n                                                    {dailyReport.NowReportWeekDay} {dailyReport.NowReportDayTh} {dailyReport.NowReportMonthFull} {dailyReport.NowReportYear}, {dailyReport.NowReportHourMinute}\r\n                                                </td>\r\n                                            </tr>\r\n                                        ))}\r\n                                    </tbody>\r\n                                </table>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                <div className=\"sj-row\">\r\n                    <div className=\"sj-row\">\r\n                        <div className=\"sj-box sj-box-dark-gray sj-round-full center-aligned mt-5\">\r\n                            <Link to={window.$baseGuideUrl}><h4>Guides</h4></Link>\r\n                        </div>\r\n                        <div className=\"row sj-row-no-margin-padding sj-no-bg\">\r\n                            <div className=\"col-lg-6 sj-row-no-margin-padding home-guide-section sj-padding-right-15\">\r\n                                <div className=\"row sj-no-bg sj-row-no-margin-padding\">\r\n                                    <div className=\"col-md-4 sj-list-icon-holder\">\r\n                                        <Link to='/guides/introduction-to-skiing-in-japan'><Image src='https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-SnowWalls.svg' fluid='true' alt='Introduction to skiing in Japan' /></Link>\r\n                                    </div>\r\n                                    <div className=\"col-md-8 sj-row-no-margin-padding sj-list-text-holder\">\r\n                                        <div className='sj-box sj-box-dark-gray sj-round-half'>\r\n                                            <Link to='/guides/introduction-to-skiing-in-japan'><h5>Introduction to skiing in Japan</h5></Link>\r\n                                        </div>\r\n                                        <div>\r\n                                            This guide looks back at how skiing was introduced to Japan, ski resort development over the years, various boom periods, the introduction of snowboarding and the growth of inbound tourism.\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                            <div className=\"col-lg-6 sj-row-no-margin-padding home-guide-section sj-padding-left-15\">\r\n                                <div className=\"row sj-no-bg sj-row-no-margin-padding\">\r\n                                    <div className=\"col-md-4 sj-list-icon-holder\">\r\n                                        <Link to='/guides/the-japan-skiing-experience'><Image src='https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-GuidedTour.svg' fluid='true' alt='The Japan ski experience' /></Link>\r\n                                    </div>\r\n                                    <div className=\"col-md-8 sj-row-no-margin-padding sj-list-text-holder\">\r\n                                        <div className='sj-box sj-box-dark-gray sj-round-half'>\r\n                                            <Link to='/guides/the-japan-skiing-experience'><h5>The Japan skiing experience</h5></Link>\r\n                                        </div>\r\n                                        <div>\r\n                                            Some parts of Japan's ski experience are somewhat different from the experience in other countries. This guide introduces aspects of what to expect when skiing and snowboarding in Japan.\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                        <div className=\"row sj-row-no-margin-padding sj-no-bg\">\r\n                            <div className=\"col-lg-6 sj-row-no-margin-padding home-guide-section sj-padding-right-15\">\r\n                                <div className=\"row sj-no-bg sj-row-no-margin-padding\">\r\n                                    <div className=\"col-md-4 sj-list-icon-holder\">\r\n                                        <Link to='/guides/travel-guides'><Image src='https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-Inbound.svg' fluid='true' alt='Travel guides' /></Link>\r\n                                    </div>\r\n                                    <div className=\"col-md-8 sj-row-no-margin-padding sj-list-text-holder\">\r\n                                        <div className='sj-box sj-box-dark-gray sj-round-half'>\r\n                                            <Link to='/guides/travel-guides'><h5>Travel guides</h5></Link>\r\n                                        </div>\r\n                                        <div>\r\n                                            An introduction to getting around Japan by public transport and car, as well as various region-specific travel guide information.\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                            <div className=\"col-lg-6 sj-row-no-margin-padding home-guide-section sj-padding-left-15\">\r\n                                <div className=\"row sj-no-bg sj-row-no-margin-padding\">\r\n                                    <div className=\"col-md-4 sj-list-icon-holder\">\r\n                                        <Link to='/guides/the-prefectures-of-japan'><Image src='https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-SkiLocations.svg' fluid='true' alt='Introducing the prefectures' /></Link>\r\n                                    </div>\r\n                                    <div className=\"col-md-8 sj-row-no-margin-padding sj-list-text-holder\">\r\n                                        <div className='sj-box sj-box-dark-gray sj-round-half'>\r\n                                            <Link to='/guides/the-prefectures-of-japan'><h5>Introducing the prefectures</h5></Link>\r\n                                        </div>\r\n                                        <div>\r\n                                            There are ski areas in 31 of the 47 prefectures of Japan. This section looks at each prefecture, including introductions to the popular skiing regions, basic statistics and data.\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                        <div className=\"row sj-row-no-margin-padding sj-no-bg\">\r\n                            <div className=\"col-lg-6 sj-row-no-margin-padding home-guide-section sj-padding-right-15\">\r\n                                <div className=\"row sj-no-bg sj-row-no-margin-padding\">\r\n                                    <div className=\"col-md-4 sj-list-icon-holder\">\r\n                                        <Link to='/guides/graphs'><Image src='https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-Graphs-Data.svg' fluid='true' alt='Japanese ski areas by graphs' /></Link>\r\n                                    </div>\r\n                                    <div className=\"col-md-8 sj-row-no-margin-padding sj-list-text-holder\">\r\n                                        <div className='sj-box sj-box-dark-gray sj-round-half'>\r\n                                            <Link to='/guides/graphs'><h5>Japanese ski areas by graphs</h5></Link>\r\n                                        </div>\r\n                                        <div>\r\n                                            In this section, we offer a visual way to discover the ski areas of Japan through interactive graphs covering the whole of Japan and individual prefectures.\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                            <div className=\"col-lg-6 sj-row-no-margin-padding home-guide-section sj-padding-left-15\">\r\n                                <div className=\"row sj-no-bg sj-row-no-margin-padding\">\r\n                                    <div className=\"col-md-4 sj-list-icon-holder\">\r\n                                        <Link to='/guides/old-ski-areas-from-japans-past'><Image src='https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-SkiArea-History.svg' fluid='true' alt='Ski areas from Japan past' /></Link>\r\n                                    </div>\r\n                                    <div className=\"col-md-8 sj-row-no-margin-padding sj-list-text-holder\">\r\n                                        <div className='sj-box sj-box-dark-gray sj-round-half'>\r\n                                            <Link to='/guides/old-ski-areas-from-japans-past'><h5>Ski areas from Japan's past</h5></Link>\r\n                                        </div>\r\n                                        <div>\r\n                                            Over the decades, there have been over 800 individual ski areas in Japan. Many old ski areas are no longer with us, but we believe they should be remembered.\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                <div className=\"sj-row mb-5\">\r\n                    <div className=\"sj-row mb-5\">\r\n                        <div className=\"sj-box sj-box-dark-gray sj-round-full center-aligned mt-5 mb-4\">\r\n                            <Link to={window.$baseListingUrl}><h4>Listings</h4></Link>\r\n                        </div>\r\n                        <div className=\"row sj-row-no-margin-padding sj-no-bg\">\r\n                            <div className=\"col-lg-3 col-md-6 sj-row-no-margin-padding\">\r\n                                <div className='home-listing-holder-left'>\r\n                                    <Link to={window.$baseAccommodationUrl}><Image src='https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-Accommodations.svg' fluid='true' alt='Accommodation' /></Link>\r\n                                    <div className='mt-1 margin-bottom-5'>\r\n                                        <Link to={window.$baseAccommodationUrl} className='btn btn-primary sj-large-button-blue sj-full-width pt-3'><h5>Accommodation</h5></Link>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                            <div className=\"col-lg-3 col-md-6 sj-row-no-margin-padding\">\r\n                                <div className='home-listing-holder-center1'>\r\n                                    <Link to='/listings/resort-spotlights'><Image src='https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-SkiArea.svg' fluid='true' alt='Ski Areas' /></Link>\r\n                                    <div className='mt-1 margin-bottom-5'>\r\n                                        <Link to='/listings/resort-spotlights' className='btn btn-primary sj-large-button-blue sj-full-width pt-3'><h5>Ski Areas</h5></Link>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                            <div className=\"col-lg-3 col-md-6 sj-row-no-margin-padding\">\r\n                                <div className='home-listing-holder-center2'>\r\n                                    <Link to='/listings/lessons'><Image src='https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-Ski-Lessons.svg' fluid='true' alt='Ski lessons' /></Link>\r\n                                    <div className='mt-1 margin-bottom-5'>\r\n                                        <Link to='/listings/lessons' className='btn btn-primary sj-large-button-blue sj-full-width pt-3'><h5>Ski lessons</h5></Link>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                            <div className=\"col-lg-3 col-md-6 sj-row-no-margin-padding\">\r\n                                <div className='home-listing-holder-right'>\r\n                                    <Link to='/listings/job-listings'><Image src='https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-Jobs-Available.svg' fluid='true' alt='Jobs available' /></Link>\r\n                                    <div className='mt-1 margin-bottom-5'>\r\n                                        <Link to='/listings/job-listings' className='btn btn-primary sj-large-button-blue sj-full-width pt-3'><h5>Jobs available</h5></Link>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                <div className=\"banner-holder\">\r\n                    <div className=\"sj-row mb-0\">\r\n                        <div className=\"row sj-row-no-margin-padding sj-no-bg\">\r\n                            <div className=\"col-lg-3 col-md-6 sj-row-no-margin-padding\">\r\n                                <div className='home-listing-holder-left mt-3'>\r\n                                    <Link to='/listings/resort-spotlights/geto-kogen'><Image src='https://www.snowjapan.com/UploadedFiles/CMSImages/Listings/listing-geto-kogen.jpg' fluid='true' alt='geto-kogen' /></Link>\r\n                                </div>\r\n                            </div>\r\n                            <div className=\"col-lg-3 col-md-6 sj-row-no-margin-padding\">\r\n                                <div className='home-listing-holder-center1 mt-3'>\r\n                                    <a href={`https://en.nozawaski.com/`} target='_blank' rel='noreferrer'><Image src='https://www.snowjapan.com/UploadedFiles/CMSImages/Listings/listing-nozawa-onsen.jpg' fluid='true' alt='listing-nozawa-onsen' /></a>\r\n                                </div>\r\n                            </div>\r\n                            <div className=\"col-lg-3 col-md-6 sj-row-no-margin-padding\">\r\n                                <div className='home-listing-holder-center2 mt-3'>\r\n                                    <a href='https://www.appi-japan.com/' target='_blank' rel='noreferrer'><Image src='https://www.snowjapan.com/UploadedFiles/CMSImages/Listings/listing-appi.jpg' fluid='true' alt='appi-listing' /></a>\r\n                                </div>\r\n                            </div>\r\n                            <div className=\"col-lg-3 col-md-6 sj-row-no-margin-padding\">\r\n                                <div className='home-listing-holder-right mt-3'>\r\n                                    {/*<a href='https://www.snowjapan.com/listings/travel/yuzawa-minamiuonuma-eleven-plus' target='_blank' rel='noreferrer'><Image src='https://www.snowjapan.com/UploadedFiles/CMSImages/Listings/listing-eleven-plus.jpg' alt='listing-naspa' /></a>*/}\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        )\r\n    };\r\n}\r\n\r\nexport default Home;","import { useRef, useState } from 'react'\r\nimport { Helmet } from 'react-helmet'\r\nimport { Link } from 'react-router-dom'\r\nimport axios from 'axios'\r\nimport { useNavigate } from 'react-router-dom'\r\nimport { useAuth } from '../CustomHooks/useAuth'\r\nimport { Form, Button, Row } from 'react-bootstrap'\r\n\r\nconst Login = () => {\r\n\r\n    const { setAuth, setUser } = useAuth()\r\n    const navigate = useNavigate();\r\n    const [errMsg, setErrMsg] = useState('')\r\n    const [formerrors, setFormErrors] = useState({})\r\n\r\n    const [values, setValues] = useState({\r\n        Username: \"\",\r\n        Password: \"\"\r\n    })\r\n\r\n    const handleChange = (event) => {\r\n        setValues((values) => ({\r\n            ...values,\r\n            [event.target.name.slice(3)]: event.target.value,\r\n        }))\r\n    }\r\n\r\n    const validate = () => {\r\n\r\n        let errors = {};\r\n\r\n        if (!values.Username) {\r\n            errors.Username = \"The username field cannot be blank.\"\r\n        }\r\n\r\n        if (!values.Password) {\r\n            errors.Password = \"The password field cannot be blank.\"\r\n        }\r\n\r\n        setFormErrors(errors);\r\n\r\n        if (Object.keys(errors).length === 0) {\r\n            return true\r\n        } else {\r\n            return false\r\n        }\r\n    }\r\n\r\n    const handleSubmit = async (e) => {\r\n        e.preventDefault();\r\n\r\n        if (validate(values)) {\r\n            //console.log(values)\r\n            try {\r\n                axios({\r\n                    method: 'POST',\r\n                    url: `${window.$baseSJAPIUrl}/Account/InternalLogin`,\r\n                    data: {\r\n                        UserName: values.Username,\r\n                        Password: values.Password,\r\n                        RememberMe: false\r\n                    }\r\n                }).then(loginResult => {\r\n\r\n                    let loggedInUserResult = loginResult.data\r\n\r\n                    if (loggedInUserResult !== null) {\r\n                        //console.log(loggedInUserResult)\r\n                        if (loggedInUserResult.ResultType === 'SUCCESS') {\r\n                            setUser(loggedInUserResult)\r\n                            setAuth(true)\r\n                            setValues({\r\n                                Username: \"\",\r\n                                Password: \"\"\r\n                            })\r\n                            sessionStorage.setItem('sessionUser', JSON.stringify(loggedInUserResult))\r\n                            //let path = window.$baseMemberUrl;\r\n                            navigate(window.$baseMemberUrl)\r\n                        } else {\r\n                            setErrMsg(loggedInUserResult.Message)\r\n                        }\r\n                    } else {\r\n                        setErrMsg('An error occured. Please contact SnowJapan administrator')\r\n                    }\r\n                })\r\n            } catch (err) {\r\n                if (!err?.response) {\r\n                    setErrMsg('No Server Response');\r\n                }\r\n                //errRef.current.focus()\r\n            }\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div className='empty-row'>\r\n            <Helmet>\r\n                <title>Login  | Member area | SnowJapan</title>\r\n                <meta name=\"description\" content=\"Login  | Member area | SnowJapan\" />\r\n            </Helmet>\r\n            <div>\r\n                <div className=\"sj-para-image\"><img src=\"https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-Icons-Member.svg\" alt='member-login' /></div>\r\n                <div>\r\n                    <h3>SnowJapan member area</h3>\r\n                    <div className=\"sj-para\">\r\n                        Your reviews and photographs of Japanese ski areas can be submitted and shared with other people using the SnowJapan member area. All content you submit will be publicly displayed within the relevant sections of SnowJapan and your member page. Before using our member area, <Link to={`${window.$baseAppUrl}/about-members-area`}>please read this</Link>.\r\n                    </div>\r\n                </div>\r\n                <div>\r\n                    <div className='empty-row'>\r\n                        {errMsg !== '' &&\r\n                            <div>\r\n                                <h4 className=\"text-danger\">Error!</h4>\r\n                                <div className=\"text-danger\">{errMsg}</div>\r\n                            </div>\r\n                        }\r\n                        <Form onSubmit={handleSubmit}>\r\n                            <Row className=\"mb-3 sj-no-margin\">\r\n                                <Form.Group controlId=\"txtUsername\" className=\"mt-2 mb-4\">\r\n                                    <Form.Label><h5>Username:</h5></Form.Label>\r\n                                    <Form.Control name=\"txtUsername\" type=\"text\" placeholder=\"Username\" value={values.Username} onChange={handleChange} />\r\n                                    {formerrors.Username && (\r\n                                        <div className=\"text-danger\">{formerrors.Username}</div>\r\n                                    )}\r\n                                </Form.Group>\r\n                                <Form.Group controlId=\"txtPassword\" className=\"mb-4\">\r\n                                    <Form.Label><h5>Password:</h5></Form.Label>\r\n                                    <Form.Control name=\"txtPassword\" type=\"password\" placeholder=\"Password\" value={values.Password} onChange={handleChange} />\r\n                                    {formerrors.Password && (\r\n                                        <div className=\"text-danger\">{formerrors.Password}</div>\r\n                                    )}\r\n                                </Form.Group>\r\n                                <div className='center-aligned'>\r\n                                    <Button type=\"submit\" className='sj-large-font-button sj-red-bg sj-row-100'>Login</Button>\r\n                                </div>\r\n                                <div className='center-aligned'>\r\n                                    <Link to={`${window.$baseAppUrl}/forgot-password`} className='btn btn-primary w-100 sj-box-dark-blue mt-2 mb-3'><h6 className='mt-1 mb-1'>Forgot password</h6></Link>\r\n                                </div>\r\n                            </Row>\r\n                        </Form>\r\n                    </div>\r\n                    <div>\r\n                        <div className='sj-row'>\r\n                            <h3>Want to join?</h3>\r\n                            <div className=\"sj-para\">\r\n                                <p>Registration is free and very simple.\r\n                                </p>\r\n                                <p>\r\n                                    What is needed:\r\n                                </p>\r\n                                <p>\r\n                                    - a username (does not need to be your real name)<br />\r\n                                    - a valid email address<br />\r\n                                    - a password<br />\r\n                                </p>\r\n                                <p>\r\n                                    Your email address is not shared with anyone or added to any mailing list, and you will not receive any emails from us. Be assured that it is strictly only used for registration purposes.\r\n                                </p>\r\n                            </div>\r\n                            <div className=\"row sj-row sj-no-bg sj-row-no-margin-padding\">\r\n                                <div className=\"col-md-6 sj-row-no-margin-padding\">\r\n                                    <Link to={`${window.$baseAppUrl}/register`} className='btn btn-primary w-100 sj-box-dark-blue mt-2'><h6 className='mt-1 mb-1'>Register here</h6></Link>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    )\r\n}\r\n\r\nexport default Login;","/* eslint-disable */\r\nimport { useRef, useState } from 'react'\r\nimport { Helmet } from 'react-helmet'\r\nimport { Link } from 'react-router-dom'\r\nimport axios from 'axios'\r\nimport { Form, Button, Row, Collapse } from 'react-bootstrap'\r\nimport { faQuestionCircle } from '@fortawesome/free-solid-svg-icons'\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\n\r\nconst USER_NAME_REGEX = /^[A-z][A-z0-9-_]{3,23}$/\r\nconst EMAIL_REGEX = /^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,3})+$/\r\nconst PWD_REGEX = /^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#$%]).{8,24}$/\r\n\r\nconst Register = () => {\r\n    //const errRef = useRef()\r\n    const [success, setSuccess] = useState(false)\r\n    const [errMsg, setErrMsg] = useState('')\r\n    const [formerrors, setFormErrors] = useState({})\r\n    const [isVisible, setIsVisible] = useState(false)\r\n\r\n    const [values, setValues] = useState({\r\n        FullName: \"\",\r\n        Email: \"\",\r\n        Username: \"\",\r\n        Password: \"\",\r\n        ConfirmPassword: \"\"\r\n    })\r\n\r\n    const invokeCollapse = () => {\r\n        return setIsVisible(!isVisible)\r\n    }\r\n\r\n    const handleChange = (event) => {\r\n        setValues((values) => ({\r\n            ...values,\r\n            [event.target.name.slice(3)]: event.target.value,\r\n        }))\r\n    }\r\n\r\n    const validate = () => {\r\n        let errors = {}\r\n\r\n        if (!values.FullName) {\r\n            errors.FullName = \"The full name field cannot be blank.\"\r\n        }\r\n\r\n        if (!values.Email) {\r\n            errors.Email = \"The email field cannot be blank.\"\r\n        } else if (!EMAIL_REGEX.test(values.Email)) {\r\n            errors.Email = \"The email address is invalid.\"\r\n        }\r\n\r\n        if (!values.Username) {\r\n            errors.Username = \"The username field cannot be blank.\"\r\n        } else if (!USER_NAME_REGEX.test(values.Username)) {\r\n            errors.Username = \"The username is not valid.\"\r\n        }\r\n\r\n        if (!values.Password) {\r\n            errors.Password = \"The password field cannot be blank.\"\r\n        }\r\n        else if (!PWD_REGEX.test(values.Password)) {\r\n            errors.Password = \"The password field is not valid.\"\r\n        }\r\n\r\n        if (!values.ConfirmPassword) {\r\n            errors.ConfirmPassword = \"The confirm password field cannot be blank.\"\r\n        } else if (values.Password !== values.ConfirmPassword) {\r\n            errors.ConfirmPassword = \"The confirm password did not match with the password.\"\r\n        }\r\n\r\n        setFormErrors(errors);\r\n\r\n        if (Object.keys(errors).length === 0) {\r\n            return true\r\n        } else {\r\n            return false\r\n        }\r\n    }\r\n\r\n    const handleSubmit = async (e) => {\r\n        e.preventDefault();\r\n\r\n        if (validate(values)) {\r\n            try {\r\n                axios({\r\n                    method: 'POST',\r\n                    url: `${window.$baseSJAPIUrl}/Account/Register`,\r\n                    data: {\r\n                        FullName: values.FullName,\r\n                        Email: values.Email,\r\n                        UserName: values.Username,\r\n                        Password: values.Password,\r\n                        ConfirmPassword: values.ConfirmPassword\r\n                    }\r\n                }).then(registrationResult => {\r\n\r\n                    console.log(registrationResult?.data);\r\n\r\n                    let registeredUser = registrationResult.data\r\n\r\n                    if (registeredUser !== null) {\r\n                        console.log(registeredUser)\r\n                        if (registeredUser.ResultType === 'SUCCESS') {\r\n                            setValues({\r\n                                FullName: \"\",\r\n                                Email: \"\",\r\n                                Username: \"\",\r\n                                Password: \"\",\r\n                                ConfirmPassword: \"\"\r\n                            })\r\n                            setSuccess(true)\r\n                        } else {\r\n                            //setSuccess(false)\r\n                            setErrMsg(registeredUser.Message)\r\n                            errRef.current.focus()\r\n                        }\r\n                    } else {\r\n                        //setSuccess(false)\r\n                        setErrMsg('An error occured. Please contact SnowJapan administrator')\r\n                        //errRef.current.focus()\r\n                    }\r\n                })\r\n            } catch (err) {\r\n                if (!err?.response) {\r\n                    setErrMsg('No Server Response')\r\n                }\r\n                //errRef.current.focus()\r\n            }\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div className='empty-row'>\r\n            <Helmet>\r\n                <title>Register  | Member area | SnowJapan</title>\r\n                <meta name=\"description\" content=\"Register a new account to upload photos and submit reviews on SnowJapan.\" />\r\n            </Helmet>\r\n            <div>\r\n                <div className=\"sj-para-image mb-4\"><img src=\"https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-Icons-Member.svg\" alt='member-login' /></div>\r\n                <div>\r\n                    <h3>SnowJapan member area</h3>\r\n                    <div className=\"sj-para\">\r\n                        <p>Thank you in advance for sharing your thoughts and/or photographs of Japanese ski areas with other SnowJapan readers.</p>\r\n                        <p>Be assured that your email address is strictly only used for registration purposes. It is not shared with anyone or added to any mailing list, and you will not receive any emails from us.</p>\r\n                        <p>Before submitting content to SnowJapan, <Link to={`${window.$baseAppUrl}/about-members-area`}>please read this</Link>.</p>\r\n                    </div>\r\n                </div>\r\n                <div className=\"empty-row\">\r\n                    {success ? (\r\n                        <section>\r\n                            <h1>Success!</h1>\r\n                            <p>\r\n                                <div>A confirmation email has been sent to you. Please click the link on the email to activate your account.</div>\r\n                            </p>\r\n                        </section>\r\n                    ) : (\r\n                        <>\r\n                            {errMsg !== '' &&\r\n                                <div>\r\n                                    <h1 className=\"text-danger\">Error!</h1>\r\n                                    <div className=\"text-danger\">{errMsg}</div>\r\n                                </div>\r\n                            }\r\n                            <Form onSubmit={handleSubmit}>\r\n                                <Row className=\"mb-3 sj-no-margin\">\r\n                                    <Form.Group controlId=\"txtFullName\" className=\"mt-2 mb-4\">\r\n                                        <Form.Label>\r\n                                            <h5>Name:</h5>\r\n                                            Your name will never be displayed on the site or shared.\r\n                                        </Form.Label>\r\n                                        <Form.Control name=\"txtFullName\" type=\"text\" placeholder=\"Full name\" value={values.FullName} onChange={handleChange} />\r\n                                        {formerrors.FullName && (\r\n                                            <div className=\"text-danger\">{formerrors.FullName}</div>\r\n                                        )}\r\n                                    </Form.Group>\r\n                                    <Form.Group controlId=\"txtEmail\" className=\"mb-4\">\r\n                                        <Form.Label><h5>Email:</h5>\r\n                                            Your email address will never be displayed on the site or shared.\r\n                                        </Form.Label>\r\n                                        <Form.Control name=\"txtEmail\" type=\"email\" placeholder=\"Email\" aria-describedby=\"igEmail\" value={values.Email} onChange={handleChange} />\r\n                                        {formerrors.Email && (\r\n                                            <div className=\"text-danger\">{formerrors.Email}</div>\r\n                                        )}\r\n                                    </Form.Group>\r\n                                    <Form.Group controlId=\"txtUsername\" className=\"mt-2 mb-4\">\r\n                                        <Form.Label>\r\n                                            <h5>Username:</h5>\r\n                                            Your username will be displayed on the site alongside your content.\r\n                                        </Form.Label>\r\n                                        <Form.Control name=\"txtUsername\" type=\"text\" placeholder=\"Username\" value={values.Username} onChange={handleChange} />\r\n                                        {formerrors.Username && (\r\n                                            <div className=\"text-danger\">{formerrors.Username}</div>\r\n                                        )}\r\n                                    </Form.Group>\r\n                                    <Form.Group controlId=\"txtPassword\" className=\"mb-4\">\r\n                                        <Form.Label>\r\n                                            <h5>Password:</h5>\r\n                                        </Form.Label>\r\n                                        <Form.Control name=\"txtPassword\" type=\"password\" placeholder=\"Password\" value={values.Password} onChange={handleChange} />\r\n                                        {formerrors.Password && (\r\n                                            <div className=\"text-danger\">{formerrors.Password}\r\n                                                {formerrors.Password === 'The password field is not valid.' &&\r\n                                                    <>\r\n                                                        <FontAwesomeIcon icon={faQuestionCircle} onClick={invokeCollapse} />\r\n                                                        <Collapse in={isVisible}>\r\n                                                            <div id=\"collapsePanel\">\r\n                                                                <div>\r\n                                                                    8 to 24 characters.<br />\r\n                                                                    Must include uppercase and lowercase letters, a number and a special character.<br />\r\n                                                                    Allowed special characters: <span aria-label=\"exclamation mark\">!</span> <span aria-label=\"at symbol\">@</span> <span aria-label=\"hashtag\">#</span> <span aria-label=\"dollar sign\">$</span> <span aria-label=\"percent\">%</span>\r\n                                                                </div>\r\n                                                            </div>\r\n                                                        </Collapse>\r\n                                                    </>\r\n                                                }\r\n                                            </div>\r\n                                        )}\r\n                                    </Form.Group>\r\n                                    <Form.Group controlId=\"txtConfirmPassword\" className=\"mb-4\">\r\n                                        <Form.Label><h5>Confirm password:</h5></Form.Label>\r\n                                        <Form.Control name=\"txtConfirmPassword\" type=\"password\" placeholder=\"Confirm password\" value={values.ConfirmPassword} onChange={handleChange} />\r\n                                        {formerrors.ConfirmPassword && (\r\n\r\n                                            <div className=\"text-danger\">{formerrors.ConfirmPassword}</div>\r\n                                        )}\r\n                                    </Form.Group>\r\n                                    <div className='center-aligned'>\r\n                                        <Button type=\"submit\" className='sj-large-font-button sj-red-bg sj-row-100'>Register</Button>\r\n                                    </div>\r\n                                </Row>\r\n                            </Form>\r\n                        </>\r\n                    )}\r\n                    <div>\r\n                        <div className='sj-row mt-3 pt-3'>\r\n                            <h3>Already registered?</h3>\r\n                            <div className=\"row sj-row sj-no-bg sj-row-no-margin-padding\">\r\n                                <div className=\"col-md-6 sj-row-no-margin-padding\">\r\n                                    <Link to={`${window.$baseAppUrl}/login`} className='btn btn-primary w-100 sj-box-dark-blue mt-2'><h6 className='mt-1 mb-1'>Login here</h6></Link>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div >\r\n    )\r\n}\r\n\r\nexport default Register","/* eslint-disable */\r\nimport './../../AuthenticationForm.css'\r\nimport { useState, useEffect } from \"react\"\r\nimport { useSearchParams, useParams } from 'react-router-dom'\r\nimport axios from 'axios'\r\n\r\n//`${window.$baseSJAPIUrl}/api/Account/Register`\r\n\r\nconst ConfirmEmail = () => {\r\n\r\n    const params = useParams()\r\n\r\n    const [errMsg, setErrMsg] = useState('')\r\n    const [statusCode, setStatusCode] = useState('')\r\n    const [success, setSuccess] = useState(false)\r\n    const [nonSuccessMessage, setNonSuccessMessage] = useState('Please wait while we verify your email.')\r\n    const [searchParams, setSearchParams] = useSearchParams()\r\n    const token = searchParams.get('token') || ''\r\n\r\n    const HandleConfirmEmail = (thisToken) => {\r\n        console.log(thisToken)\r\n        try {\r\n            axios({\r\n                method: 'POST',\r\n                url: `${window.$baseSJAPIUrl}/Account/ConfirmEmail`,\r\n                data: {\r\n                    Token: thisToken\r\n                }\r\n            }).then(confirmEmailResult => {\r\n                console.log(confirmEmailResult);\r\n                if (confirmEmailResult.data.ResultType === 'SUCCESS') {\r\n                    setSuccess(true)\r\n                    setErrMsg('')\r\n                } else {\r\n                    setErrMsg(confirmEmailResult.data.Message)\r\n                    setStatusCode(confirmEmailResult.data.StatusCode)\r\n                }\r\n            })\r\n        } catch (err) {\r\n            console.log(err)\r\n            if (!err?.response) {\r\n                setErrMsg('No server response');\r\n            }\r\n        }\r\n    }\r\n\r\n    useEffect(() => {\r\n        HandleConfirmEmail(token);\r\n    }, [token])\r\n\r\n    return (\r\n        <>\r\n            {success ? (\r\n                <section>\r\n                    <p>Email conifirmation successful. Please use the link below to sign-in.</p>\r\n                    <p>\r\n                        <a href=\"/login\">Sign In</a>\r\n                    </p>\r\n                </section>\r\n            ) : (\r\n                errMsg !== '' ? (\r\n                    <div className='className=\"sj-row-no-margin-padding\"'>\r\n                        {statusCode === '409' ? (\r\n                            <>\r\n                                <p>{errMsg} Please use the link below to sign-in.</p>\r\n                                <p><a href=\"/login\">Sign In</a></p>\r\n                            </>\r\n                        ) : (\r\n                            <>\r\n                                <p>{errMsg}</p>\r\n                            </>\r\n                        )}\r\n                    </div>\r\n                ) : (\r\n                    <div className='className=\"sj-row-no-margin-padding\"'>\r\n                        {nonSuccessMessage}\r\n                    </div>\r\n                )\r\n            )}\r\n        </>\r\n    )\r\n}\r\n\r\nexport default ConfirmEmail","/* eslint-disable */\r\nimport { useRef, useState } from 'react'\r\nimport { Helmet } from 'react-helmet'\r\nimport { Link } from 'react-router-dom'\r\nimport axios from 'axios'\r\nimport { Form, Button, Row, Collapse } from 'react-bootstrap'\r\nimport { faQuestionCircle } from \"@fortawesome/free-solid-svg-icons\"\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\"\r\n\r\nconst EMAIL_REGEX = /^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,3})+$/\r\n\r\nconst ForgotPassword = () => {\r\n    //const errRef = useRef()\r\n    const [success, setSuccess] = useState(false)\r\n    const [errMsg, setErrMsg] = useState('')\r\n    const [formerrors, setFormErrors] = useState({})\r\n    //const [isVisible, setIsVisible] = useState(false)\r\n\r\n    const [values, setValues] = useState({\r\n        Username: \"\",\r\n        Email: \"\"\r\n    })\r\n\r\n    /*const invokeCollapse = () => {\r\n        return setIsVisible(!isVisible)\r\n    }*/\r\n\r\n    const handleChange = (event) => {\r\n        setValues((values) => ({\r\n            ...values,\r\n            [event.target.name.slice(3)]: event.target.value,\r\n        }))\r\n    }\r\n\r\n    const validate = () => {\r\n        let errors = {}\r\n\r\n        if (!values.Username) {\r\n            errors.Username = \"The username field cannot be blank.\"\r\n        }\r\n\r\n        if (!values.Email) {\r\n            errors.Email = \"The email field cannot be blank.\"\r\n        } else if (!EMAIL_REGEX.test(values.Email)) {\r\n            errors.Email = \"The email address is invalid.\"\r\n        }\r\n\r\n        setFormErrors(errors);\r\n\r\n        if (Object.keys(errors).length === 0) {\r\n            return true\r\n        } else {\r\n            return false\r\n        }\r\n    }\r\n\r\n    const handleSubmit = async (e) => {\r\n        e.preventDefault();\r\n\r\n        if (validate(values)) {\r\n            try {\r\n                axios({\r\n                    method: 'POST',\r\n                    url: `${window.$baseSJAPIUrl}/Account/ForgotPassword`,\r\n                    data: {\r\n                        UserName: values.Username,\r\n                        Email: values.Email\r\n                    }\r\n                }).then(forgotPasswordResult => {\r\n\r\n                    console.log(forgotPasswordResult?.data);\r\n\r\n                    let forgotPassword = forgotPasswordResult.data\r\n\r\n                    if (forgotPassword !== null) {\r\n                        console.log(forgotPassword)\r\n                        if (forgotPassword.ResultType === 'SUCCESS') {\r\n                            setValues({\r\n                                Username: \"\",\r\n                                Email: \"\"\r\n                            })\r\n                            setSuccess(true)\r\n                        } else {\r\n                            setErrMsg(registeredUser.Message)\r\n                            errRef.current.focus()\r\n                        }\r\n                    } else {\r\n                        setErrMsg('An error occured. Please contact SnowJapan administrator')\r\n                    }\r\n                })\r\n            } catch (err) {\r\n                if (!err?.response) {\r\n                    setErrMsg('No server response')\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div className='empty-row'>\r\n            <Helmet>\r\n                <title>Forgot password  | Member area | SnowJapan</title>\r\n                <meta name=\"description\" content=\"Register a new account to upload photos and submit reviews on SnowJapan.\" />\r\n            </Helmet>\r\n            <div>\r\n                <div className=\"sj-para-image mb-4\"><img src=\"https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-Icons-Member.svg\" alt='member-login' /></div>\r\n                <div>\r\n                    <h3>SnowJapan member area</h3>\r\n                    <div className=\"sj-para\">\r\n                        <p>Please enter your username and email below and click Submit to reset your password.</p>\r\n                    </div>\r\n                </div>\r\n                <div className=\"empty-row\">\r\n                    {success ? (\r\n                        <section>\r\n                            <h3>Success!</h3>\r\n                            <p>Please check your registered email address.</p>\r\n                            <p>Click on the link in the email to reset your password.</p>\r\n                        </section>\r\n                    ) : (\r\n                        <>\r\n                            {errMsg !== '' &&\r\n                                <div>\r\n                                    <h1 className=\"text-danger\">Error!</h1>\r\n                                    <div className=\"text-danger\">{errMsg}</div>\r\n                                </div>\r\n                            }\r\n                            <Form onSubmit={handleSubmit}>\r\n                                <Row className=\"mb-3 sj-no-margin\">\r\n                                    <Form.Group controlId=\"txtUsername\" className=\"mt-2 mb-4\">\r\n                                        <Form.Label>\r\n                                            <h5>Username:</h5>\r\n                                        </Form.Label>\r\n                                        <Form.Control name=\"txtUsername\" type=\"text\" placeholder=\"Username\" value={values.Username} onChange={handleChange} />\r\n                                        {formerrors.Username && (\r\n                                            <div className=\"text-danger\">{formerrors.Username}</div>\r\n                                        )}\r\n                                    </Form.Group>\r\n                                    <Form.Group controlId=\"txtEmail\" className=\"mb-4\">\r\n                                        <Form.Label><h5>Email:</h5>\r\n                                        </Form.Label>\r\n                                        <Form.Control name=\"txtEmail\" type=\"email\" placeholder=\"Email\" aria-describedby=\"igEmail\" value={values.Email} onChange={handleChange} />\r\n                                        {formerrors.Email && (\r\n                                            <div className=\"text-danger\">{formerrors.Email}</div>\r\n                                        )}\r\n                                    </Form.Group>\r\n                                    <div className='center-aligned'>\r\n                                        <Button type=\"submit\" className='sj-large-font-button sj-red-bg sj-row-100'>Submit</Button>\r\n                                    </div>\r\n                                </Row>\r\n                            </Form>\r\n                        </>\r\n                    )}\r\n                </div>\r\n            </div>\r\n        </div >\r\n    )\r\n}\r\n\r\nexport default ForgotPassword","/* eslint-disable */\r\nimport { useState, useEffect } from 'react'\r\nimport { Helmet } from 'react-helmet'\r\nimport { Link, useSearchParams, useParams } from 'react-router-dom'\r\nimport { Form, Button, Row, Collapse } from 'react-bootstrap'\r\nimport axios from 'axios'\r\nimport { faQuestionCircle } from '@fortawesome/free-solid-svg-icons'\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\nimport './../../AuthenticationForm.css'\r\n\r\n//`${window.$baseSJAPIUrl}/api/Account/Register`\r\nconst PWD_REGEX = /^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#$%]).{8,24}$/\r\n\r\nconst ResetPassword = () => {\r\n\r\n    const params = useParams()\r\n\r\n    const [errMsg, setErrMsg] = useState('')\r\n    const [statusCode, setStatusCode] = useState('')\r\n    const [success, setSuccess] = useState(false)\r\n    const [nonSuccessMessage, setNonSuccessMessage] = useState('Please wait while we verify your email.')\r\n    const [searchParams, setSearchParams] = useSearchParams()\r\n    const token = searchParams.get('token') || ''\r\n    const [formerrors, setFormErrors] = useState({})\r\n    const [isVisible, setIsVisible] = useState(false)\r\n\r\n    const [values, setValues] = useState({\r\n        Token: \"\",\r\n        Password: \"\",\r\n        ConfirmPassword: \"\"\r\n    })\r\n\r\n    useEffect(() => {\r\n        //HandleConfirmEmail(token);\r\n        setValues((values) => ({\r\n            ...values,\r\n            \"Token\": token,\r\n        }))\r\n    }, [token])\r\n\r\n    const handleChange = (event) => {\r\n        setValues((values) => ({\r\n            ...values,\r\n            [event.target.name.slice(3)]: event.target.value,\r\n        }))\r\n    }\r\n\r\n    const validate = () => {\r\n        let errors = {}\r\n\r\n        if (!values.Password) {\r\n            errors.Password = \"The password field cannot be blank.\"\r\n        }\r\n        else if (!PWD_REGEX.test(values.Password)) {\r\n            errors.Password = \"The password field is not valid.\"\r\n        }\r\n\r\n        if (!values.ConfirmPassword) {\r\n            errors.ConfirmPassword = \"The confirm password field cannot be blank.\"\r\n        } else if (values.Password !== values.ConfirmPassword) {\r\n            errors.ConfirmPassword = \"The confirm password did not match with the password.\"\r\n        }\r\n\r\n        setFormErrors(errors);\r\n\r\n        if (Object.keys(errors).length === 0) {\r\n            return true\r\n        } else {\r\n            return false\r\n        }\r\n    }\r\n\r\n    /*const HandleResetPassword = (thisToken) => {\r\n        console.log(thisToken)\r\n        try {\r\n            axios({\r\n                method: 'POST',\r\n                url: `${window.$baseSJAPIUrl}/Account/ResetPassword`,\r\n                data: {\r\n                    Token: thisToken,\r\n                    Password: ,\r\n                    ConfirmPassword: \r\n                }\r\n            }).then(resetPasswordResult => {\r\n                console.log(resetPasswordResult);\r\n                if (resetPasswordResult.data.ResultType === 'SUCCESS') {\r\n                    setSuccess(true)\r\n                    setErrMsg('')\r\n                } else {\r\n                    setErrMsg(resetPasswordResult.data.Message)\r\n                    setStatusCode(resetPasswordResult.data.StatusCode)\r\n                }\r\n            })\r\n        } catch (err) {\r\n            console.log(err)\r\n            if (!err?.response) {\r\n                setErrMsg('No server response');\r\n            }\r\n        }\r\n    }*/\r\n\r\n    const handleSubmit = async (e) => {\r\n        e.preventDefault();\r\n\r\n        if (validate(values)) {\r\n            try {\r\n                var thisData = {\r\n                    Token: values.Token,\r\n                    Password: values.Password,\r\n                    ConfirmPassword: values.ConfirmPassword\r\n                }\r\n\r\n                console.log(thisData)\r\n\r\n                axios({\r\n                    method: 'POST',\r\n                    url: `${window.$baseSJAPIUrl}/Account/ResetPassword`,\r\n                    data: thisData\r\n                }).then(resetPasswordResult => {\r\n\r\n                    console.log(resetPasswordResult?.data);\r\n\r\n                    if (resetPasswordResult.data.ResultType === 'SUCCESS') {\r\n                        setSuccess(true)\r\n                        setErrMsg('')\r\n                    } else {\r\n                        setErrMsg(resetPasswordResult.data.Message)\r\n                        setStatusCode(resetPasswordResult.data.StatusCode)\r\n                    }\r\n                })\r\n            } catch (err) {\r\n                if (!err?.response) {\r\n                    setErrMsg('No Server Response')\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div className='empty-row'>\r\n            <Helmet>\r\n                <title>Reset password  | Member area | SnowJapan</title>\r\n                <meta name=\"description\" content=\"Register a new account to upload photos and submit reviews on SnowJapan.\" />\r\n            </Helmet>\r\n            <div>\r\n                <div className=\"sj-para-image mb-4\"><img src=\"https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-Icons-Member.svg\" alt='member-login' /></div>\r\n                <div>\r\n                    <h3>SnowJapan member area</h3>\r\n                    <div className=\"sj-para\">\r\n                        <p>Please enter a new password below and click Reset password to assign a new password.</p>\r\n                    </div>\r\n                </div>\r\n                <div className=\"empty-row\">\r\n                    {success ? (\r\n                        <section>\r\n                            <h1>Success!</h1>\r\n                            <p>\r\n                                <div>Your password has been changed successfully. Please click the button below to login.</div>\r\n                                <div className='sj-row mt-3 pt-3'>\r\n                                    <div className=\"row sj-row sj-no-bg sj-row-no-margin-padding\">\r\n                                        <div className=\"col-md-6 sj-row-no-margin-padding\">\r\n                                            <Link to={`${window.$baseAppUrl}/login`} className='btn btn-primary w-100 sj-box-dark-blue mt-2'><h6 className='mt-1 mb-1'>Login here</h6></Link>\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n                            </p>\r\n                        </section>\r\n                    ) : (\r\n                        <>\r\n                            {errMsg !== '' &&\r\n                                <div>\r\n                                    <h1 className=\"text-danger\">Error!</h1>\r\n                                    <div className=\"text-danger\">{errMsg}</div>\r\n                                </div>\r\n                            }\r\n                            <Form onSubmit={handleSubmit}>\r\n                                <Row className=\"mb-3 sj-no-margin\">\r\n                                    <Form.Group controlId=\"txtPassword\" className=\"mb-4\">\r\n                                        <Form.Label>\r\n                                            <h5>Password:</h5>\r\n                                        </Form.Label>\r\n                                        <Form.Control name=\"txtPassword\" type=\"password\" placeholder=\"Password\" value={values.Password} onChange={handleChange} />\r\n                                        {formerrors.Password && (\r\n                                            <div className=\"text-danger\">{formerrors.Password}\r\n                                                {formerrors.Password === 'The password field is not valid.' &&\r\n                                                    <>\r\n                                                        <FontAwesomeIcon icon={faQuestionCircle} onClick={invokeCollapse} />\r\n                                                        <Collapse in={isVisible}>\r\n                                                            <div id=\"collapsePanel\">\r\n                                                                <div>\r\n                                                                    8 to 24 characters.<br />\r\n                                                                    Must include uppercase and lowercase letters, a number and a special character.<br />\r\n                                                                    Allowed special characters: <span aria-label=\"exclamation mark\">!</span> <span aria-label=\"at symbol\">@</span> <span aria-label=\"hashtag\">#</span> <span aria-label=\"dollar sign\">$</span> <span aria-label=\"percent\">%</span>\r\n                                                                </div>\r\n                                                            </div>\r\n                                                        </Collapse>\r\n                                                    </>\r\n                                                }\r\n                                            </div>\r\n                                        )}\r\n                                    </Form.Group>\r\n                                    <Form.Group controlId=\"txtConfirmPassword\" className=\"mb-4\">\r\n                                        <Form.Label><h5>Confirm password:</h5></Form.Label>\r\n                                        <Form.Control name=\"txtConfirmPassword\" type=\"password\" placeholder=\"Confirm password\" value={values.ConfirmPassword} onChange={handleChange} />\r\n                                        {formerrors.ConfirmPassword && (\r\n\r\n                                            <div className=\"text-danger\">{formerrors.ConfirmPassword}</div>\r\n                                        )}\r\n                                    </Form.Group>\r\n                                    <div className='center-aligned'>\r\n                                        <Button type=\"submit\" className='sj-large-font-button sj-red-bg sj-row-100'>Reset password</Button>\r\n                                    </div>\r\n                                </Row>\r\n                            </Form>\r\n                        </>\r\n                    )}\r\n                </div>\r\n            </div>\r\n        </div >\r\n    )\r\n}\r\n\r\nexport default ResetPassword","import { useState } from 'react'\r\nimport { Link } from 'react-router-dom'\r\nimport axios from 'axios'\r\nimport { Form, Button, Row } from 'react-bootstrap'\r\nimport { Helmet } from 'react-helmet'\r\n\r\nconst Contact = () => {\r\n    const [successMessage, setSuccessMessage] = useState(false)\r\n\r\n    const [values, setValues] = useState({\r\n        txtName: \"\",\r\n        txtEmail: \"\",\r\n        txtConfirmEmail: \"\",\r\n        txtContent: \"\"\r\n    });\r\n\r\n    const [formerrors, setFormErrors] = useState({});\r\n    //this method handles the each form field changing and updates the relevant\r\n    //state value for that input\r\n    const handleChange = (event) => {\r\n        setValues((values) => ({\r\n            ...values,\r\n            [event.target.name]: event.target.value,\r\n        }));\r\n    };\r\n\r\n    //this method will check each field in your form. You define\r\n    //the rules for each field\r\n    const validate = () => {\r\n        let errors = {};\r\n\r\n        //name field\r\n        if (!values.txtName) {\r\n            errors.txtName = \"Name is required\";\r\n        }\r\n        //email field\r\n        if (!values.txtEmail) {\r\n            errors.txtEmail = \"Email address is required\";\r\n        } else if (!/\\S+@\\S+\\.\\S+/.test(values.txtEmail)) {\r\n            errors.txtEmail = \"Email address is invalid\";\r\n        }\r\n        //confirm email field\r\n        if (!values.txtConfirmEmail) {\r\n            errors.txtConfirmEmail = \"Confirm email address is required\";\r\n        } else if (!/\\S+@\\S+\\.\\S+/.test(values.txtConfirmEmail)) {\r\n            errors.txtConfirmEmail = \"Confirm email address is invalid\";\r\n        } else if (values.txtEmail !== values.txtConfirmEmail) {\r\n            errors.txtConfirmEmail = \"Confirm email address did not match with email address\";\r\n        }\r\n        //subject field\r\n        if (!values.optSubject) {\r\n            errors.optSubject = \"Subject is required\";\r\n        }\r\n        //content field\r\n        if (!values.txtContent) {\r\n            errors.txtContent = \"Content is required\";\r\n        }\r\n        setFormErrors(errors);\r\n        if (Object.keys(errors).length === 0) {\r\n            return true;\r\n        } else {\r\n            return false;\r\n        }\r\n    };\r\n    const handleSubmit = (event) => {\r\n        if (event) event.preventDefault();\r\n        if (validate(values)) {\r\n            SendContactEmail()\r\n        }\r\n    };\r\n\r\n    const SendContactEmail = async () => {\r\n        axios({\r\n            method: 'POST',\r\n            url: `${window.$baseAPIUrl}/home/contact`,\r\n            data: {\r\n                name: values.txtName,\r\n                email: values.txtEmail,\r\n                subject: values.optSubject,\r\n                content: values.txtContent\r\n            }\r\n        }).then(dataContact => {\r\n            if (dataContact.data === 'Sent') {\r\n                setValues({\r\n                    txtName: \"\",\r\n                    txtEmail: \"\",\r\n                    txtConfirmEmail: \"\",\r\n                    txtContent: \"\"\r\n                })\r\n\r\n                setSuccessMessage(true)\r\n            }\r\n        })\r\n    };\r\n\r\n    return (\r\n        <div className='empty-row'>\r\n            <Helmet>\r\n                <title>Contact SnowJapan</title>\r\n            </Helmet>\r\n            <div>\r\n                <div className=\"sj-para-image mb-4\"><img src=\"https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-Contact.svg\" alt=\"Japan as 'Snow Country'\" /></div>\r\n                <div>\r\n                    <h3>Contact SnowJapan</h3>\r\n                    <div className=\"sj-para\">\r\n                        Please use the below form to contact SnowJapan.\r\n                    </div>\r\n                    <h5 className=\"sj-para\">\r\n                        Important:\r\n                    </h5>\r\n                    <div className=\"sj-para\">\r\n                        We believe our time is best spent improving SnowJapan’s content for everyone's benefit.\r\n                    </div>\r\n                    <div className=\"sj-para\">\r\n                        Sorry, but we cannot answer specific questions about ski areas, hotels, schools, or other services and businesses. We are also not able to make recommendations or assist with travel arrangements. As much as we would like to help, do not expect to receive a reply if you use the below form to send such requests.\r\n                    </div>\r\n                    <div className=\"sj-para\">\r\n                        If you use the contact form, we promise that the email address you submit will never be added to any list or shared. We will only use it if we reply to your enquiry.\r\n                    </div>\r\n                    <div className=\"sj-para\">\r\n                        Thank you.\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            {successMessage &&\r\n                <div className='empty-row sj-box sj-box-blue sj-round-full center-aligned'>\r\n                    <h4>Thank you for contacting SnowJapan</h4>\r\n                </div>\r\n            }\r\n            <div className=\"empty-row\">\r\n                <Form onSubmit={handleSubmit}>\r\n                    <Row className=\"mb-3 sj-no-margin\">\r\n                        <Form.Group controlId=\"txtName\" className=\"mt-2 mb-4\">\r\n                            <Form.Label><h5>Name</h5></Form.Label>\r\n                            <Form.Control name=\"txtName\" type=\"text\" placeholder=\"Name\" value={values.txtName} onChange={handleChange} />\r\n                            {formerrors.txtName && (\r\n                                <div className=\"text-danger\">{formerrors.txtName}</div>\r\n                            )}\r\n                        </Form.Group>\r\n                        <Form.Group controlId=\"txtEmail\" className=\"mb-4\">\r\n                            <Form.Label><h5>Email</h5></Form.Label>\r\n                            <Form.Control name=\"txtEmail\" type=\"email\" placeholder=\"Email\" aria-describedby=\"igEmail\" value={values.txtEmail} onChange={handleChange} />\r\n                            {formerrors.txtEmail && (\r\n                                <div className=\"text-danger\">{formerrors.txtEmail}</div>\r\n                            )}\r\n                        </Form.Group>\r\n                        <Form.Group controlId=\"txtConfirmEmail\" className=\"mb-4\">\r\n                            <Form.Label><h5>Confirm email</h5></Form.Label>\r\n                            <Form.Control name=\"txtConfirmEmail\" type=\"email\" placeholder=\"Confirm email\" aria-describedby=\"igConfirmEmail\" value={values.txtConfirmEmail} onChange={handleChange} />\r\n                            {formerrors.txtConfirmEmail && (\r\n                                <div className=\"text-danger\">{formerrors.txtConfirmEmail}</div>\r\n                            )}\r\n                        </Form.Group>\r\n                        <Form.Group className=\"mb-4\">\r\n                            <Form.Label><h5>Subject</h5></Form.Label><br />\r\n                            <Form.Check inline label=\"General enquiry\" name=\"optSubject\" id=\"optSubjectGeneral\" type=\"radio\" value=\"General enquiry\" onChange={handleChange} />\r\n                            <Form.Check inline label=\"Business and advertising enquiry\" name=\"optSubject\" id=\"optSubjectBusiness\" type=\"radio\" value=\"Business and advertising enquiry\" onChange={handleChange} />\r\n                            {formerrors.optSubject && (\r\n                                <div className=\"text-danger\">{formerrors.optSubject}</div>\r\n                            )}\r\n                        </Form.Group>\r\n                        <Form.Group controlId=\"txtContent\" className=\"mb-4\">\r\n                            <Form.Label><h5>Content</h5></Form.Label>\r\n                            <Form.Control name=\"txtContent\" as=\"textarea\" rows={10} value={values.txtContent} onChange={handleChange} />\r\n                            {formerrors.txtContent && (\r\n                                <div className=\"text-danger\">{formerrors.txtContent}</div>\r\n                            )}\r\n                        </Form.Group>\r\n                        <div className='center-aligned'>\r\n                            <Button type=\"submit\" className='sj-large-font-button sj-row-100'>Send</Button>\r\n                        </div>\r\n                    </Row>\r\n                </Form>\r\n            </div>\r\n        </div>\r\n    )\r\n}\r\n\r\nexport default Contact;","import { useState, useEffect, Fragment } from 'react'\r\nimport { Form } from 'react-bootstrap'\r\n\r\nconst WayPointAutocomplete = ({ skiAreaList, onRoutePointSelect, initialValue, slNo, controlName, readOnly }) => {\r\n\r\n    const [activeSuggestion, setActiveSuggestion] = useState(0)\r\n    const [filteredSkiAreas, setFilteredSkiAreas] = useState([])\r\n    const [showSuggestions, setShowSuggestions] = useState(false)\r\n    const [userInput, setUserInput] = useState('')\r\n\r\n    const onChange = (e) => {\r\n        let selectedSkiAreaNameParts = e.currentTarget.value.split('(')\r\n\r\n        const userInput = selectedSkiAreaNameParts[0].trim();\r\n\r\n        const thisFilteredSkiAreas = skiAreaList.filter(\r\n            //skiArea => (skiArea.Name.toLowerCase().indexOf(userInput.toLowerCase()) === 0 || skiArea.Name.toLowerCase().indexOf(userInput.toLowerCase()) === 0 || skiArea.NameJapanese.indexOf(userInput) === 0 || skiArea.TownName.toLowerCase().indexOf(userInput.toLowerCase()) === 0 || skiArea.TownNameJapanese.indexOf(userInput) === 0 || (skiArea.AreaName !== null && skiArea.AreaName !== undefined && skiArea.AreaName.toLowerCase().indexOf(userInput.toLowerCase()) === 0) || (skiArea.AreaNameJapanese !== null && skiArea.AreaNameJapanese !== undefined && skiArea.AreaNameJapanese.indexOf(userInput) === 0))\r\n            skiArea => (skiArea.Name.toLowerCase().indexOf(userInput.toLowerCase()) >= 0 || skiArea.NameJapanese.indexOf(userInput) >= 0 || skiArea.TownName.toLowerCase().indexOf(userInput.toLowerCase()) >= 0 || skiArea.TownNameJapanese.indexOf(userInput) >= 0 || (skiArea.AreaName !== null && skiArea.AreaName !== undefined && skiArea.AreaName.toLowerCase().indexOf(userInput.toLowerCase()) >= 0) || (skiArea.AreaNameJapanese !== null && skiArea.AreaNameJapanese !== undefined && skiArea.AreaNameJapanese.indexOf(userInput) >= 0))\r\n        );\r\n\r\n        setActiveSuggestion(0)\r\n        setFilteredSkiAreas(thisFilteredSkiAreas)\r\n        setShowSuggestions(true)\r\n        setUserInput(e.currentTarget.value)\r\n    };\r\n\r\n    const onClick = e => {\r\n        setActiveSuggestion(0)\r\n        setFilteredSkiAreas([])\r\n        setShowSuggestions(false)\r\n        setUserInput(e.currentTarget.innerText)\r\n\r\n        let selectedSkiAreaNameParts = e.currentTarget.innerText.split('(')\r\n\r\n        const selectedSkiAreaList = skiAreaList.filter(\r\n            skiArea => (skiArea.Name === selectedSkiAreaNameParts[0].trim())\r\n        );\r\n\r\n        let coords = e.currentTarget.innerText.split(',')\r\n\r\n        if (selectedSkiAreaList.length > 0) {\r\n\r\n            let selectedSkiArea = selectedSkiAreaList[0];\r\n\r\n            let newRoutePoint = {\r\n                name: selectedSkiArea.Name + ' (' + selectedSkiArea.PrefectureName + ')',\r\n                location_latitude: selectedSkiArea.Location_Latitude,\r\n                location_longitude: selectedSkiArea.Location_Longitude,\r\n                index: slNo\r\n            };\r\n\r\n            onRoutePointSelect(newRoutePoint)\r\n        }\r\n        else if (coords.length === 2) {\r\n            let newRoutePoint = {\r\n                name: e.currentTarget.innerText,\r\n                location_latitude: coords[0],\r\n                location_longitude: coords[1],\r\n                index: slNo\r\n            };\r\n\r\n            onRoutePointSelect(newRoutePoint)\r\n        }\r\n    };\r\n\r\n    const onKeyDown = (e) => {\r\n        if (e.keyCode === 13) {\r\n            setActiveSuggestion(0)\r\n            setShowSuggestions(false)\r\n            let selectedSkiArea = filteredSkiAreas[activeSuggestion]\r\n            if (selectedSkiArea !== null && selectedSkiArea !== undefined) {\r\n                setUserInput(selectedSkiArea.Name + ' (' + selectedSkiArea.PrefectureName + ')')\r\n                let newRoutePoint = {\r\n                    name: selectedSkiArea.Name + ' (' + selectedSkiArea.PrefectureName + ')',\r\n                    location_latitude: selectedSkiArea.Location_Latitude,\r\n                    location_longitude: selectedSkiArea.Location_Longitude,\r\n                    index: slNo\r\n                };\r\n\r\n                onRoutePointSelect(newRoutePoint)\r\n            }\r\n        }\r\n        else if (e.keyCode === 38) {\r\n            if (activeSuggestion === 0) {\r\n                return;\r\n            }\r\n\r\n            setActiveSuggestion(activeSuggestion - 1)\r\n        }\r\n        else if (e.keyCode === 40) {\r\n            if (activeSuggestion - 1 === filteredSkiAreas.length) {\r\n                return;\r\n            }\r\n            setActiveSuggestion(activeSuggestion + 1)\r\n        }\r\n    };\r\n\r\n    const isCoordinate = (input) => {\r\n\r\n        let coords = input.split(',')\r\n        if (coords.length === 2) {\r\n            return true\r\n        }\r\n        return false\r\n    }\r\n\r\n    const isValidCoordinate = (input) => {\r\n\r\n        let coords = input.split(',')\r\n        if (coords.length === 2) {\r\n            if (coords[0].trim() >= 26.075 && coords[0].trim() <= 45.52722222222222 && coords[1].trim() >= 127.6363888888889 && coords[1].trim() <= 145.8175) {\r\n                return true\r\n            }\r\n        }\r\n        return false\r\n    }\r\n\r\n    useEffect(() => {\r\n        setUserInput(initialValue)\r\n    }, [initialValue]);\r\n\r\n    let suggestionsListComponent;\r\n\r\n    if (showSuggestions && userInput) {\r\n        if (filteredSkiAreas.length) {\r\n            suggestionsListComponent = (\r\n                <ul className=\"suggestions\">\r\n                    {filteredSkiAreas.map((skiArea, index) => {\r\n                        let className;\r\n\r\n                        if (index === activeSuggestion) {\r\n                            className = \"suggestion-active\";\r\n                        }\r\n\r\n                        return (\r\n                            <li className={className} key={index} onClick={onClick}>\r\n                                {skiArea.Name} ({skiArea.PrefectureName})\r\n                            </li>\r\n                        );\r\n                    })}\r\n                </ul>\r\n            );\r\n        } else if (isCoordinate(userInput)) {\r\n            if (isValidCoordinate(userInput)) {\r\n                suggestionsListComponent = (<ul className=\"suggestions\">\r\n                    <li onClick={onClick}>\r\n                        {userInput}\r\n                    </li>\r\n                </ul>\r\n                );\r\n            }\r\n            else {\r\n                suggestionsListComponent = (\r\n                    <div className=\"no-suggestions\">\r\n                        <em>Only coordinates in Japan are valid</em>\r\n                    </div>\r\n                );\r\n            }\r\n        } else {\r\n            suggestionsListComponent = (\r\n                <div className=\"no-suggestions\">\r\n                    <em>No ski area found</em>\r\n                </div>\r\n            );\r\n        }\r\n    }\r\n\r\n    return (\r\n        <Fragment>\r\n            <Form.Control name={controlName} type=\"text\" placeholder=\"Type ski area or town name here\" onChange={onChange} onKeyDown={onKeyDown} value={userInput} readOnly={readOnly} />\r\n            {suggestionsListComponent}\r\n        </Fragment>\r\n    );\r\n};\r\n\r\nexport default WayPointAutocomplete;","import { GoogleMap, useJsApiLoader, DirectionsRenderer } from '@react-google-maps/api'\r\nimport { useState, useCallback, useEffect } from 'react'\r\nimport { Button } from 'react-bootstrap'\r\nimport { useNavigate, useParams } from 'react-router-dom'\r\nimport axios from 'axios'\r\nimport WayPointAutocomplete from \"./WayPointAutocomplete\"\r\nimport { Helmet } from \"react-helmet\"\r\n\r\nconst containerStyle = {\r\n    width: '100%',\r\n    height: '100vh'\r\n}\r\n\r\nconst center = {\r\n    lat: 36.2048,\r\n    lng: 138.2529\r\n}\r\n\r\nconst RouteFinder = () => {\r\n\r\n    const params = useParams()\r\n\r\n    const [formerrors, setFormErrors] = useState({})\r\n    const [resort, setResort] = useState(undefined)\r\n    const [skiAreaList, setSkiAreaList] = useState([])\r\n    const [generalMessageRouteFinder, setGeneralMessageRouteFinder] = useState(undefined);\r\n    const [originPoint, setOriginPoint] = useState({ name: '', location_latitude: '', location_longitude: '' })\r\n    const [destinationPoint, setDestinationPoint] = useState({ name: '', location_latitude: '', location_longitude: '' })\r\n    const [wayPoints, setWayPoints] = useState([])\r\n    const [showMap, setShowMap] = useState(false)\r\n    const summaryPanel = document.getElementById(\"directions-panel\")\r\n    //const history = useHistory()\r\n    const navigate = useNavigate()\r\n\r\n    const alphabetArray = ['B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']\r\n\r\n    const { isLoaded } = useJsApiLoader({\r\n        id: 'google-map-script',\r\n        googleMapsApiKey: 'AIzaSyAmyWUwcoNW504tXuRlQ_mZssrKEEhGn20'\r\n    })\r\n\r\n    const [map, setMap] = useState(/** @type google.maps.Map */(null))\r\n    const [directionsResponse, setDirectionsResponse] = useState(null)\r\n\r\n    const onLoad = useCallback(function callback(map) {\r\n        setMap(map)\r\n    }, [])\r\n\r\n    const onUnmount = useCallback(function callback(map) {\r\n        setMap(null)\r\n    }, [])\r\n\r\n    const fetchResortData = async (resortUniqueName) => {\r\n\r\n        axios({\r\n            method: 'POST',\r\n            url: `${window.$baseAPIUrl}/skiarea/${resortUniqueName}`\r\n        }).then(dataResort => {\r\n            if (Object.keys(dataResort.data).length <= 0) {\r\n                window.location.href = \"https://www.snowjapan.com/404.html\"\r\n            }\r\n\r\n            if (dataResort.data !== undefined) {\r\n                setResort(dataResort.data)\r\n\r\n                let destinationResortName = dataResort.data.Name + ' (' + dataResort.data.PrefectureName + ')'\r\n\r\n                let destinationLocation = { name: destinationResortName, location_latitude: dataResort.data.Location_Latitude, location_longitude: dataResort.data.Location_Longitude }\r\n                setDestinationPoint(destinationLocation)\r\n            }\r\n        })\r\n    };\r\n\r\n    const fetchData = async () => {\r\n        axios({\r\n            method: 'POST',\r\n            url: `${window.$baseAPIUrl}/skiarea/route-finder/list`\r\n        }).then(dataResortList => {\r\n            setSkiAreaList(dataResortList.data)\r\n            return axios({\r\n                method: 'POST',\r\n                url: `${window.$baseAPIUrl}/generalmessage/RouteFinder`\r\n            })\r\n        }).then(resGeneralMessages => {\r\n            setGeneralMessageRouteFinder(resGeneralMessages.data)\r\n        })\r\n    };\r\n\r\n    useEffect(() => {\r\n        // setTimeout(() => myRef.current.scrollIntoView({ behavior: 'smooth' }), 1000);\r\n    }, [originPoint.name, destinationPoint.name]);\r\n\r\n    useEffect(() => {\r\n\r\n        if (params.resort !== undefined) {\r\n            fetchResortData(params.resort)\r\n        }\r\n\r\n        fetchData();\r\n\r\n    }, [params.resort]);\r\n\r\n    const useCurrentLocation = () => {\r\n        navigator.geolocation.getCurrentPosition(function (position) {\r\n            if (position.coords.latitude >= 26.075 && position.coords.latitude <= 45.52722222222222 && position.coords.longitude >= 127.6363888888889 && position.coords.longitude <= 145.8175) {\r\n                let currentLocation = { name: 'Current Location', location_latitude: position.coords.latitude, location_longitude: position.coords.longitude }\r\n\r\n                if (originPoint.name !== 'Current Location') {\r\n                    setOriginPoint(currentLocation)\r\n                }\r\n            }\r\n            else {\r\n                alert('You need to be within Japan to use current location')\r\n            }\r\n        })\r\n    }\r\n\r\n    const setStartPoint = (newValue) => {\r\n        if (newValue.name !== 'Current Location') {\r\n            setOriginPoint(newValue)\r\n        }\r\n    }\r\n\r\n    const setEndPoint = (newValue) => {\r\n        if (newValue.location_latitude !== undefined && newValue.location_longitude !== undefined) {\r\n            setDestinationPoint(newValue)\r\n        }\r\n    }\r\n\r\n    const addWayPoint = () => {\r\n        let newWayPoints = [...wayPoints, { name: '', location_latitude: '', location_longitude: '' }]\r\n        setWayPoints(newWayPoints)\r\n    }\r\n\r\n    const removeWayPoint = (index) => {\r\n        let newWayPoints = [...wayPoints]\r\n        newWayPoints.splice(index, 1)\r\n        setWayPoints(newWayPoints)\r\n    }\r\n\r\n    const setWayPoint = (newValue) => {\r\n        let newWayPoints = [...wayPoints]\r\n        newWayPoints[newValue.index] = { name: newValue.name, location_latitude: newValue.location_latitude, location_longitude: newValue.location_longitude }\r\n        setWayPoints(newWayPoints)\r\n    }\r\n\r\n    async function calculateRoute() {\r\n        setDirectionsResponse(null)\r\n        setShowMap(false)\r\n\r\n        const directionsService = new window.google.maps.DirectionsService()\r\n\r\n        const waypts = [];\r\n\r\n        for (let i = 0; i < wayPoints.length; i++) {\r\n            let routeWayPoint = ''\r\n\r\n            if (wayPoints[i].name !== '') {\r\n\r\n                if (wayPoints[i].location_latitude !== '' && wayPoints[i].location_longitude !== '') {\r\n                    let wayPointCoords = [wayPoints[i].location_latitude, wayPoints[i].location_longitude]\r\n                    routeWayPoint = wayPointCoords.join(',')\r\n                } else {\r\n                    routeWayPoint = wayPoints[i].name\r\n                }\r\n            }\r\n\r\n            waypts.push({\r\n                location: routeWayPoint,\r\n                stopover: true,\r\n            });\r\n        }\r\n\r\n        // console.log(originPoint)\r\n        // console.log(destinationPoint)\r\n\r\n        let routeOriginPoint = ''\r\n\r\n        if (originPoint.name !== '') {\r\n\r\n            if (originPoint.location_latitude !== '' && originPoint.location_longitude !== '') {\r\n                let originCoords = [originPoint.location_latitude, originPoint.location_longitude]\r\n                // let currentLocation = { name: 'Current Location', location: coords.join(',') }\r\n                routeOriginPoint = originCoords.join(',')\r\n            } else {\r\n                routeOriginPoint = originPoint.name\r\n            }\r\n        }\r\n\r\n        let routeDestinationPoint = ''\r\n\r\n        if (destinationPoint.name !== '') {\r\n\r\n            if (destinationPoint.location_latitude !== '' && destinationPoint.location_longitude !== '') {\r\n                let destinationCoords = [destinationPoint.location_latitude, destinationPoint.location_longitude]\r\n                routeDestinationPoint = destinationCoords.join(',')\r\n            } else {\r\n                routeDestinationPoint = destinationPoint.name\r\n            }\r\n        }\r\n\r\n        if (originPoint.name !== '' && destinationPoint.name !== '') {\r\n            const results = await directionsService.route({\r\n                origin: routeOriginPoint,\r\n                destination: routeDestinationPoint,\r\n                waypoints: waypts,\r\n                optimizeWaypoints: true,\r\n                travelMode: window.google.maps.TravelMode.DRIVING\r\n            })\r\n\r\n            setDirectionsResponse(results)\r\n            setShowMap(true)\r\n        }\r\n    }\r\n\r\n    const clearRoute = () => {\r\n\r\n        setDirectionsResponse(null)\r\n        setWayPoints([])\r\n        setOriginPoint({ name: '', location_latitude: '', location_longitude: '' })\r\n        if (params.resort === undefined) {\r\n            setDestinationPoint({ name: '', location_latitude: '', location_longitude: '' })\r\n        }\r\n        setShowMap(false)\r\n    }\r\n\r\n    const handleGoToMainRouteFinder = () => {\r\n        clearRoute()\r\n\r\n        setResort(undefined)\r\n        setDestinationPoint({ name: '', location_latitude: '', location_longitude: '' })\r\n        let path = `${window.$baseRouteFinderUrl}`;\r\n        //history.push(path);\r\n        navigate(path);\r\n        return false\r\n    }\r\n\r\n    return isLoaded ? (\r\n        <div className=\"empty-row\">\r\n            <Helmet>\r\n                <title>{resort !== undefined ? resort.Name + ' Route Finder | Discover the route to ' + resort.Name + ' (' + resort.TownName + ', ' + resort.PrefectureName + ') | SnowJapan' : 'Route Finder | Discover routes between ski areas throughout Japan | SnowJapan'}</title>\r\n                <meta name=\"description\" content='SnowJapan Route Finder allows you to find road routes between ski areas throughout Japan.' />\r\n            </Helmet>\r\n            <h3>Route Finder{resort !== undefined ? ': ' + resort.Name : ''}</h3>\r\n            <div className=\"sj-para\">\r\n                {generalMessageRouteFinder !== undefined && generalMessageRouteFinder.Title === 'Y' &&\r\n                    <>\r\n                        <strong>SnowJapan Route Finder</strong> allows you to discover routes between ski areas throughout Japan. Type ski area names, town or popular area names, and then select ski areas to choose your route. Add <strong>Waypoints</strong> if required. If you are in Japan and have location settings enabled, click on <strong>Use current location</strong> to use it as your <strong>Starting point</strong>. Learn more about Route Finder below.\r\n                        {resort !== undefined &&\r\n                            <a onClick={handleGoToMainRouteFinder} className='normal-link'> Click here for main Route Finder.</a>\r\n                        }\r\n                    </>\r\n                }\r\n                {generalMessageRouteFinder !== undefined && generalMessageRouteFinder.Title !== 'Y' &&\r\n                    <>\r\n                        <div className=\"sj-para\">\r\n                            <strong>SnowJapan Route Finder</strong> allows you to discover routes between ski areas throughout Japan.\r\n                        </div>\r\n                        <div className=\"sj-para sj-red-text\">\r\n                            Sorry, Route Finder is currently temporarily unavailable. Please try again later.\r\n                        </div>\r\n                    </>\r\n                }\r\n            </div>\r\n            {generalMessageRouteFinder !== undefined && generalMessageRouteFinder.Title === 'Y' &&\r\n                <>\r\n                    <div className=\"sj-para\">\r\n                        <div className=\"sj-row padding-top\">\r\n                            <div className=\"row sj-row sj-no-bg sj-row-no-margin-padding\">\r\n                                <div className=\"col-md-3 p-0\">\r\n                                    <h5>Starting point [A]</h5>\r\n                                </div>\r\n                                <div className=\"col-md-6 sj-list-text-holder\">\r\n                                    <WayPointAutocomplete controlName='txtStartingPoint' skiAreaList={skiAreaList} initialValue={originPoint.name} readOnly={false} onRoutePointSelect={data => {\r\n                                        setStartPoint(data);\r\n                                    }} />\r\n                                    {formerrors.currentLocation && (\r\n                                        <div className=\"text-danger\">{formerrors.currentLocation}</div>\r\n                                    )}\r\n                                </div>\r\n                                <div className=\"col-md-3 sj-list-text-holder\">\r\n                                    <Button className='w-100' onClick={useCurrentLocation}><h6 className='mt-1 mb-1'>Use current location</h6></Button>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                        {wayPoints.map((wayPoint, index) => (\r\n                            <div className=\"sj-row\" key={index}>\r\n                                <div className=\"row sj-row sj-no-bg sj-row-no-margin-padding\">\r\n                                    <div className=\"col-md-3 p-0\">\r\n                                        <h5>Waypoint [{alphabetArray[index]}]</h5>\r\n                                    </div>\r\n                                    <div className=\"col-md-6 sj-list-text-holder\">\r\n                                        <WayPointAutocomplete controlName='txtRoutePoint' skiAreaList={skiAreaList} slNo={index} initialValue='' readOnly={false} onRoutePointSelect={data => {\r\n                                            setWayPoint(data);\r\n                                        }} />\r\n                                    </div>\r\n                                    <div className=\"col-md-3 sj-list-text-holder\">\r\n                                        <button type=\"button\" class=\"btn-close mt-1\" aria-label=\"Close\" onClick={() => removeWayPoint(index)}></button>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                        ))}\r\n                        <div className=\"sj-row\">\r\n                            <div className=\"row sj-row sj-no-bg sj-row-no-margin-padding\">\r\n                                <div className=\"col-md-3 p-0\">\r\n                                    <h5>Destination point [{alphabetArray[wayPoints.length]}]</h5>\r\n                                </div>\r\n                                <div className=\"col-md-6 sj-list-text-holder\">\r\n                                    <WayPointAutocomplete controlName='txtDestinationPoint' skiAreaList={skiAreaList} readOnly={params.resort !== undefined} initialValue={destinationPoint.name} onRoutePointSelect={data => {\r\n                                        setEndPoint(data);\r\n                                    }} />\r\n                                </div>\r\n                                <div className=\"col-md-3\">\r\n\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                        <div className=\"sj-row\">\r\n                            <div className=\"row sj-row sj-no-bg sj-row-no-margin-padding\">\r\n                                <div className=\"col-md-3 p-0\">\r\n\r\n                                </div>\r\n                                <div className=\"col-md-6 sj-list-text-holder\">\r\n                                    <Button type=\"button\" className='w-100 calculate-route' onClick={calculateRoute} disabled={(originPoint.name != '' && destinationPoint.name != '') ? false : true}><h6 className='mt-1 mb-1'>Calculate route</h6></Button>\r\n                                </div>\r\n                                <div className=\"col-md-3\">\r\n\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                        <div>\r\n                            <div className=\"row sj-row sj-no-bg sj-row-no-margin-padding\">\r\n                                <div className=\"col-md-3 p-0\">\r\n\r\n                                </div>\r\n                                <div className=\"col-md-6 sj-row-no-margin-padding\">\r\n                                    <div className=\"row sj-row sj-no-bg sj-row-no-margin-padding\">\r\n                                        <div className=\"col-md-6 sj-list-text-holder\">\r\n                                            <Button onClick={addWayPoint} className='w-100 sj-box-dark-blue'><h6 className='mt-1 mb-1'>Add waypoint</h6></Button>\r\n                                        </div>\r\n                                        <div className=\"col-md-6 sj-list-text-holder\">\r\n                                            <Button variant=\"primary\" onClick={clearRoute} className='sj-large-font-button sj-red-bg w-100'><h6 className='mt-1 mb-1'>Clear route</h6></Button>\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n                                <div className=\"col-md-3\">\r\n\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                    {showMap &&\r\n                        <div className='map-container'>\r\n                            <GoogleMap\r\n                                mapContainerStyle={containerStyle}\r\n                                center={center}\r\n                                zoom={12}\r\n                                onLoad={onLoad}\r\n                                onUnmount={onUnmount}\r\n                                options={{\r\n                                    zoomControl: false,\r\n                                    streetViewControl: false,\r\n                                    mapTypeControl: false,\r\n                                    fullscreenControl: false\r\n                                }}\r\n                            >\r\n\r\n                                {directionsResponse && <DirectionsRenderer directions={directionsResponse} panel={summaryPanel} />}\r\n                            </GoogleMap>\r\n                            <div id='directions-panel'></div>\r\n                        </div>\r\n                    }\r\n                </>\r\n            }\r\n            <div className='sj-row pt-4'>\r\n                <div className=\"sj-box sj-box-dark-gray sj-round-full center-aligned\">\r\n                    <h4>About Route Finder</h4>\r\n                </div>\r\n                <div className='sj-row'>\r\n                    <div className=\"sj-para-image mb-4\"><img src=\"https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-Route-finder.svg\" alt=\"Japan Ski Areas Route Finder\" /></div>\r\n\r\n                    <ul className='mt-2'>\r\n                        <li>\r\n                            SnowJapan Route Finder uses Google Maps technology.\r\n                        </li>\r\n                        <li>\r\n                            SnowJapan does not control the maps, routes and information displayed on this page.\r\n                        </li>\r\n                        <li>\r\n                            This functionality and resulting maps and data are provided for general planning and reference purposes.\r\n                        </li>\r\n                        <li>\r\n                            Please research further if you intend to make a road trip.\r\n                        </li>\r\n                        <li>\r\n                            In times of heavy usage, Route Finder functionality might be temporarily unavailable.\r\n                        </li>\r\n                        <li>\r\n                            In such cases, please try again later.\r\n                        </li>\r\n                    </ul>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    ) : <></>\r\n}\r\n\r\nexport default RouteFinder;","import axios from 'axios'\r\nimport { useState, useEffect } from 'react'\r\nimport { useParams } from 'react-router-dom'\r\nimport { RenderBreak } from '../../helpers/Helper'\r\nimport Loader from '../Common/Loader'\r\n\r\nconst CommonPage = () => {\r\n\r\n    const params = useParams()\r\n\r\n    const [guide, setGuide] = useState(undefined);\r\n\r\n    const fetchGuides = async (guideUniqueName) => {\r\n        axios({\r\n            method: 'POST',\r\n            url: `${window.$baseAPIUrl}/listingGuideSection/guides/${guideUniqueName}`\r\n        }).then(resGuide => {\r\n            setGuide(resGuide.data)\r\n        })\r\n    };\r\n\r\n    useEffect(() => {\r\n        if (params !== undefined && params.type !== undefined) {\r\n            let commonPageNmae = params.type\r\n\r\n            if (commonPageNmae === 'about-snowjapan' || commonPageNmae === 'about-snowjapan-japanese' || commonPageNmae === 'about-daily-reports' || commonPageNmae === 'about-information-and-updates' || commonPageNmae === 'about-members-area') {\r\n                fetchGuides(commonPageNmae)\r\n            } else {\r\n                window.location.href = \"https://www.snowjapan.com/404.html\";\r\n            }\r\n        }\r\n    }, [params.type]);\r\n\r\n    if (guide !== undefined && guide !== null) {\r\n        return (\r\n            <>\r\n                <div dangerouslySetInnerHTML={{ __html: RenderBreak(guide.HtmlContent) }} />\r\n            </>\r\n        )\r\n    } else {\r\n        return (\r\n            <Loader />\r\n        )\r\n    }\r\n}\r\n\r\nexport default CommonPage","import { Link, useParams } from 'react-router-dom'\r\nimport { useState, useEffect } from 'react'\r\nimport axios from 'axios'\r\nimport SkiAreaListTable from '../SkiArea/SkiAreaListTable'\r\nimport AccommodationListTable from '../Accommodation/AccommodationListTable'\r\nimport ListingListTable from '../Listing/ListingListTable'\r\nimport Loader from \"../Common/Loader\"\r\n\r\nconst GeneralSearch = () => {\r\n\r\n    const params = useParams()\r\n\r\n    const [skiAreaList, setSkiAreaList] = useState([])\r\n    const [accommodationList, setAccommodationList] = useState([])\r\n    const [listingsList, setListingsList] = useState([])\r\n    const [guideList, setGuideList] = useState([])\r\n\r\n    const fetchSearchedSkiArea = async (keyword) => {\r\n\r\n        let areaIds = []\r\n\r\n        axios({\r\n            method: 'POST',\r\n            url: `${window.$baseAPIUrl}/skiarea/search/${keyword}`\r\n        }).then(dataSkiAreaList => {\r\n            setSkiAreaList(dataSkiAreaList.data)\r\n            const allAreaIds = [...new Set(dataSkiAreaList.data.map(item => item.MainArea_Id))]\r\n\r\n            areaIds = allAreaIds.filter(function (currentElement) {\r\n                return (currentElement);\r\n            })\r\n            return axios({\r\n                method: 'POST',\r\n                url: `${window.$baseAPIUrl}/accommodation/search/${keyword}`,\r\n                data: { areaIds: areaIds }\r\n            })\r\n        }).then(dataAccommodationList => {\r\n            setAccommodationList(dataAccommodationList.data)\r\n            return axios({\r\n                method: 'POST',\r\n                url: `${window.$baseAPIUrl}/listingGuideSection/listings/search/${keyword}`,\r\n                data: { areaIds: areaIds }\r\n            })\r\n        }).then(dataListingsList => {\r\n            setListingsList(dataListingsList.data)\r\n            return axios({\r\n                method: 'POST',\r\n                url: `${window.$baseAPIUrl}/listingGuideSection/guides/search/${keyword}`\r\n            })\r\n        }).then(dataGuidesList => {\r\n            setGuideList(dataGuidesList.data)\r\n        })\r\n    };\r\n\r\n    useEffect(() => {\r\n        if (params.keyword !== undefined) {\r\n            fetchSearchedSkiArea(params.keyword)\r\n        }\r\n    }, [params.keyword]);\r\n\r\n    if (params.keyword !== undefined) {\r\n        if (skiAreaList.length <= 0 && accommodationList.length <= 0) {\r\n            return (\r\n                <>\r\n                    <div>\r\n                        <h3>General Search</h3>\r\n                    </div>\r\n                    <div>\r\n                        <Loader />\r\n                    </div>\r\n                </>\r\n            )\r\n        } else {\r\n            return (\r\n                <>\r\n                    <div>\r\n                        <h3>General Search</h3>\r\n                    </div>\r\n                    {skiAreaList.length > 0 &&\r\n                        <div className='mt-5'>\r\n                            <div className=\"sj-box sj-box-blue sj-round-full center-aligned mt-3\">\r\n                                <h4>Ski Area Search Result for {params.keyword}</h4>\r\n                            </div>\r\n                            <SkiAreaListTable\r\n                                tableData={skiAreaList}\r\n                                headingColumns={['', 'Top', 'Bottom', 'Vertical', 'Steepest Slope', 'Ski Course', 'Ski Lifts', 'Reviews', 'Photos']}\r\n                                dataMapping={['Name', 'MaximumElevation', 'MinimumElevation', 'VerticalDifference', 'SteepestSlope', 'TotalSkiCourses', 'TotalSkiLifts', 'NumberOfReviews', 'NumberOfPhotos']}\r\n                                title=''\r\n                            />\r\n                        </div>\r\n                    }\r\n                    {accommodationList.length > 0 &&\r\n                        <div className='mt-5'>\r\n                            <div className=\"sj-box sj-box-blue sj-round-full center-aligned mt-3\">\r\n                                <h4>Accommodation Search Result for {params.keyword}</h4>\r\n                            </div>\r\n                            <AccommodationListTable\r\n                                tableData={accommodationList}\r\n                                headingColumns={['', '', 'Town', 'Prefecture']}\r\n                                dataMapping={['AreaName', 'Name', 'TownName', 'PrefectureName']}\r\n                                title=''\r\n                            />\r\n                        </div>\r\n                    }\r\n                    {listingsList.length > 0 &&\r\n                        <div className='mt-5'>\r\n                            <div className=\"sj-box sj-box-blue sj-round-full center-aligned mt-3\">\r\n                                <h4>Listing Search Result for {params.keyword}</h4>\r\n                            </div>\r\n                            <ListingListTable\r\n                                tableData={listingsList}\r\n                                headingColumns={['', '', 'Area', 'Prefecture']}\r\n                                dataMapping={['a', 'Name', 'AreaName', 'PrefectureName']}\r\n                                title=''\r\n                            />\r\n                        </div>\r\n                    }\r\n                    {guideList.length > 0 &&\r\n                        <div className='mt-5'>\r\n                            <h3>Guides</h3>\r\n                            <div className='table-container'>\r\n                                <table className='table-container__table sj-list-table sj-snow-table'>\r\n                                    <thead>\r\n                                        <tr>\r\n                                            <th>Name</th>\r\n                                            <th>Section</th>\r\n                                        </tr>\r\n                                    </thead>\r\n                                    <tbody>\r\n                                        {guideList.map(guide => (\r\n                                            <tr key={guide.Id}>\r\n                                                <td>\r\n                                                    <Link to={`${window.$baseGuideUrl}/${guide.SectionUniqueName}/${guide.UniqueName}`}>{guide.Name}</Link>\r\n                                                </td>\r\n                                                <td>{guide.SectionName}</td>\r\n                                            </tr>\r\n                                        ))}\r\n                                    </tbody>\r\n                                </table>\r\n                            </div>\r\n                        </div>\r\n                    }\r\n                </>\r\n            )\r\n        }\r\n    }\r\n    else {\r\n        return (\r\n            <>\r\n                <div>\r\n                    <h1>General Search</h1>\r\n                </div>\r\n                <div>\r\n                    <h1>Keyword cannot be blank</h1>\r\n                </div>\r\n            </>\r\n        )\r\n    }\r\n}\r\n\r\nexport default GeneralSearch","export default __webpack_public_path__ + \"static/media/Snow_Japan_Color_Logo.4b1b796e.svg\";","import { Link } from 'react-router-dom'\r\nimport { Image } from 'react-bootstrap'\r\nimport textlogo from '../../static-contents/Snow_Japan_Color_Logo.svg'\r\n\r\nconst Header = () => {\r\n  return (\r\n    <div className=\"center-aligned\">\r\n      <div className=\"d-none d-lg-block sj-top-logo-holder\">\r\n        <Link to='/'><Image src={textlogo} fluid /></Link>\r\n      </div>\r\n    </div>\r\n  );\r\n}\r\n\r\nexport default Header;","import axios from 'axios'\r\nimport { useState, useEffect } from 'react'\r\nimport { Link, useLocation } from 'react-router-dom'\r\nimport { Navbar, Nav, Image, NavDropdown } from 'react-bootstrap'\r\nimport textlogo from '../../static-contents/Snow_Japan_Color_Logo.svg'\r\n\r\nconst MainNav = () => {\r\n\r\n  const location = useLocation();\r\n  //const history = useHistory()\r\n\r\n  //const [showSnowData, setShowSnowData] = useState('');\r\n\r\n  const [nowList, setNowList] = useState([]);\r\n\r\n  const [selectedClassNameResort, setSelectedClassNameResort] = useState('')\r\n  const [selectedClassNameNows, setSelectedClassNameNows] = useState('')\r\n  const [selectedClassNameGuide, setSelectedClassNameGuide] = useState('')\r\n  const [selectedClassNameListing, setSelectedClassNameListing] = useState('')\r\n  const [selectedClassNameAbout, setSelectedClassNameAbout] = useState('')\r\n\r\n  const [isSkiAreaShown, setIsSkiAreaShown] = useState(false);\r\n  const [isDailyReportsShown, setIsDailyReportsShown] = useState(false);\r\n  const [isGuideShown, setIsGuideShown] = useState(false);\r\n  const [isListingShown, setIsListingShown] = useState(false);\r\n  const [isAboutShown, setIsAboutShown] = useState(false);\r\n  const [subPageURL, setSubPageURL] = useState('');\r\n\r\n  const fetchNowList = async () => {\r\n    axios({\r\n      method: 'POST',\r\n      url: `${window.$baseAPIUrl}/dailyreport/nows/all`\r\n    }).then(resNowList => {\r\n      setNowList(resNowList.data)\r\n    })\r\n  };\r\n\r\n  useEffect(() => {\r\n    fetchNowList()\r\n  }, []);\r\n\r\n  useEffect(() => {\r\n\r\n    let thisPathName = location.pathname.toLowerCase()\r\n    let classNameResort = ''\r\n    let classNameNows = ''\r\n    let classNameGuide = ''\r\n    let classNameListing = ''\r\n    let classNameAbout = ''\r\n    let thisSubPageURL = ''\r\n\r\n    if (thisPathName !== undefined) {\r\n      if (thisPathName.includes('/japan-ski-resorts') || thisPathName.includes('/route-finder')) {\r\n        classNameResort = 'sj-menu-link-Resort-section'\r\n        if (thisPathName.includes('/discover')) {\r\n          thisSubPageURL = 'ski-area-discover'\r\n        }\r\n        else if (thisPathName.includes('/japan-ski-resorts/listings') || thisPathName.includes('/japan-ski-resorts/prefecture') || thisPathName.includes('/japan-ski-resorts/town') || thisPathName.includes('/japan-ski-resorts/area')) {\r\n          thisSubPageURL = 'ski-area-listings'\r\n        }\r\n        else if (thisPathName.includes('/japan-ski-resorts/reviews')) {\r\n          thisSubPageURL = 'ski-area-reviews'\r\n        }\r\n        else if (thisPathName.includes('/japan-ski-resorts/photos')) {\r\n          thisSubPageURL = 'ski-area-photos'\r\n        }\r\n        else if (thisPathName.includes('/route-finder')) {\r\n          thisSubPageURL = 'route-finder'\r\n        }\r\n        else if (thisPathName.endsWith('/japan-ski-resorts') || thisPathName.endsWith('/japan-ski-resorts/')) {\r\n          thisSubPageURL = 'ski-area-home'\r\n        }\r\n      } else if (thisPathName.includes('/guides/the-japan-skiing-experience/the-ski-season-in-japan')) {\r\n        classNameResort = 'sj-menu-link-Resort-section'\r\n        thisSubPageURL = 'ski-area-the-season'\r\n      } else if (thisPathName.includes('/japan-daily-snow-weather-reports')) {\r\n        classNameNows = 'sj-menu-link-Nows-section'\r\n        if (thisPathName.includes('/japan-daily-snow-weather-reports/webcams')) {\r\n          thisSubPageURL = 'daily-report-webcams'\r\n        }\r\n        else if (thisPathName.includes('/japan-daily-snow-weather-reports/official-snow-depth')) {\r\n          thisSubPageURL = 'daily-report-snow-depth'\r\n        }\r\n        else if (thisPathName.includes('/japan-daily-snow-weather-reports/calendar')) {\r\n          thisSubPageURL = 'daily-report-calendar'\r\n        }\r\n        else if (thisPathName.includes('/japan-daily-snow-weather-reports/appi-kogen-Now')) {\r\n          thisSubPageURL = 'appi-kogen-now'\r\n        }\r\n        else if (thisPathName.includes('/japan-daily-snow-weather-reports/furano-Now')) {\r\n          thisSubPageURL = 'furano-now'\r\n        }\r\n        else if (thisPathName.includes('/japan-daily-snow-weather-reports/geto-kogen-Now')) {\r\n          thisSubPageURL = 'geto-kogen-now'\r\n        }\r\n        else if (thisPathName.includes('/japan-daily-snow-weather-reports/hakuba-now')) {\r\n          thisSubPageURL = 'hakuba-now'\r\n        }\r\n        else if (thisPathName.includes('/japan-daily-snow-weather-reports/kiroro-now')) {\r\n          thisSubPageURL = 'kiroro-now'\r\n        }\r\n        else if (thisPathName.includes('/japan-daily-snow-weather-reports/madarao-now')) {\r\n          thisSubPageURL = 'madarao-now'\r\n        }\r\n        else if (thisPathName.includes('/japan-daily-snow-weather-reports/myoko-now')) {\r\n          thisSubPageURL = 'myoko-now'\r\n        }\r\n        else if (thisPathName.includes('/japan-daily-snow-weather-reports/niseko-now')) {\r\n          thisSubPageURL = 'niseko-now'\r\n        }\r\n        else if (thisPathName.includes('/japan-daily-snow-weather-reports/nozawa-onsen-now')) {\r\n          thisSubPageURL = 'nozawa-onsen-now'\r\n        }\r\n        else if (thisPathName.includes('/japan-daily-snow-weather-reports/shiga-kogen-now')) {\r\n          thisSubPageURL = 'shiga-kogen-now'\r\n        }\r\n        else if (thisPathName.includes('/japan-daily-snow-weather-reports/yuzawa-now')) {\r\n          thisSubPageURL = 'yuzawa-now'\r\n        }\r\n        else if (thisPathName.includes('/japan-daily-snow-weather-reports/zao-now')) {\r\n          thisSubPageURL = 'zao-now'\r\n        }\r\n        else if (thisPathName.endsWith('/japan-daily-snow-weather-reports') || thisPathName.endsWith('/japan-daily-snow-weather-reports/')) {\r\n          thisSubPageURL = 'daily-report-home'\r\n        }\r\n      } else if (thisPathName.includes('/guides')) {\r\n        classNameGuide = 'sj-menu-link-Guide-section'\r\n        if (thisPathName.includes('/guides/introduction-to-skiing-in-japan')) {\r\n          thisSubPageURL = 'guides-introduction-to-skiing'\r\n        }\r\n        else if (thisPathName.includes('/guides/the-japan-skiing-experience')) {\r\n          thisSubPageURL = 'guides-the-japan-skiing-experience'\r\n        }\r\n        else if (thisPathName.includes('/guides/graphs')) {\r\n          thisSubPageURL = 'guides-graphs'\r\n        }\r\n        else if (thisPathName.includes('/guides/travel-guides')) {\r\n          thisSubPageURL = 'guides-travel-guides'\r\n        }\r\n        else if (thisPathName.includes('/guides/the-prefectures-of-japan')) {\r\n          thisSubPageURL = 'guides-prefectures-of-japan'\r\n        }\r\n        else if (thisPathName.includes('/guides/old-ski-areas-from-japans-past')) {\r\n          thisSubPageURL = 'guides-old-ski-areas'\r\n        }\r\n        else if (thisPathName.endsWith('/guides') || thisPathName.endsWith('/guides/')) {\r\n          thisSubPageURL = 'guides-home'\r\n        }\r\n      } else if (thisPathName.includes('/listings') || thisPathName.includes('/japan-places-to-stay')) {\r\n        classNameListing = 'sj-menu-link-Listing-section'\r\n        if (thisPathName.includes('/japan-places-to-stay')) {\r\n          thisSubPageURL = 'listings-accommodation'\r\n        }\r\n        else if (thisPathName.includes('/listings/resort-spotlights')) {\r\n          thisSubPageURL = 'listings-resort-spotlights'\r\n        }\r\n        else if (thisPathName.includes('/listings/lessons')) {\r\n          thisSubPageURL = 'listings-lessons'\r\n        }\r\n        else if (thisPathName.includes('/listings/travel')) {\r\n          thisSubPageURL = 'listings-travel'\r\n        }\r\n        else if (thisPathName.includes('/listings/job-listings')) {\r\n          thisSubPageURL = 'listings-job-listings'\r\n        }\r\n        else if (thisPathName.endsWith('/listings') || thisPathName.endsWith('/listings/')) {\r\n          thisSubPageURL = 'listings-home'\r\n        }\r\n      } else if (thisPathName.includes('/about-snowjapan') || thisPathName.includes('/about-snowjapan-japanese') || thisPathName.includes('/about-daily-reports') || thisPathName.includes('/about-information-and-updates') || thisPathName.includes('/contact')) {\r\n        classNameAbout = 'sj-menu-link-About-section'\r\n        if (thisPathName.includes('/about-snowjapan')) {\r\n          thisSubPageURL = 'about-snowjapan'\r\n        }\r\n        else if (thisPathName.includes('/about-snowjapan-japanese')) {\r\n          thisSubPageURL = 'about-snowjapan-japanese'\r\n        }\r\n        else if (thisPathName.includes('/about-daily-reports')) {\r\n          thisSubPageURL = 'about-daily-reports'\r\n        }\r\n        else if (thisPathName.includes('/about-information-and-updates')) {\r\n          thisSubPageURL = 'about-information-and-updates'\r\n        }\r\n        else if (thisPathName.includes('/about-members-area')) {\r\n          thisSubPageURL = 'about-members-area'\r\n        }\r\n        else if (thisPathName.includes('/contact')) {\r\n          thisSubPageURL = 'about-contact'\r\n        }\r\n      }\r\n      setSubPageURL(thisSubPageURL)\r\n    }\r\n\r\n    setSelectedClassNameResort(classNameResort)\r\n    setSelectedClassNameNows(classNameNows)\r\n    setSelectedClassNameGuide(classNameGuide)\r\n    setSelectedClassNameListing(classNameListing)\r\n    setSelectedClassNameAbout(classNameAbout)\r\n\r\n  }, [location]);\r\n\r\n  // Ski Area Sub Menu\r\n  const showSkiAreaSubMenu = (e) => {\r\n    if (!isSkiAreaShown) {\r\n      setIsSkiAreaShown(true);\r\n    }\r\n  }\r\n  const hideSkiAreaSubMenu = (e) => {\r\n    if (isSkiAreaShown) {\r\n      setIsSkiAreaShown(false);\r\n    }\r\n  }\r\n\r\n  const skiAreaMenuClicked = (e) => {\r\n    if (!isSkiAreaShown) {\r\n      setIsSkiAreaShown(true);\r\n    }\r\n  }\r\n\r\n  // Daily Reports Sub Menu\r\n  const showDailyReportsSubMenu = (e) => {\r\n    if (!isDailyReportsShown) {\r\n      setIsDailyReportsShown(true);\r\n    }\r\n  }\r\n\r\n  const hideDailyReportsSubMenu = (e) => {\r\n    if (isDailyReportsShown) {\r\n      setIsDailyReportsShown(false);\r\n    }\r\n  }\r\n\r\n  const dailyReportsMenuClicked = (e) => {\r\n    if (!isDailyReportsShown) {\r\n      setIsDailyReportsShown(true);\r\n    }\r\n  }\r\n\r\n  // Guide Reports Sub Menu\r\n  const showGuideSubMenu = (e) => {\r\n    if (!isGuideShown) {\r\n      setIsGuideShown(true);\r\n    }\r\n  }\r\n\r\n  const hideGuideSubMenu = (e) => {\r\n    if (isGuideShown) {\r\n      setIsGuideShown(false);\r\n    }\r\n  }\r\n\r\n  const guideMenuClicked = (e) => {\r\n    if (!isGuideShown) {\r\n      setIsGuideShown(true);\r\n    }\r\n  }\r\n\r\n  // Listing Reports Sub Menu\r\n  const showListingSubMenu = (e) => {\r\n    if (!isListingShown) {\r\n      setIsListingShown(true);\r\n    }\r\n  }\r\n\r\n  const hideListingSubMenu = (e) => {\r\n    if (isListingShown) {\r\n      setIsListingShown(false);\r\n    }\r\n  }\r\n\r\n  const listingMenuClicked = (e) => {\r\n    if (!isListingShown) {\r\n      setIsListingShown(true);\r\n    }\r\n  }\r\n\r\n  // About Reports Sub Menu\r\n  const showAboutSubMenu = (e) => {\r\n    if (!isAboutShown) {\r\n      setIsAboutShown(true);\r\n    }\r\n  }\r\n\r\n  const hideAboutSubMenu = (e) => {\r\n    if (isAboutShown) {\r\n      setIsAboutShown(false);\r\n    }\r\n  }\r\n\r\n  const aboutMenuClicked = (e) => {\r\n    if (!isAboutShown) {\r\n      setIsAboutShown(true);\r\n    }\r\n  }\r\n\r\n  return (\r\n    <div className=\"sticky-top\">\r\n      <div className=\"d-none d-lg-block\">\r\n        <Navbar bg=\"dark\" variant=\"dark\" expand=\"lg\" className=\"justify-content-center sj-nav-bar\" collapseOnSelect>\r\n          <div className='sj-top-menu'>\r\n            <Navbar.Collapse id=\"basic-navbar-nav\" className=\"justify-content-center\">\r\n              <Nav className=\"mr-auto justify-content-center\">\r\n                <NavDropdown title=\"Ski Areas\" id=\"navbarSkiArea\" show={isSkiAreaShown} onMouseEnter={showSkiAreaSubMenu} onClick={skiAreaMenuClicked} onMouseLeave={hideSkiAreaSubMenu} onSelect={hideSkiAreaSubMenu} className={`sj-menu-link sj-menu-link-Resort ${selectedClassNameResort}`}>\r\n                  <NavDropdown.Item as={Link} to={`${window.$baseSkiAreaUrl}`} eventKey={1.1} className={`${subPageURL === 'ski-area-home' ? \"active\" : \"\"}`}>Index</NavDropdown.Item>\r\n                  <NavDropdown.Item as={Link} to={`${window.$baseSkiAreaUrl}/discover`} eventKey={1.2} className={`${subPageURL === 'ski-area-discover' ? \"active\" : \"\"}`}>Discover</NavDropdown.Item>\r\n                  <NavDropdown.Item as={Link} to={`${window.$baseSkiAreaUrl}/listings`} eventKey={1.3} className={`${subPageURL === 'ski-area-listings' ? \"active\" : \"\"}`}>Lists</NavDropdown.Item>\r\n                  <NavDropdown.Item as={Link} to={`${window.$baseGuideUrl}/the-japan-skiing-experience/the-ski-season-in-japan`} eventKey={1.4} className={`${subPageURL === 'ski-area-the-season' ? \"active\" : \"\"}`}>The season</NavDropdown.Item>\r\n                  <NavDropdown.Item as={Link} to={`${window.$baseSkiAreaUrl}/reviews`} eventKey={1.5} className={`${subPageURL === 'ski-area-reviews' ? \"active\" : \"\"}`}>Reviews</NavDropdown.Item>\r\n                  <NavDropdown.Item as={Link} to={`${window.$baseSkiAreaUrl}/photos`} eventKey={1.6} className={`${subPageURL === 'ski-area-photos' ? \"active\" : \"\"}`}>Photos</NavDropdown.Item>\r\n                  <NavDropdown.Item as={Link} to={`${window.$baseRouteFinderUrl}`} eventKey={1.7} className={`${subPageURL === 'route-finder' ? \"active\" : \"\"}`}>Route Finder</NavDropdown.Item>\r\n                </NavDropdown>\r\n                <span className=\"d-none d-lg-block nav-divider\">|</span>\r\n                <NavDropdown title=\"Daily Reports\" id=\"navbarDailyReports\" show={isDailyReportsShown} onMouseEnter={showDailyReportsSubMenu} onClick={dailyReportsMenuClicked} onMouseLeave={hideDailyReportsSubMenu} onSelect={hideDailyReportsSubMenu} className={`sj-menu-link sj-menu-link-Nows ${selectedClassNameNows}`}>\r\n                  <NavDropdown.Item as={Link} to={`${window.$baseDailyReportUrl}`} eventKey={2.1} className={`${subPageURL === 'daily-report-home' ? \"active\" : \"\"}`}>Index</NavDropdown.Item>\r\n                  <NavDropdown.Item as={Link} to={`${window.$baseDailyReportUrl}/webcams`} eventKey={2.2} className={`${subPageURL === 'daily-report-webcams' ? \"active\" : \"\"}`}>Webcams</NavDropdown.Item>\r\n                  <NavDropdown.Item as={Link} to={`${window.$baseDailyReportUrl}/official-snow-depth`} eventKey={2.3} className={`${subPageURL === 'daily-report-snow-depth' ? \"active\" : \"\"}`}>Snow depth tables</NavDropdown.Item>\r\n                  <NavDropdown.Item as={Link} to={`${window.$baseDailyReportUrl}/calendar`} eventKey={2.4} className={`${subPageURL === 'daily-report-calendar' ? \"active\" : \"\"}`}>Reports calendar</NavDropdown.Item>\r\n                  {nowList.map((now, index) => (\r\n                    <NavDropdown.Item key={now.Id} as={Link} to={`${window.$baseDailyReportUrl}/${now.UniqueName}`} eventKey={now.UniqueName} className={`${subPageURL === now.UniqueName ? \"active\" : \"\"}`}>{now.Name}</NavDropdown.Item>\r\n                  ))}\r\n                </NavDropdown>\r\n                <span className=\"d-none d-lg-block nav-divider\">|</span>\r\n                <NavDropdown title=\"Guides\" id=\"navbarGuide\" show={isGuideShown} onMouseEnter={showGuideSubMenu} onClick={guideMenuClicked} onMouseLeave={hideGuideSubMenu} onSelect={hideGuideSubMenu} className={`sj-menu-link sj-menu-link-Guide ${selectedClassNameGuide}`}>\r\n                  <NavDropdown.Item as={Link} to={`${window.$baseGuideUrl}`} eventKey={3.1} className={`${subPageURL === 'guides-home' ? \"active\" : \"\"}`}>Index</NavDropdown.Item>\r\n                  <NavDropdown.Item as={Link} to={`${window.$baseGuideUrl}/introduction-to-skiing-in-japan`} eventKey={3.2} className={`${subPageURL === 'guides-introduction-to-skiing' ? \"active\" : \"\"}`}>Our introduction to skiing in Japan</NavDropdown.Item>\r\n                  <NavDropdown.Item as={Link} to={`${window.$baseGuideUrl}/the-japan-skiing-experience`} eventKey={3.3} className={`${subPageURL === 'guides-the-japan-skiing-experience' ? \"active\" : \"\"}`}>The Japan skiing experience</NavDropdown.Item>\r\n                  <NavDropdown.Item as={Link} to={`${window.$baseGuideUrl}/graphs`} eventKey={3.4} className={`${subPageURL === 'guides-graphs' ? \"active\" : \"\"}`}>Japan's ski areas in graphs</NavDropdown.Item>\r\n                  <NavDropdown.Item as={Link} to={`${window.$baseGuideUrl}/travel-guides`} eventKey={3.5} className={`${subPageURL === 'guides-travel-guides' ? \"active\" : \"\"}`}>Travel guides</NavDropdown.Item>\r\n                  <NavDropdown.Item as={Link} to={`${window.$baseGuideUrl}/the-prefectures-of-japan`} eventKey={3.6} className={`${subPageURL === 'guides-prefectures-of-japan' ? \"active\" : \"\"}`}>Introducing the prefectures</NavDropdown.Item>\r\n                  <NavDropdown.Item as={Link} to={`${window.$baseGuideUrl}/old-ski-areas-from-japans-past`} eventKey={3.7} className={`${subPageURL === 'guides-old-ski-areas' ? \"active\" : \"\"}`}>Old ski areas from Japan's past</NavDropdown.Item>\r\n                </NavDropdown>\r\n                <span className=\"d-none d-lg-block nav-divider\">|</span>\r\n                <NavDropdown title=\"Listings\" id=\"navbarListing\" show={isListingShown} onMouseEnter={showListingSubMenu} onClick={listingMenuClicked} onMouseLeave={hideListingSubMenu} onSelect={hideListingSubMenu} className={`sj-menu-link sj-menu-link-Listing ${selectedClassNameListing}`}>\r\n                  <NavDropdown.Item as={Link} to={`${window.$baseListingUrl}`} eventKey={4.1} className={`${subPageURL === 'listings-home' ? \"active\" : \"\"}`}>Index</NavDropdown.Item>\r\n                  <NavDropdown.Item as={Link} to={`${window.$baseAccommodationUrl}`} eventKey={4.2} className={`${subPageURL === 'listings-accommodation' ? \"active\" : \"\"}`}>Accommodation</NavDropdown.Item>\r\n                  <NavDropdown.Item as={Link} to={`${window.$baseListingUrl}/resort-spotlights`} eventKey={4.3} className={`${subPageURL === 'listings-resort-spotlights' ? \"active\" : \"\"}`}>Resort Spotlights</NavDropdown.Item>\r\n                  <NavDropdown.Item as={Link} to={`${window.$baseListingUrl}/lessons`} eventKey={4.4} className={`${subPageURL === 'listings-lessons' ? \"active\" : \"\"}`}>Lessons</NavDropdown.Item>\r\n                  <NavDropdown.Item as={Link} to={`${window.$baseListingUrl}/travel`} eventKey={4.5} className={`${subPageURL === 'listings-travel' ? \"active\" : \"\"}`}>Travel</NavDropdown.Item>\r\n                  <NavDropdown.Item as={Link} to={`${window.$baseListingUrl}/job-listings`} eventKey={4.6} className={`${subPageURL === 'listings-job-listings' ? \"active\" : \"\"}`}>Jobs Available</NavDropdown.Item>\r\n                </NavDropdown>\r\n                <span className=\"d-none d-lg-block nav-divider\">|</span>\r\n                <NavDropdown title=\"About\" id=\"navbarAbout\" show={isAboutShown} onMouseEnter={showAboutSubMenu} onClick={aboutMenuClicked} onMouseLeave={hideAboutSubMenu} onSelect={hideAboutSubMenu} className={`sj-menu-link sj-menu-link-About ${selectedClassNameAbout}`}>\r\n                  <NavDropdown.Item as={Link} to='/about-snowjapan' eventKey={5.1} className={`${subPageURL === 'about-snowjapan' ? \"active\" : \"\"}`}>About SnowJapan</NavDropdown.Item>\r\n                  <NavDropdown.Item as={Link} to='/about-snowjapan-japanese' eventKey={5.2} className={`${subPageURL === 'about-snowjapan-japanese' ? \"active\" : \"\"}`}>このサイトについて</NavDropdown.Item>\r\n                  <NavDropdown.Item as={Link} to='/about-daily-reports' eventKey={5.3} className={`${subPageURL === 'about-daily-reports' ? \"active\" : \"\"}`}>About daily reports</NavDropdown.Item>\r\n                  <NavDropdown.Item as={Link} to='/about-information-and-updates' eventKey={5.4} className={`${subPageURL === 'about-information-and-updates' ? \"active\" : \"\"}`}>About our information</NavDropdown.Item>\r\n                  <NavDropdown.Item as={Link} to='/about-members-area' eventKey={5.5} className={`${subPageURL === 'about-members-area' ? \"active\" : \"\"}`}>About member area</NavDropdown.Item>\r\n                  <NavDropdown.Item href='https://www.snowjapan.com/community' eventKey={5.6}>News & updates</NavDropdown.Item>\r\n                  <NavDropdown.Item as={Link} to='/contact' eventKey={5.7} className={`${subPageURL === 'about-contact' ? \"active\" : \"\"}`}>Contact us</NavDropdown.Item>\r\n                </NavDropdown>\r\n              </Nav>\r\n            </Navbar.Collapse>\r\n          </div>\r\n        </Navbar>\r\n      </div>\r\n      <div className=\"d-lg-none\">\r\n        <Navbar bg=\"dark\" variant=\"dark\" expand=\"lg\" className=\"sj-nav-bar-mobile\" collapseOnSelect>\r\n          <div className='sj-mobile-header'>\r\n            <Navbar.Brand href=\"/\" className=\"d-lg-none\">\r\n              <Image src={textlogo} className='sj-mobile-logo' />\r\n            </Navbar.Brand>\r\n            <Navbar.Toggle aria-controls=\"basic-navbar-nav\" style={{ float: 'right', marginTop: '10px' }} />\r\n          </div>\r\n          <div className='sj-top-menu'>\r\n            <Navbar.Collapse id=\"basic-navbar-nav\" className=\"justify-content-center\">\r\n              <Nav className=\"mr-auto justify-content-center\">\r\n                <NavDropdown title=\"Ski Areas\" id=\"navbarSkiArea\" className={`sj-menu-link sj-menu-link-Resort ${selectedClassNameResort}`}>\r\n                  <NavDropdown.Item as={Link} to={`${window.$baseSkiAreaUrl}`} eventKey={1.1}>Index</NavDropdown.Item>\r\n                  <NavDropdown.Item as={Link} to={`${window.$baseSkiAreaUrl}/discover`} eventKey={1.2}>Discover</NavDropdown.Item>\r\n                  <NavDropdown.Item as={Link} to={`${window.$baseSkiAreaUrl}/listings`} eventKey={1.3}>Lists</NavDropdown.Item>\r\n                  <NavDropdown.Item as={Link} to={`${window.$baseGuideUrl}/the-japan-skiing-experience/the-ski-season-in-japan`} eventKey={1.4}>The season</NavDropdown.Item>\r\n                  <NavDropdown.Item as={Link} to={`${window.$baseSkiAreaUrl}/reviews`} eventKey={1.5}>Reviews</NavDropdown.Item>\r\n                  <NavDropdown.Item as={Link} to={`${window.$baseSkiAreaUrl}/photos`} eventKey={1.6}>Photos</NavDropdown.Item>\r\n                  <NavDropdown.Item as={Link} to={`${window.$baseRouteFinderUrl}`} eventKey={1.7}>Route Finder</NavDropdown.Item>\r\n                </NavDropdown>\r\n                <span className=\"d-none d-lg-block nav-divider\">|</span>\r\n                <NavDropdown title=\"Daily Reports\" id=\"navbarDailyReports\" className={`sj-menu-link sj-menu-link-Nows ${selectedClassNameNows}`}>\r\n                  <NavDropdown.Item as={Link} to={`${window.$baseDailyReportUrl}`} eventKey={2.1}>Index</NavDropdown.Item>\r\n                  <NavDropdown.Item as={Link} to={`${window.$baseDailyReportUrl}/webcams`} eventKey={2.2}>Webcams</NavDropdown.Item>\r\n                  <NavDropdown.Item as={Link} to={`${window.$baseDailyReportUrl}/official-snow-depth`} eventKey={2.3}>Snow depth tables</NavDropdown.Item>\r\n                  <NavDropdown.Item as={Link} to={`${window.$baseDailyReportUrl}/calendar`} eventKey={2.4}>Reports calendar</NavDropdown.Item>\r\n                  {nowList.map((now, index) => (\r\n                    <NavDropdown.Item key={now.Id} as={Link} to={`${window.$baseDailyReportUrl}/${now.UniqueName}`} eventKey={now.UniqueName}>{now.Name}</NavDropdown.Item>\r\n                  ))}\r\n                </NavDropdown>\r\n                <span className=\"d-none d-lg-block nav-divider\">|</span>\r\n                <NavDropdown title=\"Guides\" id=\"navbarGuide\" className={`sj-menu-link sj-menu-link-Guide ${selectedClassNameGuide}`}>\r\n                  <NavDropdown.Item as={Link} to={`${window.$baseGuideUrl}`} eventKey={3.1}>Index</NavDropdown.Item>\r\n                  <NavDropdown.Item as={Link} to={`${window.$baseGuideUrl}/introduction-to-skiing-in-japan`} eventKey={3.2}>Our introduction to skiing in Japan</NavDropdown.Item>\r\n                  <NavDropdown.Item as={Link} to={`${window.$baseGuideUrl}/the-japan-skiing-experience`} eventKey={3.3}>The Japan skiing experience</NavDropdown.Item>\r\n                  <NavDropdown.Item as={Link} to={`${window.$baseGuideUrl}/graphs`} eventKey={3.4}>Japan's ski areas in graphs</NavDropdown.Item>\r\n                  <NavDropdown.Item as={Link} to={`${window.$baseGuideUrl}/travel-guides`} eventKey={3.5}>Travel guides</NavDropdown.Item>\r\n                  <NavDropdown.Item as={Link} to={`${window.$baseGuideUrl}/the-prefectures-of-japan`} eventKey={3.6}>Introducing the prefectures</NavDropdown.Item>\r\n                  <NavDropdown.Item as={Link} to={`${window.$baseGuideUrl}/old-ski-areas-from-japans-past`} eventKey={3.7}>Old ski areas from Japan's past</NavDropdown.Item>\r\n                </NavDropdown>\r\n                <span className=\"d-none d-lg-block nav-divider\">|</span>\r\n                <NavDropdown title=\"Listings\" id=\"navbarListing\" className={`sj-menu-link sj-menu-link-Listing ${selectedClassNameListing}`}>\r\n                  <NavDropdown.Item as={Link} to={`${window.$baseListingUrl}`} eventKey={4.1}>Index</NavDropdown.Item>\r\n                  <NavDropdown.Item as={Link} to={`${window.$baseAccommodationUrl}`} eventKey={4.2}>Accommodation</NavDropdown.Item>\r\n                  <NavDropdown.Item as={Link} to={`${window.$baseListingUrl}/resort-spotlights`} eventKey={4.3}>Resort Spotlights</NavDropdown.Item>\r\n                  <NavDropdown.Item as={Link} to={`${window.$baseListingUrl}/lessons`} eventKey={4.4}>Lessons</NavDropdown.Item>\r\n                  <NavDropdown.Item as={Link} to={`${window.$baseListingUrl}/travel`} eventKey={4.5}>Travel</NavDropdown.Item>\r\n                  <NavDropdown.Item as={Link} to={`${window.$baseListingUrl}/job-listings`} eventKey={4.6}>Jobs Available</NavDropdown.Item>\r\n                </NavDropdown>\r\n                <span className=\"d-none d-lg-block nav-divider\">|</span>\r\n                <NavDropdown title=\"About\" id=\"navbarAbout\" className={`sj-menu-link sj-menu-link-About ${selectedClassNameAbout}`}>\r\n                  <NavDropdown.Item as={Link} to='/about-snowjapan' eventKey={5.1}>About SnowJapan</NavDropdown.Item>\r\n                  <NavDropdown.Item as={Link} to='/about-snowjapan-japanese' eventKey={5.2}>このサイトについて</NavDropdown.Item>\r\n                  <NavDropdown.Item as={Link} to='/about-daily-reports' eventKey={5.3}>About daily reports</NavDropdown.Item>\r\n                  <NavDropdown.Item as={Link} to='/about-information-and-updates' eventKey={5.4}>About our information</NavDropdown.Item>\r\n                  <NavDropdown.Item as={Link} to='/about-members-area' eventKey={5.5}>About member area</NavDropdown.Item>\r\n                  <NavDropdown.Item href='https://www.snowjapan.com/community' eventKey={5.6}>News & updates</NavDropdown.Item>\r\n                  <NavDropdown.Item as={Link} to='/contact' eventKey={5.7}>Contact us</NavDropdown.Item>\r\n                </NavDropdown>\r\n              </Nav>\r\n            </Navbar.Collapse>\r\n          </div>\r\n        </Navbar >\r\n      </div >\r\n    </div>\r\n  );\r\n}\r\n\r\nexport default MainNav;","import { Link, useNavigate } from 'react-router-dom'\r\nimport { Form, FormControl, Button } from 'react-bootstrap'\r\nimport { useState, useEffect } from 'react'\r\nimport { useAuth } from '../CustomHooks/useAuth'\r\nimport axios from 'axios'\r\n\r\nconst SearchMemberBar = () => {\r\n\r\n  const { setAuth, auth, setUser, user } = useAuth()\r\n\r\n  const [loggedinUser, setLoggedinUser] = useState(user)\r\n  const navigate = useNavigate();\r\n  const [keyword, setKeyword] = useState('')\r\n\r\n  const handleChange = (e) => {\r\n    setKeyword(e.target.value)\r\n  }\r\n\r\n  const searchClicked = () => {\r\n    let path = `/search/${keyword}`;\r\n    //history.push(path);\r\n    navigate(path);\r\n  }\r\n\r\n  const logout = async () => {\r\n    try {\r\n      axios({\r\n        method: 'POST',\r\n        url: `${window.$baseSJAPIUrl}/Account/Logout`\r\n      }).then(logoutStatusResult => {\r\n\r\n        //console.log('logged out')\r\n        //console.log(logoutStatusResult?.data);\r\n\r\n        let loggedoutUser = logoutStatusResult.data\r\n        sessionStorage.setItem('sessionUser', null)\r\n        setAuth(false)\r\n        setUser(null)\r\n        //history.push('/');;\r\n        navigate('/')\r\n      })\r\n\r\n      //clear state and controlled inputs\r\n      //need value attrib on inputs for this\r\n\r\n      //setUserName('')\r\n      //setPwd('')\r\n    } catch (err) {\r\n      //console.log(err)\r\n    }\r\n  }\r\n\r\n  useEffect(() => {\r\n    setLoggedinUser(user)\r\n  }, [auth, user])\r\n\r\n  return (\r\n    <div className='sj-box-light-gray pt-2 pb-2'>\r\n      <Form className=\"d-flex justify-content-center\">\r\n        <FormControl type=\"search\" size=\"sm\" placeholder=\"Search\" style={{ width: 250 }} className=\"me-2\" aria-label=\"Search\" onBlur={handleChange} /> <Button variant=\"primary\" onClick={searchClicked}>Search</Button>\r\n      </Form>\r\n      {(loggedinUser !== null && loggedinUser.UserName !== null && loggedinUser.UserName !== '') &&\r\n        <div className='center-aligned'>Hello, {loggedinUser.FullName}: <Link to={`${window.$baseMemberUrl}`} className='normal-link'>member page</Link> [<a className='normal-link' onClick={logout}>Logout</a>]</div>\r\n      }\r\n    </div>\r\n  );\r\n}\r\n\r\nexport default SearchMemberBar;","export default __webpack_public_path__ + \"static/media/sj-logo-round.111cfa57.png\";","import { Link } from 'react-router-dom'\r\nimport { Image } from 'react-bootstrap'\r\nimport axios from 'axios'\r\nimport { useState, useEffect } from 'react'\r\nimport roundlogo from '../../static-contents/sj-logo-round.png'\r\n\r\nconst Footer = () => {\r\n\r\n  const [todayYear, setTodayYear] = useState('2023')\r\n\r\n  const fetchTodayDate = async () => {\r\n    axios({\r\n      method: 'GET',\r\n      url: `${window.$baseAPIUrl}/home/todaydate`\r\n    }).then(resTodayDate => {\r\n\r\n      if (resTodayDate != undefined && resTodayDate.data != undefined) {\r\n        //setTodayDateStr(resTodayDate.data)\r\n\r\n        console.log(\"today date is: \" + resTodayDate.data)\r\n        let strTodayDate = resTodayDate.data\r\n        let todayDateParts = strTodayDate.split('-')\r\n        if (todayDateParts.length === 3) {\r\n          setTodayYear(todayDateParts[0])\r\n        }\r\n      }\r\n    })\r\n  };\r\n\r\n  useEffect(() => {\r\n    fetchTodayDate()\r\n    //console.log(todayYear)\r\n  }, []);\r\n\r\n  return (\r\n    <div className=\"sj-row-no-margin-padding sj-footer\">\r\n      <footer className=\"py-5\">\r\n        <div className=\"sj-box-dark-gray pt-2 pb-1\">\r\n          <div className=\"row sj-row-small-margin-padding\">\r\n            <div className=\"col-md-2\">\r\n              <ul className=\"nav flex-column\">\r\n                <li className=\"nav-item mb-2\"><Link to='/' className='nav-link p-0 text-muted'>Home</Link></li>\r\n              </ul>\r\n            </div>\r\n            <div className=\"col-md-2\">\r\n              <ul className=\"nav flex-column\">\r\n                <li className=\"nav-item mb-2\"><Link to={`${window.$baseSkiAreaUrl}`} className='nav-link p-0 text-muted'>Ski Areas</Link></li>\r\n                <li className=\"nav-item mb-2\"><Link to={`${window.$baseDailyReportUrl}`} className='nav-link p-0 text-muted'>Daily Reports</Link></li>\r\n                <li className=\"nav-item mb-2\"><Link to={`${window.$baseGuideUrl}`} className='nav-link p-0 text-muted'>Guides</Link></li>\r\n                <li className=\"nav-item mb-2\"><Link to={`${window.$baseListingUrl}`} className='nav-link p-0 text-muted'>Listings</Link></li>\r\n              </ul>\r\n            </div>\r\n            <div className=\"col-md-3\">\r\n              <ul className=\"nav flex-column\">\r\n                <li className=\"nav-item mb-2\"><Link to='/about-snowjapan' className='nav-link p-0 text-muted'>About SnowJapan</Link></li>\r\n                <li className=\"nav-item mb-2\"><Link to='/about-snowjapan-japanese' className='nav-link p-0 text-muted'>このサイトについて</Link></li>\r\n                <li className=\"nav-item mb-2\"><Link to='/about-daily-reports' className='nav-link p-0 text-muted'>About daily reports</Link></li>\r\n                <li className=\"nav-item mb-2\"><Link to='/about-information-and-updates' className='nav-link p-0 text-muted'>About our information</Link></li>\r\n              </ul>\r\n            </div>\r\n            <div className=\"col-md-3\">\r\n              <ul className=\"nav flex-column\">\r\n                <li className=\"nav-item mb-2\"><Link to='https://www.snowjapan.com/community' className='nav-link p-0 text-muted'>News & updates</Link></li>\r\n                <li className=\"nav-item mb-2\"><Link to='/about-members-area' className='nav-link p-0 text-muted'>About member area</Link></li>\r\n              </ul>\r\n            </div>\r\n            <div className=\"col-md-2\">\r\n              <ul className=\"nav flex-column\">\r\n                <li className=\"nav-item mb-2\"><Link to='/contact' className='nav-link p-0 text-muted'>Contact us</Link></li>\r\n                <li className=\"nav-item mb-2\"><Link to='/about-links-and-privacy' className='nav-link p-0 text-muted'>Links & privacy</Link></li>\r\n              </ul>\r\n            </div>\r\n          </div>\r\n        </div>\r\n        <div className=\"py-2 my-2 border-top\">\r\n          <div className='sj-row-no-margin-padding'>\r\n            <div className='sj-footer-text-holder center-aligned'>\r\n              <strong>SnowJapan</strong> is the independent guide to winter sports in Japan.<br />\r\n              © Copyright 1999-{todayYear} SnowJapan.com. All rights reserved.\r\n            </div>\r\n            <div className='sj-footer-logo-holder center-aligned mt-2'>\r\n              <Link to='/'><Image src={roundlogo} /></Link>\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </footer>\r\n    </div>\r\n  );\r\n}\r\n\r\nexport default Footer;","//import { Popover, OverlayTrigger } from 'react-bootstrap'\r\n//import { useHistory, Link } from 'react-router-dom'\r\nimport Popup from \"reactjs-popup\";\r\n\r\nconst MapPath = ({ path }) => {\r\n\r\n    //const [mapConfig, setMapConfig] = useState({});\r\n    //const [pathStyle, setPathStyle] = useState({});\r\n\r\n    const jpjsconfig = {\r\n        \"jpjs1\": {\r\n            \"name\": \"HOKKAIDO\",\r\n            \"intro\": \"103 ski areas\",\r\n            \"url\": \"https://www.snowjapan.com/japan-ski-resorts/prefecture/hokkaido\", \"target\": \"same_window\",\r\n            \"upColor\": \"#0000CC\", \"overColor\": \"#CC0000\", \"downColor\": \"#0099FF\",\r\n            \"active\": true\r\n        },\r\n        \"jpjs2\": {\r\n            \"name\": \"AOMORI PREFECTURE\",\r\n            \"intro\": \"12 ski areas\",\r\n            \"url\": \"https://www.snowjapan.com/japan-ski-resorts/prefecture/aomori\", \"target\": \"same_window\",\r\n            \"upColor\": \"#0000CC\", \"overColor\": \"#CC0000\", \"downColor\": \"#0099FF\",\r\n            \"active\": true\r\n        },\r\n        \"jpjs3\": {\r\n            \"name\": \"IWATE PREFECTURE\",\r\n            \"intro\": \"19 ski areas\",\r\n            \"url\": \"https://www.snowjapan.com/japan-ski-resorts/prefecture/iwate\", \"target\": \"same_window\",\r\n            \"upColor\": \"#0000CC\", \"overColor\": \"#CC0000\", \"downColor\": \"#0099ff\",\r\n            \"active\": true\r\n        },\r\n        \"jpjs4\": {\r\n            \"name\": \"MIYAGI PREFECTURE\",\r\n            \"intro\": \"10 ski areas\",\r\n            \"url\": \"https://www.snowjapan.com/japan-ski-resorts/prefecture/miyagi\", \"target\": \"same_window\",\r\n            \"upColor\": \"#0000CC\", \"overColor\": \"#CC0000\", \"downColor\": \"#0099ff\",\r\n            \"active\": true\r\n        },\r\n        \"jpjs5\": {\r\n            \"name\": \"AKITA PREFECTURE\",\r\n            \"intro\": \"18 ski areas\",\r\n            \"url\": \"https://www.snowjapan.com/japan-ski-resorts/prefecture/akita\", \"target\": \"same_window\",\r\n            \"upColor\": \"#0000CC\", \"overColor\": \"#CC0000\", \"downColor\": \"#0099ff\",\r\n            \"active\": true\r\n        },\r\n        \"jpjs6\": {\r\n            \"name\": \"YAMAGATA PREFECTURE\",\r\n            \"intro\": \"20 ski areas\",\r\n            \"url\": \"https://www.snowjapan.com/japan-ski-resorts/prefecture/yamagata\", \"target\": \"same_window\",\r\n            \"upColor\": \"#0000CC\", \"overColor\": \"#CC0000\", \"downColor\": \"#0099ff\",\r\n            \"active\": true\r\n        },\r\n        \"jpjs7\": {\r\n            \"name\": \"FUKUSHIMA PREFECTURE\",\r\n            \"intro\": \"23 ski areas\",\r\n            \"url\": \"https://www.snowjapan.com/japan-ski-resorts/prefecture/fukushima\", \"target\": \"same_window\",\r\n            \"upColor\": \"#0000CC\", \"overColor\": \"#CC0000\", \"downColor\": \"#0099ff\",\r\n            \"active\": true\r\n        },\r\n        \"jpjs8\": {\r\n            \"name\": \"IBARAKI PREFECTURE\",\r\n            \"intro\": \"No ski areas\",\r\n            \"upColor\": \"#C0C0C0\", \"overColor\": \"#C0C0C0\", \"downColor\": \"#0099ff\",\r\n            \"active\": false\r\n        },\r\n        \"jpjs9\": {\r\n            \"name\": \"TOCHIGI PREFECTURE\",\r\n            \"intro\": \"5 ski areas\",\r\n            \"url\": \"https://www.snowjapan.com/japan-ski-resorts/prefecture/tochigi\", \"target\": \"same_window\",\r\n            \"upColor\": \"#0000CC\", \"overColor\": \"#CC0000\", \"downColor\": \"#0099ff\",\r\n            \"active\": true\r\n        },\r\n        \"jpjs10\": {\r\n            \"name\": \"GUNMA PREFECTURE\",\r\n            \"intro\": \"21 ski areas\",\r\n            \"url\": \"https://www.snowjapan.com/japan-ski-resorts/prefecture/gunma\", \"target\": \"same_window\",\r\n            \"upColor\": \"#0000CC\", \"overColor\": \"#CC0000\", \"downColor\": \"#0099ff\",\r\n            \"active\": true\r\n        },\r\n        \"jpjs11\": {\r\n            \"name\": \"SAITAMA PREFECTURE\",\r\n            \"intro\": \"1 ski area (sort of!)\",\r\n            \"url\": \"https://www.snowjapan.com/japan-ski-resorts/prefecture/saitama\", \"target\": \"same_window\",\r\n            \"upColor\": \"#0000CC\", \"overColor\": \"#CC0000\", \"downColor\": \"#0099ff\",\r\n            \"active\": true\r\n        },\r\n        \"jpjs12\": {\r\n            \"name\": \"CHIBA PREFECTURE\",\r\n            \"intro\": \"No ski areas\",\r\n            \"upColor\": \"#C0C0C0\", \"overColor\": \"#C0C0C0\", \"downColor\": \"#0099ff\",\r\n            \"active\": false\r\n        },\r\n        \"jpjs13\": {\r\n            \"name\": \"TOKYO\",\r\n            \"intro\": \"No ski areas\",\r\n            \"upColor\": \"#C0C0C0\", \"overColor\": \"#C0C0C0\", \"downColor\": \"#0099ff\",\r\n            \"active\": false\r\n        },\r\n        \"jpjs14\": {\r\n            \"name\": \"KANAGAWA PREFECTURE\",\r\n            \"intro\": \"No ski areas\",\r\n            \"upColor\": \"#C0C0C0\", \"overColor\": \"#C0C0C0\", \"downColor\": \"#0099ff\",\r\n            \"active\": false\r\n        },\r\n        \"jpjs15\": {\r\n            \"name\": \"NIIGATA PREFECTURE\",\r\n            \"intro\": \"51 ski areas\",\r\n            \"url\": \"https://www.snowjapan.com/japan-ski-resorts/prefecture/niigata\", \"target\": \"same_window\",\r\n            \"upColor\": \"#0000CC\", \"overColor\": \"#CC0000\", \"downColor\": \"#0099ff\",\r\n            \"active\": true\r\n        },\r\n        \"jpjs16\": {\r\n            \"name\": \"TOYAMA PREFECTURE\",\r\n            \"intro\": \"8 ski areas\",\r\n            \"url\": \"https://www.snowjapan.com/japan-ski-resorts/prefecture/toyama\", \"target\": \"same_window\",\r\n            \"upColor\": \"#0000CC\", \"overColor\": \"#CC0000\", \"downColor\": \"#0099ff\",\r\n            \"active\": true\r\n        },\r\n        \"jpjs17\": {\r\n            \"name\": \"ISHIKAWA PREFECTURE\",\r\n            \"intro\": \"6 ski areas\",\r\n            \"url\": \"https://www.snowjapan.com/japan-ski-resorts/prefecture/ishikawa\", \"target\": \"same_window\",\r\n            \"upColor\": \"#0000CC\", \"overColor\": \"#CC0000\", \"downColor\": \"#0099ff\",\r\n            \"active\": true\r\n        },\r\n        \"jpjs18\": {\r\n            \"name\": \"FUKUI PREFECTURE\",\r\n            \"intro\": \"6 ski areas\",\r\n            \"url\": \"https://www.snowjapan.com/japan-ski-resorts/prefecture/fukui\", \"target\": \"same_window\",\r\n            \"upColor\": \"#0000CC\", \"overColor\": \"#CC0000\", \"downColor\": \"#0099ff\",\r\n            \"active\": true\r\n        },\r\n        \"jpjs19\": {\r\n            \"name\": \"YAMANASHI PREFECTURE\",\r\n            \"intro\": \"3 ski areas\",\r\n            \"url\": \"https://www.snowjapan.com/japan-ski-resorts/prefecture/yamanashi\", \"target\": \"same_window\",\r\n            \"upColor\": \"#0000CC\", \"overColor\": \"#CC0000\", \"downColor\": \"#0099ff\",\r\n            \"active\": true\r\n        },\r\n        \"jpjs20\": {\r\n            \"name\": \"NAGANO PREFECTURE\",\r\n            \"intro\": \"78 ski areas\",\r\n            \"url\": \"https://www.snowjapan.com/japan-ski-resorts/prefecture/nagano\", \"target\": \"same_window\",\r\n            \"upColor\": \"#0000CC\", \"overColor\": \"#CC0000\", \"downColor\": \"#0099ff\",\r\n            \"active\": true\r\n        },\r\n        \"jpjs21\": {\r\n            \"name\": \"GIFU PREFECTURE\",\r\n            \"intro\": \"19 ski areas\",\r\n            \"url\": \"https://www.snowjapan.com/japan-ski-resorts/prefecture/gifu\", \"target\": \"same_window\",\r\n            \"upColor\": \"#0000CC\", \"overColor\": \"#CC0000\", \"downColor\": \"#0099ff\",\r\n            \"active\": true\r\n        },\r\n        \"jpjs22\": {\r\n            \"name\": \"SHIZUOKA PREFECTURE\",\r\n            \"intro\": \"2 ski areas\",\r\n            \"url\": \"https://www.snowjapan.com/japan-ski-resorts/prefecture/shizuoka\", \"target\": \"same_window\",\r\n            \"upColor\": \"#0000CC\", \"overColor\": \"#CC0000\", \"downColor\": \"#0099ff\",\r\n            \"active\": true\r\n        },\r\n        \"jpjs23\": {\r\n            \"name\": \"AICHI PREFECTURE\",\r\n            \"intro\": \"1 ski area\",\r\n            \"url\": \"https://www.snowjapan.com/japan-ski-resorts/prefecture/aichi\", \"target\": \"same_window\",\r\n            \"upColor\": \"#0000CC\", \"overColor\": \"#CC0000\", \"downColor\": \"#0099ff\",\r\n            \"active\": true\r\n        },\r\n        \"jpjs24\": {\r\n            \"name\": \"MIE PREFECTURE\",\r\n            \"intro\": \"No ski areas\",\r\n            \"upColor\": \"#C0C0C0\", \"overColor\": \"#C0C0C0\", \"downColor\": \"#0099ff\",\r\n            \"active\": false\r\n        },\r\n        \"jpjs25\": {\r\n            \"name\": \"SHIGA PREFECTURE\",\r\n            \"intro\": \"7 ski areas\",\r\n            \"url\": \"https://www.snowjapan.com/japan-ski-resorts/prefecture/shiga\", \"target\": \"same_window\",\r\n            \"upColor\": \"#0000CC\", \"overColor\": \"#CC0000\", \"downColor\": \"#0099ff\",\r\n            \"active\": true\r\n        },\r\n        \"jpjs26\": {\r\n            \"name\": \"KYOTO PREFECTURE\",\r\n            \"intro\": \"2 ski areas\",\r\n            \"url\": \"https://www.snowjapan.com/japan-ski-resorts/prefecture/kyoto\", \"target\": \"same_window\",\r\n            \"upColor\": \"#C0C0C0\", \"overColor\": \"#CC0000\", \"downColor\": \"#0099ff\",\r\n            \"active\": false\r\n        },\r\n        \"jpjs27\": {\r\n            \"name\": \"OSAKA PREFECTURE\",\r\n            \"intro\": \"No ski areas\",\r\n            \"upColor\": \"#C0C0C0\", \"overColor\": \"#C0C0C0\", \"downColor\": \"#0099ff\",\r\n            \"active\": false\r\n        },\r\n        \"jpjs28\": {\r\n            \"name\": \"HYOGO PREFECTURE\",\r\n            \"intro\": \"16 ski areas\",\r\n            \"url\": \"https://www.snowjapan.com/japan-ski-resorts/prefecture/hyogo\", \"target\": \"same_window\",\r\n            \"upColor\": \"#0000CC\", \"overColor\": \"#CC0000\", \"downColor\": \"#0099ff\",\r\n            \"active\": true\r\n        },\r\n        \"jpjs29\": {\r\n            \"name\": \"NARA PREFECTURE\",\r\n            \"intro\": \"No ski areas\",\r\n            \"upColor\": \"#C0C0C0\", \"overColor\": \"#C0C0C0\", \"downColor\": \"#0099ff\",\r\n            \"active\": false\r\n        },\r\n        \"jpjs30\": {\r\n            \"name\": \"WAKAYAMA PREFECTURE\",\r\n            \"intro\": \"No ski areas\",\r\n            \"upColor\": \"#C0C0C0\", \"overColor\": \"#C0C0C0\", \"downColor\": \"#0099ff\",\r\n            \"active\": false\r\n        },\r\n        \"jpjs31\": {\r\n            \"name\": \"TOTTORI PREFECTURE\",\r\n            \"intro\": \"6 ski areas\",\r\n            \"url\": \"https://www.snowjapan.com/japan-ski-resorts/prefecture/tottori\", \"target\": \"same_window\",\r\n            \"upColor\": \"#0000CC\", \"overColor\": \"#CC0000\", \"downColor\": \"#0099ff\",\r\n            \"active\": true\r\n        },\r\n        \"jpjs32\": {\r\n            \"name\": \"SHIMANE PREFECTURE\",\r\n            \"intro\": \"4 ski areas\",\r\n            \"url\": \"https://www.snowjapan.com/japan-ski-resorts/prefecture/shimane\", \"target\": \"same_window\",\r\n            \"upColor\": \"#0000CC\", \"overColor\": \"#CC0000\", \"downColor\": \"#0099ff\",\r\n            \"active\": true\r\n        },\r\n        \"jpjs33\": {\r\n            \"name\": \"OKAYAMA PREFECTURE\",\r\n            \"intro\": \"7 ski areas\",\r\n            \"url\": \"https://www.snowjapan.com/japan-ski-resorts/prefecture/okayama\", \"target\": \"same_window\",\r\n            \"upColor\": \"#0000CC\", \"overColor\": \"#CC0000\", \"downColor\": \"#0099ff\",\r\n            \"active\": true\r\n        },\r\n        \"jpjs34\": {\r\n            \"name\": \"HIROSHIMA PREFECTURE\",\r\n            \"intro\": \"11 ski areas\",\r\n            \"url\": \"https://www.snowjapan.com/japan-ski-resorts/prefecture/hiroshima\", \"target\": \"same_window\",\r\n            \"upColor\": \"#0000CC\", \"overColor\": \"#CC0000\", \"downColor\": \"#0099ff\",\r\n            \"active\": true\r\n        },\r\n        \"jpjs35\": {\r\n            \"name\": \"YAMAGUCHI PREFECTURE\",\r\n            \"intro\": \"No ski areas\",\r\n            \"upColor\": \"#C0C0C0\", \"overColor\": \"#C0C0C0\", \"downColor\": \"#0099ff\",\r\n            \"active\": false\r\n        },\r\n        \"jpjs36\": {\r\n            \"name\": \"TOKUSHIMA PREFECTURE\",\r\n            \"intro\": \"1 ski area\",\r\n            \"url\": \"https://www.snowjapan.com/japan-ski-resorts/prefecture/tokushima\", \"target\": \"same_window\",\r\n            \"upColor\": \"#0000CC\", \"overColor\": \"#CC0000\", \"downColor\": \"#0099ff\",\r\n            \"active\": true\r\n        },\r\n        \"jpjs37\": {\r\n            \"name\": \"KAGAWA PREFECTURE\",\r\n            \"intro\": \"No ski areas\",\r\n            \"upColor\": \"#C0C0C0\", \"overColor\": \"#CC0000\", \"downColor\": \"#0099ff\",\r\n            \"active\": false\r\n        },\r\n        \"jpjs38\": {\r\n            \"name\": \"EHIME PREFECTURE\",\r\n            \"intro\": \"3 ski areas\",\r\n            \"url\": \"https://www.snowjapan.com/japan-ski-resorts/prefecture/ehime\", \"target\": \"same_window\",\r\n            \"upColor\": \"#0000CC\", \"overColor\": \"#CC0000\", \"downColor\": \"#0099ff\",\r\n            \"active\": true\r\n        },\r\n        \"jpjs39\": {\r\n            \"name\": \"KOCHI PREFECTURE\",\r\n            \"intro\": \"1 ski area\",\r\n            \"url\": \"https://www.snowjapan.com/japan-ski-resorts/prefecture/kochi\", \"target\": \"same_window\",\r\n            \"upColor\": \"#C0C0C0\", \"overColor\": \"#CC0000\", \"downColor\": \"#0099ff\",\r\n            \"active\": false\r\n        },\r\n        \"jpjs40\": {\r\n            \"name\": \"FUKUOKA PREFECTURE\",\r\n            \"intro\": \"No ski areas\",\r\n            \"upColor\": \"#C0C0C0\", \"overColor\": \"#C0C0C0\", \"downColor\": \"#0099ff\",\r\n            \"active\": false\r\n        },\r\n        \"jpjs41\": {\r\n            \"name\": \"SAGA PREFECTURE\",\r\n            \"intro\": \"1 ski area\",\r\n            \"url\": \"https://www.snowjapan.com/japan-ski-resorts/prefecture/saga\", \"target\": \"same_window\",\r\n            \"upColor\": \"#C0C0C0\", \"overColor\": \"#CC0000\", \"downColor\": \"#0099ff\",\r\n            \"active\": false\r\n        },\r\n        \"jpjs42\": {\r\n            \"name\": \"NAGASAKI PREFECTURE\",\r\n            \"intro\": \"No ski areas\",\r\n            \"upColor\": \"#C0C0C0\", \"overColor\": \"#C0C0C0\", \"downColor\": \"#0099ff\",\r\n            \"active\": false\r\n        },\r\n        \"jpjs43\": {\r\n            \"name\": \"KUMAMOTO PREFECTURE\",\r\n            \"intro\": \"No ski areas\",\r\n            \"upColor\": \"#C0C0C0\", \"overColor\": \"#C0C0C0\", \"downColor\": \"#0099ff\",\r\n            \"active\": false\r\n        },\r\n        \"jpjs44\": {\r\n            \"name\": \"OITA PREFECTURE\",\r\n            \"intro\": \"1 ski area\",\r\n            \"url\": \"https://www.snowjapan.com/japan-ski-resorts/prefecture/oita\", \"target\": \"same_window\",\r\n            \"upColor\": \"#0000CC\", \"overColor\": \"#CC0000\", \"downColor\": \"#0099ff\",\r\n            \"active\": true\r\n        },\r\n        \"jpjs45\": {\r\n            \"name\": \"MIYAZAKI PREFECTURE\",\r\n            \"intro\": \"1 ski area\",\r\n            \"url\": \"https://www.snowjapan.com/japan-ski-resorts/prefecture/miyazaki\", \"target\": \"same_window\",\r\n            \"upColor\": \"#0000CC\", \"overColor\": \"#CC0000\", \"downColor\": \"#0099ff\",\r\n            \"active\": true\r\n        },\r\n        \"jpjs46\": {\r\n            \"name\": \"KAGOSHIMA PREFECTURE\",\r\n            \"intro\": \"No ski areas\",\r\n            \"upColor\": \"#C0C0C0\", \"overColor\": \"#C0C0C0\", \"downColor\": \"#0099ff\",\r\n            \"active\": false\r\n        },\r\n        \"jpjs47\": {\r\n            \"name\": \"OKINAWA PREFECTURE\",\r\n            \"intro\": \"No ski areas\",\r\n            \"upColor\": \"#C0C0C0\", \"overColor\": \"#C0C0C0\", \"downColor\": \"#0099ff\",\r\n            \"active\": false\r\n        },\r\n        \"general\": {\r\n            \"borderColor\": \"#9CA8B6\",\r\n            \"visibleNames\": \"#666666\",\r\n        }\r\n    };\r\n\r\n    /*const GetMapConfiguration = (thisPath) => {\r\n\r\n        const thisJPJSConfig = jpjsconfig[thisPath.Id]\r\n        const generalJPJSConfig = jpjsconfig[\"general\"]\r\n\r\n        var thisConfig = thisJPJSConfig\r\n\r\n        let thisPathStyle = { \"cursor\": \"default\" }\r\n\r\n        thisConfig.Stroke = generalJPJSConfig.borderColor\r\n\r\n        if (thisJPJSConfig !== undefined && thisJPJSConfig.active === true) {\r\n            thisConfig.Fill = thisJPJSConfig.upColor\r\n            thisPathStyle.cursor = \"pointer\"\r\n        } else {\r\n            thisConfig.Fill = thisPath.Fill\r\n            thisPathStyle.cursor = \"default\"\r\n        }\r\n\r\n        setMapConfig(thisConfig)\r\n        setPathStyle(thisPathStyle)\r\n    }\r\n\r\n    useEffect(() => {\r\n        GetMapConfiguration(path)\r\n    }, [path]);*/\r\n\r\n    const thisJPJSConfig = jpjsconfig[path.Id]\r\n    const generalJPJSConfig = jpjsconfig[\"general\"]\r\n\r\n    var thisConfig = thisJPJSConfig\r\n\r\n    var thisPathStyle = { \"cursor\": \"default\" }\r\n    var className = ''\r\n\r\n    thisConfig.Stroke = generalJPJSConfig.borderColor\r\n\r\n    if (thisJPJSConfig !== undefined && thisJPJSConfig.active === true) {\r\n        thisConfig.Fill = thisJPJSConfig.upColor\r\n        thisPathStyle.cursor = \"pointer\"\r\n        className = \"map-active\"\r\n    } else {\r\n        thisConfig.Fill = path.Fill\r\n        thisPathStyle.cursor = \"default\"\r\n    }\r\n\r\n    const containerIdSelector = \"#keepinside\";\r\n\r\n    return (\r\n\r\n        <Popup\r\n            trigger={open => (\r\n                <path id={path.Id} fill={thisConfig.Fill} stroke={thisConfig.Stroke} vectorEffect={path.VectorEffect} d={path.Data} style={thisPathStyle} className={className} />\r\n            )}\r\n            position=\"right center\"\r\n            closeOnDocumentClick=\"true\"\r\n            keepTooltipInside={containerIdSelector}\r\n        >\r\n            <div className='popup-content-header'><h5>{thisJPJSConfig.name}</h5></div>\r\n            <div className='popup-content-body'>\r\n                <div>\r\n                    {/*{thisJPJSConfig.intro}<br />*/}\r\n                    <a href={thisJPJSConfig.url} target='_blank' rel=\"noreferrer\">Click Here</a>\r\n                </div>\r\n            </div>\r\n        </Popup>\r\n    )\r\n}\r\n\r\nexport default MapPath;","import '../../map-style.css';\r\n\r\nimport MapPath from './MapPath'\r\n\r\nconst JapanMap = () => {\r\n\r\n    const map_paths =\r\n        [\r\n            { \"Id\": \"jpjs1\", \"Fill\": \"#EBECED\", \"Stroke\": \"#FFFFFF\", \"VectorEffect\": \"non-scaling-stroke\", \"Data\": \"M559,108.333c0,3-7.666,0.89-8.333,4.612s-14.333,1.722-14,5.722s-4.999,8-6.333,5.667s-4.001,4-8.334,3.667s-6.999-1.333-10.666-3.667S477.666,147,479,156.667s-2.333,7.667-2.666,10c-0.334,2.333-1.667,5.333-5,0C468,161.333,446,157,444.334,151c-1.667-6-6.668-1.666-10.334-6.333s-9.666-6.334-15.666-1.667S404.666,155.667,402,153.333s-5.666-5.667-6.333-8.667S387,140.333,383,149s-2.333,10.334,1.334,10.667c3.666,0.333,3.666,5,7,4.333c3.333-0.667,9.666,9.667,15,9.333c5.333-0.333,2.333,2.333-0.667,5s-4.667,2.333-8,0s-5.333,2.087-8.333,1.877s-1.667,8.457-5.667,9.457s-2.667,8-10.667,0s0-10.667,2-14.333s-0.972-11.333-5.485-13c-4.515-1.667-7.515-9-3.515-13s-1.333-12,6.334-12.333c7.666-0.333,3.999-4.667,8.332-5c4.334-0.333,0.334-8.333,5.334-8s-10.334-10.211-4-13.939S395.666,118,400,115s6.334,6,12.334,0.667s0.665-9.667,3.332-14c2.668-4.333-6.539-9.757,0.668-13c13.333-6,3.332-22.334,10.666-25.667s0.334-26-2.333-32.333s-3.001-8.667-0.667-11s3.334-7,5.334-4.333s2.332-8.667,5.666-3s8.881,8.971,13,14.333c6.892,8.973,6,16,19,27.667S491,69,491.667,72s8.333-2,11,4s5-3.333,7,1.333s15.667,10,18.667,4s10.333-8,11.333-11.333s5.001-4.333,3.667,1.667s-11.001,15-8.334,19.667s7.001,12,6.334,16.333s2.666,7,5.666,4S559,105.333,559,108.333z M572.334,57.333c-2.666-4-6,2.333-6,6.667S556,72.667,555,77.333s-11.859,8.463-9.333,12c1.667,2.333,0,4.667,3,5s3.667-10,7.333-10.333s4.667-9.667,7.438-11.302S567,68,569.667,68s4.667,0,10-3.667S575,61.333,572.334,57.333z M592.334,85.333C590.334,82,582,86,584,90.333S594.334,88.667,592.334,85.333z M567.667,103.667c2,1.333,5.667-1.667,3.667-3.333S565.667,102.333,567.667,103.667z M554.078,40.327c2.525,1.813,2.916,0.182,3.277-1.416s4.533-0.578,5.076-3.116s5.074-4.713,5.074-6.163c0-1.45,1.088-3.082,1.994-1.632c0.908,1.451,3.445-0.725,5.439-2.538s7.613-5.982,10.15-6.526c2.537-0.543,3.625,0.544,4.352-2.175c0.725-2.719,0.182-3.082-3.445-2.506c-3.625,0.575-3.807,5.95-8.52,6.131c-4.713,0.182-2.719-4.351-4.713-4.169c-1.994,0.181,0.363,4.713-1.813,5.075s-0.361,3.988-3.625,3.807c-3.264-0.181-3.807,5.62-6.346,6.526c-2.537,0.906-1.631,2.9-2.9,3.988C556.813,36.702,552.496,39.191,554.078,40.327z M354.125,165.375c2.742-0.374,0.625-4.125,2.25-6.125s-0.125-2.125-1.125-1s-3.125-0.375-3.125,2.375S351.375,165.75,354.125,165.375z\" },\r\n            { \"Id\": \"jpjs2\", \"Fill\": \"#EBECED\", \"Stroke\": \"#FFFFFF\", \"VectorEffect\": \"non-scaling-stroke\", \"Data\": \"M374.375,234.75c1.875,1.125,9.625-2.05,12.125-0.212s5.125,0.462,6.25,1.462s2.125-1.789,5.75-0.707s6.125,1.582,4.75,3.332s0.375,4.25-1.25,5.375c2.5,1.375,5.25,0,5.375-1.625s5.25-4.875,7-3.625s3.75-1.06,5.625-0.28s2.791-4.553,6.333-4.137c-1.334-3.667-7.667-5.333-9.508-10.333s-1.159-21.333-0.159-26.333s-2.667,1.667-12.762-7.333c-5.786-5.159-3.571,3-6.905,10.662c-3.333,7.662,5.667,0.338,12,0.005s2.335,17.833-5.333,12.333c-6.46-4.635-4.999-0.667-4.499,2s-2,3.833-5.167,1.667s-2.333-9.667-2.5-14.167s-5.166,0.5-7.166-2s-0.834,2-2.834,3.833s0.334,3.167,1.667,4.833s-3,3.5-2,5.667s-3.667,8.5-7.001,6.667C370.833,220,369.5,226.5,368,226.667s-1.834,1.167,0.5,3.167s-0.666,4,1.666,6.667C372.5,237.375,372.5,233.625,374.375,234.75z\" },\r\n            { \"Id\": \"jpjs3\", \"Fill\": \"#EBECED\", \"Stroke\": \"#FFFFFF\", \"VectorEffect\": \"non-scaling-stroke\", \"Data\": \"M435.5,259.167c0.833-4-7-10.5-5.333-13.333s-2.501-7.833-3.834-11.5c-3.542-0.417-4.458,4.917-6.333,4.137s-3.875,1.53-5.625,0.28s-6.875,2-7,3.625s-2.875,3-5.375,1.625c-1.625,1.125-4.125,6.75-2.875,10.5s-2.875,3.875-1.125,5.875s-2.25,2.5-0.125,6s-3.5,5.5-2.625,7.25s-2.625,3.25-1.5,7.125s3.875,4.25,3,6.625s1.5,8.125-0.25,10.125c4.875-0.875,5.375,3.588,8.75,3.294s1.75,1.581,3.75,3.706s3.25-2.25,5.75-1s4.375-0.625,4.25-3.375s-1.541-7.458,6.667-2.792c3.167-2.833,4.5-6.833,6.333-9.833s0.5-7.333,3.563-8.167c3.062-0.833,1.938-8.5,0-10.333C433.624,267.167,434.667,263.167,435.5,259.167z\" },\r\n            { \"Id\": \"jpjs4\", \"Fill\": \"#EBECED\", \"Stroke\": \"#FFFFFF\", \"VectorEffect\": \"non-scaling-stroke\", \"Data\": \"M419,300.125c0.125,2.75-1.75,4.625-4.25,3.375s-3.75,3.125-5.75,1s-0.375-4-3.75-3.706s-3.875-4.169-8.75-3.294c-1.75,2-4.25,3.875-7.375,3.125c0.125,2.5,3.625,3.5,2.5,5s-0.125,2.25-0.625,4s-2.125-0.5-1.875,2.75s2.446,3.875,1.348,6.125c-1.098,2.25-4.598,6.25-4.098,8.375s-2,4.25-2,5.625s-4.625,0.625-4.625,5.5c3.375,2.625,6.125-1.875,7,1.375s6.125-0.625,6.625,3.125s6.125,3.5,6,1.125s0.792-3.166,1.959-2.958c-1.667-6.667,2.166-12.667,4.832-15.35c2.667-2.683-1.5-2.484,0.5-4.484s4,1.167,4.668-1.333c0.666-2.5,2.332,1.5,7.832,5s2-5.167,0.334-8.5s1.666-5.667,2.334-10c0.666-4.333,0.666-5.833,3.833-8.667C417.459,292.667,418.875,297.375,419,300.125z\" },\r\n            { \"Id\": \"jpjs5\", \"Fill\": \"#EBECED\", \"Stroke\": \"#FFFFFF\", \"VectorEffect\": \"non-scaling-stroke\", \"Data\": \"M373.75,291.75c0.5,1.875,3.75,2.875,6.375,2.25s2.875,1.5,4.875,2.5s1,3.375,4.125,4.125s5.625-1.125,7.375-3.125s-0.625-7.75,0.25-10.125s-1.875-2.75-3-6.625s2.375-5.375,1.5-7.125s4.75-3.75,2.625-7.25s1.875-4,0.125-6s2.375-2.125,1.125-5.875s1.25-9.375,2.875-10.5s-0.125-3.625,1.25-5.375s-1.125-2.25-4.75-3.332S393.875,237,392.75,236s-3.75,0.375-6.25-1.462s-10.25,1.337-12.125,0.212s-1.875,2.625-4.209,1.75c2.333,2.667,1.5,8.333,1,11.833s-4.999,8-7.666,6.5s-1,0.167-0.833,3.167s2,1.5,3.833,0.667s5.5,1.167,5.167,3.5s5,1.667,2.167,5.833c-2.834,4.167-2.667,14.333-4.5,15.333c-1.834,1-2,4.833-1.834,7.667C369.25,291.75,373.25,289.875,373.75,291.75z\" },\r\n            { \"Id\": \"jpjs6\", \"Fill\": \"#EBECED\", \"Stroke\": \"#FFFFFF\", \"VectorEffect\": \"non-scaling-stroke\", \"Data\": \"M362.875,321.5c2,2,4.875,1.5,5.625,2.734c0.75,1.233-2.5,4.641-4.75,4.516s-3.125,0.75-2.75,2.25s0.625,4.25-1.5,7.5s1.125,5,3.125,5.125s3.5,1.25,5.25,0.75s2.5,2.5,3.625,1.875s2.875,2.625,3.875,1.25s2.75,0.5,4.375-1.875s0-2.75,0-7.625s4.625-4.125,4.625-5.5s2.5-3.5,2-5.625s3-6.125,4.098-8.375c1.099-2.25-1.098-2.875-1.348-6.125s1.375-1,1.875-2.75s-0.5-2.5,0.625-4s-2.375-2.5-2.5-5C386,299.875,387,297.5,385,296.5s-2.25-3.125-4.875-2.5s-5.875-0.375-6.375-2.25s-4.5,0-6.25-0.75c0.166,2.833-0.333,3.833-2.333,6.167s-2.5,8.167-5.167,9.667s-1.833,4.5-4.333,7c2.542,0.583,3.208,1.792,5.333,2.667S360.875,319.5,362.875,321.5z\" },\r\n            { \"Id\": \"jpjs7\", \"Fill\": \"#EBECED\", \"Stroke\": \"#FFFFFF\", \"VectorEffect\": \"non-scaling-stroke\", \"Data\": \"M399.375,343.625c0.125,2.375-5.5,2.625-6-1.125s-5.75,0.125-6.625-3.125s-3.625,1.25-7-1.375c0,4.875,1.625,5.25,0,7.625s-3.375,0.5-4.375,1.875s-2.75-1.875-3.875-1.25s-1.875-2.375-3.625-1.875s-3.25-0.625-5.25-0.75c-1.625,4.375-5.375,6-5.625,8.5s1.834,6.75-1.333,5.5s-3.292,2.875-6.292,2.25s-0.875,4.375-3.125,6s0.625,4.75,0,6.5s2.5,5,1.125,7c0.875,0.75,3.75,0.625,4.625,1.5c2-2.75,4.25-2.5,6.625-4.25s6.375-1.875,6.625-3.875s3.375-1.5,7.75-0.625s2.75,3.125,4.75,3.625s1.5,2.375,1.942,4.125c2.308,0.625,0.933,2,2.683,2.25s1.125,2,2.5,2.375s2.75,0.5,4.125-0.75s-1.125-3.375,0.5-3.625s2,2.508,3.25,2.191s2.834,0.851,4.417,1.518c1.333-2.334,0.5-4.167,4-4.667s2.833-8,2.333-9.665s2.834-10.002,1.5-13.002s-2-9.166-3.666-15.833C400.167,340.459,399.25,341.25,399.375,343.625z\" },\r\n            { \"Id\": \"jpjs8\", \"Fill\": \"#EBECED\", \"Stroke\": \"#FFFFFF\", \"VectorEffect\": \"non-scaling-stroke\", \"Data\": \"M392.75,382.316c-1.25,0.316-1.625-2.441-3.25-2.191s0.875,2.375-0.5,3.625s-2.75,1.125-4.125,0.75s-0.75-2.125-2.5-2.375s-0.375-1.625-2.683-2.25c0.442,1.75-0.442,4.25-0.196,5.698c0.247,1.447,0.504,3.802-0.871,4.302s0,5,0.75,6.625s-2.125,6-4.5,4.75s-2.125,1.5-4.5,1.5s-4.625,3.25-5.625,5.125s0,3.625-0.625,6.375s2.625,6.125,3.25,7.5c2.791,1.084,2.792-0.584,4.959,0c2.166,0.584,4.333,2.666,6.25,1.666c1.916-1,9.082-4.582,10.582-2.666s1.917,2.952,3.25,2.934c1.334-0.018,3.25,4.566,6.584,5.316c1-1-4.334-7.166-5.166-9c-0.834-1.834-2.667-9.5-4-12.166c-1.334-2.667,2.833-5,1.833-7.5s4.167-14.167,5.5-16.5C395.584,383.167,394,382,392.75,382.316z\" },\r\n            { \"Id\": \"jpjs9\", \"Fill\": \"#EBECED\", \"Stroke\": \"#FFFFFF\", \"VectorEffect\": \"non-scaling-stroke\", \"Data\": \"M351.5,385.573c-1,1.552-4.625,6.552-0.25,7.427s3.25,2.5,2.375,3.875s-4.875,5.75-2.375,6.75s1.75,2.875,3.875,2.875s6,1,5.375,2.75c1.125,0.625,3.25-2.25,4.25-1.375c1-1.875,3.25-5.125,5.625-5.125s2.125-2.75,4.5-1.5s5.25-3.125,4.5-4.75s-2.125-6.125-0.75-6.625s1.118-2.854,0.871-4.302c-0.246-1.448,0.639-3.948,0.196-5.698s0.058-3.625-1.942-4.125s-0.375-2.75-4.75-3.625s-7.5-1.375-7.75,0.625s-4.25,2.125-6.625,3.875s-4.625,1.5-6.625,4.25S352.5,384.021,351.5,385.573z\" },\r\n            { \"Id\": \"jpjs10\", \"Fill\": \"#EBECED\", \"Stroke\": \"#FFFFFF\", \"VectorEffect\": \"non-scaling-stroke\", \"Data\": \"M341.75,376.5c-1.125,3.125-4.125,0.65-3.875,3.2s-4.375,3.175-4.375,5.175s-1.75,2.125-4.25,2.875s-6,0.625-5.875,2.625s-3.5,1.875-3.125,4.375s-5.18,2.75-0.027,6.25s7.027-1.625,7.277,1.875s-2.625,5-0.875,6.75s1.875,7.5,2.875,8.5c1.25-2.125,4.358-2.558,6.5-3.875c1.717-1.057,1.375-1.5,3.5-1.875s1.5-3.25,2.5-5.5s5,0.75,6.919,0.75c1.92,0,5.706,2.75,7.456,1.875s3.5,1.5,4.125-0.25s-3.25-2.75-5.375-2.75s-1.375-1.875-3.875-2.875s1.5-5.375,2.375-6.75s2-3-2.375-3.875s-0.75-5.875,0.25-7.427c1-1.553-1.5-1.948,0.5-4.698c-0.875-0.875-3.75-0.75-4.625-1.5C346,381.375,342.875,373.375,341.75,376.5z\" },\r\n            { \"Id\": \"jpjs11\", \"Fill\": \"#EBECED\", \"Stroke\": \"#FFFFFF\", \"VectorEffect\": \"non-scaling-stroke\", \"Data\": \"M360.5,409.25c-0.625,1.75-2.375-0.625-4.125,0.25s-5.536-1.875-7.456-1.875c-1.919,0-5.919-3-6.919-0.75s-0.375,5.125-2.5,5.5s-1.783,0.818-3.5,1.875c-2.142,1.317-5.25,1.75-6.5,3.875c1,1,0,2,0.875,3.125s5.625,4,6.875,2.25s5.125-1.5,6.25-0.125s5.375-0.125,6.75,2.25s6.125-0.125,7.25,1.5s3.125-2.375,4.25-1s3.625-1.125,5.625-0.125s0.625-2.875,0-4.25s-3.875-4.75-3.25-7.5s-0.375-4.5,0.625-6.375C363.75,407,361.625,409.875,360.5,409.25z\" },\r\n            { \"Id\": \"jpjs12\", \"Fill\": \"#EBECED\", \"Stroke\": \"#FFFFFF\", \"VectorEffect\": \"non-scaling-stroke\", \"Data\": \"M392.416,423.684c-1.333,0.019-1.75-1.018-3.25-2.934s-8.666,1.666-10.582,2.666c-1.917,1-4.084-1.082-6.25-1.666c-2.167-0.584-2.168,1.084-4.959,0c0.625,1.375,2,5.25,0,4.25c0.625,1.625,1.5,3.375-0.375,6c2.334,0.834,2.834-2,6,0.166c3.166,2.167,0.166,5.668-3.334,6.834s-3.832,7.166-3.666,10s-2.166,10.666,0,11.834c2.166,1.166,6.5-5.168,7.834-6.834c1.333-1.666,7-2.334,9.632-3.666c2.633-1.334,0.534-6.334,0.034-9c-0.5-2.667,4.666-6.668,7.166-9.668S398,430,399,429C395.666,428.25,393.75,423.666,392.416,423.684z\" },\r\n            { \"Id\": \"jpjs13\", \"Fill\": \"#EBECED\", \"Stroke\": \"#FFFFFF\", \"VectorEffect\": \"non-scaling-stroke\", \"Data\": \"M367.375,426c-2-1-4.5,1.5-5.625,0.125s-3.125,2.625-4.25,1s-5.875,0.875-7.25-1.5s-5.625-0.875-6.75-2.25s-5-1.625-6.25,0.125c2.75,3,0.625,6.5,5.75,6.75s4.214,3.125,5.919,2.875c1.706-0.25,3.081,3.625,5.081,3s0.5-6,3.25-4.125s4.042,4.875,6.584,3.5c-1-2.166,0.832-4.334,3.166-3.5C368.875,429.375,368,427.625,367.375,426z\" },\r\n            { \"Id\": \"jpjs14\", \"Fill\": \"#EBECED\", \"Stroke\": \"#FFFFFF\", \"VectorEffect\": \"non-scaling-stroke\", \"Data\": \"M357.25,432c-2.75-1.875-1.25,3.5-3.25,4.125s-3.375-3.25-5.081-3c-1.705,0.25-0.794-2.625-5.919-2.875c0.375,3.625,0.5,6.75-1.25,6.75s-4.625,2.5-5.25,4.375c3.625,0.5,3.875,2.375,2.25,4.375s1.166,2.625,0.958,3.875s1.834,0.667,3.626,2.209c0.666-2,1.832-5.668,6.666-6.5c4.834-0.834,8.666,1,8.5,4.832c-0.166,3.833,1.334,3.168,3.834,0.168S362,446.666,361,446.166s-1.834-5-1.334-6.832c0.5-1.834,5.168-1.668,4.168-3.834C361.292,436.875,360,433.875,357.25,432z\" },\r\n            { \"Id\": \"jpjs15\", \"Fill\": \"#EBECED\", \"Stroke\": \"#FFFFFF\", \"VectorEffect\": \"non-scaling-stroke\", \"Data\": \"M298.75,386.75c-2-2.25-0.25-6-3.625-9.125c2.125,0.125,4.5-2.125,7.5-2.5s2.125-1.875,4.75-2.125s1.001-2.324,7.5-2.5c4.625-0.125,5-7.25,9.25-8.25s2.375-6.875,4.375-7.25s3-13.75,13.125-15.75s11.542-9.75,11.542-12.916c0-3.167,0-10,2.5-12.5c2.542,0.583,3.208,1.792,5.333,2.667s-0.125,3,1.875,5s4.875,1.5,5.625,2.734c0.75,1.233-2.5,4.641-4.75,4.516s-3.125,0.75-2.75,2.25s0.625,4.25-1.5,7.5s1.125,5,3.125,5.125c-1.625,4.375-5.375,6-5.625,8.5s1.834,6.75-1.333,5.5s-3.292,2.875-6.292,2.25s-0.875,4.375-3.125,6s0.625,4.75,0,6.5s2.5,5,1.125,7s-4.5-6-5.625-2.875s-4.125,0.65-3.875,3.2s-4.375,3.175-4.375,5.175s-1.75,2.125-4.25,2.875c1.084-6.916-3.25-2.992-4.162-9.17c-0.576-3.9-6.088-1.58-7.067,0.795s-1.687,0.791-1.555,2.941c0.132,2.149-2.632,0.518-3.367,1.469c-0.734,0.953-2.265-0.451-3.265,0.973S306,385.334,307.666,383c1.667-2.334-0.832-1.666-3.666-2.125s-0.666,2.125-2.5,2.959C299.667,384.667,301,386,298.75,386.75z M317,344.084c1.084,0.75,3.334-2.918,4.584-2.918s0.666-3.332,2-3.916c1.332-0.584,2.583-4.334,0-3.75c-2.584,0.584-3.335,1.499-3.168-0.584c0.168-2.082,3.834-4.917,2.084-9.75c-0.658-1.817-1,3.5-3.5,4.417c-2.5,0.916-3.001,3.083-4.584,5.25c-1.582,2.166-0.082,6,0.668,4.75s3.415,0.332,2.082,1.332c-1.332,1-1.833,1.751-1.5,2.668c0.334,0.916-3.083,1.75-2.5,3C313.75,345.834,315.916,343.334,317,344.084z\" },\r\n            { \"Id\": \"jpjs16\", \"Fill\": \"#EBECED\", \"Stroke\": \"#FFFFFF\", \"VectorEffect\": \"non-scaling-stroke\", \"Data\": \"M269.443,386.5c0.443,2.334-2.776,5.666-1.443,8.666s-2.667,5.668-0.333,9.5c1.667-3.999,5.167-1.5,5.333,0c0.167,1.501,1.5,2.167,2.5,0c1-2.166,3.833-6.031,5.333-4.932s2.833-1.434,3.833,0c1,1.433,3-0.901,4.333,1.266s4.083-0.001,6.125,3.166c-0.708-4.5,2.542-7,2.875-9.332c0.333-2.334,2.75-5.834,0.75-8.084s-0.25-6-3.625-9.125c-2.125-0.125-2.625,2.25-5.625,1.75s-2.75,7.25-4.5,7.25s-4.125,0-5.625,0.375s-3.042-2-5.208-3.334c-2.167-1.333,3.167-3.5,2.167-4.832C270.5,377.167,269,384.166,269.443,386.5z\" },\r\n            { \"Id\": \"jpjs17\", \"Fill\": \"#EBECED\", \"Stroke\": \"#FFFFFF\", \"VectorEffect\": \"non-scaling-stroke\", \"Data\": \"M254.5,412.166c3.333,1.668,3-0.667,4.667,0c1.667,0.668,5.167,3,7.167,2.334c2-4.334,3.666-6.001,1.333-9.834c-2.333-3.832,1.667-6.5,0.333-9.5s1.886-6.332,1.443-8.666s1.058-9.333,6.891-7.666c-1-1.334-0.5-0.668-0.5-3.5c0-2.834-2.167-1.334-4.5-1.834s0.833-2.334-0.167-3.998s1.167-1.336,2.5,0s3-0.168,4.333-2.336c1.333-2.167,2.167,1,4.167-1.666s-0.333-2.834-0.333-4.666c0-1.834,3.667-0.334,3.833-2.334s-2.167-2.5-3.5-1.5s-6,0.834-6.833,3s-5.667-0.334-6.333,1.666s-3.5,3-3.667,5s-2,4.168-0.667,5C266,372.499,266,375,267,379.5s-3.833,7.834-4,11.5s-9.333,10.166-9.667,11.666c-0.178,0.8-2.058,1.978-3.802,3.131C253.333,407.166,251.167,410.499,254.5,412.166z\" },\r\n            { \"Id\": \"jpjs18\", \"Fill\": \"#EBECED\", \"Stroke\": \"#FFFFFF\", \"VectorEffect\": \"non-scaling-stroke\", \"Data\": \"M226.375,440.625c-0.375,1.375,1.5,2.25,3.625,2s1.625,1.875,5,0c0.333-2.041,3.333-2.125,4.5-4.291c1.167-2.167,4.333-0.168,4.667-2.141c0.333-1.974,3.833-0.693,3-4.193s1.833-1.666,4-0.632c0.5-1.368-0.5-5.868,2.833-5.368s4.833,2,7.5,0s6,1.361,7.667-1.402s-4.833-5.764-2.833-10.098c-2,0.666-5.5-1.666-7.167-2.334c-1.667-0.667-1.333,1.668-4.667,0c-3.333-1.667-1.167-5-4.968-6.369c-1.529,1.01-2.954,2.002-3.032,2.703c-0.167,1.5-3.667,2.834-3.333,5s-3.333,1.666-2.167,4s0.833,5.5,2.167,6.334c1.333,0.833,3,6.166,0.833,6.666s0.167-3.166-2.333-2.5s-0.5,4.666-2.167,4.166s-2.167,2.834-4.667,2c-2.5-0.833-1.5,3.834-4.333,3.334c-3.127-0.552-4.367-0.938-4.807-1.305C224.25,438.25,226.75,439.25,226.375,440.625z\" },\r\n            { \"Id\": \"jpjs19\", \"Fill\": \"#EBECED\", \"Stroke\": \"#FFFFFF\", \"VectorEffect\": \"non-scaling-stroke\", \"Data\": \"M330.375,421.25c-3.125,2.625-5.75-1.25-7-0.125s-1.875-0.625-3-0.93s-2.5,0.18-3.909,2.055s-1.216-1.25-3.341,2.348s1.25,2.152-0.5,4.402s0.25,3.375,1.75,6.125s1.75,4.625-1,7.5c2.75,1,1.125,3.25,3.5,2.25s1.375,6.875,5,5.625s0.5-4.125,1.75-7s7.625-0.875,8.5-1.375s3.75,1.125,4.375-0.75S340,437,341.75,437s1.625-3.125,1.25-6.75c-5.125-0.25-3-3.75-5.75-6.75C336,425.25,331.25,422.375,330.375,421.25z\" },\r\n            { \"Id\": \"jpjs20\", \"Fill\": \"#EBECED\", \"Stroke\": \"#FFFFFF\", \"VectorEffect\": \"non-scaling-stroke\", \"Data\": \"M314.375,435.125c-1.5-2.75-3.5-3.875-1.75-6.125s-1.625-0.805,0.5-4.402s1.932-0.473,3.341-2.348s2.784-2.359,3.909-2.055s1.75,2.055,3,0.93s3.875,2.75,7,0.125c-0.875-1.125,0.125-2.125-0.875-3.125s-1.125-6.75-2.875-8.5s1.125-3.25,0.875-6.75s-2.125,1.625-7.277-1.875s0.402-3.75,0.027-6.25s3.25-2.375,3.125-4.375s3.375-1.875,5.875-2.625c1.084-6.916-3.25-2.992-4.162-9.17c-0.576-3.9-6.088-1.58-7.067,0.795s-1.687,0.791-1.555,2.941c0.132,2.149-2.632,0.518-3.367,1.469c-0.734,0.953-2.265-0.451-3.265,0.973S306,385.334,307.666,383c1.667-2.334-0.832-1.666-3.666-2.125s-0.666,2.125-2.5,2.959c-1.833,0.833-0.5,2.166-2.75,2.916c2,2.25-0.417,5.75-0.75,8.084c-0.333,2.332-3.583,4.832-2.875,9.332s-4.292,3.667-2.792,8c1.5,4.334-1.333,11.001-3.833,9.668c-2.5-1.334-4,3-1.5,4.166s4.5,3.666,4.667,6s4,4.667,3.333,8.334c-0.667,3.666-0.25,4.541-2.375,6.271c0.708,3.729,5.292-0.938,8.5,2.896c2.875-4.25,5.625-4.125,6.5-5s3-2.875,5.75-1.875C316.125,439.75,315.875,437.875,314.375,435.125z\" },\r\n            { \"Id\": \"jpjs21\", \"Fill\": \"#EBECED\", \"Stroke\": \"#FFFFFF\", \"VectorEffect\": \"non-scaling-stroke\", \"Data\": \"M295,440.334c0.667-3.667-3.167-6-3.333-8.334s-2.167-4.834-4.667-6s-1-5.5,1.5-4.166c2.5,1.333,5.333-5.334,3.833-9.668c-1.5-4.333,3.5-3.5,2.792-8c-2.042-3.167-4.792-0.999-6.125-3.166s-3.333,0.167-4.333-1.266c-1-1.434-2.333,1.1-3.833,0s-4.333,2.766-5.333,4.932c-1,2.167-2.333,1.501-2.5,0c-0.167-1.5-3.667-3.999-5.333,0c2.333,3.833,0.667,5.5-1.333,9.834s4.5,7.334,2.833,10.098s-5-0.598-7.667,1.402s-4.167,0.5-7.5,0s-2.333,4-2.833,5.368S252,433.334,252,435s3.333,2,3.667,5.334c0.333,3.333-2.333,7-0.833,7.666s1.833,0,3.167,0s3.5,3.666,6.167,3.834c-0.667-1.5,1.5-6,1.833-8s2.833,0.5,6-1.209s3.833,0.875,6.833,3.979s5.167-1.438,6.882,0.896s4.785,0.834,6.91-0.896S294.333,444,295,440.334z\" },\r\n            { \"Id\": \"jpjs22\", \"Fill\": \"#EBECED\", \"Stroke\": \"#FFFFFF\", \"VectorEffect\": \"non-scaling-stroke\", \"Data\": \"M339.708,449.625c0.208-1.25-2.583-1.875-0.958-3.875s1.375-3.875-2.25-4.375c-0.625,1.875-3.5,0.25-4.375,0.75s-7.25-1.5-8.5,1.375s1.875,5.75-1.75,7s-2.625-6.625-5-5.625s-0.75-1.25-3.5-2.25s-4.875,1-5.75,1.875s-3.625,0.75-6.5,5s0.125,3.25-2.75,6.125s-1.625,3.125-3,4.625s-5.125,1.875-5.25,5.625s-0.917,2.792,0.042,4.959c4.333-1.334,11.833,1,12.5,0.166c0.667-0.834,5.5-0.333,7.5,0.834c2,1.166,3.5,3.166,4.168-1.667c0.666-4.833,3.332-3.5,3.332-6.833c0-3.334,5.5-3.167,5.668-6.5c0.166-3.334,7.5-6.334,9.5-2.834s-1.668,6.834-1,9c0.666,2.166-1,8,1.166,10s6-5,8.166-6.334c2.167-1.333,0-4.5,2.668-5c2.666-0.5,1-4.666-0.5-4.832c-1.5-0.167-0.668-3,0-5C341.542,450.292,339.5,450.875,339.708,449.625z\" },\r\n            { \"Id\": \"jpjs23\", \"Fill\": \"#EBECED\", \"Stroke\": \"#FFFFFF\", \"VectorEffect\": \"non-scaling-stroke\", \"Data\": \"M290.125,465.875c0.125-3.75,3.875-4.125,5.25-5.625s0.125-1.75,3-4.625s-0.125-1.875,2.75-6.125c-3.208-3.834-7.792,0.834-8.5-2.896c-2.125,1.729-5.194,3.229-6.91,0.896s-3.882,2.209-6.882-0.896s-3.667-5.688-6.833-3.979s-5.667-0.791-6,1.209s-2.5,6.5-1.833,8s0.5,2.833,1.833,4c3.333-1.667,4.5,1.333,2.5,3.833s-0.167,5.667,0.833,8.333s3.167,0.834,2.5-2.833s3-1,4.167,0.833s3.333-0.166,5-1.166s5.333-2,4.5,2.166s-9.5,2.5-9.5,5.667s9.833-0.5,14.167-1.833C289.208,468.667,290,469.625,290.125,465.875z\" },\r\n            { \"Id\": \"jpjs24\", \"Fill\": \"#EBECED\", \"Stroke\": \"#FFFFFF\", \"VectorEffect\": \"non-scaling-stroke\", \"Data\": \"M258,448c-1.333,0-1.667,0.666-3.167,0c-1.833,1.834,2,5.834,1.333,6.666c-0.667,0.833-1.167,4.5-2.333,6s-3.167,3-6.333,1.668c-3.167-1.334-1.833,3-4.429,3c-0.405,1-0.071,2.166,0.929,3.166s-3.167,4.167,0,5.334c3.167,1.166,6.397,1.833,5.532,4c-0.865,2.166-5.532,0.833-5.532,2.5c0,1.666,2.667,3.833,1.833,4.5c-0.833,0.666,0.833,8.832-1.333,9.832s-1.667,4.5-3.5,4.5s-2.167,1-3,2.167s1.833,2.667,1.5,4.167s1.333,1.001,3.167,1.667c2.833-2.667,3.167-6.667,6-8.333c2.833-1.667,0.667-5.5,2.833-6.667s-0.5-4,1.833-3.5s4.5-3,7.833-2.325c3.333,0.676,4.333-2.675,5.833-0.675s4.333-1,3.167-1.833C269,483,270,481.334,271.333,481s0.667-4-1.667-3.166c-2.333,0.833-3.667-4.167-7.833-5c-4.167-0.834-4-5.5-0.667-8.334s1.5-7,4.833-8.666c-1.333-1.167-1.167-2.5-1.833-4C261.5,451.666,259.333,448,258,448z\" },\r\n            { \"Id\": \"jpjs25\", \"Fill\": \"#EBECED\", \"Stroke\": \"#FFFFFF\", \"VectorEffect\": \"non-scaling-stroke\", \"Data\": \"M255.667,440.334C255.333,437,252,436.666,252,435s-1.333-2.264-0.833-3.632c-2.167-1.034-4.833-2.868-4,0.632s-2.667,2.22-3,4.193c-0.333,1.973-3.5-0.026-4.667,2.141c-1.167,2.166-4.167,2.25-4.5,4.291s3,3.479,2.333,5.427c-0.667,1.948,1.166,4.282,0.333,7.782s5.81,8.5,5.405,9.5c2.595,0,1.262-4.334,4.429-3c3.167,1.332,5.167-0.168,6.333-1.668s1.666-5.167,2.333-6c0.667-0.832-3.166-4.832-1.333-6.666C253.333,447.334,256,443.667,255.667,440.334z\" },\r\n            { \"Id\": \"jpjs26\", \"Fill\": \"#EBECED\", \"Stroke\": \"#FFFFFF\", \"VectorEffect\": \"non-scaling-stroke\", \"Data\": \"M206.5,436.193c1.667,1.973,4.333-3.307,4.333,0s1.333,4.223,0,5.182s-3.833-1.959-3.833,1.25s1.833,2.918,3.833,3.979s4.5-1,4.833,1.447c0.333,2.448,3.853,1.782,5.426,3.782s-1.926,3.999,0.407,5.332c1.833-0.333,3.333,0.168,4.167,2.168s3.667,1,5.833,3.166s-0.667,2.834,0.871,4.834c4.463-0.5,3.963,2.622,5.629,1.227c1.667-1.395,3.833,1.273,6-0.061c-1-1-1.333-2.166-0.929-3.166s-6.238-6-5.405-9.5s-1-5.834-0.333-7.782c0.667-1.947-2.667-3.386-2.333-5.427c-3.375,1.875-2.875-0.25-5,0s-4-0.625-3.625-2s-2.125-2.375-0.682-4.43c-0.704-0.585,0.634-1.118-0.443-2.195c-1.75-1.75-5,2.5-8.5,1.5s4.75-6.75,0.75-8.75s-7.5,6.5-11,5C204.333,434,204.833,434.22,206.5,436.193z\" },\r\n            { \"Id\": \"jpjs27\", \"Fill\": \"#EBECED\", \"Stroke\": \"#FFFFFF\", \"VectorEffect\": \"non-scaling-stroke\", \"Data\": \"M220.167,484.166c2.333,0.668,4.833-3,5.833-1.666s3.667-1.602,4.833-0.884c0.5-1.616,2.5-3.157,0.667-6.804s2.408-5.479,0.871-7.479s1.296-2.668-0.871-4.834s-5-1.166-5.833-3.166s-2.333-2.501-4.167-2.168c-1.833,0.334,3.167,3.333,2.333,4.5C223,462.834,226,466.5,223.5,469.334c2.333,1.833,0.167,5-1,9.333s-8.333,3.5-9.833,6.167C215.667,486.334,217.833,483.499,220.167,484.166z\" },\r\n            { \"Id\": \"jpjs28\", \"Fill\": \"#EBECED\", \"Stroke\": \"#FFFFFF\", \"VectorEffect\": \"non-scaling-stroke\", \"Data\": \"M223.833,461.666c0.833-1.167-4.167-4.166-2.333-4.5c-2.333-1.333,1.167-3.332-0.407-5.332s-5.093-1.334-5.426-3.782c-0.333-2.447-2.833-0.386-4.833-1.447S207,445.834,207,442.625s2.5-0.291,3.833-1.25s0-1.875,0-5.182s-2.667,1.973-4.333,0c-1.667-1.974-2.167-2.193,0-4.443c-3.5-1.5-8.5,0.5-11-0.5s-5.25,1-6,2c2.333,2.417,0.667,4.019,2.5,6.551c1.833,2.533,2.333,6.408,1,6.804s-3.667,0.729-3.5,2.896s1.483,1.334-0.008,3.667s-4.325,4.167-2.992,6.167s-1.5,3.832,2.167,8.832c1.083,0.167,6.583-1.832,8.917-2.25c2.333-0.417,4.5,0.834,5.833,2.334s4.667,2.334,6.333,3.084s0.25,1.416-0.083,1.416s-1.417,1.916-2.583,2.5s-1.75,2.917-3.25,2.917s-2.333,5.333-4.333,6.167c-2,0.833-0.333,1.166,1.167,3.5c1.5,2.333,4.167-0.667,6.5-1.167s-0.167-2.333-0.667-5s4-7.167,4.774-8.667s2.392-2.333,4.226-1.333s5.667-4.167,8-2.333C226,466.5,223,462.834,223.833,461.666z\" },\r\n            { \"Id\": \"jpjs29\", \"Fill\": \"#EBECED\", \"Stroke\": \"#FFFFFF\", \"VectorEffect\": \"non-scaling-stroke\", \"Data\": \"M238,468.561c-1.667,1.396-1.167-1.727-5.629-1.227c1.537,2-2.704,3.832-0.871,7.479s-0.167,5.188-0.667,6.804s-0.333,3.05,1.537,3.55S232.167,488,230.5,488s0.667,2.834-2.5,3.834s0.5,3.666,1.667,5c1.167,1.333-1.333,2.666,0,4.354s2.333-0.354,3.833,0.145s2.333-0.499,4.5,0c0.833-1.167,1.167-2.167,3-2.167s1.333-3.5,3.5-4.5s0.5-9.166,1.333-9.832c0.833-0.667-1.833-2.834-1.833-4.5c0-1.667,4.667-0.334,5.532-2.5c0.865-2.167-2.365-2.834-5.532-4c-3.167-1.167,1-4.334,0-5.334C241.833,469.834,239.667,467.166,238,468.561z\" },\r\n            { \"Id\": \"jpjs30\", \"Fill\": \"#EBECED\", \"Stroke\": \"#FFFFFF\", \"VectorEffect\": \"non-scaling-stroke\", \"Data\": \"M239.5,505.5c0.333-1.5-2.333-3-1.5-4.167c-2.167-0.499-3,0.499-4.5,0s-2.5,1.544-3.833-0.145s1.167-3.021,0-4.354c-1.167-1.334-4.833-4-1.667-5s0.833-3.834,2.5-3.834s3.741-2.334,1.871-2.834s-2.037-1.934-1.537-3.55c-1.167-0.718-3.833,2.218-4.833,0.884s-3.5,2.334-5.833,1.666c-2.333-0.667-4.5,2.168-7.5,0.668c-1.5,2.666,2.167,3.833,2.667,5.333s-2-0.667-3,1.5s2.333,2.333,2.333,3.833s-2.833-0.5-3.333,3s2.333,0.667,2.333,2.334c0,1.666,8,6,7.167,8.5s0.833,3.166,5.5,5.5S234.5,518,237.833,516s2-6.166,4.833-8.833C240.833,506.501,239.167,507,239.5,505.5z\" },\r\n            { \"Id\": \"jpjs31\", \"Fill\": \"#EBECED\", \"Stroke\": \"#FFFFFF\", \"VectorEffect\": \"non-scaling-stroke\", \"Data\": \"M154.137,444.458c3.049,4.376-4.294,2.375-3.049,4.542s-2.465,3.666-1.443,5c2.811,0.833,3.022,0.334,5.189,0.5c0.5-1.834,4.833-0.666,4.833-3.792s4.5-0.874,3.667-4.104s5.667-1.771,8,1.396s6-5,9.167-2.666c3.167,2.333-0.167,5.333,2.667,5.374s3.333-2.374,6.333-1.208c-0.167-2.167,2.167-2.5,3.5-2.896s0.833-4.271-1-6.804c-1.833-2.532-0.167-4.134-2.5-6.551c-0.75,1-7.25,4.5-10,4s-13.25,0.75-17-0.5s-4.5,3-7.25,2.5C156.333,442.834,152.53,442.152,154.137,444.458z\" },\r\n            { \"Id\": \"jpjs32\", \"Fill\": \"#EBECED\", \"Stroke\": \"#FFFFFF\", \"VectorEffect\": \"non-scaling-stroke\", \"Data\": \"M103.5,470.334c5.167-0.5,10.833-7.668,11.667-9.168S126.75,447.5,131.5,447.25s-0.75-6,4.25-8.25s10.75-5.25,14-4.5s5.5-1.25,5.5,0.5s-2.75,3.75,0,4.25c1.083,3.584-2.72,2.902-1.113,5.208c3.049,4.376-4.294,2.375-3.049,4.542s-2.465,3.666-1.443,5c-2.811-0.833-4.811,1.5-7.145,0.25s-4,4.584-5.5,4.584s-4.333,2.454-2.333,3.144s0.5,2.856-1.833,2.356s-3.5,2-5.167,1s-2,0.81-4.333,0.238c-2.333-0.572-6.5,2.095-6.167,4.262c0.333,2.166-1.771,3.124-1.219,4.979s-1.281,1.688-1.114,3.188c-2.333-1.167-0.089,8.334-4.5,5.39c-1.439-0.96-1.333,1.277-4,0.777s0.833-3.833-2.833-5.001C99.833,477.999,105,473.5,103.5,470.334z M154.375,411c3.625-0.5,3.198-4.381,1.75-5.875c-0.642-0.662-3.5-1.875-4.5,0.625S150.75,411.5,154.375,411z M149.125,415.125c1.375-1.75-0.087-3.473-3.125-3c-2.02,0.314-3.125,1.5-1.75,4S147.75,416.875,149.125,415.125z\" },\r\n            { \"Id\": \"jpjs33\", \"Fill\": \"#EBECED\", \"Stroke\": \"#FFFFFF\", \"VectorEffect\": \"non-scaling-stroke\", \"Data\": \"M186.5,459.334c-1.333-2,1.5-3.834,2.992-6.167s0.175-1.5,0.008-3.667c-3-1.166-3.5,1.249-6.333,1.208s0.5-3.041-2.667-5.374c-3.167-2.334-6.833,5.832-9.167,2.666s-8.833-4.625-8-1.396s-3.667,0.978-3.667,4.104s-4.333,1.958-4.833,3.792s2,3.666,1,6s3.603,4.224,2.385,6.778c-1.218,2.556,1.948,6.388,1.282,11.888c1.917,0.25,4.5-0.582,4.833-1.5c0.333-0.917,3.25-2.332,3.417-1c0.167,1.333,0.833,0.75,1.667,1.75s2.5-0.832,3.5,0.084s2.25-0.166,3.464,0.416c1.214,0.583,1.369-1.25,0.286-1.832c-1.083-0.584,1.25-1.918,1.417-2.5c0.167-0.584,0.667-1.668,1.417-1.168s4.5-1.25,4.083-2.416s0.667-0.834,1.083-1.666c0.417-0.834,2.917-1.334,4-1.168C185,463.166,187.833,461.334,186.5,459.334z\" },\r\n            { \"Id\": \"jpjs34\", \"Fill\": \"#EBECED\", \"Stroke\": \"#FFFFFF\", \"VectorEffect\": \"non-scaling-stroke\", \"Data\": \"M158.218,467.278c1.218-2.555-3.385-4.444-2.385-6.778s-1.5-4.166-1-6c-2.167-0.166-2.378,0.333-5.189-0.5s-4.811,1.5-7.145,0.25s-4,4.584-5.5,4.584s-4.333,2.454-2.333,3.144s0.5,2.856-1.833,2.356s-3.5,2-5.167,1s-2,0.81-4.333,0.238c-2.333-0.572-6.5,2.095-6.167,4.262c0.333,2.166-1.771,3.124-1.219,4.979s-1.281,1.688-1.114,3.188s-0.771,5.612,1.114,5.39s0.719,5.109,4.469,5.526c0-1.25,1-1.832,2.25-1.832s1.25-1.334,1.25-2.834s3.333-1.75,4.5-0.834c1.167,0.917,0.583,2.334-0.167,2c-0.75-0.333-1.833,1-2.333,1.084s-1.083,2.25,0,3s1.333,1.166,0.917,2.416S127.75,493,130,493.084c2.25,0.083,0.583-2.334,0.75-3.418c0.167-1.083,1.5-0.916,3.25-0.25c1.75,0.667,1.583-1.832,3.583-2.082s1.167-3.5,2.667-2.584s2.25-1.416,3.333-1.25s3.667-0.584,3.917,0.834c0.25,1.416,1.417,1.916,2.167,2.5c0.75,0.583,2.917-2.168,2.917-3.5c0-1.334,0.583-1.584,2-0.918c1.417,0.667,2.75-0.666,2.75-1.166s0.25-2.334,2.167-2.084C160.167,473.666,157,469.834,158.218,467.278z\" },\r\n            { \"Id\": \"jpjs35\", \"Fill\": \"#EBECED\", \"Stroke\": \"#FFFFFF\", \"VectorEffect\": \"non-scaling-stroke\", \"Data\": \"M115.948,483.39c-1.886,0.223-0.948-3.89-1.114-5.39c-2.333-1.167-0.089,8.334-4.5,5.39c-1.439-0.96-1.333,1.277-4,0.777s0.833-3.833-2.833-5.001c-3.667-1.167,1.5-5.666,0-8.832c-5.167,0.5-5.833,1.666-6,3.832c-0.167,2.167-3.167,2.168-2.667,3.834s-8.167,6.334-10.333,2.5s-5,1.834-7.667,2.666c-2.667,0.833,1.333,8.168-0.333,8.668s2,6.832,0.667,7.332C78.5,499.5,79.333,497,80.5,497.75c0-2.125,3.125-0.5,5.375,1s5.125-1.625,6.5-1s3-3.375,4.875-2.125s4.125,0,5.875-0.5s3-1.125,4.5,1.125s4.5,3.125,7.875,5s1.5-1.5,3.998,0s3.918-1.834,1.752-2.5s-0.667-1.166-1.5-2.834c-0.833-1.667,0.667-5.75,0.667-7C116.667,488.499,117.833,483.167,115.948,483.39z\" },\r\n            { \"Id\": \"jpjs36\", \"Fill\": \"#EBECED\", \"Stroke\": \"#FFFFFF\", \"VectorEffect\": \"non-scaling-stroke\", \"Data\": \"M197.5,496.334c0.333-1.75-1.083-3.668,0.333-5.334s0.083-1.834,0.583-3.916c0.5-2.084-3.25,0.582-5.167,0.582c-0.625,2.292-4.25,3.834-7.097,2.084s-2.528,3.75-4.661,2.48s-4.867,2.02-5.825,0.52S173,493.5,171,493.25s-1.5,2.875-3.75,3.25c0.75,1.5-0.25,2.875,0,4.5s3.994,0.682,4.883,2.125c2.492,4.042,3.441-0.766,5.242,0c4.117,1.75,0.375,5.375,3,5.375s3.5,0.625,2.375,2.25s-0.208,3.916,4.833,2.833c1.333-2.334,4.417-5.083,6.083-5.166s3.833-3.334,4.917-3.667s2.833-1.417,1.167-1.667s-0.417-2.083,0.583-3.167C201.333,498.833,197.167,498.084,197.5,496.334z\" },\r\n            { \"Id\": \"jpjs37\", \"Fill\": \"#EBECED\", \"Stroke\": \"#FFFFFF\", \"VectorEffect\": \"non-scaling-stroke\", \"Data\": \"M181.563,478.625c-0.438-1.063,1.25-3.063,2.563-2.625c1.326,0.441,0.813-1.313,2.125-1.063s2.688-0.945,2.75,1.09s-0.688,4.473-1.438,3.16s-2.25,0.625-2.688-0.5S182,479.688,181.563,478.625z M167.25,496.5c2.25-0.375,1.75-3.5,3.75-3.25s3.709-2,4.667-0.5s3.691-1.789,5.825-0.52s1.814-4.23,4.661-2.48s6.472,0.208,7.097-2.084c-1.917,0-7.25-1.5-7.333-3.5s-2.316-1.065-3.333-2.082c-1.167-1.166-4.833,0.249-7.25,0c-2.417-0.25-2.333,1.832-4.583,2.832s-3.5,3.083-5.417,2.333s-0.75,1,0.25,2s0,2.584-1.833,5.834C165,495.75,166.5,495,167.25,496.5z\" },\r\n            { \"Id\": \"jpjs38\", \"Fill\": \"#EBECED\", \"Stroke\": \"#FFFFFF\", \"VectorEffect\": \"non-scaling-stroke\", \"Data\": \"M133.25,530c-1-1.5,0.5-1.625,1.539-0.375s2.836-0.875,2.836-2.75s0.25-2,3-2.625s1.375-1.75-0.375-4.75s-0.125-3.25,4-2.25s1.875-7.125,3.625-7s3.375-5.625,4.625-5.776s0.875-1.599,2.267-0.724S157.25,503,160.5,503s2.125-2.125,6.75-2c-0.25-1.625,0.75-3,0-4.5s-2.25-0.75-3.5-1.417c-1.833,3.25-4.75,1.166-5.532,2.083c-0.782,0.918-4.302,0.167-4.468,1.25c-0.167,1.084-2.5,1.083-5,0.583s-1.5-3.666-3-4.666s-0.75-2.75-2.75-2.75s0.167,2.583-1.083,2.416s-1.5,1.334-2.333,1.417c-0.833,0.084-2.167,1-1.75,1.917c0.417,0.916-1.167,3.166-2,2.916s-1.75,0.584-0.583,1.834s-0.583,1.583-0.917,4.583s-6.917,5.334-7.25,6.667s-6,3.75-7.667,4.25s-3.833,1.083-3.417,2.583s1.417,0.917,2,0.084s5.333-3.334,6.167-3.25s2.667,0.833,1.5,1.416s-1.25,1.25-0.583,4.167s4.917-1.333,3.75,1.917c-0.418,1.166,0.917,1.583,0.75,3.083s-0.75-0.25-2.071,0.917S129,530,128,531.083s-0.417,2.167,1.333,5.167s2.167,1.166,4.75,2.166C135.792,536.332,134.25,531.5,133.25,530z\" },\r\n            { \"Id\": \"jpjs39\", \"Fill\": \"#EBECED\", \"Stroke\": \"#FFFFFF\", \"VectorEffect\": \"non-scaling-stroke\", \"Data\": \"M182.75,510.75c1.125-1.625,0.25-2.25-2.375-2.25s1.117-3.625-3-5.375c-1.801-0.766-2.75,4.042-5.242,0c-0.89-1.443-4.633-0.5-4.883-2.125c-4.625-0.125-3.5,2-6.75,2s-4.342,1.625-5.733,0.75s-1.017,0.572-2.267,0.724s-2.875,5.901-4.625,5.776s0.5,8-3.625,7s-5.75-0.75-4,2.25s3.125,4.125,0.375,4.75s-3,0.75-3,2.625s-1.797,4-2.836,2.75S132.25,528.5,133.25,530s2.542,6.332,0.833,8.416c2.583,1-1.583,3.25-0.917,4.834s1.917-0.917,3.667,1.083s2-0.667,4.167-0.917s1.25,0.417,3.167,2s1.833-2.166,0-3s1.5-3.416,1-4.499s1-3.833,2.167-3.417s0.917-1.5,1.583-2.083s0.917-2.333,2.417-3.667s1.833-4.666,1.333-5.5s2.25-2.666,4.583-3.416s4.417-3.25,8.583-5s6.083,0.999,7.667,1.083s2.333,2.833,4,3.333s1.917,2.083,4.333,4.75s2.083,0.75,1.833-2.583s2.583-5.5,3.917-7.834C182.542,514.666,181.625,512.375,182.75,510.75z\" },\r\n            { \"Id\": \"jpjs40\", \"Fill\": \"#EBECED\", \"Stroke\": \"#FFFFFF\", \"VectorEffect\": \"non-scaling-stroke\", \"Data\": \"M77.167,499.166c-1.333,0.5-3.833,2.334-5,0.834s-0.167,1.667-4.833,1s-5,6.667-6,9.333s-5-1.666-7.333,0s-2.333,4.667-4,7c3.5,2.042,5-2.042,7.375,0s4.625,4.327,5.5,2.372s2.625-2.295,3,0s-2.625,2.92-3.125,4.42s-3.5,2.002-3.25,5.376c2,1.167,2.333,4.666,0.667,7c6.667-0.749,3.083-3.251,5.208-4.822s3.625,0.196,4.25-2.178s3.75,2.624,5.625,2.146s1.625-3.396-0.104-4.771s1.729-0.625,0.354-3.753s1.75-2.122,1.125-4.497s3.375-4,6.25-3.125s3.5,0,3.375-3.375c-4.625-0.125-5.125-6.25-6.5-7.875s0.75-4.375,0.75-6.5C79.333,497,78.5,499.5,77.167,499.166z\" },\r\n            { \"Id\": \"jpjs41\", \"Fill\": \"#EBECED\", \"Stroke\": \"#FFFFFF\", \"VectorEffect\": \"non-scaling-stroke\", \"Data\": \"M62.75,524.125c0.5-1.5,3.5-2.125,3.125-4.42s-2.125-1.955-3,0s-3.125-0.33-5.5-2.372s-3.875,2.042-7.375,0c-1.667,2.333-3.667-2.999-6-2.666s-1.833,3.167-0.667,4.334S43,523.834,41.5,522.834c-1,1.916,1.5,2.416,0.75,3.791s6,2.125,4.5,3.5s0.037,2.452,1.04,3.5c4.585,4.791,7.502,2.293,8.544,2.709c0.167-3-1.833-1.333-3.167-2.833s-1.167-2,0.167-2.667s1.167-2.667,2-3.5s2.167,1,4.167,2.167C59.25,526.127,62.25,525.625,62.75,524.125z\" },\r\n            { \"Id\": \"jpjs42\", \"Fill\": \"#EBECED\", \"Stroke\": \"#FFFFFF\", \"VectorEffect\": \"non-scaling-stroke\", \"Data\": \"M56.333,536.334c-0.167,3-4,1.833-3.167,3.5s4.167-0.667,5.5,1.333s2.167,4.166,0.667,6.5s-5.667,3.333-6.833,1.5s3.167-3.833,1.333-5.333s-2.5,1-4,0.5s-1.834,1.333-3.667,1.833s-3.5,6.834-5.167,6.167s2.333-2.499,1.167-5.833s-2.667-4.333-4-6.5s-4.833-0.168-2.5-4.334s3.167-3.667,3.833-1s2.5,0.5,2.5,3s2.167,2.334,4.167,2.667s2-3.334,0.833-4.667s-6-2.999-6.333-4.666s-6.065-3.167-5.783-6.167s2.117-5,2.95-3s2.167,0,3.667,1c-1,1.916,1.5,2.416,0.75,3.791s6,2.125,4.5,3.5s0.037,2.452,1.04,3.5C52.375,538.416,55.292,535.918,56.333,536.334z M23.125,492.75c2.125-0.75,2.5-4.125,5.125-8s-0.375-6.25,0.5-7s3.5-8.875,1.625-8.875s-1.358,3.6-3.25,2.375c-2.125-1.375-1,4.125-2.375,6.25s1.5,3.25,0.75,5.625s-2.375-1.375-3.25,1.375S21,493.5,23.125,492.75z M40.167,507c1.5-1.5,0.259-4.966-1.167-4.917c-2.417,0.083-3.083,2.834-2.167,4.417S38.667,508.5,40.167,507z M29.25,523.5c-0.167,1.584-2.75,3.75-2.417,4.75s1.667,0.083,4.083-1.5s-0.25-2.667,1.25-3.5s1.048-1.63-0.75-2C30.335,521.027,29.417,521.916,29.25,523.5z M19.417,535.666c-1.167,0.583,0.619-4.372-0.5-4c-1.25,0.416-1.917,5.167-2.417,6.834s-2.833,1-4.333,0.666s-2.583,1.084-1.75,2.084s-0.75,1.916,0.333,2.583s2.25-0.667,2.583-1.5s2.833-2.417,3.583-1.583s1.833,0,2-0.75s0.417-1.584,1.833-2.834S20.583,535.083,19.417,535.666z M10.127,544.916c-0.373-2.084-1.985,0.732-3.127,0c-3.25-2.084-2.5,1-2.083,2.914s-2.833,1.336-1.25,3.086s3.167-0.416,4.167,0.5s1.583-0.333,1-1.75s1.167-0.5,2.833-0.5S10.5,547,10.127,544.916z\" },\r\n            { \"Id\": \"jpjs43\", \"Fill\": \"#EBECED\", \"Stroke\": \"#FFFFFF\", \"VectorEffect\": \"non-scaling-stroke\", \"Data\": \"M58.833,568.834c1.667-1.667,2.5-6.667,4.833-8.167s0.834-6.332,3.167-7.666s1.833-3,0.167-3s-4.833,0.166-2.5-1.667s4.333-4.001,2.667-5.167s-3-1.666-3-3.666s-5.667-0.666-4-3c6.667-0.749,3.083-3.251,5.208-4.822s3.625,0.196,4.25-2.178s3.75,2.624,5.625,2.146c2.625,2.854,4.25,3.354,5.625,1.479s-2.875-3.875,0-5.125s4.125,1.736,4.375,3.118s3.75,3.259,3.5,5.383s-1,2.749,2.125,4.999c-2.75,0-2,4.104-3.375,4.302s0.529,1.823-1.235,2.073s-0.765,4.125-2.89,4s-4.625,2.5-1.5,5.375s3.25,4.375,1.5,5.125s1.75,2.375,0.5,4.625s-2.445-2-3.473,0s-3.027,1.125-3.777,2s-3.375,1.375-5.375,0.75s-3-3.75-3.875-2.875S62.417,571.793,58.833,568.834z M60.417,553.5c-0.417-0.833-3.917,1.583-4.917,2.583s-0.623-0.973-1.083-2.583c-0.5-1.75-3.083,0.583-4.583,1.25s-2.5,6.667-1.833,7.333s-0.75,3.334,0.583,3.917s3.75-2.333,4.333-4.083s1.833-0.167,2.417-0.584S54.917,558.667,55,557.5s4.583,1.417,5.583,1.417s1.833-4,2.583-4.667s1.083-2.75,0-3.25s-1.917-0.167-1.583,1.417S60.833,554.333,60.417,553.5z\" },\r\n            { \"Id\": \"jpjs44\", \"Fill\": \"#EBECED\", \"Stroke\": \"#FFFFFF\", \"VectorEffect\": \"non-scaling-stroke\", \"Data\": \"M82.875,515.5c-2.875-0.875-6.875,0.75-6.25,3.125s-2.5,1.369-1.125,4.497s-2.082,2.378-0.354,3.753s1.979,4.293,0.104,4.771c2.625,2.854,4.25,3.354,5.625,1.479s-2.875-3.875,0-5.125s4.125,1.736,4.375,3.118s3.75,3.259,3.5,5.383s-1,2.749,2.125,4.999s4.625-1.75,5.875,0.625s2.5,1.5,4,1.875s4.5-5,8.875-0.5c1.125-0.75,2.75-0.875,3-3.5s-2.75-2.5-2.125-5.75s-4.375-4.75-2.75-5.875s-1.25-3.5-3.125-2.615s-2.125-0.26-6-0.01s-2.5-4.625-0.75-3.875s5.125-1.875,6.5-3.375s-0.25-5.875-2.625-8.75s-5.25-1.125-6.375,1.75s-4.5,0.75-9.125,0.625C86.375,515.5,85.75,516.375,82.875,515.5z\" },\r\n            { \"Id\": \"jpjs45\", \"Fill\": \"#EBECED\", \"Stroke\": \"#FFFFFF\", \"VectorEffect\": \"non-scaling-stroke\", \"Data\": \"M100.75,544c-1.5-0.375-2.75,0.5-4-1.875S94,543.75,90.875,541.5c-2.75,0-2,4.104-3.375,4.302s0.529,1.823-1.235,2.073s-0.765,4.125-2.89,4s-4.625,2.5-1.5,5.375s3.25,4.375,1.5,5.125s1.75,2.375,0.5,4.625s-2.445-2-3.473,0s-3.027,1.125-3.777,2s-3.375,1.375-5.375,0.75c-1.125,2.375,2,2.5,2.125,4s2.875,1.625,3.5,3.25s-1.75,3.375,0.875,4.25s3.25,1.125,3.25,3.375s5.75,1.125,6,4.375s-1.583,3.084-1.167,5.167c3.667,1,2.833,3.166,4.5,3.166S92.75,592,92.5,590s3.75-6.75,2.25-9.5s2.25-6,1.5-8.5s2.25-3.125,2.5-5s2.875-4.25,2-7.5s2.875-4.5,1.625-7s3-3.375,3-4.5s3.125-3.75,4.25-4.5C105.25,539,102.25,544.375,100.75,544z\" },\r\n            { \"Id\": \"jpjs46\", \"Fill\": \"#EBECED\", \"Stroke\": \"#FFFFFF\", \"VectorEffect\": \"non-scaling-stroke\", \"Data\": \"M85.833,594.167c-3.667-1-1.667,0.5-3.333,1.5s3,3,1.5,4s1.833,1-0.167,2.833s-3.333,0-3.333,1.5s-2.833,4.167-4.833,4.167s-5.5,3.832-5.833,2.166s2.833-2.5,2.833-5.333s2.5-1.499,1.333-5.833s-0.875-3.917-2.25-4.542s-1.125-1.625-1.125-2.5S71.5,590,72.375,590s0.5-2.875,1.375-2.875s-0.25-2.5-1.375-2.375s-1.132-1.375-2.566-0.875s-2.184,2.875-1.059,3.375s2.75,0.5,2.375,1.5s0.125,2.5-1.25,2.125s-3.125-2-3.5-0.75S64.25,593.25,64.75,595s1.5,6.125,3.375,6.125s1.875,0.375,0.75,2.25s-4.179,3.125-4.214,1.25S62.125,601.5,57.875,602s-3.625-1.125-3.25-2.875s-2.75-2.5-2.125-3.5s3.25,1.375,4.5,0s2.625-8.625,1.125-9.875s-6.25-2.5-4-6.125s0.042-6.292-0.458-8.458s-3.5-2.666-3-4.166s3.334-1.666,3.667-1s2.833,4.5,4.5,2.833c3.583,2.959,7.667-1.084,8.542-1.959s1.875,2.25,3.875,2.875c-1.125,2.375,2,2.5,2.125,4s2.875,1.625,3.5,3.25s-1.75,3.375,0.875,4.25s3.25,1.125,3.25,3.375s5.75,1.125,6,4.375S85.417,592.084,85.833,594.167z M80.833,620.416c0.417,1.5-2.641,3.492-2.083,5.5c0.417,1.5,0.25,2.334-1.5,3.917s-1,2.75-1.667,4.833s0.333,2,2.25,0.75s2.25-1.666,1.583-2.666s1.5-4.834,2.417-6s1.333-5.25,1.333-7.917S80.417,618.916,80.833,620.416z M65.75,632.417c-3.299-1.441-2.917,1.833-4.833,1.916s0.25,3.417,0.833,5.084s2,1.083,3.583,1.083s3.25-1.75,4.25-4.196S67.473,633.17,65.75,632.417z\" },\r\n            { \"Id\": \"jpjs47\", \"Fill\": \"#EBECED\", \"Stroke\": \"#FFFFFF\", \"VectorEffect\": \"non-scaling-stroke\", \"Data\": \"M491.334,533.418c0.666,2,1.166,2.917-0.334,3.5s-4.25,4.584-5.833,4.5s-2.583,2.083-1.75,2.583s-1.917,2.166-2.833,3.833c-0.917,1.667-2.834,4.084-4.584,3.084s1-1-0.75-3.167s-1-2.833,0-2.583s1.5-0.75-0.333-1.75s-1-3,0.75-2.917s11.677-5.155,12.583-6.167C489.197,533.277,490.667,531.418,491.334,533.418z M498.667,541.251c2.667,1.5,3.917-2.583,3.5-3S496.51,540.038,498.667,541.251z M466.334,555.751c-2.084,0-0.334,3.333-0.834,4.5s-1.416,1.75,0.667,3.583s3.74-3.735,2.917-4.25C467.75,558.751,468.417,555.751,466.334,555.751z M455.75,573.668c-1.334,0.084-3.669,0.548-2.166,1.75c1.25,1,2.582,1.416,3.916-0.875S457.084,573.584,455.75,573.668z M450.416,585.667c-1.5-0.25-1.832,1.25-0.416,2.25S451.402,585.831,450.416,585.667z M440.834,598.583c-0.417,1.083-2.167,2.5-3.667,2.417s-0.579-1.244-2.5-2.417c-1.436-0.877-2,0.167-2.083,2c-0.084,1.833,2.166,1.917,2.416,2.917s-4.416,4.916-7.083,5.333s2.25,5.667-1.833,6.417c-1.894,0.348,0,3.083-0.584,5.75s2.5-0.917,4.334-0.917c1.833,0,1.833-2.583,0.333-2.583s-0.583-2.667,1.435-3.25s1.398-3.167,0.482-3.917c-0.917-0.75-0.584-2.333,1.5-1.417c2.083,0.916,1.083-2.5,2.5-2.333c1.416,0.167,2-2,3.583-1.5s1.833-3.167,3.083-2.917s1.834-0.083,3.084-2.416s1-3.25,0-5.917S441.25,597.5,440.834,598.583z\" },\r\n        ]\r\n    return (\r\n        <div id=\"keepinside\">\r\n            <div id=\"mapwrapper\">\r\n                <div id=\"mapbase\">\r\n                    <svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 600 650\" xmlSpace=\"preserve\">\r\n                        <g>\r\n                            {map_paths.map(path => (\r\n                                <MapPath key={path.Id} path={path} />\r\n                            ))}\r\n                        </g>\r\n                        <g>\r\n                            <polyline fill=\"none\" stroke=\"#9CA8B6\" points=\"596,46.021 596,47.225 593.217,47.225\" />\r\n                            <line fill=\"none\" stroke=\"#9CA8B6\" strokeDasharray=\"6,6\" x1=\"589.24\" y1=\"47.225\" x2=\"544.707\" y2=\"47.225\" />\r\n                            <polyline fill=\"none\" stroke=\"#9CA8B6\" points=\"542.321,47.225 540.333,47.225 540.333,46.021\" />\r\n                            <line fill=\"none\" stroke=\"#9CA8B6\" strokeDasharray=\"6,6\" x1=\"540.333\" y1=\"43.134\" x2=\"540.333\" y2=\"11.372\" />\r\n                            <polyline fill=\"none\" stroke=\"#9CA8B6\" points=\"540.333,10.409 540.333,8.725 542.321,8.725\" />\r\n                            <line fill=\"none\" stroke=\"#9CA8B6\" strokeDasharray=\"6,6\" x1=\"547.093\" y1=\"8.725\" x2=\"591.626\" y2=\"8.725\" />\r\n                            <polyline fill=\"none\" stroke=\"#9CA8B6\" points=\"593.217,8.725 596,8.725 596,10.409\" />\r\n                            <line fill=\"none\" stroke=\"#9CA8B6\" strokeDasharray=\"6,6\" x1=\"596\" y1=\"12.815\" x2=\"596\" y2=\"44.578\" />\r\n                            <polyline fill=\"none\" stroke=\"#9CA8B6\" points=\"507.159,624.774 507.159,628 501.758,628\" />\r\n                            <line fill=\"none\" stroke=\"#9CA8B6\" strokeDasharray=\"6,6\" x1=\"494.04\" y1=\"628\" x2=\"407.613\" y2=\"628\" />\r\n                            <polyline fill=\"none\" stroke=\"#9CA8B6\" points=\"402.983,628 399.124,628 399.124,624.774\" />\r\n                            <line fill=\"none\" stroke=\"#9CA8B6\" strokeDasharray=\"6,6\" x1=\"399.124\" y1=\"617.031\" x2=\"399.124\"\r\n                                y2=\"531.864\" />\r\n                            <polyline fill=\"none\" stroke=\"#9CA8B6\" points=\"399.124,529.285 399.124,524.769 402.983,524.769\" />\r\n                            <line fill=\"none\" stroke=\"#9CA8B6\" strokeDasharray=\"6,6\" x1=\"412.243\" y1=\"524.769\" x2=\"498.67\"\r\n                                y2=\"524.769\" />\r\n                            <polyline fill=\"none\" stroke=\"#9CA8B6\" points=\"501.758,524.769 507.159,524.769 507.159,529.285\" />\r\n                            <line fill=\"none\" stroke=\"#9CA8B6\" strokeDasharray=\"6,6\" x1=\"507.159\" y1=\"535.737\" x2=\"507.159\"\r\n                                y2=\"620.904\" />\r\n                        </g>\r\n                        <g id=\"jpjspins\"></g>\r\n                    </svg>\r\n                </div>\r\n            </div>\r\n            <div className=\"clear\"></div>\r\n        </div>\r\n    )\r\n}\r\n\r\nexport default JapanMap;","import axios from 'axios'\r\nimport { useState, useEffect } from 'react'\r\nimport { Link, useNavigate, useLocation } from 'react-router-dom'\r\nimport { Helmet } from 'react-helmet'\r\nimport { Image, DropdownButton, Dropdown, Button } from 'react-bootstrap'\r\nimport Loader from '../Common/Loader'\r\nimport { RenderBreak } from '../../helpers/Helper'\r\nimport Autocomplete from '../Common/Autocomplete'\r\nimport JapanMap from '../SkiArea/JapanMap'\r\n\r\nconst SkiAreaHome = () => {\r\n\r\n    const location = useLocation()\r\n\r\n    const [skiAreaHomePage, setSkiAreaHomePage] = useState('')\r\n\r\n    const [skiAreaList, setSkiAreaList] = useState([])\r\n    const [prefectureList, setPrefectureList] = useState([])\r\n    const [areaList, setAreaList] = useState([])\r\n    const [townList, setTownList] = useState([])\r\n\r\n    //const history = useHistory()\r\n    const navigate = useNavigate()\r\n\r\n    const fetchData = async () => {\r\n        axios({\r\n            method: 'POST',\r\n            url: `${window.$baseAPIUrl}/skiarea/home/list`\r\n        }).then(dataResortList => {\r\n            setSkiAreaList(dataResortList.data)\r\n            return axios({\r\n                method: 'POST',\r\n                url: `${window.$baseAPIUrl}/prefecture/list`\r\n            })\r\n        }).then(resPrefecture => {\r\n            setPrefectureList(resPrefecture.data)\r\n            return axios({\r\n                method: 'POST',\r\n                url: `${window.$baseAPIUrl}/area/list`\r\n            })\r\n        }).then(resArea => {\r\n            setAreaList(resArea.data)\r\n            return axios({\r\n                method: 'POST',\r\n                url: `${window.$baseAPIUrl}/town/list`\r\n            })\r\n        }).then(resTown => {\r\n            setTownList(resTown.data)\r\n            return axios({\r\n                method: 'POST',\r\n                url: `${window.$baseAPIUrl}/generalmessage/SkiArea`\r\n            })\r\n        }).then(resGeneralMessages => {\r\n            setSkiAreaHomePage(resGeneralMessages.data.Message)\r\n        })\r\n    };\r\n\r\n    useEffect(() => {\r\n        fetchData()\r\n    }, [location.pathname]);\r\n\r\n    const ResortSelected = (evtKey, evt) => {\r\n\r\n        let selectedSkiArea = skiAreaList.filter(function (currentElement) {\r\n            return (currentElement.UniqueName === evtKey);\r\n        });\r\n\r\n        let path = window.$baseSkiAreaUrl + '/' + selectedSkiArea[0].PrefectureUniqueName + '/' + selectedSkiArea[0].TownUniqueName + '/' + selectedSkiArea[0].UniqueName;\r\n        //history.push(path);\r\n        navigate(path);\r\n    }\r\n\r\n    const PrefectureSelected = (evtKey, evt) => {\r\n        let path = window.$baseSkiAreaUrl + '/prefecture/' + evtKey;\r\n        //history.push(path);\r\n        navigate(path);\r\n    }\r\n\r\n    const AreaSelected = (evtKey, evt) => {\r\n        let path = window.$baseSkiAreaUrl + '/area/' + evtKey;\r\n        //history.push(path);\r\n        navigate(path);\r\n    }\r\n\r\n    const TownSelected = (evtKey, evt) => {\r\n        let path = window.$baseSkiAreaUrl + '/town/' + evtKey;\r\n        //history.push(path);\r\n        navigate(path);\r\n    }\r\n\r\n    if (skiAreaHomePage === '') {\r\n        return (\r\n            <Loader />\r\n        )\r\n\r\n    } else {\r\n        return (\r\n            <div className='empty-row'>\r\n                <Helmet>\r\n                    <title>An introduction to the ski areas of Japan | SnowJapan</title>\r\n                    <meta name=\"description\" content=\"There are over 450 ski areas in Japan, from huge resorts with modern facilities to tiny local ski hills. SnowJapan introduces them all in detail.\" />\r\n                </Helmet>\r\n\r\n                <h3>Discover Japan's ski areas</h3>\r\n                <div className=\"sj-para-image mb-4\"><img src=\"https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-SkiArea.svg\" alt=\"Japan Ski Areas\" /></div>\r\n                <div className=\"sj-para\">\r\n                    <div dangerouslySetInnerHTML={{ __html: RenderBreak(skiAreaHomePage) }} />\r\n                </div>\r\n                <div className=\"sj-para\">\r\n                    <h5>Quick search (ski area, town, area)</h5>\r\n                    <Autocomplete skiAreaList={skiAreaList} />\r\n                </div>\r\n                <div className='sj-row sj-box sj-box-dark-gray sj-round-half mb-3 center-aligned mt-5'>\r\n                    <Link to='/japan-ski-resorts/discover'><h4>Search, sort & compare</h4></Link>\r\n                </div>\r\n                <div className=\"row sj-no-bg sj-row-no-margin-padding\">\r\n                    <div className=\"col-md-3 m-0 mt-2 p-0 sj-list-icon-holder\">\r\n                        <Link to='/japan-ski-resorts/discover'>\r\n                            <Image src='https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/guide-ski-boom.svg' fluid='true' alt='Ski Area' />\r\n                        </Link>\r\n                    </div>\r\n                    <div className=\"col-md-9\">\r\n                        This new tool lets you compare ski areas throughout Japan. You can filter and sort the list of ski areas by prefecture, town, area, or any combination of those. Results can then be sorted by ski area name, max elevation, min elevation, vertical, number of ski lifts, number of ski courses, longest course and steepest course.\r\n                    </div>\r\n                </div>\r\n                <div className=\"sj-row sj-row-no-margin-padding\">\r\n                    <div className=\"row sj-row-no-margin-padding sj-no-bg\">\r\n                        <div className=\"col-lg-6 sj-row-no-margin-padding\">\r\n                            <div className='sj-row-100 sj-row-100-left'>\r\n                                <DropdownButton align=\"start\" title=\"Choose individual ski area (A-Z)\" onSelect={ResortSelected} id=\"resort-list-a-z\" className='sj-large-font-button'>\r\n                                    {skiAreaList.map(skiArea => (\r\n                                        <Dropdown.Item eventKey={skiArea.UniqueName} key={skiArea.UniqueName}>{skiArea.Name} ({skiArea.TownName} {skiArea.TownTypeStr}, {skiArea.PrefectureName})</Dropdown.Item>\r\n                                    ))}\r\n                                </DropdownButton>\r\n                            </div>\r\n                        </div>\r\n                        <div className=\"col-lg-6 sj-row-no-margin-padding\">\r\n                            <div className='sj-row-100 sj-row-100-right'>\r\n                                <DropdownButton align=\"start\" title=\"Ski areas by prefecture\" onSelect={PrefectureSelected} id=\"prefecture-list\" className='sj-large-font-button '>\r\n                                    {prefectureList.map(prefecture => (\r\n                                        <Dropdown.Item eventKey={prefecture.UniqueName} key={prefecture.UniqueName}>{prefecture.Name} ({prefecture.TotalResorts})</Dropdown.Item>\r\n                                    ))}\r\n                                </DropdownButton>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                <div className=\"sj-row sj-row-no-margin-padding\">\r\n                    <div className=\"row sj-row-no-margin-padding sj-no-bg\">\r\n                        <div className=\"col-lg-6 sj-row-no-margin-padding\">\r\n                            <div className='sj-row-100 sj-row-100-left'>\r\n                                <DropdownButton align=\"start\" title=\"Ski areas by popular area\" onSelect={AreaSelected} id=\"area-list\" className='sj-large-font-button'>\r\n                                    {areaList.map(area => (\r\n                                        <Dropdown.Item eventKey={area.UniqueName} key={area.UniqueName}>{area.Name} ({area.TotalResorts})</Dropdown.Item>\r\n                                    ))}\r\n                                </DropdownButton>\r\n                            </div>\r\n                        </div>\r\n                        <div className=\"col-lg-6 sj-row-no-margin-padding\">\r\n                            <div className='sj-row-100 sj-row-100-right'>\r\n                                <DropdownButton align=\"start\" title=\"Ski areas by town\" onSelect={TownSelected} id=\"town-list\" className='sj-large-font-button '>\r\n                                    {townList.map(town => (\r\n                                        <Dropdown.Item eventKey={town.UniqueName} key={town.UniqueName}>{town.Name} {town.TownTypeStr} ({town.TotalResorts})</Dropdown.Item>\r\n                                    ))}\r\n                                </DropdownButton>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                <div className='sj-row'>\r\n                    <JapanMap />\r\n                </div>\r\n                <div className=\"sj-para\">\r\n                    <div className='sj-box sj-box-dark-gray sj-round-half mb-3 center-aligned'>\r\n                        <Link to='/japan-ski-resorts/reviews'><h4>Reviews</h4></Link>\r\n                    </div>\r\n                    <div className=\"row sj-no-bg sj-row-no-margin-padding\">\r\n                        <div className=\"col-md-3 m-0 mt-2 p-0 sj-list-icon-holder\">\r\n                            <Link to='/japan-ski-resorts/reviews'>\r\n                                <Image src='https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-Reviews.svg' fluid='true' alt='Reviews' />\r\n                            </Link>\r\n                        </div>\r\n                        <div className=\"col-md-9\">\r\n                            <div className='mb-2'>Reviews of ski areas from around Japan submitted by SnowJapan readers. Reviews of specific ski areas are available in the relevant ski area section.</div>\r\n                            <div>\r\n                                <div className=\"row sj-row sj-no-bg sj-row-no-margin-padding\">\r\n                                    <div className=\"col-md-6 sj-row-no-margin-padding padding-right-5\">\r\n                                        <Link to={`${window.$baseSkiAreaUrl}/reviews`} className='btn btn-primary w-100 sj-box-dark-blue mt-2'><h6 className='mt-1 mb-1'>Read reviews</h6></Link>\r\n                                    </div>\r\n                                    <div className=\"col-md-6 sj-row-no-margin-padding padding-left-5\">\r\n                                        <Link to={`${window.$baseMemberUrl}/submit-review`} className='btn btn-primary sj-large-font-button sj-red-bg w-100 mt-2'><h6 className='mt-1 mb-1'>Write a new ski area review</h6></Link>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                <div className=\"sj-para mt-5\">\r\n                    <div className='sj-box sj-box-dark-gray sj-round-half mb-3 center-aligned'>\r\n                        <Link to='/japan-ski-resorts/photos'><h4>Photos</h4></Link>\r\n                    </div>\r\n                    <div className=\"row sj-no-bg sj-row-no-margin-padding\">\r\n                        <div className=\"col-md-3 m-0 mt-2 p-0 sj-list-icon-holder\">\r\n                            <Link to='/japan-ski-resorts/photos'>\r\n                                <Image src='https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-Photos.svg' fluid='true' alt='Photos' />\r\n                            </Link>\r\n                        </div>\r\n                        <div className=\"col-md-9\">\r\n                            <div className='mb-2'>Photos of ski areas from around Japan submitted by SnowJapan readers. Photos of specific ski areas are available in the relevant ski area section.</div>\r\n                            <div>\r\n                                <div className=\"row sj-row sj-no-bg sj-row-no-margin-padding\">\r\n                                    <div className=\"col-md-6 sj-row-no-margin-padding padding-right-5\">\r\n                                        <Link to={`${window.$baseSkiAreaUrl}/photos`} className='btn btn-primary w-100 sj-box-dark-blue mt-2'><h6 className='mt-1 mb-1'>View photos</h6></Link>\r\n                                    </div>\r\n                                    <div className=\"col-md-6 sj-row-no-margin-padding padding-left-5\">\r\n                                        <Link to={`${window.$baseMemberUrl}/upload-photo`} className='btn btn-primary sj-large-font-button sj-red-bg w-100 mt-2'><h6 className='mt-1 mb-1'>Upload new ski area photos</h6></Link>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                <div className=\"sj-para mt-5\">\r\n                    <div className='sj-box sj-box-dark-gray sj-round-half mb-3 center-aligned'>\r\n                        <Link to={`${window.$baseRouteFinderUrl}`}><h4>Route Finder</h4></Link>\r\n                    </div>\r\n                    <div className=\"row sj-no-bg sj-row-no-margin-padding\">\r\n                        <div className=\"col-md-3 m-0 mt-2 p-0 sj-list-icon-holder\">\r\n                            <Link to={`${window.$baseRouteFinderUrl}`}>\r\n                                <Image src=\"https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-Route-finder.svg\" alt=\"Japan Ski Areas Route Finder\" fluid='true' />\r\n                            </Link>\r\n                        </div>\r\n                        <div className=\"col-md-9\">\r\n                            <div>Discover the route and direction to any ski area in Japan from your current location or plan a trip between various Japanese ski areas.</div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                <div className=\"sj-para mt-5\">\r\n                    <div className='sj-box sj-box-dark-gray sj-round-half mb-3 center-aligned'>\r\n                        <Link to='/guides/graphs'><h4>Japan's ski areas in graphs</h4></Link>\r\n                    </div>\r\n                    <div className=\"row sj-no-bg sj-row-no-margin-padding\">\r\n                        <div className=\"col-md-3 m-0 mt-2 p-0 sj-list-icon-holder\">\r\n                            <Link to='/guides/graphs'>\r\n                                <Image src='https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-Graphs-Data.svg' fluid='true' alt='Graphs' />\r\n                            </Link>\r\n                        </div>\r\n                        <div className=\"col-md-9\">\r\n                            <div>Compare various ski area and ski lift data for Japan and each prefecture.</div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                <div className=\"banner-holder\">\r\n                    <div className=\"sj-row mb-0\">\r\n                        <div className=\"row sj-row-no-margin-padding sj-no-bg\">\r\n                            <div className=\"col-lg-3 col-md-6 sj-row-no-margin-padding\">\r\n                                <div className='home-listing-holder-left mt-3'>\r\n                                    <a href='https://gala.co.jp/winter/english/' target='_blank' rel='noreferrer'><Image src='https://www.snowjapan.com/UploadedFiles/CMSImages/Listings/listing-gala-yuzawa.jpg' fluid='true' alt='listing-gala-yuzawa' /></a>\r\n                                </div>\r\n                            </div>\r\n                            <div className=\"col-lg-3 col-md-6 sj-row-no-margin-padding\">\r\n                                <div className='home-listing-holder-center1 mt-3'>\r\n                                    <Link to='/listings/resort-spotlights/geto-kogen'><Image src='https://www.snowjapan.com/UploadedFiles/CMSImages/Listings/listing-geto-kogen.jpg' fluid='true' alt='listing-geto-kogen.jpg' /></Link>\r\n                                </div>\r\n                            </div>\r\n                            <div className=\"col-lg-3 col-md-6 sj-row-no-margin-padding\">\r\n                                <div className='home-listing-holder-center2 mt-3'>\r\n                                    {/*<a href='https://wheelshokkaido.com/' target='_blank' rel='noreferrer'><Image src='https://www.snowjapan.com/UploadedFiles/ListingImages/link-wheels-transfers-hokkaido.png' fluid='true' alt='wheels-transfers-hokkaido' /></a>*/}\r\n                                    <Link to='/listings/resort-spotlights/white-world-oze-iwakura'><Image src='https://www.snowjapan.com/UploadedFiles/ListingImages/link-white-world-oze-iwakura.jpg' fluid='true' alt='white-world-oze-iwakura' /></Link>\r\n                                </div>\r\n                            </div>\r\n                            <div className=\"col-lg-3 col-md-6 sj-row-no-margin-padding\">\r\n                                <div className='home-listing-holder-right mt-3'>\r\n                                    {/*<Link to='/listings/resort-spotlights/white-world-oze-iwakura'><Image src='https://www.snowjapan.com/UploadedFiles/ListingImages/link-white-world-oze-iwakura.jpg' fluid='true' alt='white-world-oze-iwakura' /></Link>*/}\r\n                                    <a href='https://ishiuchi.or.jp/winter' target='_blank' rel='noreferrer'><Image src='https://www.snowjapan.com/UploadedFiles/ListingImages/link-ishiuchi-maruyama.jpg' fluid='true' alt='ishiuchi-maruyama' /></a>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                    {/*<div className=\"sj-row mb-0\">\r\n                        <div className=\"row sj-row-no-margin-padding sj-no-bg\">\r\n                            <div className=\"col-lg-3 col-md-6 sj-row-no-margin-padding\">\r\n                                <div className='home-listing-holder-left mt-3'>\r\n                                    <a href='https://www.hakunori.com/' target='_blank' rel='noreferrer'><Image src='https://www.snowjapan.com/UploadedFiles/ListingImages/link-hakuba-norikura.jpg' fluid='true' alt='hakuba-norikura' /></a>\r\n                                </div>\r\n                            </div>\r\n                            <div className=\"col-lg-3 col-md-6 sj-row-no-margin-padding\">\r\n                                <div className='home-listing-holder-center1 mt-3'>\r\n                                    <a href='https://ishiuchi.or.jp/en/' target='_blank' rel='noreferrer'><Image src='https://www.snowjapan.com/UploadedFiles/ListingImages/link-ishiuchi-maruyama.jpg' fluid='true' alt='ishiuchi-maruyama' /></a>\r\n                                </div>\r\n                            </div>\r\n                            <div className=\"col-lg-3 col-md-6 sj-row-no-margin-padding\">\r\n                                <div className='home-listing-holder-center2 mt-3'>\r\n                                    <a href='https://www.snowjapan.com/listings/travel/yuzawa-minamiuonuma-eleven-plus' target='_blank' rel='noreferrer'><Image src='https://www.snowjapan.com/UploadedFiles/CMSImages/Listings/listing-eleven-plus.jpg' alt='listing-naspa' /></a>\r\n                                </div>\r\n                            </div>\r\n                            <div className=\"col-lg-3 col-md-6 sj-row-no-margin-padding\">\r\n                                <div className='home-listing-holder-right mt-3'>\r\n\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    </div>*/}\r\n                </div>\r\n            </div>\r\n        )\r\n    }\r\n};\r\n\r\nexport default SkiAreaHome;","import { useState, useEffect } from 'react'\r\n\r\nconst PrefectureCheckList = ({ selectedPrefectures, options, onChange }) => {\r\n    const [prefectureData, setPrefectureData] = useState(options);\r\n\r\n    const toggle = index => {\r\n        const newData = [...prefectureData];\r\n        newData.splice(index, 1, {\r\n            name: prefectureData[index].name,\r\n            uniqueName: prefectureData[index].uniqueName,\r\n            checked: !prefectureData[index].checked\r\n        });\r\n        setPrefectureData(newData);\r\n        onChange(newData);\r\n    };\r\n\r\n    useEffect(() => {\r\n        if (selectedPrefectures.length > 0) {\r\n            setPrefectureData(selectedPrefectures)\r\n        }\r\n    }, [selectedPrefectures]);\r\n\r\n    return (\r\n        <>\r\n            <h3>Prefectures</h3>\r\n            {prefectureData.map((item, index) => (\r\n                <div key={item.uniqueName}>\r\n                    <label>\r\n                        <input\r\n                            readOnly\r\n                            type=\"checkbox\"\r\n                            checked={item.checked || false}\r\n                            onClick={() => toggle(index)}\r\n                        /> {item.name}\r\n                    </label><br />\r\n                </div>\r\n            ))}\r\n        </>\r\n    );\r\n};\r\n\r\nexport default PrefectureCheckList;","import { useState, useEffect } from 'react'\r\nimport styled from 'styled-components';\r\n\r\nconst CheckboxText = styled.span`\r\n  ${props => props.Disabled && `\r\n         color: #b7b7b7;\r\n    `}\r\n`;\r\n\r\nconst TownCheckList = ({ selectedPrefectures, selectedTowns, options, onChange }) => {\r\n    const [townData, setTownData] = useState(options);\r\n\r\n    const toggle = index => {\r\n        const newData = [...townData];\r\n        newData.splice(index, 1, {\r\n            name: townData[index].name,\r\n            uniqueName: townData[index].uniqueName,\r\n            townType: townData[index].townType,\r\n            townTypeStr: townData[index].townTypeStr,\r\n            prefectureUniqueName: townData[index].prefectureUniqueName,\r\n            checked: !townData[index].checked,\r\n            disabled: townData[index].disabled\r\n        });\r\n        setTownData(newData);\r\n        onChange(newData);\r\n    };\r\n\r\n    const refreshTownOpetions = (prefectures, allTowns, selTowns) => {\r\n        let selectedTownList = selTowns.filter(function (currentElement) {\r\n            return (currentElement.checked);\r\n        });\r\n\r\n        var selectedTownUniqueNames = selectedTownList.map(function (obj) { return obj.uniqueName; });\r\n\r\n        allTowns = allTowns.map(item => {\r\n            item.disabled = false;\r\n            item.checked = selectedTownUniqueNames.includes(item.uniqueName);\r\n            return item;\r\n        })\r\n\r\n        setTownData(allTowns);\r\n    }\r\n\r\n    useEffect(() => {\r\n        refreshTownOpetions(selectedPrefectures, options, selectedTowns);\r\n    }, [selectedPrefectures, options, selectedTowns]);\r\n\r\n    return (\r\n        <>\r\n            <h3>Towns</h3>\r\n            {townData.map((item, index) => (\r\n                <div key={item.uniqueName}>\r\n                    <label>\r\n                        <input\r\n                            readOnly\r\n                            type=\"checkbox\"\r\n                            checked={item.checked || false}\r\n                            onClick={() => toggle(index)}\r\n                            disabled={item.disabled}\r\n                        /> <CheckboxText Disabled={item.disabled}>{item.name} {item.townTypeStr}</CheckboxText>\r\n                    </label><br />\r\n                </div>\r\n            ))}\r\n        </>\r\n    );\r\n};\r\n\r\nexport default TownCheckList;","import { useState, useEffect } from 'react'\r\nimport styled from 'styled-components';\r\n\r\nconst CheckboxText = styled.span`\r\n  ${props => props.Disabled && `\r\n         color: #b7b7b7;\r\n    `}\r\n`;\r\n\r\nconst AreaCheckList = ({ selectedPrefectures, selectedAreas, options, onChange }) => {\r\n    const [areaData, setAreaData] = useState(options);\r\n\r\n    const toggle = index => {\r\n        const newData = [...areaData];\r\n        newData.splice(index, 1, {\r\n            name: areaData[index].name,\r\n            uniqueName: areaData[index].uniqueName,\r\n            prefectureUniqueName: areaData[index].prefectureUniqueName,\r\n            checked: !areaData[index].checked,\r\n            disabled: areaData[index].disabled\r\n        });\r\n        setAreaData(newData);\r\n        onChange(newData);\r\n    };\r\n\r\n    const refreshAreaOpetions = (prefectures, allAreas, selAreas) => {\r\n        let selectedAreaList = selAreas.filter(function (currentElement) {\r\n            return (currentElement.checked);\r\n        });\r\n\r\n        var selectedAreaUniqueNames = selectedAreaList.map(function (obj) { return obj.uniqueName; });\r\n\r\n        allAreas = allAreas.map(item => {\r\n            item.disabled = false;\r\n            item.checked = selectedAreaUniqueNames.includes(item.uniqueName);\r\n            return item;\r\n        })\r\n\r\n        setAreaData(allAreas);\r\n    }\r\n\r\n    useEffect(() => {\r\n        refreshAreaOpetions(selectedPrefectures, options, selectedAreas);\r\n    }, [selectedPrefectures, options, selectedAreas]);\r\n\r\n    return (\r\n        <>\r\n            <h3>Areas</h3>\r\n            {areaData.map((item, index) => (\r\n                <div key={item.uniqueName}>\r\n                    <label>\r\n                        <input\r\n                            readOnly\r\n                            type=\"checkbox\"\r\n                            checked={item.checked || false}\r\n                            onClick={() => toggle(index)}\r\n                            disabled={item.disabled || false}\r\n                        /> <CheckboxText Disabled={item.disabled}>{item.name}</CheckboxText>\r\n                    </label><br />\r\n                </div>\r\n            ))}\r\n        </>\r\n    );\r\n};\r\n\r\nexport default AreaCheckList;","import { useState, useEffect } from 'react'\r\nimport { DropdownButton, Dropdown } from 'react-bootstrap'\r\nimport SkiAreaListTable from './SkiAreaListTable';\r\n\r\nconst SearchResult = ({ allSkiAreaList, ClearSort, prefectures, areas, towns, noFilter }) => {\r\n\r\n    const [searchedSkiAreaList, setSearchedSkiAreaList] = useState(allSkiAreaList)\r\n\r\n    const [buttonTitle, setButtonTitle] = useState('Sort By: Ski area name [A-Z]')\r\n    const [sortColumn, setSortColumn] = useState('Name')\r\n    const [sortOrder, setSortOrder] = useState('')\r\n    const [searchFilterPrefecture, setSearchFilterPrefecture] = useState('')\r\n    const [searchFilterArea, setSearchFilterArea] = useState('')\r\n    const [searchFilterTown, setSearchFilterTown] = useState('')\r\n\r\n    const ClearSortValues = () => {\r\n        setButtonTitle('Sort By: Ski area name [A-Z]')\r\n        setSortColumn('Name')\r\n        setSortOrder('')\r\n    }\r\n\r\n    const PerpareSearchFilter = () => {\r\n        if (prefectures.length > 0) {\r\n\r\n            let selectedPrefectures = prefectures.filter(function (currentElement) {\r\n                return (currentElement.checked === true);\r\n            });\r\n\r\n            let prefectureList = [...new Set(selectedPrefectures.map(item => item.name))].sort();\r\n            if (prefectureList.length > 0) {\r\n                setSearchFilterPrefecture(prefectureList.join(', '))\r\n            }\r\n        }\r\n\r\n        if (areas.length > 0) {\r\n\r\n            let selectedAreas = areas.filter(function (currentElement) {\r\n                return (currentElement.checked === true);\r\n            });\r\n\r\n            let areaList = [...new Set(selectedAreas.map(item => item.name))].sort();\r\n\r\n            if (areaList.length > 0) {\r\n                setSearchFilterArea(areaList.join(', '))\r\n            }\r\n        }\r\n\r\n        if (towns.length > 0) {\r\n\r\n            let selectedTowns = towns.filter(function (currentElement) {\r\n                return (currentElement.checked === true);\r\n            });\r\n\r\n            let townList = [...new Set(selectedTowns.map(item => item.name))].sort();\r\n\r\n            if (townList.length > 0) {\r\n                setSearchFilterTown(townList.join(', '))\r\n            }\r\n        }\r\n    }\r\n\r\n    useEffect(() => {\r\n        PerpareSearchFilter()\r\n        setSearchedSkiAreaList(allSkiAreaList)\r\n        ClearSortValues()\r\n        if (noFilter) {\r\n            setSearchFilterPrefecture('')\r\n            setSearchFilterArea('')\r\n            setSearchFilterTown('')\r\n        }\r\n    }, [allSkiAreaList, noFilter])\r\n\r\n    useEffect(() => {\r\n        ClearSort.current = ClearSortValues\r\n    }, [ClearSort])\r\n\r\n    const SortResult = (evtKey, evt) => {\r\n\r\n        var sortedResult = []\r\n        var sortColumn = ''\r\n        var sortOrder = ''\r\n\r\n        if (evtKey === '1' || evtKey === '2') {\r\n            sortedResult = searchedSkiAreaList.sort(function (a, b) {\r\n                let nameA = a.Name.toLowerCase(), nameB = b.Name.toLowerCase();\r\n\r\n                if (nameA < nameB) {\r\n                    return -1;\r\n                }\r\n                if (nameA > nameB) {\r\n                    return 1;\r\n                }\r\n                return 0;\r\n            })\r\n            sortOrder = \"ASC\"\r\n\r\n            if (evtKey === '2') {\r\n                sortedResult = sortedResult.reverse()\r\n                sortOrder = \"DESC\"\r\n            }\r\n\r\n            sortColumn = \"\"\r\n\r\n        } else if (evtKey === '3' || evtKey === '4') {\r\n            if (evtKey === '3') {\r\n                sortedResult = searchedSkiAreaList.sort(function (a, b) {\r\n                    if (a.MaximumElevation < b.MaximumElevation) return 1;\r\n                    if (a.MaximumElevation > b.MaximumElevation) return -1;\r\n\r\n                    if (a.Name > b.Name) return 1;\r\n                    if (a.Name < b.Name) return -1;\r\n\r\n                    return 0;\r\n                })\r\n                sortOrder = \"ASC\"\r\n            } else if (evtKey === '4') {\r\n                sortedResult = searchedSkiAreaList.sort(function (a, b) {\r\n                    if (a.MaximumElevation > b.MaximumElevation) return 1;\r\n                    if (a.MaximumElevation < b.MaximumElevation) return -1;\r\n\r\n                    if (a.Name > b.Name) return 1;\r\n                    if (a.Name < b.Name) return -1;\r\n\r\n                    return 0;\r\n                })\r\n\r\n                sortOrder = \"DESC\"\r\n            }\r\n\r\n            sortColumn = \"Top (m)\"\r\n\r\n        } else if (evtKey === '5' || evtKey === '6') {\r\n            if (evtKey === '5') {\r\n                sortedResult = searchedSkiAreaList.sort(function (a, b) {\r\n                    if (a.MinimumElevation < b.MinimumElevation) return 1;\r\n                    if (a.MinimumElevation > b.MinimumElevation) return -1;\r\n\r\n                    if (a.Name > b.Name) return 1;\r\n                    if (a.Name < b.Name) return -1;\r\n\r\n                    return 0;\r\n                })\r\n                sortOrder = \"ASC\"\r\n            } else if (evtKey === '6') {\r\n                sortedResult = searchedSkiAreaList.sort(function (a, b) {\r\n                    if (a.MinimumElevation > b.MinimumElevation) return 1;\r\n                    if (a.MinimumElevation < b.MinimumElevation) return -1;\r\n\r\n                    if (a.Name > b.Name) return 1;\r\n                    if (a.Name < b.Name) return -1;\r\n\r\n                    return 0;\r\n                })\r\n\r\n                sortOrder = \"DESC\"\r\n            }\r\n\r\n            sortColumn = \"Bottom (m)\"\r\n\r\n        } else if (evtKey === '7' || evtKey === '8') {\r\n            if (evtKey === '7') {\r\n                sortedResult = searchedSkiAreaList.sort(function (a, b) {\r\n                    if (a.VerticalDifference < b.VerticalDifference) return 1;\r\n                    if (a.VerticalDifference > b.VerticalDifference) return -1;\r\n\r\n                    if (a.Name > b.Name) return 1;\r\n                    if (a.Name < b.Name) return -1;\r\n\r\n                    return 0;\r\n                })\r\n                sortOrder = \"ASC\"\r\n            } else if (evtKey === '8') {\r\n                sortedResult = searchedSkiAreaList.sort(function (a, b) {\r\n                    if (a.VerticalDifference > b.VerticalDifference) return 1;\r\n                    if (a.VerticalDifference < b.VerticalDifference) return -1;\r\n\r\n                    if (a.Name > b.Name) return 1;\r\n                    if (a.Name < b.Name) return -1;\r\n\r\n                    return 0;\r\n                })\r\n\r\n                sortOrder = \"DESC\"\r\n            }\r\n\r\n            sortColumn = \"Vertical (m)\"\r\n\r\n        } else if (evtKey === '9' || evtKey === '10') {\r\n            if (evtKey === '9') {\r\n                sortedResult = searchedSkiAreaList.sort(function (a, b) {\r\n                    if (a.TotalSkiLifts < b.TotalSkiLifts) return 1;\r\n                    if (a.TotalSkiLifts > b.TotalSkiLifts) return -1;\r\n\r\n                    if (a.Name > b.Name) return 1;\r\n                    if (a.Name < b.Name) return -1;\r\n\r\n                    return 0;\r\n                })\r\n                sortOrder = \"ASC\"\r\n            } else if (evtKey === '10') {\r\n                sortedResult = searchedSkiAreaList.sort(function (a, b) {\r\n                    if (a.TotalSkiLifts > b.TotalSkiLifts) return 1;\r\n                    if (a.TotalSkiLifts < b.TotalSkiLifts) return -1;\r\n\r\n                    if (a.Name > b.Name) return 1;\r\n                    if (a.Name < b.Name) return -1;\r\n\r\n                    return 0;\r\n                })\r\n\r\n                sortOrder = \"DESC\"\r\n            }\r\n\r\n            sortColumn = \"Lifts\"\r\n\r\n        } else if (evtKey === '11' || evtKey === '12') {\r\n            if (evtKey === '11') {\r\n                sortedResult = searchedSkiAreaList.sort(function (a, b) {\r\n                    if (a.TotalSkiCourses < b.TotalSkiCourses) return 1;\r\n                    if (a.TotalSkiCourses > b.TotalSkiCourses) return -1;\r\n\r\n                    if (a.Name > b.Name) return 1;\r\n                    if (a.Name < b.Name) return -1;\r\n\r\n                    return 0;\r\n                })\r\n                sortOrder = \"ASC\"\r\n            } else if (evtKey === '12') {\r\n                sortedResult = searchedSkiAreaList.sort(function (a, b) {\r\n                    if (a.TotalSkiCourses > b.TotalSkiCourses) return 1;\r\n                    if (a.TotalSkiCourses < b.TotalSkiCourses) return -1;\r\n\r\n                    if (a.Name > b.Name) return 1;\r\n                    if (a.Name < b.Name) return -1;\r\n\r\n                    return 0;\r\n                })\r\n\r\n                sortOrder = \"DESC\"\r\n            }\r\n\r\n            sortColumn = \"Courses\"\r\n\r\n        } else if (evtKey === '13' || evtKey === '14') {\r\n            if (evtKey === '13') {\r\n                sortedResult = searchedSkiAreaList.sort(function (a, b) {\r\n                    if (a.LongestCourse < b.LongestCourse) return 1;\r\n                    if (a.LongestCourse > b.LongestCourse) return -1;\r\n\r\n                    if (a.Name > b.Name) return 1;\r\n                    if (a.Name < b.Name) return -1;\r\n\r\n                    return 0;\r\n                })\r\n                sortOrder = \"ASC\"\r\n            } else if (evtKey === '14') {\r\n                sortedResult = searchedSkiAreaList.sort(function (a, b) {\r\n                    if (a.LongestCourse > b.LongestCourse) return 1;\r\n                    if (a.LongestCourse < b.LongestCourse) return -1;\r\n\r\n                    if (a.Name > b.Name) return 1;\r\n                    if (a.Name < b.Name) return -1;\r\n\r\n                    return 0;\r\n                })\r\n\r\n                sortOrder = \"DESC\"\r\n            }\r\n\r\n            sortColumn = \"Longest (m)\"\r\n\r\n        } else if (evtKey === '15' || evtKey === '16') {\r\n            if (evtKey === '15') {\r\n                sortedResult = searchedSkiAreaList.sort(function (a, b) {\r\n                    if (a.SteepestSlope < b.SteepestSlope) return 1;\r\n                    if (a.SteepestSlope > b.SteepestSlope) return -1;\r\n\r\n                    if (a.Name > b.Name) return 1;\r\n                    if (a.Name < b.Name) return -1;\r\n\r\n                    return 0;\r\n                })\r\n                sortOrder = \"ASC\"\r\n            } else if (evtKey === '16') {\r\n                sortedResult = searchedSkiAreaList.sort(function (a, b) {\r\n                    if (a.SteepestSlope > b.SteepestSlope) return 1;\r\n                    if (a.SteepestSlope < b.SteepestSlope) return -1;\r\n\r\n                    if (a.Name > b.Name) return 1;\r\n                    if (a.Name < b.Name) return -1;\r\n\r\n                    return 0;\r\n                })\r\n\r\n                sortOrder = \"DESC\"\r\n            }\r\n\r\n            sortColumn = \"Steepest (º)\"\r\n        }\r\n\r\n        setSearchedSkiAreaList(sortedResult)\r\n        setButtonTitle('Sort by: ' + evt.target.innerText)\r\n        setSortColumn(sortColumn)\r\n        setSortOrder(sortOrder)\r\n    }\r\n\r\n    if (searchedSkiAreaList.length > 0) {\r\n        return (\r\n            <div className='mt-4'>\r\n                <div className='row sj-no-bg sj-row-no-margin-padding'>\r\n                    <div className='col-md-6 sj-row-no-margin-padding'>\r\n                        {searchFilterPrefecture !== '' &&\r\n                            <div><strong>[Prefecture] </strong>{searchFilterPrefecture}</div>\r\n                        }\r\n                        {searchFilterArea !== '' &&\r\n                            <div><strong>[Area] </strong>{searchFilterArea}</div>\r\n                        }\r\n                        {searchFilterTown !== '' &&\r\n                            <div><strong>[Town] </strong>{searchFilterTown}</div>\r\n                        }\r\n                        {(searchFilterPrefecture === '' && searchFilterArea === '' && searchFilterTown === '') &&\r\n                            <div>No filters selected</div>\r\n                        }\r\n                    </div>\r\n                    <div className='col-md-6 right-aligned sj-row-no-margin-padding'>\r\n                        <DropdownButton align=\"end\" title={buttonTitle} onSelect={SortResult} id=\"dropdown-menu-align-end\" className='sj-large-font-button'>\r\n                            <Dropdown.Item eventKey=\"1\">Ski area name [A-Z]</Dropdown.Item>\r\n                            <Dropdown.Item eventKey=\"2\">Ski area name [Z-A]</Dropdown.Item>\r\n                            <Dropdown.Item eventKey=\"3\">Maximum elevation [highest{'>'}lowest]</Dropdown.Item>\r\n                            <Dropdown.Item eventKey=\"4\">Maximum elevation [lowest{'>'}highest]</Dropdown.Item>\r\n                            <Dropdown.Item eventKey=\"5\">Minimum elevation [highest{'>'}lowest]</Dropdown.Item>\r\n                            <Dropdown.Item eventKey=\"6\">Minimum elevation [lowest{'>'}highest]</Dropdown.Item>\r\n                            <Dropdown.Item eventKey=\"7\">Vertical [most{'>'}least]</Dropdown.Item>\r\n                            <Dropdown.Item eventKey=\"8\">Vertical [least{'>'}most]</Dropdown.Item>\r\n                            <Dropdown.Item eventKey=\"9\">Lifts [most{'>'}least]</Dropdown.Item>\r\n                            <Dropdown.Item eventKey=\"10\">Lifts [least{'>'}most]</Dropdown.Item>\r\n                            <Dropdown.Item eventKey=\"11\">Courses [most{'>'}least]</Dropdown.Item>\r\n                            <Dropdown.Item eventKey=\"12\">Courses [least{'>'}most]</Dropdown.Item>\r\n                            <Dropdown.Item eventKey=\"13\">Longest [longest{'>'}shortest]</Dropdown.Item>\r\n                            <Dropdown.Item eventKey=\"14\">Longest [shortest{'>'}longest]</Dropdown.Item>\r\n                            <Dropdown.Item eventKey=\"15\">Steepest [steepest{'>'}gentlest]</Dropdown.Item>\r\n                            <Dropdown.Item eventKey=\"16\">Steepest [gentlest{'>'}steepest]</Dropdown.Item>\r\n                        </DropdownButton>\r\n                    </div>\r\n                </div>\r\n                <SkiAreaListTable\r\n                    tableData={searchedSkiAreaList}\r\n                    sortColumn={sortColumn}\r\n                    sortOrder={sortOrder}\r\n                    headingColumns={['', 'Top (m)', 'Bottom (m)', 'Vertical (m)', 'Lifts', 'Courses', 'Longest (m)', 'Steepest (º)']}\r\n                    //headingColumns={['Name', 'Town', 'Top', 'Bottom', 'Vertical', 'Ski Lifts', 'Ski Courses', 'Longest Course', 'Steepest Run']}\r\n                    dataMapping={['Name', 'MaximumElevation', 'MinimumElevation', 'VerticalDifference', 'TotalSkiLifts', 'TotalSkiCourses', 'LongestCourse', 'SteepestSlope']}\r\n                    title={`Currently ${allSkiAreaList.length} ski areas selected`}\r\n                />\r\n            </div>\r\n        )\r\n    } else {\r\n        return (\r\n            <>\r\n                <h3>No Result Found</h3>\r\n            </>\r\n        )\r\n    }\r\n};\r\n\r\nexport default SearchResult;","import { useState, useEffect, useRef } from 'react'\r\nimport { useParams } from 'react-router-dom'\r\nimport { Button, Offcanvas } from 'react-bootstrap'\r\nimport Loader from '../Common/Loader'\r\nimport PrefectureCheckList from '../Common/PrefectureCheckList'\r\nimport TownCheckList from '../Common/TownCheckList'\r\nimport AreaCheckList from '../Common/AreaCheckList'\r\nimport SearchResult from './SearchResult'\r\n\r\nconst SkiAreaSearch = ({ skiAreaList }) => {\r\n\r\n    const params = useParams()\r\n\r\n    const [allSkiAreaList, setAllSkiAreaList] = useState([])\r\n\r\n    // Prefectures\r\n    const [prefectures, setPrefectures] = useState([])\r\n    const [selectedPrefectures, setSelectedPrefectures] = useState([])\r\n\r\n    // Areas\r\n    const [allAreas, setAllAreas] = useState([])\r\n    const [selectedAreas, setSelectedAreas] = useState([])\r\n\r\n    // Towns\r\n    const [allTowns, setAllTowns] = useState([])\r\n    const [selectedTowns, setSelectedTowns] = useState([])\r\n\r\n    const ClearSort = useRef(null)\r\n    const [show, setShow] = useState(false)\r\n\r\n    const handleClose = () => setShow(false)\r\n    const handleShow = () => setShow(true)\r\n\r\n    const [noFilter, setNoFilter] = useState(true)\r\n\r\n    // Pre-Searched Prefecture, Area and Town List\r\n    const getAllSkiAreaPrefectures = (resultSkiAreaList) => {\r\n        if (resultSkiAreaList.length > 0) {\r\n            const prefectures = [...new Map(resultSkiAreaList.map(item => [item['PrefectureUniqueName'], item])).values()]\r\n\r\n            const uniquePrefectures = prefectures.map(p => ({ name: p.PrefectureName, uniqueName: p.PrefectureUniqueName, checked: false }))\r\n\r\n            uniquePrefectures.sort(function (a, b) {\r\n                let nameA = a.name.toLowerCase(),\r\n                    nameB = b.name.toLowerCase();\r\n\r\n                if (nameA < nameB) {\r\n                    return -1\r\n                }\r\n                if (nameA > nameB) {\r\n                    return 1\r\n                }\r\n                return 0\r\n\r\n            })\r\n\r\n            setPrefectures(uniquePrefectures)\r\n        }\r\n    }\r\n\r\n    const getAllSkiAreaAreas = (allSkiAreas) => {\r\n\r\n        if (allSkiAreas.length > 0) {\r\n            const areas = [...new Map(allSkiAreas.map(item => [item['AreaUniqueName'], item])).values()]\r\n\r\n            let filteredAreas = areas.filter(function (currentElement) {\r\n                return (currentElement.AreaUniqueName != null)\r\n            })\r\n\r\n            const uniqueAreas = filteredAreas.map(a => ({ name: a.AreaName, uniqueName: a.AreaUniqueName, prefectureUniqueName: a.PrefectureUniqueName, checked: false, disabled: false }));\r\n\r\n            uniqueAreas.sort(function (a, b) {\r\n                if (a.name === null || b.name === null) {\r\n                    return 0\r\n                }\r\n                let nameA = a.name.toLowerCase(),\r\n                    nameB = b.name.toLowerCase();\r\n\r\n                if (nameA < nameB) {\r\n                    return -1\r\n                }\r\n                if (nameA > nameB) {\r\n                    return 1\r\n                }\r\n                return 0\r\n            })\r\n\r\n            setAllAreas(uniqueAreas)\r\n        }\r\n    }\r\n\r\n    const getAllSkiAreaTowns = (allSkiAreas) => {\r\n        if (allSkiAreas.length > 0) {\r\n            const towns = [...new Map(allSkiAreas.map(item => [item['TownUniqueName'], item])).values()];\r\n\r\n            const uniqueTowns = towns.map(t => ({ name: t.TownName, uniqueName: t.TownUniqueName, townTypeStr: t.TownTypeStr, prefectureUniqueName: t.PrefectureUniqueName, checked: false, disabled: false }));\r\n\r\n            uniqueTowns.sort(function (a, b) {\r\n                let nameA = a.name.toLowerCase(),\r\n                    nameB = b.name.toLowerCase();\r\n\r\n                if (nameA < nameB) {\r\n                    return -1\r\n                }\r\n                if (nameA > nameB) {\r\n                    return 1\r\n                }\r\n                return 0\r\n\r\n            })\r\n\r\n            setAllTowns(uniqueTowns)\r\n        }\r\n    }\r\n\r\n    const getSearchResult = (thisSkiAreaList) => {\r\n        let searchedSkiAreas = thisSkiAreaList\r\n\r\n        // Prefecture Search\r\n        let selectedPrefectureList = selectedPrefectures.filter(function (currentElement) {\r\n            return (currentElement.checked)\r\n        });\r\n\r\n        var searchedSkiAreasPrefecture = []\r\n        var searchedSkiAreasArea = []\r\n        var searchedSkiAreasTown = []\r\n\r\n        if (selectedPrefectureList.length > 0) {\r\n\r\n            var prefectureUniqueNames = selectedPrefectureList.map(function (obj) { return obj.uniqueName; })\r\n\r\n            searchedSkiAreasPrefecture = thisSkiAreaList.filter(({ PrefectureUniqueName }) => prefectureUniqueNames.includes(PrefectureUniqueName))\r\n        }\r\n\r\n        // Area Search\r\n        let selectedAreaList = selectedAreas.filter(function (currentElement) {\r\n            return (currentElement.checked)\r\n        });\r\n\r\n        if (selectedAreaList.length > 0) {\r\n\r\n            var areaUniqueNames = selectedAreaList.map(function (obj) { return obj.uniqueName; })\r\n\r\n            searchedSkiAreasArea = thisSkiAreaList.filter(({ AreaUniqueName }) => areaUniqueNames.includes(AreaUniqueName))\r\n        }\r\n\r\n        // Town Search\r\n        let selectedTownList = selectedTowns.filter(function (currentElement) {\r\n            return (currentElement.checked);\r\n        });\r\n\r\n        if (selectedTownList.length > 0) {\r\n\r\n            var townUniqueNames = selectedTownList.map(function (obj) { return obj.uniqueName; })\r\n\r\n            searchedSkiAreasTown = thisSkiAreaList.filter(({ TownUniqueName }) => townUniqueNames.includes(TownUniqueName))\r\n        }\r\n\r\n        if (selectedPrefectureList.length > 0 || selectedAreaList.length > 0 || selectedTownList.length > 0) {\r\n            searchedSkiAreas = [...new Set([...searchedSkiAreasPrefecture, ...searchedSkiAreasArea, ...searchedSkiAreasTown])]\r\n\r\n            setNoFilter(false)\r\n        }\r\n\r\n        searchedSkiAreas = searchedSkiAreas.sort(function (a, b) {\r\n            let nameA = a.Name.toLowerCase(), nameB = b.Name.toLowerCase()\r\n\r\n            if (nameA < nameB) {\r\n                return -1\r\n            }\r\n            if (nameA > nameB) {\r\n                return 1\r\n            }\r\n            return 0\r\n        })\r\n\r\n        setAllSkiAreaList(searchedSkiAreas)\r\n        getAllSkiAreaPrefectures(searchedSkiAreas)\r\n        getAllSkiAreaAreas(skiAreaList)\r\n        getAllSkiAreaTowns(skiAreaList)\r\n    }\r\n\r\n    useEffect(() => {\r\n        getSearchResult(skiAreaList)\r\n\r\n    }, [params, skiAreaList, selectedPrefectures, selectedTowns, selectedAreas])\r\n\r\n    const ClearSearch = () => {\r\n\r\n        if (selectedPrefectures.length > 0) {\r\n            const selPrefectures = selectedPrefectures.map(p => ({ name: p.name, uniqueName: p.uniqueName, checked: false }));\r\n            setSelectedPrefectures(selPrefectures)\r\n        }\r\n\r\n        if (selectedAreas.length > 0) {\r\n            const selAreas = selectedAreas.map(a => ({ name: a.AreaName, uniqueName: a.AreaUniqueName, prefectureUniqueName: a.PrefectureUniqueName, checked: false, disabled: false }));\r\n            setSelectedAreas(selAreas)\r\n        }\r\n\r\n        if (selectedTowns.length > 0) {\r\n            const selTowns = selectedTowns.map(t => ({ name: t.TownName, uniqueName: t.TownUniqueName, prefectureUniqueName: t.PrefectureUniqueName, checked: false, disabled: false }));\r\n            setSelectedTowns(selTowns)\r\n        }\r\n\r\n        getSearchResult(skiAreaList)\r\n        setNoFilter(true)\r\n\r\n        ClearSort.current()\r\n    }\r\n\r\n    if (prefectures.length <= 0) {\r\n        return (\r\n            <Loader />\r\n        )\r\n    } else {\r\n        return (\r\n            <>\r\n                <Button variant=\"primary\" onClick={handleShow} className='sj-large-font-button sj-red-bg'>{'< Select filters'}</Button>&nbsp;\r\n                <Button variant=\"primary\" onClick={ClearSearch} className='sj-large-font-button'>Clear all filters</Button>\r\n                <Offcanvas show={show} onHide={handleClose}>\r\n                    <Offcanvas.Header closeButton>\r\n                        <Offcanvas.Title>\r\n                            <h3>Choose filter(s)</h3>\r\n                        </Offcanvas.Title>\r\n                    </Offcanvas.Header>\r\n                    <Offcanvas.Body>\r\n                        <div>Choose any combination of filters from this list of Prefectures, Areas and Towns.</div>\r\n                        <div className='search-bar-frame'>\r\n                            <div className='search-bar-frame-body'>\r\n                                <PrefectureCheckList\r\n                                    options={prefectures}\r\n                                    selectedPrefectures={selectedPrefectures}\r\n                                    onChange={data => {\r\n                                        setSelectedPrefectures(data);\r\n                                    }}\r\n                                />\r\n                            </div>\r\n                        </div>\r\n                        <div className='search-bar-frame'>\r\n                            <div className='search-bar-frame-body'>\r\n                                <AreaCheckList\r\n                                    options={allAreas}\r\n                                    selectedPrefectures={selectedPrefectures}\r\n                                    selectedAreas={selectedAreas}\r\n                                    onChange={data => {\r\n                                        setSelectedAreas(data);\r\n                                    }}\r\n                                />\r\n                            </div>\r\n                        </div>\r\n                        <div className='search-bar-frame'>\r\n                            <div className='search-bar-frame-body'>\r\n                                <TownCheckList\r\n                                    options={allTowns}\r\n                                    selectedPrefectures={selectedPrefectures}\r\n                                    selectedTowns={selectedTowns}\r\n                                    onChange={data => {\r\n                                        setSelectedTowns(data);\r\n                                    }}\r\n                                />\r\n                            </div>\r\n                        </div>\r\n                    </Offcanvas.Body>\r\n                </Offcanvas>\r\n                <div>\r\n                    <SearchResult allSkiAreaList={allSkiAreaList} ClearSort={ClearSort} prefectures={selectedPrefectures} areas={selectedAreas} towns={selectedTowns} noFilter={noFilter} />\r\n                </div>\r\n            </>\r\n        )\r\n    }\r\n}\r\n\r\nexport default SkiAreaSearch","import axios from 'axios'\r\nimport { useState, useEffect } from 'react'\r\nimport { useParams } from 'react-router-dom'\r\nimport { Helmet } from 'react-helmet'\r\nimport Loader from '../Common/Loader'\r\nimport SkiAreaSearch from './SkiAreaSearch'\r\n\r\nconst SkiAreaSearchContainer = () => {\r\n\r\n    const params = useParams()\r\n\r\n    const [skiAreaList, setSkiAreaList] = useState([])\r\n\r\n    const fetchSkiAreaList = async () => {\r\n        axios({\r\n            method: 'POST',\r\n            url: `${window.$baseAPIUrl}/skiarea/list/All`\r\n        }).then(dataResortList => {\r\n            setSkiAreaList(dataResortList.data)\r\n        })\r\n    };\r\n\r\n    useEffect(() => {\r\n        fetchSkiAreaList()\r\n    }, [params])\r\n\r\n    if (skiAreaList.length > 0) {\r\n        return (\r\n            <div className='empty-row'>\r\n                <Helmet>\r\n                    <title>Discover the ski areas of Japan | SnowJapan</title>\r\n                    <meta name=\"description\" content=\"Discover the ski areas of Japan using various filters and sorting criteria.\" />\r\n                </Helmet>\r\n                <h3>Discover Japan’s ski areas</h3>\r\n                <SkiAreaSearch params={params} skiAreaList={skiAreaList} />\r\n            </div>\r\n        )\r\n    } else {\r\n        return (\r\n            <Loader />\r\n        )\r\n    }\r\n}\r\n\r\nexport default SkiAreaSearchContainer","import axios from 'axios'\r\nimport { useEffect, useState } from 'react'\r\n\r\nconst useSkiAreaPhotos = (queryPhoto, userName, pageNumberPhoto) => {\r\n\r\n    const [loadingPhoto, setLoadingPhoto] = useState(false)\r\n    const [errorPhoto, setErrorPhoto] = useState(false)\r\n    const [photos, setPhotos] = useState([])\r\n    const [hasMorePhoto, setHasMorePhoto] = useState(false)\r\n\r\n    useEffect(() => {\r\n        setPhotos([])\r\n    }, [queryPhoto, userName])\r\n\r\n    useEffect(() => {\r\n        if (queryPhoto === '' && userName === '')\r\n            return null\r\n\r\n        setLoadingPhoto(true)\r\n        setErrorPhoto(false)\r\n\r\n        let cancelPhoto\r\n        axios({\r\n            method: 'POST',\r\n            url: `${window.$baseAPIUrl}/skiarea/photos/${pageNumberPhoto}`,\r\n            data: {\r\n                resortid: queryPhoto,\r\n                username: userName\r\n            },\r\n            cancelToken: new axios.CancelToken(c => cancelPhoto = c)\r\n        }).then(resPhoto => {\r\n            if (resPhoto.data === 'No Data Found') {\r\n                setHasMorePhoto(false)\r\n                setLoadingPhoto(false)\r\n                return () => cancelPhoto()\r\n            }\r\n\r\n            setPhotos(prevPhotos => {\r\n                return [...new Set([...prevPhotos, ...resPhoto.data.map(p => p)])]\r\n            })\r\n            setHasMorePhoto(resPhoto.data.length > 0)\r\n            setLoadingPhoto(false)\r\n        }).catch(e => {\r\n            if (axios.isCancel(e))\r\n                return\r\n            setErrorPhoto(true)\r\n        })\r\n\r\n        return () => cancelPhoto()\r\n\r\n    }, [queryPhoto, pageNumberPhoto])\r\n\r\n    return { loadingPhoto, errorPhoto, photos, hasMorePhoto }\r\n};\r\n\r\nexport default useSkiAreaPhotos;","import PropTypes from 'prop-types'\r\nimport { Button, Modal, Image } from 'react-bootstrap'\r\nimport { Link } from 'react-router-dom'\r\nimport { useState } from 'react'\r\n\r\nconst SkiAreaPhotoDetail = ({ photo }) => {\r\n    /*const [show, setShow] = useState(false)\r\n\r\n    const handleClose = () => {\r\n        setShow(false)\r\n    }\r\n    const showModal = () => {\r\n        setShow(true)\r\n    }*/\r\n    return (\r\n        <div>\r\n            <div className=\"sj-box sj-box-blue sj-round-half left-aligned mt-3\">\r\n                <h4>{photo.Caption}</h4>\r\n            </div>\r\n            {(photo.ResortUniqueName !== undefined && photo.ResortUniqueName !== null) &&\r\n                <div className=\"row sj-row-small-margin-padding sj-no-bg\">\r\n                    <div>\r\n                        <Link to={`${window.$baseSkiAreaUrl}/${photo.PrefectureUniqueName}/${photo.TownUniqueName}/${photo.ResortUniqueName}`}><h4>{photo.ResortName}</h4></Link>\r\n                    </div>\r\n                    <div className='sj-large-font'>\r\n                        <Link to={`${window.$baseSkiAreaUrl}/town/${photo.TownUniqueName}`}>{photo.TownName} {photo.TownTypeStr}</Link>,&nbsp;\r\n                        <Link to={`${window.$baseSkiAreaUrl}/prefecture/${photo.PrefectureUniqueName}`}>{photo.PrefectureName}</Link>\r\n                    </div>\r\n                </div>\r\n            }\r\n            <div className='sj-row-small-margin-padding center-aligned'>\r\n                <Image src={`${window.$baseAppUrl}/photo-galleries/${photo.CreatedByUserName}/${photo.PhotoFileName}`} alt={`thumb-${photo.Id}`} fluid='true' />\r\n            </div>\r\n            <div className=\"row sj-row-small-margin-padding\">\r\n                <div className=\"col-lg-2\">\r\n                    <strong>Uploaded by:</strong>\r\n                </div>\r\n                <div className=\"col-lg-10\">\r\n                    {photo.CreatedByUserName}\r\n                </div>\r\n            </div>\r\n            <div className=\"row sj-row-small-margin-padding\">\r\n                <div className=\"col-lg-2\">\r\n                    <strong>Uploaded on:</strong>\r\n                </div>\r\n                <div className=\"col-lg-10\">\r\n                    {photo.CreatedAtDayTh} {photo.CreatedAtMonthFull} {photo.CreatedAtYear}\r\n                </div>\r\n            </div>\r\n            <hr className='mt-5' />\r\n            {/*<Modal\r\n                show={show}\r\n                size=\"lg\"\r\n                onHide={handleClose}\r\n                backdrop=\"static\"\r\n                keyboard={false}\r\n            >\r\n                <Modal.Header closeButton>\r\n                    <Modal.Title>{photo.Caption}</Modal.Title>\r\n                </Modal.Header>\r\n                <Modal.Body>\r\n                    <div className='center-aligned'>\r\n                        <img src={`${window.$baseAppUrl}/photo-galleries/${photo.CreatedByUserName}/${photo.PhotoFileName}`} alt={`full-${photo.Id}`} />\r\n                    </div>\r\n                    {(photo.ResortUniqueName !== undefined && photo.ResortUniqueName !== null) &&\r\n                        <div className=\"row sj-row-small-margin-padding\">\r\n                            <div>\r\n                                <Link to={`${window.$baseSkiAreaUrl}/${photo.PrefectureUniqueName}/${photo.TownUniqueName}/${photo.ResortUniqueName}`}><h5>{photo.ResortName}</h5></Link>\r\n                                (<Link to={`${window.$baseSkiAreaUrl}/town/${photo.TownUniqueName}`}>{photo.TownName} {photo.TownTypeStr}</Link>,&nbsp;\r\n                                <Link to={`${window.$baseSkiAreaUrl}/prefecture/${photo.PrefectureUniqueName}`}>{photo.PrefectureName}</Link>)\r\n                            </div>\r\n                        </div>\r\n                    }\r\n                    <div className=\"row sj-row-small-margin-padding\">\r\n                        <div className=\"col-lg-3\">\r\n                            <strong>Uploaded by:</strong>\r\n                        </div>\r\n                        <div className=\"col-lg-9\">\r\n                            {photo.CreatedByUserName}\r\n                        </div>\r\n                    </div>\r\n                    <div className=\"row sj-row-small-margin-padding\">\r\n                        <div className=\"col-lg-3\">\r\n                            <strong>Uploaded on:</strong>\r\n                        </div>\r\n                        <div className=\"col-lg-9\">\r\n                            {photo.CreatedAtDayTh} {photo.CreatedAtMonthFull} {photo.CreatedAtYear}\r\n                        </div>\r\n                    </div>\r\n                </Modal.Body>\r\n                <Modal.Footer>\r\n                    <Button variant=\"secondary\" onClick={handleClose}>\r\n                        Close\r\n                    </Button>\r\n                </Modal.Footer>\r\n                </Modal>*/}\r\n        </div>\r\n    )\r\n};\r\n\r\nSkiAreaPhotoDetail.propTypes = {\r\n    photo: PropTypes.object.isRequired\r\n}\r\n\r\nexport default SkiAreaPhotoDetail;","import { useState, useRef, useCallback } from 'react'\r\nimport { Helmet } from 'react-helmet'\r\nimport { Link } from 'react-router-dom'\r\nimport Loader from '../Common/Loader'\r\nimport useSkiAreaPhotos from '../CustomHooks/useSkiAreaPhotos'\r\nimport SkiAreaPhotoDetail from './SkiAreaPhotoDetail'\r\n\r\nconst SkiAreaPhotos = () => {\r\n\r\n    const queryPhoto = 0\r\n    const userName = ''\r\n    const [pageNumberPhoto, setPaegNumberPhoto] = useState(1)\r\n\r\n    const {\r\n        loadingPhoto,\r\n        errorPhoto,\r\n        photos,\r\n        hasMorePhoto\r\n    } = useSkiAreaPhotos(queryPhoto, userName, pageNumberPhoto)\r\n\r\n    const observerPhoto = useRef()\r\n    const lastPhotoElementRef = useCallback(nodePhoto => {\r\n        if (loadingPhoto)\r\n            return\r\n        if (observerPhoto.current)\r\n            observerPhoto.current.disconnect()\r\n        observerPhoto.current = new IntersectionObserver(entriesPhoto => {\r\n            if (entriesPhoto[0].isIntersecting && hasMorePhoto) {\r\n                setPaegNumberPhoto(prevPageNumberPhoto => prevPageNumberPhoto + 1)\r\n            }\r\n        })\r\n\r\n        if (nodePhoto)\r\n            observerPhoto.current.observe(nodePhoto)\r\n    }, [loadingPhoto, hasMorePhoto])\r\n\r\n    return (\r\n        <div className='empty-row'>\r\n            <Helmet>\r\n                <title>Photos from ski areas around Japan | SnowJapan</title>\r\n                <meta name=\"description\" content=\"Photos from ski and snowboard areas throughout Japan, submitted by SnowJapan readers.\" />\r\n            </Helmet>\r\n            <div>\r\n                <div className=\"sj-para-image\"><img src=\"https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-Photos.svg\" alt='snowjapan-photo' /></div>\r\n                <div>\r\n                    <h3>Japanese ski area photos</h3>\r\n                    <div className=\"sj-para\">\r\n                        Photos taken at ski areas throughout Japan, as posted by SnowJapan members. Photos for each ski area also appear within the relevant section on SnowJapan. If you are looking for photos of a specific ski area, you can find them there.\r\n                    </div>\r\n                    <div className=\"sj-para\">\r\n                        <h6 className='mt-1 mb-1'><Link to={`${window.$baseMemberUrl}/upload-photo`} className='btn btn-primary sj-large-font-button sj-red-bg sj-50-box'>Upload new ski area photos</Link></h6>\r\n                    </div>\r\n                    <div className=\"sj-para\">\r\n                        <h6 className='mt-1 mb-1'><Link to={`${window.$baseMemberUrl}/submit-review`} className='btn btn-primary sj-large-font-button sj-red-bg sj-50-box'>Write a new ski area review</Link></h6>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            <div className='empty-row'>\r\n                <div className=\"sj-para\">\r\n                    <h3>Recent photos</h3>\r\n                </div>\r\n                {photos.map((photo, index) => {\r\n                    if (photos.length === index + 1) {\r\n                        return (\r\n                            <div ref={lastPhotoElementRef} key={photo.Id}>\r\n                                <SkiAreaPhotoDetail photo={photo} />\r\n                            </div>\r\n                        )\r\n                    } else {\r\n                        return (\r\n                            <div key={photo.Id}>\r\n                                <SkiAreaPhotoDetail photo={photo} />\r\n                            </div>\r\n                        )\r\n                    }\r\n                })}\r\n                <div>\r\n                    {loadingPhoto &&\r\n                        <Loader />\r\n                    }\r\n                </div>\r\n                <div>{errorPhoto && 'Error'}</div>\r\n            </div>\r\n        </div>\r\n    )\r\n};\r\n\r\nexport default SkiAreaPhotos;","import axios from 'axios'\r\nimport { useEffect, useState } from 'react'\r\n\r\nconst useSkiAreaReviews = (queryReview, userName, pageNumberReview) => {\r\n\r\n    const [loadingReview, setLoadingReview] = useState(false)\r\n    const [errorReview, setErrorReview] = useState(false)\r\n    const [reviews, setReviews] = useState([])\r\n    const [hasMoreReview, setHasMoreReview] = useState(false)\r\n\r\n    useEffect(() => {\r\n        setReviews([])\r\n    }, [queryReview, userName])\r\n\r\n    useEffect(() => {\r\n        if (queryReview === '' && userName === '')\r\n            return null\r\n\r\n        setLoadingReview(true)\r\n        setErrorReview(false)\r\n\r\n        let cancelReview\r\n        axios({\r\n            method: 'POST',\r\n            url: `${window.$baseAPIUrl}/skiarea/reviews/${pageNumberReview}`,\r\n            data: {\r\n                resortid: queryReview,\r\n                username: userName\r\n            },\r\n            cancelToken: new axios.CancelToken(c => cancelReview = c)\r\n        }).then(resReview => {\r\n            if (resReview.data === 'No Data Found') {\r\n                setHasMoreReview(false)\r\n                setLoadingReview(false)\r\n                return () => cancelReview()\r\n            }\r\n            setReviews(prevReviews => {\r\n                return [...new Set([...prevReviews, ...resReview.data.map(p => p)])]\r\n            })\r\n            setHasMoreReview(resReview.data.length > 0)\r\n            setLoadingReview(false)\r\n        }).catch(e => {\r\n            if (axios.isCancel(e))\r\n                return\r\n            setErrorReview(true)\r\n        })\r\n\r\n        return () => cancelReview()\r\n\r\n    }, [queryReview, pageNumberReview])\r\n\r\n    return { loadingReview, errorReview, reviews, hasMoreReview }\r\n};\r\n\r\nexport default useSkiAreaReviews;","import { Link } from 'react-router-dom'\r\nimport { RenderBreak } from '../../helpers/Helper'\r\nimport PropTypes from 'prop-types'\r\n\r\nconst SkiAreaReviewDetail = ({ review }) => {\r\n    return (\r\n        <div className='sj-row'>\r\n            <div className=\"sj-box sj-box-blue sj-round-half left-aligned mt-3\">\r\n                <h4>{review.Headline}</h4>\r\n            </div>\r\n            <div className=\"row sj-row-small-margin-padding sj-no-bg\">\r\n                <div>\r\n                    <Link to={`${window.$baseSkiAreaUrl}/${review.PrefectureUniqueName}/${review.TownUniqueName}/${review.ResortUniqueName}`}><h4>{review.ResortName}</h4></Link>\r\n                </div>\r\n                <div className='sj-large-font'>\r\n                    <Link to={`${window.$baseSkiAreaUrl}/town/${review.TownUniqueName}`}>{review.TownName} {review.TownTypeStr}</Link>,&nbsp;\r\n                    <Link to={`${window.$baseSkiAreaUrl}/prefecture/${review.PrefectureUniqueName}`}>{review.PrefectureName}</Link>\r\n                </div>\r\n            </div>\r\n            {review.ReviewText !== '' &&\r\n                <div className='row sj-row-small-margin-padding sj-no-bg'>\r\n                    <div dangerouslySetInnerHTML={{ __html: RenderBreak(review.ReviewText) }} />\r\n                </div>\r\n            }\r\n            <div className=\"row sj-row-small-margin-padding\">\r\n                <div className=\"col-lg-2\">\r\n                    <strong>Date visited:</strong>\r\n                </div>\r\n                <div className=\"col-lg-10\">\r\n                    {review.DateVisited}\r\n                </div>\r\n            </div>\r\n            <div className=\"row sj-row-small-margin-padding\">\r\n                <div className=\"col-lg-2\">\r\n                    <strong>Things I liked:</strong>\r\n                </div>\r\n                <div className=\"col-lg-10\">\r\n                    {review.ThingsILiked}\r\n                </div>\r\n            </div>\r\n            <div className=\"row sj-row-small-margin-padding\">\r\n                <div className=\"col-lg-2\">\r\n                    <strong>Things I didn’t like:</strong>\r\n                </div>\r\n                <div className=\"col-lg-10\">\r\n                    {review.ThingsIDidnotLike}\r\n                </div>\r\n            </div>\r\n            <div className=\"row sj-row-small-margin-padding\">\r\n                <div className=\"col-lg-2\">\r\n                    <strong>Review by:</strong>\r\n                </div>\r\n                <div className=\"col-lg-10\">\r\n                    {review.ReaderName}\r\n                </div>\r\n            </div>\r\n            <div className=\"row sj-row-small-margin-padding\">\r\n                <div className=\"col-lg-2\">\r\n                    <strong>Posted:</strong>\r\n                </div>\r\n                <div className=\"col-lg-10\">\r\n                    {review.SubmittedDayTh} {review.SubmittedMonthFull} {review.SubmittedYear}\r\n                </div>\r\n            </div>\r\n            <hr className='mt-5' />\r\n        </div>\r\n    )\r\n};\r\n\r\nSkiAreaReviewDetail.propTypes = {\r\n    review: PropTypes.object.isRequired\r\n}\r\n\r\nexport default SkiAreaReviewDetail;","import { useState, useRef, useCallback } from 'react'\r\nimport { Helmet } from 'react-helmet'\r\nimport { Link } from 'react-router-dom'\r\nimport Loader from '../Common/Loader'\r\nimport useSkiAreaReviews from '../CustomHooks/useSkiAreaReviews'\r\nimport SkiAreaReviewDetail from './SkiAreaReviewDetail'\r\n\r\nconst SkiAreaReviews = () => {\r\n    const queryReview = 0\r\n    const userName = ''\r\n    const [pageNumberReview, setPaegNumberReview] = useState(1)\r\n\r\n    const {\r\n        loadingReview,\r\n        errorReview,\r\n        reviews,\r\n        hasMoreReview\r\n    } = useSkiAreaReviews(queryReview, userName, pageNumberReview)\r\n\r\n    const observerReview = useRef()\r\n    const lastReviewElementRef = useCallback(nodeReview => {\r\n        if (loadingReview)\r\n            return\r\n        if (observerReview.current)\r\n            observerReview.current.disconnect()\r\n        observerReview.current = new IntersectionObserver(entriesReview => {\r\n            if (entriesReview[0].isIntersecting && hasMoreReview) {\r\n                setPaegNumberReview(prevPageNumberReview => prevPageNumberReview + 1)\r\n            }\r\n        })\r\n\r\n        if (nodeReview)\r\n            observerReview.current.observe(nodeReview)\r\n    }, [loadingReview, hasMoreReview])\r\n\r\n    return (\r\n        <div className='empty-row'>\r\n            <Helmet>\r\n                <title>Reviews of ski areas around Japan | SnowJapan</title>\r\n                <meta name=\"description\" content=\"Reviews of ski and snowboard areas throughout Japan, submitted by SnowJapan readers.\" />\r\n            </Helmet>\r\n            <div>\r\n                <div className=\"sj-para-image\"><img src=\"https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-Reviews.svg\" alt='review' /></div>\r\n                <div>\r\n                    <h3>Japanese ski area reviews</h3>\r\n                    <div className=\"sj-para\">\r\n                        Reviews of ski areas throughout Japan, as posted by SnowJapan members. The views expressed in these reviews are not those of SnowJapan. Reviews for each ski area also appear within the relevant section on SnowJapan. If you are looking for reviews of a specific ski area, you can find them there.\r\n                    </div>\r\n                    <div className=\"sj-para\">\r\n                        <h6 className='mt-1 mb-1'><Link to={`${window.$baseMemberUrl}/submit-review`} className='btn btn-primary sj-large-font-button sj-red-bg sj-50-box'>Write a new ski area review</Link></h6>\r\n                    </div>\r\n                    <div className=\"sj-para\">\r\n                        <h6 className='mt-1 mb-1'><Link to={`${window.$baseMemberUrl}/upload-photo`} className='btn btn-primary sj-large-font-button sj-red-bg sj-50-box'>Upload new ski area photos</Link></h6>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            <div className='empty-row'>\r\n                <div className=\"sj-para\">\r\n                    <h3>Recent reviews</h3>\r\n                </div>\r\n                {reviews.map((review, index) => {\r\n                    if (reviews.length === index + 1) {\r\n                        return (\r\n                            <div ref={lastReviewElementRef} key={review.Id}>\r\n                                <SkiAreaReviewDetail review={review} />\r\n                            </div>\r\n                        )\r\n                    } else {\r\n                        return (\r\n                            <div key={review.Id}>\r\n                                <SkiAreaReviewDetail review={review} />\r\n                            </div>\r\n                        )\r\n                    }\r\n                })}\r\n                <div>\r\n                    {loadingReview &&\r\n                        <Loader />\r\n                    }\r\n                </div>\r\n                <div>{errorReview && 'Error'}</div>\r\n            </div>\r\n        </div>\r\n    )\r\n};\r\n\r\nexport default SkiAreaReviews;","import axios from 'axios'\r\nimport { useState, useEffect } from 'react'\r\nimport { Link } from 'react-router-dom'\r\n\r\nconst Areas = () => {\r\n    const [areaList, setAreaList] = useState([]);\r\n\r\n    const fetchAreas = async () => {\r\n        axios({\r\n            method: 'POST',\r\n            url: `${window.$baseAPIUrl}/area/list`\r\n        }).then(resArea => {\r\n            setAreaList(resArea.data)\r\n        })\r\n    };\r\n\r\n    useEffect(() => {\r\n        fetchAreas();\r\n    }, []);\r\n\r\n    return (\r\n\r\n        <div className='ski-area-listing-holder'>\r\n            <ul className=\"sj-no-bullets-thin\">\r\n                {areaList.map(area => (\r\n                    <li key={area.Id}><Link to={`${window.$baseSkiAreaUrl}/area/${area.UniqueName}`}>{area.Name} ({area.TotalResorts})</Link></li>\r\n                ))}\r\n            </ul>\r\n        </div>\r\n    )\r\n};\r\n\r\nexport default Areas;","import axios from 'axios'\r\nimport { useState, useEffect } from 'react'\r\nimport { Link } from 'react-router-dom'\r\n\r\nconst Prefectures = () => {\r\n    const [prefectureList, setPrefectureList] = useState([]);\r\n\r\n    const fetchPrefectures = async () => {\r\n        axios({\r\n            method: 'POST',\r\n            url: `${window.$baseAPIUrl}/prefecture/list`\r\n        }).then(resPrefecture => {\r\n            setPrefectureList(resPrefecture.data)\r\n        })\r\n    };\r\n\r\n    useEffect(() => {\r\n        fetchPrefectures()\r\n    }, []);\r\n\r\n    return (\r\n        <div className='ski-area-listing-holder'>\r\n            <ul className=\"sj-no-bullets-thin\">\r\n                {prefectureList.map(prefecture => (\r\n                    <li key={prefecture.Id}><Link to={`${window.$baseSkiAreaUrl}/prefecture/${prefecture.UniqueName}`}>{prefecture.Name} ({prefecture.TotalResorts})</Link></li>\r\n                ))}\r\n            </ul>\r\n        </div>\r\n    )\r\n};\r\n\r\nexport default Prefectures;","import axios from 'axios'\r\nimport { useState, useEffect } from 'react'\r\nimport { Link } from 'react-router-dom'\r\n\r\nconst Towns = () => {\r\n\r\n\r\n    const [townList, setTownList] = useState([]);\r\n\r\n    const fetchTown = async () => {\r\n        axios({\r\n            method: 'POST',\r\n            url: `${window.$baseAPIUrl}/town/list`\r\n        }).then(resTown => {\r\n            setTownList(resTown.data)\r\n        })\r\n    };\r\n\r\n    useEffect(() => {\r\n        fetchTown();\r\n    }, []);\r\n\r\n    return (\r\n        <div className='ski-area-listing-holder'>\r\n            <ul className=\"sj-no-bullets-thin\">\r\n                {townList.map(town => (\r\n                    <li key={town.Id}><Link to={`${window.$baseSkiAreaUrl}/town/${town.UniqueName}`}>{town.Name} {town.TownTypeStr} ({town.TotalResorts})</Link></li>\r\n                ))}\r\n            </ul>\r\n        </div>\r\n    )\r\n};\r\n\r\nexport default Towns;","import { Helmet } from \"react-helmet\";\r\nimport Areas from './Areas'\r\nimport Prefectures from './Prefectures'\r\nimport Towns from './Towns'\r\n\r\nconst Listings = () => {\r\n    return (\r\n        <div className='empty-row'>\r\n            <Helmet>\r\n                <title>Listings of ski areas around Japan | SnowJapan</title>\r\n                <meta name=\"description\" content=\"Listings of all the ski areas in Japan by popular area, town and prefecture.\" />\r\n            </Helmet>\r\n            <h3>Ski areas by prefecture, town and region</h3>\r\n            <div className='sj-para'>\r\n                Discover all of the ski areas of Japan by prefecture, town and region. The number in brackets is the number of ski areas in each list. SnowJapan has assigned the regions lists as an additional way to discover well-known ski areas. It is not an official or geographical classification. We may add to or adjust those lists as we feel appropriate.\r\n            </div>\r\n            <div className='row sj-no-bg sj-row-no-margin-padding'>\r\n                <div className='col-lg-4 col-sm-6 sj-row-no-margin-padding sj-guide-frame-first'>\r\n                    <div className='sj-guide-frame'>\r\n                        <div className=\"sj-box sj-box-dark-gray sj-round-half center-aligned\">\r\n                            <h4>Prefectures</h4>\r\n                        </div>\r\n                        <div className='sj-guide-frame-body'>\r\n                            <div>\r\n                                <img\r\n                                    src=\"https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/pref.svg\" alt='prefecture' />\r\n                            </div>\r\n                            <div className='left-aligned mt-3 mb-2'>\r\n                                <h5>Discover ski areas by prefecture</h5>\r\n                            </div>\r\n                            <Prefectures />\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                <div className='col-lg-4 col-sm-6 sj-row-no-margin-padding sj-guide-frame-middle'>\r\n                    <div className='sj-guide-frame'>\r\n                        <div className=\"sj-box sj-box-dark-gray sj-round-half center-aligned\">\r\n                            <h4>Towns</h4>\r\n                        </div>\r\n                        <div className='sj-guide-frame-body'>\r\n                            <div>\r\n                                <img\r\n                                    src=\"https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/town.svg\" alt='town' />\r\n                            </div>\r\n                            <div className='left-aligned mt-3 mb-2'>\r\n                                <h5>Discover ski areas by town</h5>\r\n                            </div>\r\n                            <Towns />\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                <div className='col-lg-4 col-sm-6 sj-row-no-margin-padding sj-guide-frame-last'>\r\n                    <div className='sj-guide-frame'>\r\n                        <div className=\"sj-box sj-box-dark-gray sj-round-half center-aligned\">\r\n                            <h4>Popular regions</h4>\r\n                        </div>\r\n                        <div className='sj-guide-frame-body'>\r\n                            <div>\r\n                                <img\r\n                                    src=\"https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/area.svg\" alt='area' />\r\n                            </div>\r\n                            <div className='left-aligned mt-3 mb-2'>\r\n                                <h5>Discover ski areas by popular region</h5>\r\n                            </div>\r\n                            <Areas />\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    )\r\n};\r\n\r\nexport default Listings;","import { Fragment } from 'react'\r\nimport { useParams } from 'react-router-dom'\r\nimport SkiAreaHome from './Home'\r\nimport SkiAreaSearchContainer from './SkiAreaSearchContainer'\r\nimport SkiAreaPhotos from './SkiAreaPhotos'\r\nimport SkiAreaReviews from './SkiAreaReviews'\r\nimport SkiAreaListings from './Listings'\r\n\r\nconst SkiAreaContainer = () => {\r\n\r\n    const params = useParams()\r\n\r\n    return (\r\n        <Fragment>\r\n            <>\r\n                {\r\n                    {\r\n                        undefined: <SkiAreaHome />,\r\n                        'discover': <SkiAreaSearchContainer />,\r\n                        'reviews': <SkiAreaReviews />,\r\n                        'photos': <SkiAreaPhotos />,\r\n                        'listings': <SkiAreaListings />\r\n                    }[params.type]\r\n                }\r\n            </>\r\n        </Fragment>\r\n    )\r\n}\r\n\r\nexport default SkiAreaContainer","import { useState, useEffect } from 'react'\r\nimport { Image } from 'react-bootstrap'\r\n\r\nconst SkiAreaListMap = ({ skiAreaList, prefecture, area, town }) => {\r\n\r\n    const [mapPath, setMapPath] = useState('');\r\n\r\n    const getMapPath = (thisPrefecture, thisArea, thisTown) => {\r\n        if (thisPrefecture !== undefined) {\r\n            setMapPath('https://www.snowjapan.com//UploadedFiles/MapImages/Prefectures/' + thisPrefecture.MapImage)\r\n        } else if (thisArea !== undefined) {\r\n            setMapPath('https://www.snowjapan.com//UploadedFiles/MapImages/Areas/' + thisArea.MapImage)\r\n        } else if (thisTown !== undefined) {\r\n            setMapPath('https://www.snowjapan.com//UploadedFiles/MapImages/Towns/' + thisTown.MapImage)\r\n        }\r\n    }\r\n\r\n    useEffect(() => {\r\n        getMapPath(prefecture, area, town);\r\n    }, [skiAreaList, prefecture, area, town]);\r\n\r\n    return (\r\n        <>\r\n            {mapPath !== '' &&\r\n                <div className='mt-5'>\r\n                    <div className='empty-row center-aligned sj-map-andrew'>\r\n                        <Image src={mapPath} fluid='true' alt='ski area map' />\r\n                    </div>\r\n                </div>\r\n            }\r\n        </>\r\n    )\r\n};\r\n\r\nexport default SkiAreaListMap;","import { useState } from 'react'\r\nimport { Link } from 'react-router-dom'\r\nimport { GoogleMap, LoadScript, Marker, InfoWindow } from '@react-google-maps/api';\r\n\r\nconst SkiAreaMapContainer = ({ mapCenter, mapZoom, skiAreaList }) => {\r\n\r\n    const [selected, setSelected] = useState({});\r\n\r\n    const onSelect = (item) => {\r\n        const selectedItem = {\r\n            name: item.Name,\r\n            location: {\r\n                lat: parseFloat(item.Location_Latitude),\r\n                lng: parseFloat(item.Location_Longitude)\r\n            },\r\n            maximumElevation: item.MaximumElevation,\r\n            minimumElevation: item.MinimumElevation,\r\n            verticalDifference: item.VerticalDifference,\r\n            totalSkiLifts: item.TotalSkiLifts,\r\n            totalSkiCourses: item.TotalSkiCourses,\r\n            longestCourse: item.LongestCourse,\r\n            steepestSlope: item.SteepestSlope,\r\n            uniqueName: item.UniqueName,\r\n            prefectureUniqueName: item.PrefectureUniqueName,\r\n            townUniqueName: item.TownUniqueName\r\n        }\r\n\r\n        setSelected(selectedItem);\r\n    }\r\n\r\n    const mapStyles = {\r\n        height: \"100vh\",\r\n        width: \"100%\"\r\n    };\r\n\r\n    return (\r\n        <LoadScript\r\n            googleMapsApiKey='AIzaSyAmyWUwcoNW504tXuRlQ_mZssrKEEhGn20'>\r\n            <GoogleMap\r\n                mapContainerStyle={mapStyles}\r\n                zoom={mapZoom}\r\n                center={mapCenter}\r\n            >\r\n                {\r\n                    skiAreaList.map(item => {\r\n                        return (\r\n                            <Marker key={item.UniqueName} position={{ lat: parseFloat(item.Location_Latitude), lng: parseFloat(item.Location_Longitude) }} onClick={() => onSelect(item)} />\r\n                        )\r\n                    })\r\n                }\r\n                {\r\n                    selected.location &&\r\n                    (\r\n                        <InfoWindow\r\n                            position={selected.location}\r\n                            clickable={true}\r\n                            onCloseClick={() => setSelected({})}\r\n                        >\r\n                            <>\r\n                                <Link to={`${window.$baseSkiAreaUrl}/${selected.prefectureUniqueName}/${selected.townUniqueName}/${selected.uniqueName}`}><h5>{selected.name}</h5></Link>\r\n                                <p className='info-box-text'><strong>Top:</strong> {selected.maximumElevation}m</p>\r\n                                <p className='info-box-text'><strong>Bottom:</strong> {selected.minimumElevation}m</p>\r\n                                <p className='info-box-text'><strong>Vertical:</strong> {selected.verticalDifference}m</p>\r\n                                <p className='info-box-text'><strong>Number of lifts:</strong> {selected.totalSkiLifts}</p>\r\n                                <p className='info-box-text'><strong>Number of courses:</strong> {selected.totalSkiCourses}</p>\r\n                                <p className='info-box-text'><strong>Longest course:</strong> {selected.longestCourse}m</p>\r\n                                <p className='info-box-text'><strong>Steepest run:</strong> {selected.steepestSlope}º</p>\r\n                            </>\r\n                        </InfoWindow>\r\n                    )\r\n                }\r\n            </GoogleMap>\r\n        </LoadScript>\r\n    )\r\n}\r\n\r\nexport default SkiAreaMapContainer;","import { useState, useEffect } from 'react'\r\nimport { Link, useParams, useLocation } from 'react-router-dom'\r\nimport { Helmet } from 'react-helmet'\r\nimport { DropdownButton, Dropdown, Button, Collapse } from 'react-bootstrap'\r\nimport axios from 'axios'\r\nimport Loader from '../Common/Loader'\r\nimport SkiAreaListTable from './SkiAreaListTable'\r\nimport SkiAreaListMap from './SkiAreaListMap'\r\nimport SkiAreaMapContainer from '../Common/SkiAreaMapContainer'\r\nimport JapanMap from '../SkiArea/JapanMap'\r\n\r\nconst SkiAreaList = () => {\r\n\r\n    const params = useParams()\r\n    const location = useLocation()\r\n\r\n    const [allSkiAreaList, setAllSkiAreaList] = useState([])\r\n    const [prefecture, setPrefecture] = useState(undefined)\r\n    const [area, setArea] = useState(undefined)\r\n    const [town, setTown] = useState(undefined)\r\n    //const [tableTitleName, setTableTitleName] = useState('');\r\n\r\n    const [buttonTitle, setButtonTitle] = useState('Sort By: Ski area name [A-Z]')\r\n    const [sortColumn, setSortColumn] = useState('Name')\r\n    const [sortOrder, setSortOrder] = useState('')\r\n\r\n    const [open, setOpen] = useState(false)\r\n\r\n    let requestType = ''\r\n\r\n    const fetchPrefecture = async (prefectureUniqueName) => {\r\n        axios({\r\n            method: 'POST',\r\n            url: `${window.$baseAPIUrl}/prefecture/${prefectureUniqueName}`\r\n        }).then(resPrefecture => {\r\n            setPrefecture(resPrefecture.data)\r\n        })\r\n    };\r\n\r\n    const fetchArea = async (areaUniqueName) => {\r\n        axios({\r\n            method: 'POST',\r\n            url: `${window.$baseAPIUrl}/area/${areaUniqueName}`\r\n        }).then(resArea => {\r\n            setArea(resArea.data)\r\n        })\r\n    };\r\n\r\n    const fetchTown = async (townUniqueName) => {\r\n        axios({\r\n            method: 'POST',\r\n            url: `${window.$baseAPIUrl}/town/${townUniqueName}`\r\n        }).then(resTown => {\r\n            setTown(resTown.data)\r\n        })\r\n    };\r\n\r\n    if (location.pathname.includes('prefecture')) {\r\n        requestType = 'prefecture'\r\n    }\r\n    else if (location.pathname.includes('area')) {\r\n        requestType = 'area'\r\n    }\r\n    else if (location.pathname.includes('town')) {\r\n        requestType = 'town'\r\n    }\r\n\r\n    const fetchSkiAreaList = async (requestType, resortUniqueName) => {\r\n        axios({\r\n            method: 'POST',\r\n            url: `${window.$baseAPIUrl}/skiarea/list/${requestType}/${resortUniqueName}`\r\n        }).then(dataResortList => {\r\n            setAllSkiAreaList(dataResortList.data)\r\n        })\r\n    }\r\n\r\n    useEffect(() => {\r\n        if (location.pathname.includes('prefecture')) {\r\n            fetchPrefecture(params.key)\r\n        }\r\n        else if (location.pathname.includes('area')) {\r\n            fetchArea(params.key)\r\n        }\r\n        else if (location.pathname.includes('town')) {\r\n            fetchTown(params.key)\r\n        }\r\n\r\n        fetchSkiAreaList(requestType, params.key)\r\n\r\n    }, [requestType, location.pathname, params.key])\r\n\r\n    const SortResult = (evtKey, evt) => {\r\n\r\n        var sortedResult = []\r\n        var sortColumn = ''\r\n        var sortOrder = ''\r\n\r\n        if (evtKey === '1' || evtKey === '2') {\r\n            sortedResult = allSkiAreaList.sort(function (a, b) {\r\n                let nameA = a.Name.toLowerCase(), nameB = b.Name.toLowerCase();\r\n\r\n                if (nameA < nameB) {\r\n                    return -1\r\n                }\r\n                if (nameA > nameB) {\r\n                    return 1\r\n                }\r\n                return 0\r\n            })\r\n            sortOrder = \"ASC\"\r\n\r\n            if (evtKey === '2') {\r\n                sortedResult = sortedResult.reverse()\r\n                sortOrder = \"DESC\"\r\n            }\r\n\r\n            sortColumn = \"\"\r\n\r\n        } else if (evtKey === '3' || evtKey === '4') {\r\n            if (evtKey === '3') {\r\n                sortedResult = allSkiAreaList.sort(function (a, b) {\r\n                    if (a.MaximumElevation < b.MaximumElevation) return 1\r\n                    if (a.MaximumElevation > b.MaximumElevation) return -1\r\n\r\n                    if (a.Name > b.Name) return 1\r\n                    if (a.Name < b.Name) return -1\r\n\r\n                    return 0\r\n                })\r\n                sortOrder = \"ASC\"\r\n            } else if (evtKey === '4') {\r\n                sortedResult = allSkiAreaList.sort(function (a, b) {\r\n                    if (a.MaximumElevation > b.MaximumElevation) return 1\r\n                    if (a.MaximumElevation < b.MaximumElevation) return -1\r\n\r\n                    if (a.Name > b.Name) return 1\r\n                    if (a.Name < b.Name) return -1\r\n\r\n                    return 0\r\n                })\r\n\r\n                sortOrder = \"DESC\"\r\n            }\r\n\r\n            sortColumn = \"Top (m)\"\r\n\r\n        } else if (evtKey === '5' || evtKey === '6') {\r\n            if (evtKey === '5') {\r\n                sortedResult = allSkiAreaList.sort(function (a, b) {\r\n                    if (a.MinimumElevation < b.MinimumElevation) return 1\r\n                    if (a.MinimumElevation > b.MinimumElevation) return -1\r\n\r\n                    if (a.Name > b.Name) return 1\r\n                    if (a.Name < b.Name) return -1\r\n\r\n                    return 0\r\n                })\r\n                sortOrder = \"ASC\"\r\n            } else if (evtKey === '6') {\r\n                sortedResult = allSkiAreaList.sort(function (a, b) {\r\n                    if (a.MinimumElevation > b.MinimumElevation) return 1\r\n                    if (a.MinimumElevation < b.MinimumElevation) return -1\r\n\r\n                    if (a.Name > b.Name) return 1\r\n                    if (a.Name < b.Name) return -1\r\n\r\n                    return 0\r\n                })\r\n\r\n                sortOrder = \"DESC\"\r\n            }\r\n\r\n            sortColumn = \"Bottom (m)\"\r\n\r\n        } else if (evtKey === '7' || evtKey === '8') {\r\n            if (evtKey === '7') {\r\n                sortedResult = allSkiAreaList.sort(function (a, b) {\r\n                    if (a.VerticalDifference < b.VerticalDifference) return 1\r\n                    if (a.VerticalDifference > b.VerticalDifference) return -1\r\n\r\n                    if (a.Name > b.Name) return 1\r\n                    if (a.Name < b.Name) return -1\r\n\r\n                    return 0\r\n                })\r\n                sortOrder = \"ASC\"\r\n            } else if (evtKey === '8') {\r\n                sortedResult = allSkiAreaList.sort(function (a, b) {\r\n                    if (a.VerticalDifference > b.VerticalDifference) return 1\r\n                    if (a.VerticalDifference < b.VerticalDifference) return -1\r\n\r\n                    if (a.Name > b.Name) return 1\r\n                    if (a.Name < b.Name) return -1\r\n\r\n                    return 0\r\n                })\r\n\r\n                sortOrder = \"DESC\"\r\n            }\r\n\r\n            sortColumn = \"Vertical (m)\"\r\n\r\n        } else if (evtKey === '9' || evtKey === '10') {\r\n            if (evtKey === '9') {\r\n                sortedResult = allSkiAreaList.sort(function (a, b) {\r\n                    if (a.TotalSkiLifts < b.TotalSkiLifts) return 1\r\n                    if (a.TotalSkiLifts > b.TotalSkiLifts) return -1\r\n\r\n                    if (a.Name > b.Name) return 1\r\n                    if (a.Name < b.Name) return -1\r\n\r\n                    return 0\r\n                })\r\n                sortOrder = \"ASC\"\r\n            } else if (evtKey === '10') {\r\n                sortedResult = allSkiAreaList.sort(function (a, b) {\r\n                    if (a.TotalSkiLifts > b.TotalSkiLifts) return 1\r\n                    if (a.TotalSkiLifts < b.TotalSkiLifts) return -1\r\n\r\n                    if (a.Name > b.Name) return 1\r\n                    if (a.Name < b.Name) return -1\r\n\r\n                    return 0\r\n                })\r\n\r\n                sortOrder = \"DESC\"\r\n            }\r\n\r\n            sortColumn = \"Lifts\"\r\n\r\n        } else if (evtKey === '11' || evtKey === '12') {\r\n            if (evtKey === '11') {\r\n                sortedResult = allSkiAreaList.sort(function (a, b) {\r\n                    if (a.TotalSkiCourses < b.TotalSkiCourses) return 1\r\n                    if (a.TotalSkiCourses > b.TotalSkiCourses) return -1\r\n\r\n                    if (a.Name > b.Name) return 1\r\n                    if (a.Name < b.Name) return -1\r\n\r\n                    return 0\r\n                })\r\n                sortOrder = \"ASC\"\r\n            } else if (evtKey === '12') {\r\n                sortedResult = allSkiAreaList.sort(function (a, b) {\r\n                    if (a.TotalSkiCourses > b.TotalSkiCourses) return 1\r\n                    if (a.TotalSkiCourses < b.TotalSkiCourses) return -1\r\n\r\n                    if (a.Name > b.Name) return 1\r\n                    if (a.Name < b.Name) return -1\r\n\r\n                    return 0\r\n                })\r\n\r\n                sortOrder = \"DESC\"\r\n            }\r\n\r\n            sortColumn = \"Courses\"\r\n\r\n        } else if (evtKey === '13' || evtKey === '14') {\r\n            if (evtKey === '13') {\r\n                sortedResult = allSkiAreaList.sort(function (a, b) {\r\n                    if (a.LongestCourse < b.LongestCourse) return 1\r\n                    if (a.LongestCourse > b.LongestCourse) return -1\r\n\r\n                    if (a.Name > b.Name) return 1\r\n                    if (a.Name < b.Name) return -1\r\n\r\n                    return 0\r\n                })\r\n                sortOrder = \"ASC\"\r\n            } else if (evtKey === '14') {\r\n                sortedResult = allSkiAreaList.sort(function (a, b) {\r\n                    if (a.LongestCourse > b.LongestCourse) return 1\r\n                    if (a.LongestCourse < b.LongestCourse) return -1\r\n\r\n                    if (a.Name > b.Name) return 1\r\n                    if (a.Name < b.Name) return -1\r\n\r\n                    return 0\r\n                })\r\n\r\n                sortOrder = \"DESC\"\r\n            }\r\n\r\n            sortColumn = \"Longest (m)\"\r\n\r\n        } else if (evtKey === '15' || evtKey === '16') {\r\n            if (evtKey === '15') {\r\n                sortedResult = allSkiAreaList.sort(function (a, b) {\r\n                    if (a.SteepestSlope < b.SteepestSlope) return 1\r\n                    if (a.SteepestSlope > b.SteepestSlope) return -1\r\n\r\n                    if (a.Name > b.Name) return 1\r\n                    if (a.Name < b.Name) return -1\r\n\r\n                    return 0\r\n                })\r\n                sortOrder = \"ASC\"\r\n            } else if (evtKey === '16') {\r\n                sortedResult = allSkiAreaList.sort(function (a, b) {\r\n                    if (a.SteepestSlope > b.SteepestSlope) return 1\r\n                    if (a.SteepestSlope < b.SteepestSlope) return -1\r\n\r\n                    if (a.Name > b.Name) return 1\r\n                    if (a.Name < b.Name) return -1\r\n\r\n                    return 0\r\n                })\r\n\r\n                sortOrder = \"DESC\"\r\n            }\r\n\r\n            sortColumn = \"Steepest (º)\"\r\n        }\r\n\r\n        setAllSkiAreaList(sortedResult)\r\n        setButtonTitle('Sort by: ' + evt.target.innerText)\r\n        setSortColumn(sortColumn)\r\n        setSortOrder(sortOrder)\r\n    }\r\n\r\n    if (allSkiAreaList.length > 0 && (prefecture !== undefined || area !== undefined || town !== undefined)) {\r\n        let mapCenter = {\r\n            lat: 36.2048, lng: 138.2529\r\n        }\r\n\r\n        let mapZoomLevel = 13\r\n\r\n        let tableTitle = ''\r\n        let pageTitle = ''\r\n        if (requestType === 'prefecture' && prefecture !== undefined) {\r\n            tableTitle = prefecture.Name + ' prefecture'\r\n            pageTitle = 'Ski areas in ' + prefecture.Name + ' | Introducing the ski areas of Japan | SnowJapan'\r\n            mapCenter = {\r\n                lat: parseFloat(prefecture.Location_Latitude), lng: parseFloat(prefecture.Location_Longitude)\r\n            }\r\n            mapZoomLevel = parseInt(prefecture.Location_MapZoomLevel)\r\n        }\r\n\r\n        if (requestType === 'area' && area !== undefined) {\r\n            tableTitle = ' the ' + area.Name\r\n            pageTitle = 'Ski areas in the ' + area.Name + ' | Introducing the ski areas of Japan | SnowJapan'\r\n\r\n            mapCenter = {\r\n                lat: parseFloat(area.Location_Latitude), lng: parseFloat(area.Location_Longitude)\r\n            }\r\n            mapZoomLevel = parseInt(area.Location_MapZoomLevel)\r\n        }\r\n\r\n        if (requestType === 'town' && town !== undefined) {\r\n\r\n            tableTitle = town.Name + ' ' + town.TownTypeStr + ' (' + town.PrefectureName + ')'\r\n            pageTitle = 'Ski areas in ' + town.Name + ' ' + town.TownTypeStr + ' (' + town.PrefectureName + ') | Introducing the ski areas of Japan | SnowJapan'\r\n\r\n            mapCenter = {\r\n                lat: parseFloat(town.Location_Latitude), lng: parseFloat(town.Location_Longitude)\r\n            }\r\n            mapZoomLevel = parseInt(town.Location_MapZoomLevel)\r\n        }\r\n\r\n        return (\r\n            <div className='empty-row'>\r\n                <Helmet>\r\n                    <title>{pageTitle}</title>\r\n                </Helmet>\r\n                <h3>Ski areas in {tableTitle}</h3>\r\n                <div>\r\n                    <div className=\"empty-row\">\r\n                        Introducing the {allSkiAreaList.length} ski areas in {tableTitle}.\r\n                    </div>\r\n                    <div className=\"empty-row\">\r\n                        Read our introduction to the each of the prefectures of Japan <Link to='/guides/the-prefectures-of-japan'>here</Link>.\r\n                    </div>\r\n                </div>\r\n                <div className='empty-row'>\r\n                    <div className='right-aligned'>\r\n                        <DropdownButton align=\"end\" title={buttonTitle} onSelect={SortResult} id=\"dropdown-menu-align-end\" className='sj-large-font-button'>\r\n                            <Dropdown.Item eventKey=\"1\">Ski area name [A-Z]</Dropdown.Item>\r\n                            <Dropdown.Item eventKey=\"2\">Ski area name [Z-A]</Dropdown.Item>\r\n                            <Dropdown.Item eventKey=\"3\">Maximum elevation [highest{'>'}lowest]</Dropdown.Item>\r\n                            <Dropdown.Item eventKey=\"4\">Maximum elevation [lowest{'>'}highest]</Dropdown.Item>\r\n                            <Dropdown.Item eventKey=\"5\">Minimum elevation [highest{'>'}lowest]</Dropdown.Item>\r\n                            <Dropdown.Item eventKey=\"6\">Minimum elevation [lowest{'>'}highest]</Dropdown.Item>\r\n                            <Dropdown.Item eventKey=\"7\">Vertical [most{'>'}least]</Dropdown.Item>\r\n                            <Dropdown.Item eventKey=\"8\">Vertical [least{'>'}most]</Dropdown.Item>\r\n                            <Dropdown.Item eventKey=\"9\">Lifts [most{'>'}least]</Dropdown.Item>\r\n                            <Dropdown.Item eventKey=\"10\">Lifts [least{'>'}most]</Dropdown.Item>\r\n                            <Dropdown.Item eventKey=\"11\">Courses [most{'>'}least]</Dropdown.Item>\r\n                            <Dropdown.Item eventKey=\"12\">Courses [least{'>'}most]</Dropdown.Item>\r\n                            <Dropdown.Item eventKey=\"13\">Longest [longest{'>'}shortest]</Dropdown.Item>\r\n                            <Dropdown.Item eventKey=\"14\">Longest [shortest{'>'}longest]</Dropdown.Item>\r\n                            <Dropdown.Item eventKey=\"15\">Steepest [steepest{'>'}gentlest]</Dropdown.Item>\r\n                            <Dropdown.Item eventKey=\"16\">Steepest [gentlest{'>'}steepest]</Dropdown.Item>\r\n                        </DropdownButton>\r\n                    </div>\r\n                    <SkiAreaListTable\r\n                        tableData={allSkiAreaList}\r\n                        sortColumn={sortColumn}\r\n                        sortOrder={sortOrder}\r\n                        headingColumns={['', 'Top (m)', 'Bottom (m)', 'Vertical (m)', 'Lifts', 'Courses', 'Longest (m)', 'Steepest (º)']}\r\n                        dataMapping={['Name', 'MaximumElevation', 'MinimumElevation', 'VerticalDifference', 'TotalSkiLifts', 'TotalSkiCourses', 'LongestCourse', 'SteepestSlope']}\r\n                        title=''\r\n                    />\r\n                </div>\r\n                <div className='mt-5'>\r\n                    <Button\r\n                        onClick={() => setOpen(!open)}\r\n                        aria-expanded={open} className='w-100 mb-1'><h5 className='mt-1'>{open ? 'Click to hide map -' : 'Click to view map +'}</h5></Button>\r\n                    <Collapse in={open}>\r\n                        <div>\r\n                            {(open) &&\r\n                                <SkiAreaMapContainer mapCenter={mapCenter} mapZoom={mapZoomLevel} skiAreaList={allSkiAreaList} />\r\n                            }\r\n                        </div>\r\n                    </Collapse>\r\n                </div>\r\n                <SkiAreaListMap skiAreaList={allSkiAreaList} prefecture={prefecture} area={area} town={town} />\r\n                {prefecture !== undefined &&\r\n                    <div className='mt-5'>\r\n                        <JapanMap />\r\n                    </div>\r\n                }\r\n            </div>\r\n        )\r\n    } else {\r\n        return (\r\n            <Loader />\r\n        )\r\n    }\r\n}\r\n\r\nexport default SkiAreaList","import { useState, useEffect } from 'react'\r\nimport { DropdownButton, Dropdown } from 'react-bootstrap'\r\nimport { Link } from 'react-router-dom'\r\nimport '../../../tabs.scss';\r\n\r\nconst SkiAreaDetailTabs = ({ params, resort, skiAreaDailyReport, skiAreaLatestWeather, hasListings }) => {\r\n\r\n  const [buttonTitle, setButtonTitle] = useState('Basics')\r\n\r\n  const baseUrlPath = window.$baseSkiAreaUrl + '/' + params.prefecture + '/' + params.town + '/' + params.resort\r\n\r\n  const [subItemName, setSubItemName] = useState('')\r\n\r\n  useEffect(() => {\r\n    setSubItemName(params.type)\r\n\r\n    let thisButtonTitle\r\n    switch (params.type) {\r\n      case 'daily-report':\r\n        thisButtonTitle = 'Daily Report'\r\n        break\r\n      case 'spotlight':\r\n        thisButtonTitle = 'Spotlight'\r\n        break\r\n      case 'location':\r\n        thisButtonTitle = 'Location'\r\n        break\r\n      case 'snow-data':\r\n        thisButtonTitle = 'Snow Data'\r\n        break\r\n      case 'weather':\r\n        thisButtonTitle = 'Weather'\r\n        break\r\n      case 'history':\r\n        thisButtonTitle = 'History'\r\n        break\r\n      case 'reviews':\r\n        thisButtonTitle = 'Reviews'\r\n        break\r\n      case 'photos':\r\n        thisButtonTitle = 'Photos'\r\n        break\r\n      case 'route-finder':\r\n        thisButtonTitle = 'Route Finder'\r\n        break\r\n      case 'listing':\r\n        thisButtonTitle = 'Listings'\r\n        break\r\n      default:\r\n        thisButtonTitle = \"Basics\"\r\n    }\r\n\r\n    setButtonTitle(thisButtonTitle)\r\n\r\n  }, [params]);\r\n\r\n  return (\r\n    <div>\r\n      <div className=\"d-none d-lg-block bg-color-ski-area\">\r\n        <ul className=\"tabs\">\r\n          <li className={`${subItemName === undefined ? \" active\" : \"\"}`}>\r\n            <Link to={`${baseUrlPath}`}>Basics</Link>\r\n          </li>\r\n          {(resort.ResortSpotlightUrl !== '' && resort.ResortSpotlightUrl !== undefined && resort.ResortSpotlightUrl !== null) &&\r\n            <li className={`${subItemName === 'spotlight' ? \" active\" : \"\"}`}>\r\n              <Link to={`${baseUrlPath}/spotlight`}>Spotlight</Link>\r\n            </li>\r\n          }\r\n          <li className={`${subItemName === 'location' ? \" active\" : \"\"}`}>\r\n            <Link to={`${baseUrlPath}/location`}>Location</Link>\r\n          </li>\r\n          {(skiAreaDailyReport !== undefined && skiAreaDailyReport !== null && skiAreaDailyReport.ReportId > 0) &&\r\n            <li className={`${subItemName === 'daily-report' ? \" active\" : \"\"}`}>\r\n              <Link to={`${baseUrlPath}/daily-report`}>Daily report</Link>\r\n            </li>\r\n          }\r\n          {(skiAreaLatestWeather !== undefined && skiAreaLatestWeather !== null && Object.keys(skiAreaLatestWeather).length > 0) &&\r\n            <li className={`${subItemName === 'snow-data' ? \" active\" : \"\"}`}>\r\n              <Link to={`${baseUrlPath}/snow-data`}>Snow data</Link>\r\n            </li>\r\n          }\r\n          <li className={`${subItemName === 'weather' ? \" active\" : \"\"}`}>\r\n            <Link to={`${baseUrlPath}/weather`}>Weather</Link>\r\n          </li>\r\n          {/*<li className={`${subItemName === 'history' ? \" active\" : \"\"}`}>\r\n            <Link to={`${baseUrlPath}/history`}>History</Link>\r\n        </li>*/}\r\n          {resort.NumberOfReviews > 0 &&\r\n            <li className={`${subItemName === 'reviews' ? \" active\" : \"\"}`}>\r\n              <Link to={`${baseUrlPath}/reviews`}>Reviews</Link>\r\n            </li>\r\n          }\r\n          {resort.NumberOfPhotos > 0 &&\r\n            <li className={`${subItemName === 'photos' ? \" active\" : \"\"}`}>\r\n              <Link to={`${baseUrlPath}/photos`}>Photos</Link>\r\n            </li>\r\n          }\r\n          {/*<li className={`${subItemName === 'route-finder' ? \" active\" : \"\"}`}>\r\n            <Link to={`${baseUrlPath}/route-finder`}>Route Finder</Link>\r\n          </li>*/}\r\n          {hasListings &&\r\n            <li className={`${subItemName === 'listing' ? \" active\" : \"\"}`}>\r\n              <Link to={`${baseUrlPath}/listing`}>Listings</Link>\r\n            </li>\r\n          }\r\n        </ul>\r\n      </div>\r\n      <div className=\"d-lg-none sj-row-100\">\r\n        <DropdownButton align=\"end\" title={buttonTitle} id=\"dropdown-menu-align-end\" className='sj-large-font-button ski-area-sub-menu'>\r\n          <Dropdown.Item as={Link} to={`${baseUrlPath}`}>Basics</Dropdown.Item>\r\n          {(resort.ResortSpotlightUrl !== '' && resort.ResortSpotlightUrl !== undefined && resort.ResortSpotlightUrl !== null) &&\r\n            <Dropdown.Item as={Link} to={`${baseUrlPath}/spotlight`}>Spotlight</Dropdown.Item>\r\n          }\r\n          <Dropdown.Item as={Link} to={`${baseUrlPath}/location`}>Location</Dropdown.Item>\r\n          {(skiAreaDailyReport !== undefined && skiAreaDailyReport !== null && skiAreaDailyReport.ReportId > 0) &&\r\n            <Dropdown.Item as={Link} to={`${baseUrlPath}/daily-report`}>Daily report</Dropdown.Item>\r\n          }\r\n          {(skiAreaLatestWeather !== undefined && skiAreaLatestWeather !== null && Object.keys(skiAreaLatestWeather).length > 0) &&\r\n            <Dropdown.Item as={Link} to={`${baseUrlPath}/snow-data`}>Snow data</Dropdown.Item>\r\n          }\r\n          <Dropdown.Item as={Link} to={`${baseUrlPath}/weather`}>Weather</Dropdown.Item>\r\n          {/*<Dropdown.Item as={Link} to={`${baseUrlPath}/history`}>History</Dropdown.Item>*/}\r\n          {resort.NumberOfReviews > 0 &&\r\n            <Dropdown.Item as={Link} to={`${baseUrlPath}/reviews`}>Reviews</Dropdown.Item>\r\n          }\r\n          {resort.NumberOfPhotos > 0 &&\r\n            <Dropdown.Item as={Link} to={`${baseUrlPath}/photos`}>Photos</Dropdown.Item>\r\n          }\r\n          {/*<Dropdown.Item as={Link} to={`${baseUrlPath}/route-finder`}>Route Finder</Dropdown.Item>*/}\r\n          {hasListings &&\r\n            <Dropdown.Item as={Link} to={`${baseUrlPath}/listing`}>Listings</Dropdown.Item>\r\n          }\r\n        </DropdownButton>\r\n      </div>\r\n    </div>\r\n  )\r\n}\r\n\r\nexport default SkiAreaDetailTabs","import { Link } from 'react-router-dom'\r\n\r\nconst SkiAreaInfo = ({ resort }) => {\r\n\r\n  //const baseUrlPath = \"/japan-ski-areas\"\r\n\r\n  return (\r\n    <div className='sj-para'>\r\n      <h3><Link to={`${window.$baseSkiAreaUrl}/town/${resort.TownUniqueName}`}>{resort.TownName} {resort.TownTypeStr}</Link>, <Link to={`${window.$baseSkiAreaUrl}/prefecture/${resort.PrefectureUniqueName}`}>{resort.PrefectureName}</Link></h3>\r\n      <div className='sj-para-large mt-1 mb-3'>{resort.PrefectureNameJapanese}{resort.TownNameJapanese}</div>\r\n    </div>\r\n  );\r\n}\r\n\r\nexport default SkiAreaInfo;","import { Image } from 'react-bootstrap'\r\n\r\nconst CourseMap = ({ resort }) => {\r\n\r\n  let courseMapSmall = ''\r\n  if (resort.CourseMapSmall !== '' && resort.CourseMapSmall !== undefined) {\r\n    courseMapSmall = String(resort.CourseMapSmall).replace('~/', '/')\r\n  }\r\n\r\n  let courseMapLarge = ''\r\n  if (resort.CourseMapLarge !== '' && resort.CourseMapLarge !== undefined) {\r\n    courseMapLarge = String(resort.CourseMapLarge).replace('~/', '/')\r\n  }\r\n\r\n  return (\r\n    <div className='empty-row'>\r\n      {courseMapSmall !== '' &&\r\n        <div className='empty-row center-aligned'>\r\n          <div className='sj-image-holder sj-row-no-margin-padding'>\r\n            <Image src={`https://www.snowjapan.com/${courseMapSmall}`} fluid='true' alt={`${resort.Name} course map small`} className=\"mt-5\" />\r\n          </div>\r\n          <div className='center-aligned'>\r\n            The above image has been created by SnowJapan to show the position of ski lifts at {resort.Name}.\r\n          </div>\r\n        </div>\r\n      }\r\n      {courseMapLarge !== '' &&\r\n        <div className='empty-row center-aligned'>\r\n          <div className='sj-image-holder sj-row-no-margin-padding'>\r\n            <Image src={`https://www.snowjapan.com${courseMapLarge}`} fluid='true' alt={`${resort.Name} course map large`} className=\"mt-5\" />\r\n          </div>\r\n        </div>\r\n      }\r\n    </div>\r\n  );\r\n}\r\n\r\nexport default CourseMap;","import { Image } from 'react-bootstrap'\r\n\r\nconst SkiMountain = ({ resort }) => {\r\n\r\n  return (\r\n    <div className='sj-row'>\r\n      <div className=\"sj-box sj-box-dark-gray sj-round-full center-aligned\">\r\n        <h4>The Mountain</h4>\r\n      </div>\r\n      <div className=\"sj-mountain\">\r\n        <div className=\"row sj-row sj-no-bg\">\r\n          <div className=\"col-md-4\">\r\n            <div className='center-aligned'>\r\n              <Image id='imgMaxElevation' src='https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-Mountain-Summit.svg' fluid='true' alt='Max Elevation' />\r\n            </div>\r\n            <div className='center-aligned'>\r\n              <h2>{resort.MaximumElevation}m</h2>\r\n              <h4>Top elevation</h4>\r\n            </div>\r\n          </div>\r\n          <div className=\"col-md-4\">\r\n            <div className='center-aligned'>\r\n              <Image id='imgVertical' src='https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-Mountain-Vertical.svg' fluid='true' alt='Vertical Difference' />\r\n            </div>\r\n            <div className='center-aligned'>\r\n              <h2>{resort.VerticalDifference}m</h2>\r\n              <h4>Vertical</h4>\r\n            </div>\r\n          </div>\r\n          <div className=\"col-md-4\">\r\n            <div className='center-aligned'>\r\n              <Image id='imgMinElevation' src='https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-Mountain-Base.svg' fluid='true' alt='Min Elevation' />\r\n            </div>\r\n            <div className='center-aligned'>\r\n              <h2>{resort.MinimumElevation}m</h2>\r\n              <h4>Base elevation</h4>\r\n            </div>\r\n          </div>\r\n        </div>\r\n        <div className=\"row sj-row sj-no-bg\">\r\n          <div className=\"col-md-4\">\r\n            <div className='center-aligned'>\r\n              <Image id='imgTotalSkiCourses' src='https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-Mountain-Number-of-Courses.svg' fluid='true' alt='Total Ski Courses' />\r\n            </div>\r\n            <div className='center-aligned'>\r\n              <h2>{resort.TotalSkiCourses}</h2>\r\n              <h4>Number of courses</h4>\r\n            </div>\r\n          </div>\r\n          <div className=\"col-md-4\">\r\n            <div className='center-aligned'>\r\n              <Image id='imgLongestCourse' src='https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-Mountain-Longest-Course.svg' fluid='true' alt='Longest Course' />\r\n            </div>\r\n            <div className='center-aligned'>\r\n              <h2>{resort.LongestCourse}m</h2>\r\n              <h4>Longest course</h4>\r\n            </div>\r\n          </div>\r\n          <div className=\"col-md-4\">\r\n            <div className='center-aligned'>\r\n              <Image id='imgSteepestSlope' src='https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-Mountain-Steepest-Course.svg' fluid='true' alt='Steepest Slope' />\r\n            </div>\r\n            <div className='center-aligned'>\r\n              <h2>{resort.SteepestSlope}°</h2>\r\n              <h4>Steepest course</h4>\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  );\r\n}\r\n\r\nexport default SkiMountain;","import { useState, useEffect } from 'react'\r\nimport { Link } from 'react-router-dom'\r\nimport { Image } from 'react-bootstrap'\r\n\r\nconst SkiSnowBoard = ({ resort, nearbySkiAreaList }) => {\r\n\r\n    const [nearbySkiAreas, setNearbySkiAreas] = useState(nearbySkiAreaList);\r\n\r\n    useEffect(() => {\r\n\r\n        let thisNearbySkiAreas = []\r\n\r\n        if (nearbySkiAreaList.length > 0) {\r\n            thisNearbySkiAreas = nearbySkiAreaList.filter(function (currentElement) {\r\n                return (currentElement.IsConnected);\r\n            });\r\n        }\r\n\r\n        setNearbySkiAreas(thisNearbySkiAreas)\r\n    }, [resort.UniqueName, nearbySkiAreaList]);\r\n\r\n    console.log(\"a \" + resort.SkiersAllowed)\r\n    console.log(\"b \" + resort.SnowboardersAllowed)\r\n\r\n    return (\r\n        <div className='sj-row'>\r\n            <div className=\"row sj-row sj-no-bg sj-row-no-margin-padding\">\r\n                <div className=\"col-md-4 sj-row-no-margin-padding sj-bia-frame-first\">\r\n                    <div className='center-aligned sj-box sj-box-green sj-round-full pt-4 pb-4 mt-4 mb-4'>\r\n                        <h4>{resort.BeginnersCourses}%</h4>\r\n                        <h5>Beginner</h5>\r\n                    </div>\r\n                </div>\r\n                <div className=\"col-md-4 sj-row-no-margin-padding sj-bia-frame-middle\">\r\n                    <div className='center-aligned sj-box sj-box-red sj-round-full pt-4 pb-4 mt-4 mb-4'>\r\n                        <h4>{resort.IntermediateCourses}%</h4>\r\n                        <h5>Intermediate</h5>\r\n                    </div>\r\n                </div>\r\n                <div className=\"col-md-4 sj-row-no-margin-padding sj-bia-frame-last\">\r\n                    <div className='center-aligned sj-box sj-box-dark-blue sj-round-full pt-4 pb-4 mt-4 mb-4'>\r\n                        <h4>{resort.AdvancedCourses}%</h4>\r\n                        <h5>Advanced</h5>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            <div className=\"row sj-row sj-no-bg skier-snowboarder\">\r\n                <div className=\"col-md-3\">\r\n                    <div className={`center-aligned pt-5 ${resort.TotalSkiLifts > 0 ? \"\" : \"gray-font\"}`}>\r\n                        <h1 className='pt-5'>{resort.TotalSkiLifts}</h1>\r\n                        <h3>Total ski lift{resort.TotalSkiLifts === 1 ? \"\" : \"s\"}</h3>\r\n                    </div>\r\n                </div>\r\n                <div className=\"col-md-3\">\r\n                    <div className='center-aligned'>\r\n                        {resort.RopeWays > 0\r\n                            ? <Image src='https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-SkiLift-Ropeway.svg' fluid='true' alt='ropeways' />\r\n                            : <Image src='https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-SkiLift-Ropeway-bw.svg' fluid='true' alt='ropeways 0' />\r\n                        }\r\n                    </div>\r\n                    <div className={`center-aligned ${resort.RopeWays > 0 ? \"\" : \"gray-font\"}`}>\r\n                        <h2>{resort.RopeWays}</h2>\r\n                        <h4>Ropeway{resort.RopeWays === 1 ? \"\" : \"s\"}</h4>\r\n                    </div>\r\n                </div>\r\n                <div className=\"col-md-3\">\r\n                    <div className='center-aligned'>\r\n                        {resort.Gondolas > 0\r\n                            ? <Image src='https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-SkiLift-Gondola.svg' fluid='true' alt='gondolas' />\r\n                            : <Image src='https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-SkiLift-Gondola-bw.svg' fluid='true' alt='gondolas 0' />\r\n                        }\r\n                    </div>\r\n                    <div className={`center-aligned ${resort.Gondolas > 0 ? \"\" : \"gray-font\"}`}>\r\n                        <h2>{resort.Gondolas}</h2>\r\n                        <h4>Gondola{resort.Gondolas === 1 ? \"\" : \"s\"}</h4>\r\n                    </div>\r\n                </div>\r\n                <div className=\"col-md-3\">\r\n                    <div className='center-aligned'>\r\n                        {resort.QuadLifts > 0\r\n                            ? <Image src='https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-SkiLift-Quad.svg' fluid='true' alt='quad lifts' />\r\n                            : <Image src='https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-SkiLift-Quad-bw.svg' fluid='true' alt='quad lifts 0' />\r\n                        }\r\n                    </div>\r\n                    <div className={`center-aligned ${resort.QuadLifts > 0 ? \"\" : \"gray-font\"}`}>\r\n                        <h2>{resort.QuadLifts}</h2>\r\n                        <h4>Quad lift{resort.QuadLifts === 1 ? \"\" : \"s\"}</h4>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            <div className=\"row sj-row sj-no-bg skier-snowboarder\">\r\n                <div className=\"col-md-3\">\r\n                    <div className='center-aligned'>\r\n                        {resort.TripleLifts > 0\r\n                            ? <Image src='https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-SkiLift-Triple.svg' fluid='true' alt='triple lifts' />\r\n                            : <Image src='https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-SkiLift-Triple-bw.svg' fluid='true' alt='triple lifts 0' />\r\n                        }\r\n                    </div>\r\n                    <div className={`center-aligned ${resort.TripleLifts > 0 ? \"\" : \"gray-font\"}`}>\r\n                        <h2>{resort.TripleLifts}</h2>\r\n                        <h4>Triple lift{resort.TripleLifts === 1 ? \"\" : \"s\"}</h4>\r\n                    </div>\r\n                </div>\r\n                <div className=\"col-md-3\">\r\n                    <div className='center-aligned'>\r\n                        {resort.PairLifts > 0\r\n                            ? <Image src='https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-SkiLift-Pair.svg' fluid='true' alt='pair lifts' />\r\n                            : <Image src='https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-SkiLift-Pair-bw.svg' fluid='true' alt='pair lifts' />\r\n                        }\r\n                    </div>\r\n                    <div className={`center-aligned ${resort.PairLifts > 0 ? \"\" : \"gray-font\"}`}>\r\n                        <h2>{resort.PairLifts}</h2>\r\n                        <h4>Pair lift{resort.PairLifts === 1 ? \"\" : \"s\"}</h4>\r\n                    </div>\r\n                </div>\r\n                <div className=\"col-md-3\">\r\n                    <div className='center-aligned'>\r\n                        {resort.SingleLifts > 0\r\n                            ? <Image src='https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-SkiLift-Single.svg' fluid='true' alt='single lifts' />\r\n                            : <Image src='https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-SkiLift-Single-bw.svg' fluid='true' alt='single lifts 0' />\r\n                        }\r\n                    </div>\r\n                    <div className={`center-aligned ${resort.SingleLifts > 0 ? \"\" : \"gray-font\"}`}>\r\n                        <h2>{resort.SingleLifts}</h2>\r\n                        <h4>Single lift{resort.SingleLifts === 1 ? \"\" : \"s\"}</h4>\r\n                    </div>\r\n                </div>\r\n                <div className=\"col-md-3\">\r\n                    <div className='center-aligned'>\r\n                        {resort.OtherLifts > 0\r\n                            ? <Image src='https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-SkiLift-Other.svg' fluid='true' alt='other lifts' />\r\n                            : <Image src='https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-SkiLift-Other-bw.svg' fluid='true' alt='other lifts 0' />\r\n                        }\r\n                    </div>\r\n                    <div className={`center-aligned ${resort.OtherLifts > 0 ? \"\" : \"gray-font\"}`}>\r\n                        <h2>{resort.OtherLifts}</h2>\r\n                        <h4>Other lift{resort.OtherLifts === 1 ? \"\" : \"s\"}</h4>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            {(resort.SkiersAllowed > 0 || resort.SnowboardersAllowed > 0) &&\r\n                <>\r\n                    <div className=\"row sj-row sj-no-bg sj-row-no-margin-padding\">\r\n                        <div className=\"col-md-6 sj-row-no-margin-padding\">\r\n                            <div className='sj-skier-snowboarder-left'>\r\n                                <div className='center-aligned sj-box sj-box-dark-gray sj-round-half'>\r\n                                    <h4>Skiers</h4>\r\n                                </div>\r\n                                <div className='center-aligned sj-box-lighter-gray pt-2 pb-2'>\r\n                                    <h4>{resort.SkiersPercent}%</h4>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                        <div className=\"col-md-6 sj-row-no-margin-padding\">\r\n                            <div className='sj-skier-snowboarder-right'>\r\n                                <div className='center-aligned sj-box sj-box-dark-gray sj-round-half'>\r\n                                    <h4>Snowboarders</h4>\r\n                                </div>\r\n                                <div className='center-aligned sj-box-lighter-gray pt-2 pb-2'>\r\n                                    <h4>{resort.SnowboardersPercent}%</h4>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                        {(resort.SkiersAllowed > 0 && resort.SnowboardersAllowed > 0) &&\r\n                            <div className='sj-row-small-margin-padding center-aligned'>\r\n                                {(resort.SkiersAllowed === 1 && resort.SnowboardersAllowed === 1) &&\r\n                                    <>Skiing and snowboarding are both allowed at {resort.Name}</>\r\n                                }\r\n                                {(resort.SkiersAllowed === 1 && resort.SnowboardersAllowed === 2) &&\r\n                                    <>{resort.Name} is a skiing-only resort (snowboarding is not allowed)</>\r\n                                }\r\n                                {(resort.SkiersAllowed === 2 && resort.SnowboardersAllowed === 1) &&\r\n                                    <>{resort.Name} is a snowboarding-only resort (skiing is not allowed)</>\r\n                                }\r\n                                {(resort.SnowboardersAllowed === 3) &&\r\n                                    <>There are some snowboarding restrictions at {resort.Name}</>\r\n                                }\r\n                                {(resort.SkiersAllowed === 3) &&\r\n                                    <>There are some skiing restrictions at {resort.Name}</>\r\n                                }\r\n                            </div>\r\n                        }\r\n                    </div>\r\n                </>\r\n            }\r\n            {nearbySkiAreas.length > 0 &&\r\n                <div className='sj-row center-aligned'>\r\n                    <div className=\"sj-box sj-box-dark-gray sj-round-full center-aligned mt-5\">\r\n                        <h4>{resort.Name} is lift-connected with</h4>\r\n                    </div>\r\n                    <div className='sj-link-button-container center-aligned'>\r\n                        {nearbySkiAreas.map(nearbySkiArea => (\r\n                            <Link key={nearbySkiArea.SkiAreaUniqueName} to={`${window.$baseSkiAreaUrl}/${nearbySkiArea.SkiAreaPrefectureName}/${nearbySkiArea.SkiAreaTownUniqueName}/${nearbySkiArea.SkiAreaUniqueName}`}>{nearbySkiArea.SkiAreaName} ({nearbySkiArea.Distance}km)</Link>\r\n                        ))}\r\n                    </div>\r\n                </div>\r\n            }\r\n        </div>\r\n    );\r\n}\r\n\r\nexport default SkiSnowBoard;","import { RenderBreak } from '../../../../helpers/Helper'\r\n\r\nconst Facilities = ({ resort }) => {\r\n\r\n    return (\r\n        <div className='empty-row'>\r\n            <div className=\"sj-box sj-box-dark-gray sj-round-full center-aligned mt-5\">\r\n                <h4>{resort.Name} facilities</h4>\r\n            </div>\r\n\r\n            {resort.SnowParkFacilities !== '' &&\r\n                <div className=\"sj-row\">\r\n                    <div className=\"row sj-no-bg sj-row-no-margin-padding\">\r\n                        <div className=\"col-md-3 sj-list-icon-holder\">\r\n                            <img src=\"https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-Facilities-Snow-Park.svg\" alt='park facilities' />\r\n                        </div>\r\n                        <div className=\"col-md-9 sj-row-no-margin-padding sj-list-text-holder\">\r\n                            <div className='sj-box sj-box-dark-gray sj-round-half'>\r\n                                <h4>Park, off-piste & other activities</h4>\r\n                            </div>\r\n                            <div>\r\n                                <div dangerouslySetInnerHTML={{ __html: RenderBreak(resort.SnowParkFacilities) }} />\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            }\r\n            {resort.InformationOnChildren !== '' &&\r\n                <div className=\"mt-5\">\r\n                    <div className=\"row sj-no-bg sj-row-no-margin-padding\">\r\n                        <div className=\"col-md-3 sj-list-icon-holder\">\r\n                            <img src=\"https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-Facilities-Children.svg\" alt='children facilities' />\r\n                        </div>\r\n                        <div className=\"col-md-9 sj-row-no-margin-padding sj-list-text-holder\">\r\n                            <div className='sj-box sj-box-dark-gray sj-round-half'>\r\n                                <h4>Families & children</h4>\r\n                            </div>\r\n                            <div>\r\n                                <div dangerouslySetInnerHTML={{ __html: RenderBreak(resort.InformationOnChildren) }} />\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            }\r\n            {resort.SchoolInformation !== '' &&\r\n                <div className=\"mt-5\">\r\n                    <div className=\"row sj-no-bg sj-row-no-margin-padding\">\r\n                        <div className=\"col-md-3 sj-list-icon-holder\">\r\n                            <img src=\"https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-Facilities-Lessons.svg\" alt='Lessons' />\r\n                        </div>\r\n                        <div className=\"col-md-9 sj-row-no-margin-padding sj-list-text-holder\">\r\n                            <div className='sj-box sj-box-dark-gray sj-round-half'>\r\n                                <h4>Lessons</h4>\r\n                            </div>\r\n                            <div>\r\n                                <div dangerouslySetInnerHTML={{ __html: RenderBreak(resort.SchoolInformation) }} />\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            }\r\n            {resort.EquipmentRentalInformation !== '' &&\r\n                <div className=\"mt-5\">\r\n                    <div className=\"row sj-no-bg sj-row-no-margin-padding\">\r\n                        <div className=\"col-md-3 sj-list-icon-holder\">\r\n                            <img src=\"https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-Facilities-Rental.svg\" alt='Rental' />\r\n                        </div>\r\n                        <div className=\"col-md-9 sj-row-no-margin-padding sj-list-text-holder\">\r\n                            <div className='sj-box sj-box-dark-gray sj-round-half'>\r\n                                <h4>Rental & other facilities</h4>\r\n                            </div>\r\n                            <div>\r\n                                <div dangerouslySetInnerHTML={{ __html: RenderBreak(resort.EquipmentRentalInformation) }} />\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            }\r\n        </div >\r\n    );\r\n}\r\n\r\nexport default Facilities;","import { RenderBreak } from '../../../../helpers/Helper'\r\n\r\nconst SeasonOpeningTime = ({ resort }) => {\r\n\r\n    return (\r\n        <div className='empty-row'>\r\n            <div className=\"sj-box sj-box-dark-gray sj-round-full center-aligned mt-5 mb-3\">\r\n                <h4>{resort.Name} opening information</h4>\r\n            </div>\r\n            <div className=\"row sj-no-bg sj-row-no-margin-padding\">\r\n                <div className=\"col-md-3 m-0 mt-5 p-0 sj-list-icon-holder\">\r\n                    <img src=\"https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-Opening-Times.svg\" alt='Opening time' />\r\n                </div>\r\n                <div className=\"col-md-9 sj-list-text-holder\">\r\n                    <div className='table-container'>\r\n                        <div className='center-aligned sj-box sj-box-dark-gray sj-round-half pt-2 pb-2 mt-0 mb-0'>\r\n                            <h4>Typical season</h4>\r\n                        </div>\r\n                        <div>\r\n                            <table className='table-container__table opening-time'>\r\n                                <thead>\r\n                                    <tr>\r\n                                        <th colSpan='3'>NOV</th>\r\n                                        <th colSpan='3'>DEC</th>\r\n                                        <th colSpan='3'>JAN</th>\r\n                                        <th colSpan='3'>FEB</th>\r\n                                        <th colSpan='3'>MAR</th>\r\n                                        <th colSpan='3'>APR</th>\r\n                                        <th colSpan='3'>MAY</th>\r\n                                    </tr>\r\n                                </thead>\r\n                                <tbody>\r\n                                    <tr>\r\n                                        {[...Array(21)].map((x, i) =>\r\n                                            <td key={i} className={i > resort.OpeningDate - 3 && i < resort.ClosingDate + 8 ? `resort-open` : `normal`}>&nbsp;</td>\r\n                                        )}\r\n                                    </tr>\r\n                                </tbody>\r\n                            </table>\r\n                        </div>\r\n                        {resort.InformationOnChildren !== '' &&\r\n                            <div className='pt-4'>\r\n                                <div dangerouslySetInnerHTML={{ __html: RenderBreak(resort.OpeningTimeComments) }} />\r\n                            </div>\r\n                        }\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div >\r\n    );\r\n}\r\n\r\nexport default SeasonOpeningTime;","import { useState, useEffect } from 'react'\r\nimport axios from 'axios'\r\nimport Loader from \"../../../Common/Loader\"\r\nimport { RenderBreak } from '../../../../helpers/Helper'\r\n\r\nconst LiftTicketCharges = ({ resort }) => {\r\n\r\n  const [ticketChargeList, setTicketChargeList] = useState([]);\r\n\r\n  const fetchLiftTicket = async (resortUniqueName) => {\r\n    axios({\r\n      method: 'POST',\r\n      url: `${window.$baseAPIUrl}/skiarea/ticket/list/${resortUniqueName}`\r\n    }).then(dataTicket => {\r\n      setTicketChargeList(dataTicket.data)\r\n    })\r\n  };\r\n\r\n  useEffect(() => {\r\n    fetchLiftTicket(resort.UniqueName);\r\n  }, [resort.UniqueName]);\r\n\r\n  if (ticketChargeList.length <= 0) {\r\n    return (\r\n      <Loader />\r\n    );\r\n  }\r\n  else {\r\n    return (\r\n      <div className='empty-row'>\r\n        <div className=\"sj-box sj-box-dark-gray sj-round-full center-aligned mt-5 mb-3\">\r\n          <h4>{resort.Name} lift tickets</h4>\r\n        </div>\r\n        <div className=\"row sj-no-bg sj-row-no-margin-padding\">\r\n          <div className=\"col-md-3 m-0 mt-5 p-0 sj-list-icon-holder\">\r\n            <img src=\"https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-Lift-Ticket.svg\" alt='Train' />\r\n          </div>\r\n          <div className=\"col-md-9 sj-list-text-holder\">\r\n            <div className='table-container'>\r\n              <table className='table-container__table sj-list-table ticket-info'>\r\n                <thead>\r\n                  <tr>\r\n                    <th>Type of ticket</th>\r\n                    <th>Adults</th>\r\n                    <th>\r\n                      Child\r\n                      {(resort.ChildTicketLabel !== '' && resort.ChildTicketLabel !== null) &&\r\n                        <div>\r\n                          {resort.ChildTicketLabel}\r\n                        </div>\r\n                      }\r\n                    </th>\r\n                    {(resort.OlderChildTicketLabel !== '' && resort.OlderChildTicketLabel !== null) &&\r\n                      <th>Older Child\r\n                        <div>\r\n                          {resort.OlderChildTicketLabel}\r\n                        </div>\r\n                      </th>\r\n                    }\r\n                    <th>\r\n                      Senior\r\n                      {(resort.SeniorTicketLabel !== '' && resort.SeniorTicketLabel !== null) &&\r\n                        <div>\r\n                          {resort.SeniorTicketLabel}\r\n                        </div>\r\n                      }\r\n                    </th>\r\n                  </tr>\r\n                </thead>\r\n                <tbody>\r\n                  {ticketChargeList.map((ticketCharge, index) => (\r\n                    <tr key={index}>\r\n                      <td>\r\n                        {ticketCharge.NameOfTicket &&\r\n                          <div>{ticketCharge.NameOfTicket}</div>\r\n                        }</td>\r\n                      <td>\r\n                        {ticketCharge.AdultTicket &&\r\n                          <div>{ticketCharge.AdultTicket} yen</div>\r\n                        }\r\n                      </td>\r\n                      <td>\r\n                        {ticketCharge.ChildTicket &&\r\n                          <div>{ticketCharge.ChildTicket} yen</div>\r\n                        }\r\n                      </td>\r\n                      {(resort.OlderChildTicketLabel !== '' && resort.OlderChildTicketLabel !== null) &&\r\n                        <td>\r\n                          {ticketCharge.OlderChildTicket &&\r\n                            <div>{ticketCharge.OlderChildTicket} yen</div>\r\n                          }\r\n                        </td>\r\n                      }\r\n                      <td>\r\n                        {ticketCharge.SeniorTicket &&\r\n                          <div>{ticketCharge.SeniorTicket} yen</div>\r\n                        }\r\n                      </td>\r\n                    </tr>\r\n                  ))}\r\n                </tbody>\r\n              </table>\r\n            </div>\r\n            {resort.InformationOnChildren !== '' &&\r\n              <div className='pt-4'>\r\n                <div dangerouslySetInnerHTML={{ __html: RenderBreak(resort.LiftTicketInformation) }} />\r\n              </div>\r\n            }\r\n          </div>\r\n        </div>\r\n      </div>\r\n    );\r\n  }\r\n}\r\n\r\nexport default LiftTicketCharges;","import { RenderBreak } from '../../../../helpers/Helper'\r\n\r\nconst ContactInformation = ({ resort }) => {\r\n\r\n    return (\r\n        <div className='empty-row'>\r\n            <div className=\"sj-box sj-box-dark-gray sj-round-full center-aligned mt-5\">\r\n                <h4>{resort.Name} address & further information</h4>\r\n            </div>\r\n\r\n            {resort.Address !== '' &&\r\n                <div className=\"sj-row\">\r\n                    <div className=\"row sj-no-bg sj-row-no-margin-padding\">\r\n                        <div className=\"col-md-3 m-0 mt-5 p-0 sj-list-icon-holder\">\r\n                            <img src=\"https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-Address.svg\" alt='address' />\r\n                        </div>\r\n                        <div className=\"col-md-9 sj-list-text-holder\">\r\n                            <div>\r\n                                <div dangerouslySetInnerHTML={{ __html: RenderBreak(resort.Address) }} />\r\n                                {resort.Telephone}\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            }\r\n            {/*resort.WebUrl !== '' &&\r\n                <div className=\"sj-row\">\r\n                    <div className=\"row sj-no-bg sj-row-no-margin-padding\">\r\n                        <div className=\"col-md-3 m-0 mt-5 p-0 sj-list-icon-holder\">\r\n                            <img src=\"https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-Website.svg\" alt='website' />\r\n                        </div>\r\n                        <div className=\"col-md-9 sj-list-text-holder\">\r\n                            <div>\r\n                                <h5><a href={resort.WebUrl} className='btn btn-primary sj-large-button-blue sj-full-width' target='_blank' rel='noreferrer' >Website</a></h5>\r\n                                The above link, where available, opens in a new window. All linked content is outside the control of SnowJapan and may change without notice. Links are checked at least once a year.\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            */}\r\n        </div>\r\n    );\r\n}\r\n\r\nexport default ContactInformation;","import { Image } from 'react-bootstrap'\r\nimport SkiAreaInfo from '../SkiAreaInfo'\r\nimport { Helmet } from 'react-helmet'\r\nimport CourseMap from './CourseMap'\r\nimport SkiMountain from './SkiMountain'\r\nimport SkiSnowBoard from './SkiSnowBoard'\r\nimport Facilities from './Facilities'\r\nimport SeasonOpeningTime from './SeasonOpeningTime'\r\nimport LiftTicketCharges from './LiftTicketCharges'\r\nimport ContactInformation from './ContactInformation'\r\nimport { RenderBreak } from '../../../../helpers/Helper'\r\n\r\nconst BasicContainer = ({ requestUrl, resort, nearbySkiAreaList, skiAreaLatestWeather, showSnowData }) => {\r\n\r\n    return (\r\n        <div className='empty-row'>\r\n            <Helmet>\r\n                <title>{resort.Name} | Ski area in {resort.TownName} {resort.TownTypeStr}, {resort.PrefectureName}, Japan  |  {resort.NameJapanese} | SnowJapan</title>\r\n                <meta name=\"description\" content={`Introducing ${resort.Name}, a ski area located in ${resort.TownName} ${resort.TownTypeStr}, ${resort.PrefectureName}, Japan.`} />\r\n            </Helmet>\r\n            <div className='empty-row'>\r\n                <div className=\"sj-para-map\">\r\n                    <Image src={`https://www.snowjapan.com/UploadedFiles/MapImages/Ski-Area/${resort.MapImage}`} alt={`${resort.Name} map`} fluid='true' />\r\n                </div>\r\n                <div>\r\n                    <SkiAreaInfo resort={resort} />\r\n                    <div className=\"sj-para\">\r\n                        {/*<h4>Planned season</h4>\r\n                        <h5>{resort.PlannedSeasonDates}</h5>*/}\r\n                        <div dangerouslySetInnerHTML={{ __html: RenderBreak(resort.PlannedSeasonDates) }} />\r\n                        {(skiAreaLatestWeather !== undefined && Object.keys(skiAreaLatestWeather).length > 0 && skiAreaLatestWeather.SnowDepth !== null && showSnowData !== undefined && showSnowData === \"Y\") &&\r\n                            <div className='sj-para sj-box sj-box-red sj-round-full sj-50-box'>\r\n                                <h5>Official snow depth:</h5>\r\n                                <div>\r\n                                    {skiAreaLatestWeather.SnowDepth}cm ({skiAreaLatestWeather.SnowDepthCompareToYesterday}cm change since last update)<br />\r\n                                    Updated on {skiAreaLatestWeather.WeatherDayTh} {skiAreaLatestWeather.WeatherMonthFull} {skiAreaLatestWeather.WeatherYear}\r\n                                </div>\r\n                            </div>\r\n                        }\r\n                    </div>\r\n                    <div dangerouslySetInnerHTML={{ __html: RenderBreak(resort.IntroductoryText) }} />\r\n                </div>\r\n            </div>\r\n            <div className=\"sj-para\">\r\n                {(resort.RegionName !== null && resort.RegionName !== '' && resort.RegionUrl !== null && resort.RegionUrl !== '') &&\r\n                    <a className='btn btn-primary sj-large-button-blue sj-full-width' href={resort.RegionUrl}>{resort.RegionName}</a>\r\n                }\r\n            </div>\r\n            <SkiMountain resort={resort} />\r\n            <SkiSnowBoard resort={resort} nearbySkiAreaList={nearbySkiAreaList} />\r\n            {resort.CourseMapSmall !== '' &&\r\n                <CourseMap resort={resort} />\r\n            }\r\n            <Facilities resort={resort} />\r\n            <LiftTicketCharges resort={resort} />\r\n            <SeasonOpeningTime resort={resort} />\r\n            <ContactInformation resort={resort} />\r\n        </div>\r\n    )\r\n};\r\n\r\nexport default BasicContainer;","import { Image } from 'react-bootstrap'\r\nimport { Link } from 'react-router-dom'\r\nimport { Helmet } from 'react-helmet'\r\nimport SkiAreaInfo from '../SkiAreaInfo'\r\nimport Loader from \"../../../Common/Loader\"\r\nimport { RenderBreak } from '../../../../helpers/Helper'\r\n\r\nconst DailyReportContainer = ({ resort, skiAreaDailyReport }) => {\r\n\r\n    //console.log(skiAreaDailyReport)\r\n\r\n    if (skiAreaDailyReport === undefined) {\r\n        return (<Loader />)\r\n    }\r\n    else {\r\n        return (\r\n            <div className='empty-row'>\r\n                <Helmet>\r\n                    <title>{skiAreaDailyReport.NowName} daily snow & weather report for {resort.Name} region | SnowJapan</title>\r\n                    <meta name=\"description\" content={`Daily snow and weather report from close to ${resort.Name}, a ski area located in ${resort.TownName} ${resort.TownTypeStr}, ${resort.PrefectureName}, Japan.`} />\r\n                </Helmet>\r\n                <div className='empty-row'>\r\n                    <div className=\"sj-para-image\"><img src=\"https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-Daily-Reports.svg\" alt={`${resort.Name} daily report`} /></div>\r\n                    <div>\r\n                        <SkiAreaInfo resort={resort} />\r\n                        {(skiAreaDailyReport !== undefined && Object.keys(skiAreaDailyReport).length > 0) &&\r\n                            <>\r\n                                <div className=\"sj-para\">\r\n                                    <h3 className='mb-4'>{skiAreaDailyReport.NowName} latest report</h3>\r\n                                    <h4>Visit <Link to={`${window.$baseDailyReportUrl}/${skiAreaDailyReport.NowUniqueName}`}>{skiAreaDailyReport.NowName}</Link> for detailed daily reports from the area</h4>\r\n                                </div>\r\n                                <div className=\"sj-para\">\r\n                                    <h5 className='sj-red-text'>The following report was posted on {skiAreaDailyReport.NowReportWeekDay} {skiAreaDailyReport.NowReportDayTh} {skiAreaDailyReport.NowReportMonthFull} {skiAreaDailyReport.NowReportYear} {skiAreaDailyReport.NowReportHourMinute}</h5>\r\n                                </div>\r\n                            </>\r\n                        }\r\n                    </div>\r\n                </div>\r\n                {(skiAreaDailyReport !== undefined && Object.keys(skiAreaDailyReport).length > 0) &&\r\n                    <div className=\"sj-row\">\r\n                        <pre>\r\n                            <div dangerouslySetInnerHTML={{ __html: RenderBreak(skiAreaDailyReport.MainReport) }} />\r\n                        </pre>\r\n                        <div className='sj-para'>\r\n                            <h4>Opening, lift & other notes</h4>\r\n                        </div>\r\n                        <pre>\r\n                            <div dangerouslySetInnerHTML={{ __html: RenderBreak(skiAreaDailyReport.LiftOperation) }} />\r\n                        </pre>\r\n                        <div>\r\n                            <Link to={`${window.$baseDailyReportUrl}/${skiAreaDailyReport.NowUniqueName}`} className='btn btn-primary sj-large-button-blue sj-full-width'>{skiAreaDailyReport.NowName} report section</Link>\r\n                        </div>\r\n                        <div className='empty-row'>\r\n                            {(skiAreaDailyReport.Photo1 !== null && skiAreaDailyReport.Photo1 !== undefined) &&\r\n                                <div className='sj-image-holder center-aligned mt-4'>\r\n                                    <Image src={`https://www.snowjapan.com${skiAreaDailyReport.Photo1.replace('~', '')}`} fluid='true' alt='Report 1' />\r\n                                </div>\r\n                            }\r\n                            {(skiAreaDailyReport.Photo2 !== null && skiAreaDailyReport.Photo2 !== undefined) &&\r\n                                <div className='sj-image-holder center-aligned mt-4'>\r\n                                    <Image src={`https://www.snowjapan.com${skiAreaDailyReport.Photo2.replace('~', '')}`} fluid='true' alt='Report 2' />\r\n                                </div>\r\n                            }\r\n                            {(skiAreaDailyReport.Photo3 !== null && skiAreaDailyReport.Photo3 !== undefined) &&\r\n                                <div className='sj-image-holder center-aligned mt-4'>\r\n                                    <Image src={`https://www.snowjapan.com${skiAreaDailyReport.Photo3.replace('~', '')}`} fluid='true' alt='Report 3' />\r\n                                </div>\r\n                            }\r\n                        </div>\r\n                        <div>\r\n                            <Link to={`${window.$baseDailyReportUrl}/${skiAreaDailyReport.NowUniqueName}`} className='btn btn-primary sj-large-button-blue sj-full-width'>{skiAreaDailyReport.NowName} report section</Link>\r\n                        </div>\r\n                    </div>\r\n                }\r\n            </div>\r\n        )\r\n    };\r\n}\r\n\r\nexport default DailyReportContainer;","import SkiAreaInfo from '../SkiAreaInfo'\r\n\r\nconst HistoryContainer = ({ resort }) => {\r\n    return (\r\n        <div className='empty-row'>\r\n            <div className='empty-row'>\r\n                <div className=\"sj-para-image\"><img src=\"https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-Snow-Depth.svg\" alt={`${resort.Name} history`} /></div>\r\n                <div>\r\n                    <SkiAreaInfo resort={resort} />\r\n                    <div className=\"sj-para\">\r\n                        <h2>History</h2>\r\n                        <div className=\"sj-para\">\r\n                            Text Goes here\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    )\r\n};\r\n\r\nexport default HistoryContainer;","import { Helmet } from 'react-helmet'\r\nimport { Link } from 'react-router-dom'\r\nimport Loader from \"../../../Common/Loader\"\r\nimport SkiAreaInfo from '../SkiAreaInfo'\r\nimport ListingListTable from './ListingListTable'\r\nimport AccommodationListTable from './AccommodationListTable'\r\n\r\nconst ListingsContainer = ({ resort, nearbyAccommodations, areaSectionListings }) => {\r\n\r\n    if (nearbyAccommodations.length <= 0 && areaSectionListings.length <= 0) {\r\n        return (\r\n            <Loader />\r\n        )\r\n    } else {\r\n        return (\r\n            <div className='empty-row'>\r\n                <Helmet>\r\n                    <title>Listings of services near {resort.Name} ({resort.TownName} {resort.TownTypeStr}, {resort.PrefectureName}, Japan) | SnowJapan</title>\r\n                    <meta name=\"description\" content={`Listings of services near ${resort.Name}, a ski area located in ${resort.TownName} ${resort.TownTypeStr}, ${resort.PrefectureName}, Japan.`} />\r\n                </Helmet>\r\n                <div className='empty-row'>\r\n                    <div className=\"sj-para-image\"><img src=\"https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-Listings.svg\" alt={`${resort.Name} listing`} /></div>\r\n                    <div>\r\n                        <SkiAreaInfo resort={resort} />\r\n                        <div className=\"sj-para\">\r\n                            <h3>Listings</h3>\r\n                            <div className=\"sj-para\">\r\n                                Introducing various services and organizations close to NASPA Ski Garden that are keen to be known by English-speaking visitors. All listings are also displayed within the main <Link to='/listings'>Listing</Link> section of SnowJapan.\r\n                            </div>\r\n                            <div className=\"sj-para\">\r\n                                SnowJapan does not own or operate any of the services or organizations introduced in this section. We do not take any reservations, and we cannot answer any specific queries about individual services. If you own a business or service and would like to be listed here, <Link to='/contact'>please contact us</Link>.\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                {nearbyAccommodations.length > 0 &&\r\n                    <div className='sj-row'>\r\n                        <div className=\"sj-box sj-box-dark-gray sj-round-full center-aligned mt-2 mb-2\">\r\n                            <h4>Nearby Accommodations</h4>\r\n                        </div>\r\n                        <AccommodationListTable\r\n                            tableData={nearbyAccommodations}\r\n                            headingColumns={['', '', 'Area', 'Prefecture']}\r\n                            dataMapping={['a', 'AccommodationName', 'AccommodationAreaName', 'AccommodationPrefectureName']}\r\n                            title={``}\r\n                        />\r\n                    </div>\r\n                }\r\n                {\r\n                    areaSectionListings.length > 0 &&\r\n                    <>\r\n                        {areaSectionListings.map((areaSectionListing, index) => (\r\n                            <div key={index} className='mt-5'>\r\n                                <div className=\"sj-box sj-box-dark-gray sj-round-full center-aligned mt-2 mb-2\">\r\n                                    <h4>{areaSectionListing.sectionName}</h4>\r\n                                </div>\r\n                                <ListingListTable\r\n                                    tableData={areaSectionListing.listings}\r\n                                    headingColumns={['', '', 'Area', 'Prefecture']}\r\n                                    dataMapping={['a', 'Name', 'AreaName', 'PrefectureName']}\r\n                                    title=''\r\n                                />\r\n                            </div>\r\n                        ))}\r\n                    </>\r\n                }\r\n            </div>\r\n        )\r\n    }\r\n};\r\n\r\nexport default ListingsContainer;","import { useState, useEffect } from 'react'\r\nimport axios from 'axios'\r\nimport { Link } from 'react-router-dom'\r\nimport { Helmet } from 'react-helmet'\r\nimport SkiAreaInfo from '../SkiAreaInfo'\r\nimport { RenderBreak } from '../../../../helpers/Helper'\r\n\r\nconst LocationContainer = ({ resort, nearbySkiAreaList }) => {\r\n    const [location, setLocation] = useState([]);\r\n    const [nearbySkiAreas, setNearbySkiAreas] = useState(nearbySkiAreaList);\r\n\r\n    const fetchLocation = async (resortUniqueName) => {\r\n        axios({\r\n            method: 'POST',\r\n            url: `${window.$baseAPIUrl}/skiarea/location/${resortUniqueName}`\r\n        }).then(dataLocation => {\r\n            setLocation(dataLocation.data)\r\n        })\r\n    };\r\n\r\n    useEffect(() => {\r\n        fetchLocation(resort.UniqueName);\r\n        setNearbySkiAreas(nearbySkiAreaList)\r\n    }, [resort.UniqueName, nearbySkiAreaList]);\r\n\r\n    return (\r\n        <div className='empty-row'>\r\n            <Helmet>\r\n                <title>Location of {resort.Name} | Ski area in {resort.TownName} {resort.TownTypeStr}, {resort.PrefectureName}, Japan  |  {resort.NameJapanese} | SnowJapan</title>\r\n                <meta name=\"description\" content={`Location and maps of ${resort.Name}, a ski area located in ${resort.TownName} ${resort.TownTypeStr}, ${resort.PrefectureName}, Japan.`} />\r\n            </Helmet>\r\n            <div className='empty-row'>\r\n                <div className=\"sj-para-image\"><img src=\"https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-Location.svg\" alt={`${resort.Name} location`} /></div>\r\n                <div>\r\n                    <SkiAreaInfo resort={resort} />\r\n                    <div className=\"sj-para\">\r\n                        <h3>Location & access</h3>\r\n                        <div className=\"sj-para\">\r\n                            {resort.Name} is a ski area located in {resort.TownName} {resort.TownTypeStr}, {resort.PrefectureName}.\r\n                        </div>\r\n                        <div className=\"sj-para\">\r\n                            <h5><Link to={`${window.$baseRouteFinderUrl}/${resort.UniqueName}`} className='btn btn-primary sj-large-button-blue sj-50-box'>Route Finder</Link></h5>\r\n                        </div>\r\n                        <div className='sj-para'>\r\n                            Click on the above <strong>Route Finder</strong> link to discover how to get to <strong>{resort.Name}</strong> from your current location or any other ski area in Japan.\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            <div className=\"sj-row\">\r\n                <div className='ratio ratio-16x9'>\r\n                    <iframe title='Location Map' width='930' height='600' src={`https://www.google.com/maps/embed/v1/place?q=${resort.Location_Latitude},${resort.Location_Longitude}&key=AIzaSyAmyWUwcoNW504tXuRlQ_mZssrKEEhGn20&zoom=${resort.Location_MapZoomLevel}`} allowFullScreen></iframe>\r\n                </div>\r\n            </div>\r\n            <div className=\"sj-box sj-box-dark-blue sj-round-full center-aligned mt-5\">\r\n                <h3>Getting to {resort.Name}</h3>\r\n            </div>\r\n            <div className=\"sj-box sj-box-dark-gray sj-round-full center-aligned mt-2\">\r\n                <h4>By public transport</h4>\r\n            </div>\r\n            <div className=\"sj-row\">\r\n                <div className=\"row sj-no-bg sj-row-no-margin-padding mb-3\">\r\n                    <div className=\"col-md-3 m-0 mt-2 p-0 sj-list-icon-holder\">\r\n                        <img src=\"https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-Shinkansen.svg\" alt='Train' />\r\n                    </div>\r\n                    <div className=\"col-md-9 sj-list-text-holder\">\r\n                        <div>\r\n                            {(location.ShinkansenStation_Id !== null && location.ShinkansenLine_Id !== null) &&\r\n                                <div>\r\n                                    {location.KMFromShinkansenStation}km from <strong>{location.ShinkansenStationName}</strong> on the <strong>{location.ShinkansenLineName}</strong>\r\n                                </div>\r\n                            }\r\n                            {(location.TrainStation1_Id !== null && location.TrainLine1_Id !== null) &&\r\n                                <div>\r\n                                    {location.KMFromStation1}km from <strong>{location.TrainStation1Name}</strong> on the <strong>{location.TrainLine1Name}</strong>\r\n                                </div>\r\n                            }\r\n                            {(location.TrainStation2_Id !== null && location.TrainLine2_Id !== null) &&\r\n                                <div>\r\n                                    {location.KMFromStation2}km from <strong>{location.TrainStation2Name}</strong> on the <strong>{location.TrainLine2Name}</strong>\r\n                                </div>\r\n                            }\r\n                            <div className='mt-3'>\r\n                                <div dangerouslySetInnerHTML={{ __html: RenderBreak(location.TravelInformation) }} />\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                <div className=\"row sj-no-bg sj-row-no-margin-padding\">\r\n                    <div className=\"col-md-3 m-0 mt-2 p-0 sj-list-icon-holder\">\r\n                        <img src=\"https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-Bus.svg\" alt='Bus' />\r\n                    </div>\r\n                    <div className=\"col-md-9 sj-list-text-holder\">\r\n                        <div>\r\n                            <div dangerouslySetInnerHTML={{ __html: RenderBreak(location.ShuttleBusInformation) }} />\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            <div className=\"sj-box sj-box-dark-gray sj-round-full center-aligned mt-4\">\r\n                <h4>By road</h4>\r\n            </div>\r\n            <div className=\"sj-row\">\r\n                <div className=\"row sj-no-bg sj-row-no-margin-padding mb-3\">\r\n                    <div className=\"col-md-3 m-0 mt-2 p-0 sj-list-icon-holder\">\r\n                        <img src=\"https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-Cars.svg\" alt='Car' />\r\n                    </div>\r\n                    <div className=\"col-md-9 sj-list-text-holder\">\r\n                        <div>\r\n                            {(location.Interchange1_Id !== null && location.Expressway1_Id !== null) &&\r\n                                <div>\r\n                                    {location.KMFromInterchange1}km from the <strong>{location.Interchange1Name}</strong> on the <strong>{location.Expressway1Name}</strong>\r\n                                </div>\r\n                            }\r\n                            {(location.Interchange2_Id !== null && location.Expressway2_Id !== null) &&\r\n                                <div>\r\n                                    {location.KMFromInterchange2}km from the <strong>{location.Interchange2Name}</strong> on the <strong>{location.Expressway2Name}</strong>\r\n                                </div>\r\n                            }\r\n                            {(location.Interchange3_Id !== null && location.Expressway3_Id !== null) &&\r\n                                <div>\r\n                                    {location.KMFromInterchange3}km from the <strong>{location.Interchange3Name}</strong> on the <strong>{location.Expressway3Name}</strong>\r\n                                </div>\r\n                            }\r\n                            {(location.RouteNumber !== null && location.RouteNumber !== '') &&\r\n                                <div>\r\n                                    Nearest national route: <strong>Route {location.RouteNumber}</strong> (<strong>{location.KMFromRoute}km</strong> away)\r\n                                </div>\r\n                            }\r\n                            {(location.OtherPrefecturalRoadNumber !== null && location.OtherPrefecturalRoadNumber !== '') &&\r\n                                <div>\r\n                                    Nearest prefecture road: <strong>Prefecture Road {location.OtherPrefecturalRoadNumber}</strong>\r\n                                </div>\r\n                            }\r\n                            <div className='mt-3'>\r\n                                <div dangerouslySetInnerHTML={{ __html: RenderBreak(location.Direction) }} />\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                <div className=\"row sj-no-bg sj-row-no-margin-padding mb-3\">\r\n                    <div className=\"col-md-3 m-0 mt-2 p-0 sj-list-icon-holder\">\r\n                        <img src=\"https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-Parking.svg\" alt='Parking' />\r\n                    </div>\r\n                    <div className=\"col-md-9 sj-list-text-holder\">\r\n                        <div>\r\n                            <div dangerouslySetInnerHTML={{ __html: RenderBreak(location.Parking) }} />\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            {\r\n                (resort.StreetViewMap1 !== '' || resort.StreetViewMap2 !== '') &&\r\n                <div className=\"sj-row\">\r\n                    {(resort.StreetViewMap1 !== null && resort.StreetViewMap1 !== '') &&\r\n                        <div className='mb-2 mt-5'>\r\n                            <div className='ratio ratio-16x9'>\r\n                                <iframe title='Street View 1' width='930' height='600' src={resort.StreetViewMap1} allowFullScreen aria-hidden='false'></iframe>\r\n                            </div>\r\n                        </div>\r\n                    }\r\n                    {(resort.StreetViewMap2 !== null && resort.StreetViewMap2 !== '') &&\r\n                        <div className='mb-2 mt-5'>\r\n                            <div className='ratio ratio-16x9'>\r\n                                <iframe title='Street View 2' width='930' height='600' src={resort.StreetViewMap2} allowFullScreen aria-hidden='false'></iframe>\r\n                            </div>\r\n                        </div>\r\n                    }\r\n                    <div className='center-aligned'>\r\n                        The above image has been manually selected to try and provide the most suitable views and location information. Settings will be manually checked and updated every year.\r\n                    </div>\r\n                </div>\r\n            }\r\n            {\r\n                nearbySkiAreas.length > 0 &&\r\n                <div className='empty-row padding-top'>\r\n                    <div className=\"sj-box sj-box-dark-blue sj-round-full center-aligned mb-4\">\r\n                        <h3>Other ski areas nearby</h3>\r\n                    </div>\r\n                    <div>\r\n                        <div className='row sj-frame-header sj-row-no-margin-padding'>\r\n                            <div className=\"col-7\">\r\n                                <h5>Ski Area</h5>\r\n                            </div>\r\n                            <div className=\"col-5\">\r\n                                <h5>Distance</h5>\r\n                            </div>\r\n                        </div>\r\n                        <div className='sj-data-table-holder'>\r\n                            {nearbySkiAreas.map(nearbySkiArea => (\r\n                                <div className='row sj-frame-body sj-row-no-margin-padding' key={nearbySkiArea.Id}>\r\n                                    <div className=\"col-7\">\r\n                                        <Link to={`${window.$baseSkiAreaUrl}/${nearbySkiArea.SkiAreaPrefectureName}/${nearbySkiArea.SkiAreaTownUniqueName}/${nearbySkiArea.SkiAreaUniqueName}`}>{nearbySkiArea.SkiAreaName}</Link>\r\n                                    </div>\r\n                                    <div className=\"col-5\">\r\n                                        {nearbySkiArea.Distance} km\r\n                                        {nearbySkiArea.IsConnected &&\r\n                                            <>&nbsp;&nbsp;(Physically Connected)</>\r\n                                        }\r\n                                    </div>\r\n                                </div>\r\n                            ))}\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            }\r\n        </div >\r\n    )\r\n};\r\n\r\nexport default LocationContainer;","import PropTypes from 'prop-types'\r\nimport { Button, Modal, Image } from 'react-bootstrap';\r\nimport { useState } from 'react'\r\n\r\nconst PhotoDetail = ({ resort, photo }) => {\r\n    /*const [show, setShow] = useState(false)\r\n\r\n    const handleClose = () => {\r\n        setShow(false)\r\n    }\r\n    const showModal = () => {\r\n        setShow(true)\r\n    }*/\r\n    return (\r\n        <div>\r\n            <div className=\"sj-box sj-box-blue sj-round-half left-aligned mt-3\">\r\n                <h4>{photo.Caption}</h4>\r\n            </div>\r\n            <div className='sj-row-small-margin-padding center-aligned'>\r\n                <Image src={`${window.$baseAppUrl}/photo-galleries/${photo.CreatedByUserName}/${photo.PhotoFileName}`} alt={`thumb-${photo.Id}`} fluid='true' />\r\n            </div>\r\n            <div className=\"row sj-row-small-margin-padding\">\r\n                <div className=\"col-lg-2\">\r\n                    <strong>Uploaded by:</strong>\r\n                </div>\r\n                <div className=\"col-lg-10\">\r\n                    {photo.CreatedByUserName}\r\n                </div>\r\n            </div>\r\n            <div className=\"row sj-row-small-margin-padding\">\r\n                <div className=\"col-lg-2\">\r\n                    <strong>Uploaded on:</strong>\r\n                </div>\r\n                <div className=\"col-lg-10\">\r\n                    {photo.CreatedAtDayTh} {photo.CreatedAtMonthFull} {photo.CreatedAtYear}\r\n                </div>\r\n            </div>\r\n            <hr className='mt-5' />\r\n            {/*<Modal\r\n                show={show}\r\n                size=\"lg\"\r\n                onHide={handleClose}\r\n                backdrop=\"static\"\r\n                keyboard={false}\r\n            >\r\n                <Modal.Header closeButton>\r\n                    <Modal.Title>{photo.Caption}</Modal.Title>\r\n                </Modal.Header>\r\n                <Modal.Body>\r\n                    <div className='center-aligned'>\r\n                        <img src={`${window.$baseAppUrl}/photo-galleries/${photo.CreatedByUserName}/${photo.PhotoFileName}`} alt={`full-${photo.Id}`} />\r\n                    </div>\r\n                    <div className=\"row sj-row-small-margin-padding\">\r\n                        <div className=\"col-lg-3\">\r\n                            <strong>Uploaded by:</strong>\r\n                        </div>\r\n                        <div className=\"col-lg-9\">\r\n                            {photo.CreatedByUserName}\r\n                        </div>\r\n                    </div>\r\n                    <div className=\"row sj-row-small-margin-padding\">\r\n                        <div className=\"col-lg-3\">\r\n                            <strong>Uploaded on:</strong>\r\n                        </div>\r\n                        <div className=\"col-lg-9\">\r\n                            {photo.CreatedAtDayTh} {photo.CreatedAtMonthFull} {photo.CreatedAtYear}\r\n                        </div>\r\n                    </div>\r\n                </Modal.Body>\r\n                <Modal.Footer>\r\n                    <Button variant=\"secondary\" onClick={handleClose}>\r\n                        Close\r\n                    </Button>\r\n                </Modal.Footer>\r\n    </Modal>*/}\r\n        </div>\r\n    )\r\n};\r\n\r\nPhotoDetail.propTypes = {\r\n    photo: PropTypes.object.isRequired\r\n}\r\n\r\nexport default PhotoDetail;","import { useState, useRef, useCallback } from 'react'\r\nimport { Helmet } from 'react-helmet'\r\nimport { Link } from 'react-router-dom'\r\nimport Loader from \"../../../Common/Loader\"\r\nimport SkiAreaInfo from '../SkiAreaInfo'\r\nimport useSkiAreaPhotos from '../../../CustomHooks/useSkiAreaPhotos'\r\nimport PhotoDetail from './PhotoDetail'\r\n\r\nconst PhotosContainer = ({ resort }) => {\r\n\r\n    const queryPhoto = resort.Id\r\n    const userName = ''\r\n    const [pageNumberPhoto, setPaegNumberPhoto] = useState(1)\r\n\r\n    const {\r\n        loadingPhoto,\r\n        errorPhoto,\r\n        photos,\r\n        hasMorePhoto\r\n    } = useSkiAreaPhotos(queryPhoto, userName, pageNumberPhoto)\r\n\r\n    const observerPhoto = useRef()\r\n    const lastPhotoElementRef = useCallback(nodePhoto => {\r\n        if (loadingPhoto)\r\n            return\r\n        if (observerPhoto.current)\r\n            observerPhoto.current.disconnect()\r\n        observerPhoto.current = new IntersectionObserver(entriesPhoto => {\r\n            if (entriesPhoto[0].isIntersecting && hasMorePhoto) {\r\n                setPaegNumberPhoto(prevPageNumberPhoto => prevPageNumberPhoto + 1)\r\n            }\r\n        })\r\n\r\n        if (nodePhoto)\r\n            observerPhoto.current.observe(nodePhoto)\r\n    }, [loadingPhoto, hasMorePhoto])\r\n\r\n    return (\r\n        <div className='empty-row'>\r\n            <Helmet>\r\n                <title>Photos of {resort.Name} ({resort.TownName} {resort.TownTypeStr}, {resort.PrefectureName}, Japan) | SnowJapan</title>\r\n                <meta name=\"description\" content={`Reader photos of ${resort.Name}, a ski area located in ${resort.TownName} ${resort.TownTypeStr}, ${resort.PrefectureName}, Japan.`} />\r\n            </Helmet>\r\n            <div className='empty-row'>\r\n                <div className=\"sj-para-image\"><img src=\"https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-Photos.svg\" alt={`${resort.Name}`} /></div>\r\n                <div>\r\n                    <SkiAreaInfo resort={resort} />\r\n                    <div className=\"sj-para\">\r\n                        <h3>Photos of {resort.Name}</h3>\r\n                        <div className=\"sj-para\">\r\n                            Photos of <strong>{resort.Name}</strong> that have been posted by SnowJapan members.\r\n                        </div>\r\n                        <div className=\"sj-para\">\r\n                            <h6 className='mt-1 mb-1'><Link to={`${window.$baseMemberUrl}/upload-photo/${resort.UniqueName}`} className='btn btn-primary sj-large-font-button sj-red-bg sj-50-box'>Upload new ski area photos</Link></h6>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            <div>\r\n                <div className=\"sj-para\">\r\n                    <h3>Recent photos</h3>\r\n                </div>\r\n                {photos.map((photo, index) => {\r\n                    if (photos.length === index + 1) {\r\n                        return (\r\n                            <div ref={lastPhotoElementRef} key={photo.Id}>\r\n                                <PhotoDetail resort={resort} photo={photo} />\r\n                            </div>\r\n                        )\r\n                    } else {\r\n                        return (\r\n                            <div key={photo.Id}>\r\n                                <PhotoDetail resort={resort} photo={photo} />\r\n                            </div>\r\n                        )\r\n                    }\r\n                })}\r\n                <div>\r\n                    {loadingPhoto &&\r\n                        <Loader />\r\n                    }\r\n                </div>\r\n                <div>{errorPhoto && 'Error'}</div>\r\n            </div>\r\n        </div>\r\n    )\r\n};\r\n\r\nexport default PhotosContainer;","import { RenderBreak } from '../../../../helpers/Helper'\r\nimport PropTypes from 'prop-types'\r\n\r\nconst ReviewDetail = ({ resort, review }) => {\r\n    return (\r\n        <div className='sj-row'>\r\n            <div className=\"sj-box sj-box-blue sj-round-half left-aligned mt-3\">\r\n                <h4>{review.Headline}</h4>\r\n            </div>\r\n            {review.ReviewText !== '' &&\r\n                <div className='row sj-row-small-margin-padding sj-no-bg'>\r\n                    <div dangerouslySetInnerHTML={{ __html: RenderBreak(review.ReviewText) }} />\r\n                </div>\r\n            }\r\n            <div className=\"row sj-row-small-margin-padding\">\r\n                <div className=\"col-lg-2\">\r\n                    <strong>Date visited:</strong>\r\n                </div>\r\n                <div className=\"col-lg-10\">\r\n                    {review.DateVisited}\r\n                </div>\r\n            </div>\r\n            <div className=\"row sj-row-small-margin-padding\">\r\n                <div className=\"col-lg-2\">\r\n                    <strong>Things I liked:</strong>\r\n                </div>\r\n                <div className=\"col-lg-10\">\r\n                    {review.ThingsILiked}\r\n                </div>\r\n            </div>\r\n            <div className=\"row sj-row-small-margin-padding\">\r\n                <div className=\"col-lg-2\">\r\n                    <strong>Things I didn’t like:</strong>\r\n                </div>\r\n                <div className=\"col-lg-10\">\r\n                    {review.ThingsIDidnotLike}\r\n                </div>\r\n            </div>\r\n            <div className=\"row sj-row-small-margin-padding\">\r\n                <div className=\"col-lg-2\">\r\n                    <strong>Review by:</strong>\r\n                </div>\r\n                <div className=\"col-lg-10\">\r\n                    {review.ReaderName}\r\n                </div>\r\n            </div>\r\n            <div className=\"row sj-row-small-margin-padding\">\r\n                <div className=\"col-lg-2\">\r\n                    <strong>Posted:</strong>\r\n                </div>\r\n                <div className=\"col-lg-10\">\r\n                    {review.SubmittedDayTh} {review.SubmittedMonthFull} {review.SubmittedYear}\r\n                </div>\r\n            </div>\r\n            <hr className='mt-5' />\r\n        </div>\r\n    )\r\n};\r\n\r\nReviewDetail.propTypes = {\r\n    review: PropTypes.object.isRequired\r\n}\r\n\r\nexport default ReviewDetail;","import { useState, useRef, useCallback } from 'react'\r\nimport { Helmet } from 'react-helmet'\r\nimport { Link } from 'react-router-dom'\r\nimport Loader from \"../../../Common/Loader\"\r\nimport SkiAreaInfo from '../SkiAreaInfo'\r\nimport useSkiAreaReviews from '../../../CustomHooks/useSkiAreaReviews'\r\nimport ReviewDetail from './ReviewDetail'\r\n\r\nconst ReviewsContainer = ({ resort }) => {\r\n    const queryReview = resort.Id\r\n    const userName = ''\r\n    const [pageNumberReview, setPaegNumberReview] = useState(1)\r\n\r\n    const {\r\n        loadingReview,\r\n        errorReview,\r\n        reviews,\r\n        hasMoreReview\r\n    } = useSkiAreaReviews(queryReview, userName, pageNumberReview)\r\n\r\n    const observerReview = useRef()\r\n    const lastReviewElementRef = useCallback(nodeReview => {\r\n        if (loadingReview)\r\n            return\r\n        if (observerReview.current)\r\n            observerReview.current.disconnect()\r\n        observerReview.current = new IntersectionObserver(entriesReview => {\r\n            if (entriesReview[0].isIntersecting && hasMoreReview) {\r\n                setPaegNumberReview(prevPageNumberReview => prevPageNumberReview + 1)\r\n            }\r\n        })\r\n\r\n        if (nodeReview)\r\n            observerReview.current.observe(nodeReview)\r\n    }, [loadingReview, hasMoreReview])\r\n\r\n    return (\r\n        <div className='empty-row'>\r\n            <Helmet>\r\n                <title>Reviews of {resort.Name} ({resort.TownName} {resort.TownTypeStr}, {resort.PrefectureName}, Japan) | SnowJapan</title>\r\n                <meta name=\"description\" content={`Reader reviews of ${resort.Name}, a ski area located in ${resort.TownName} ${resort.TownTypeStr}, ${resort.PrefectureName}, Japan.`} />\r\n            </Helmet>\r\n            <div className='empty-row'>\r\n                <div className=\"sj-para-image\"><img src=\"https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-Reviews.svg\" alt={`${resort.Name} review`} /></div>\r\n                <div>\r\n                    <SkiAreaInfo resort={resort} />\r\n                    <div className=\"sj-para\">\r\n                        <h3>Reader reviews of {resort.Name}</h3>\r\n                        <div className=\"sj-para\">\r\n                            Reviews of <strong>{resort.Name}</strong> that have been posted by SnowJapan members. The views expressed in the reviews are not those of SnowJapan.\r\n                        </div>\r\n                        <div className=\"sj-para\">\r\n                            <h6 className='mt-1 mb-1'><Link to={`${window.$baseMemberUrl}/submit-review/${resort.UniqueName}`} className='btn btn-primary sj-large-font-button sj-red-bg sj-50-box'>Write a new ski area review</Link></h6>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            <div className='empty-row'>\r\n                <div className=\"sj-para\">\r\n                    <h3>Recent reviews</h3>\r\n                </div>\r\n                {reviews.map((review, index) => {\r\n                    if (reviews.length === index + 1) {\r\n                        return (\r\n                            <div ref={lastReviewElementRef} key={review.Id}>\r\n                                <ReviewDetail resort={resort} review={review} />\r\n                            </div>\r\n                        )\r\n                    } else {\r\n                        return (\r\n                            <div key={review.Id}>\r\n                                <ReviewDetail resort={resort} review={review} />\r\n                            </div>\r\n                        )\r\n                    }\r\n                })}\r\n                <div>\r\n                    {loadingReview &&\r\n                        <Loader />\r\n                    }\r\n                </div>\r\n                <div>{errorReview && 'Error'}</div>\r\n            </div>\r\n        </div>\r\n    )\r\n};\r\n\r\nexport default ReviewsContainer;","import SkiAreaInfo from '../SkiAreaInfo'\r\n\r\nconst RouteFinderContainer = ({ resort }) => {\r\n    return (\r\n        <div className='empty-row'>\r\n            <div className='empty-row'>\r\n                <div className=\"sj-para-image\"><img src=\"https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-Snow-Depth.svg\" alt={`${resort.Name} route finder`} /></div>\r\n                <div>\r\n                    <SkiAreaInfo resort={resort} />\r\n                    <div className=\"sj-para\">\r\n                        <h2>Route Finder</h2>\r\n                        <div className=\"sj-para\">\r\n                            Text Goes here\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    )\r\n};\r\n\r\nexport default RouteFinderContainer;","import Highcharts from 'highcharts'\r\nimport HighchartsReact from 'highcharts-react-official'\r\n\r\nconst SnowChart = ({ resortName, snowData }) => {\r\n  const getSnowDataValue = (season) => {\r\n\r\n    let dailySnowData = [];\r\n\r\n    let dailyData = snowData.filter(function (currentElement) {\r\n      return (currentElement.Season === season && currentElement.SnowDepth !== 999);\r\n    });\r\n\r\n    dailyData.sort(function (a, b) {\r\n      var dateA = new Date(a.CreatedAt), dateB = new Date(b.CreatedAt)\r\n      return dateA - dateB\r\n    })\r\n\r\n    dailyData.forEach(function (dataItem) {\r\n      let valueCounter = 0;\r\n\r\n      if (dataItem.WeatherMonth < 6) {\r\n        valueCounter = 1\r\n      }\r\n\r\n      dailySnowData.push([Date.UTC(1969 + valueCounter, Number(dataItem.WeatherMonth) - 1, dataItem.WeatherDay), dataItem.SnowDepth])\r\n    })\r\n\r\n    return dailySnowData\r\n  }\r\n\r\n  let resortWeatherSnowDataSeries = [];\r\n\r\n  let seasons = [...new Set(snowData.map(item => item.Season))].sort().reverse();\r\n\r\n  seasons.forEach(function (item) {\r\n    resortWeatherSnowDataSeries.push({\r\n      'name': item,\r\n      'data': getSnowDataValue(item)\r\n    })\r\n  })\r\n\r\n  const options = {\r\n    colors: [\"#0000CC\", \"#0033CC\", \"#3366CC\", \"#3399FF\", \"#000066\", \"#990000\", \"#CC0000\", \"#FF0066\", \"#660033\", \"#8904B1\", \"#FE9A2E\", \"#DF7401\"],\r\n    chart: {\r\n      type: 'spline',\r\n      zoomType: 'x',\r\n      backgroundColor: \"#efefef\",\r\n      borderWidth: 1,\r\n      borderColor: \"#dedede\",\r\n      style: {\r\n        fontFamily: 'Lato'\r\n      }\r\n    },\r\n    title: {\r\n      text: 'Official snow depth data',\r\n      style: {\r\n        fontSize: '18px',\r\n        fontWeight: 'bold',\r\n        fontFamily: 'Montserrat'\r\n      }\r\n    },\r\n    subtitle: {\r\n      text: 'Drag a section of the graph to zoom in',\r\n      style: {\r\n        fontSize: '15px',\r\n        fontWeight: 'bold',\r\n        fontFamily: 'Lato'\r\n      }\r\n    },\r\n    xAxis: {\r\n      type: 'datetime',\r\n      dateTimeLabelFormats: { // don't display the dummy year\r\n        month: '%b %e ', year: '%b'\r\n      },\r\n      title: {\r\n        text: ''\r\n      }\r\n    },\r\n    legend: {\r\n      itemStyle: {\r\n        fontWeight: 'bold',\r\n        fontSize: '14px'\r\n      }\r\n    },\r\n    yAxis: {\r\n      title: {\r\n        text: 'Official snow depth (cm)',\r\n        style: {\r\n          fontSize: '15px',\r\n          fontWeight: 'bold',\r\n          fontFamily: 'Montserrat'\r\n        }\r\n      },\r\n      min: 0,\r\n      labels: {\r\n        style: {\r\n          fontSize: '12px',\r\n          fontWeight: 'bold',\r\n          fontFamily: 'Montserrat'\r\n        }\r\n      }\r\n    },\r\n    tooltip: {\r\n      headerFormat: '<b>{series.name}</b><br>',\r\n      pointFormat: '{point.x:%b %e}: {point.y}cm'\r\n    },\r\n    exporting:\r\n    {\r\n      enabled: false\r\n    },\r\n    plotOptions: {\r\n      spline: {\r\n        marker: {\r\n          enabled: true\r\n        }\r\n      }\r\n    },\r\n    series: resortWeatherSnowDataSeries,\r\n    credits:\r\n    {\r\n      enabled: false\r\n    }\r\n  };\r\n\r\n  return (\r\n    <div>\r\n      <div className=\"sj-box sj-box-dark-blue sj-round-half center-aligned mt-5\">\r\n        <h3>{resortName}</h3>\r\n      </div>\r\n      <div>\r\n        <HighchartsReact highcharts={Highcharts} options={options} />\r\n      </div>\r\n    </div>\r\n  );\r\n}\r\n\r\nexport default SnowChart;","import { useState, useEffect } from 'react'\r\nimport Highcharts from 'highcharts'\r\nimport HighchartsReact from 'highcharts-react-official'\r\n\r\nconst SeasonSnowChart = ({ resortName, snowData, season, chartOptions, index }) => {\r\n\r\n  const [resortWeatherSnowDataSeries, setResortWeatherSnowDataSeries] = useState([])\r\n  const chartColors = [\"#0000CC\", \"#0033CC\", \"#3366CC\", \"#3399FF\", \"#000066\", \"#990000\", \"#CC0000\", \"#FF0066\", \"#660033\", \"#8904B1\", \"#FE9A2E\", \"#DF7401\"]\r\n\r\n  const getSnowDataValue = (thisSeason) => {\r\n\r\n    let dailySnowData = [];\r\n\r\n    let dailyData = snowData.filter(function (currentElement) {\r\n      return (currentElement.Season === thisSeason && currentElement.SnowDepth !== 999);\r\n    });\r\n\r\n    dailyData.sort(function (a, b) {\r\n      var dateA = new Date(a.CreatedAt), dateB = new Date(b.CreatedAt)\r\n      return dateA - dateB\r\n    })\r\n\r\n    dailyData.forEach(function (dataItem) {\r\n      let valueCounter = 0;\r\n\r\n      if (dataItem.WeatherMonth < 6) {\r\n        valueCounter = 1\r\n      }\r\n\r\n      dailySnowData.push([Date.UTC(1969 + valueCounter, Number(dataItem.WeatherMonth) - 1, dataItem.WeatherDay), dataItem.SnowDepth])\r\n    })\r\n\r\n    return dailySnowData\r\n  }\r\n\r\n  const GetResortWeatherSnowDataSeries = (thisSeason) => {\r\n\r\n    let thisResortWeatherSnowDataSeries = [];\r\n\r\n    thisResortWeatherSnowDataSeries.push({\r\n      'name': thisSeason,\r\n      'data': getSnowDataValue(thisSeason)\r\n    })\r\n\r\n    setResortWeatherSnowDataSeries(thisResortWeatherSnowDataSeries)\r\n  }\r\n\r\n  useEffect(() => {\r\n    GetResortWeatherSnowDataSeries(season)\r\n  }, [season, snowData]);\r\n\r\n  const thisOptions = { ...chartOptions, series: resortWeatherSnowDataSeries, colors: [chartColors[index]] };\r\n\r\n  return (\r\n    <div>\r\n      <div className=\"sj-box sj-box-dark-gray sj-round-half center-aligned mt-5\">\r\n        <h4>{season} Season snow depth data ({resortName})</h4>\r\n      </div>\r\n      <div>\r\n        <HighchartsReact highcharts={Highcharts} options={thisOptions} />\r\n      </div>\r\n    </div>\r\n  );\r\n}\r\n\r\nexport default SeasonSnowChart;","import { Link } from 'react-router-dom'\r\nimport { GetTotalMonthDays, GetCurrentSeasonName } from '../../../../helpers/Helper'\r\n\r\nconst SnowTable = ({ resort, snowData, skiAreaDailyReport }) => {\r\n\r\n  const getMonthlySeasonSnowDepthValue = (month) => {\r\n\r\n    let monthlySeasonSnowfallData = []\r\n\r\n    let snowSeasons = [...new Set(snowData.map(item => item.Season))].sort().reverse();\r\n\r\n    snowSeasons.forEach(function (snowSeason) {\r\n\r\n      let dailySnowDepthData = []\r\n\r\n      let dailySnowData = snowData.filter(function (currentElement) {\r\n        return (currentElement.WeatherMonthFull === month && currentElement.Season === snowSeason);\r\n      });\r\n\r\n      dailySnowData.forEach(function (dataItem) {\r\n        dailySnowDepthData.push({ 'day': dataItem.WeatherDay, 'dailySnowDepth': dataItem.SnowDepth })\r\n      })\r\n\r\n      monthlySeasonSnowfallData.push({ 'seasonName': snowSeason, 'seasonDailySnowDepth': dailySnowDepthData })\r\n    })\r\n\r\n    return monthlySeasonSnowfallData;\r\n  }\r\n\r\n  let dailySnowDepthDataList = [];\r\n  //let months = ['November', 'December', 'January', 'February', 'March', 'April'];\r\n  let months = ['December', 'January', 'February', 'March', 'April'];\r\n\r\n  months.forEach(function (month) {\r\n    dailySnowDepthDataList.push({\r\n      'name': month,\r\n      'seasonData': getMonthlySeasonSnowDepthValue(month)\r\n    })\r\n  })\r\n\r\n  let totalDays = 0\r\n\r\n  const runCallback = (cb) => {\r\n    return cb();\r\n  };\r\n\r\n  const GetDailyData = (monthlyData, day) => {\r\n    let snowData = monthlyData.filter(function (elm) {\r\n      return (elm.day === day);\r\n    });\r\n\r\n    if (snowData.length > 0 && snowData[0].dailySnowDepth !== 999) {\r\n      return snowData[0].dailySnowDepth;\r\n    } else {\r\n      return '';\r\n    }\r\n  };\r\n\r\n  const GetDayTh = (day) => {\r\n    let dayTh = ''\r\n\r\n    switch (day) {\r\n      case 1:\r\n      case 21:\r\n      case 31:\r\n        dayTh = 'st'\r\n        break;\r\n      case 2:\r\n      case 22:\r\n        dayTh = 'nd'\r\n        break;\r\n      case 3:\r\n      case 23:\r\n        dayTh = 'rd'\r\n        break;\r\n      default:\r\n        dayTh = 'th'\r\n    }\r\n\r\n    return day + dayTh\r\n  };\r\n\r\n  const currentSeason = GetCurrentSeasonName()\r\n\r\n  if (snowData.length <= 0) {\r\n    return (<>Loading...</>)\r\n  }\r\n  else {\r\n    return (\r\n      <div className='empty-row'>\r\n        {\r\n          dailySnowDepthDataList.map((monthlyData, index) => (\r\n            <div key={index} className='empty-row' style={{ overflowX: 'auto' }}>\r\n              <div className=\"sj-box sj-box-dark-gray sj-round-half center-aligned mt-5\">\r\n                <h4>{monthlyData.name}</h4>\r\n              </div>\r\n              <div className='table-container'>\r\n                <table className='table-container__table sj-data-table'>\r\n                  <thead>\r\n                    <tr>\r\n                      <th>Season</th>\r\n                      {runCallback(() => {\r\n                        totalDays = GetTotalMonthDays(monthlyData.name)\r\n                        const row = [];\r\n                        for (var i = 1; i < (totalDays + 1); i++) {\r\n                          row.push(<th key={i}>{GetDayTh(i)}</th>);\r\n                        }\r\n                        return row;\r\n                      })}\r\n                    </tr>\r\n                  </thead>\r\n                  <tbody>\r\n                    {monthlyData.seasonData.map((seasonSnowData, key) => (\r\n                      <tr key={key}>\r\n                        <td className={`td-first-column ${seasonSnowData.seasonName === currentSeason ? \"sj-box-red\" : \"\"}`}><Link to={`${window.$baseDailyReportUrl}/${skiAreaDailyReport.NowUniqueName}/season/${seasonSnowData.seasonName}`}>{seasonSnowData.seasonName}</Link></td>\r\n                        {runCallback(() => {\r\n                          const row = [];\r\n                          for (var i = 1; i < (totalDays + 1); i++) {\r\n                            row.push(<td key={i} className={`${seasonSnowData.seasonName === currentSeason ? \"sj-box-light-red\" : \"\"}`}>{\r\n                              GetDailyData(seasonSnowData.seasonDailySnowDepth, i)\r\n                            }</td>);\r\n                          }\r\n                          return row;\r\n                        })}\r\n                      </tr>\r\n                    ))}\r\n                  </tbody>\r\n                </table>\r\n              </div>\r\n            </div>\r\n          ))\r\n        }\r\n      </div >\r\n    )\r\n  }\r\n}\r\n\r\nexport default SnowTable;","import { useState, useEffect } from 'react'\r\nimport axios from 'axios'\r\nimport { Helmet } from 'react-helmet'\r\nimport Loader from \"../../../Common/Loader\"\r\nimport SkiAreaInfo from '../SkiAreaInfo'\r\nimport SnowChart from '../../../Common/SnowChart'\r\nimport SeasonSnowChart from '../../../Common/SeasonSnowChart'\r\nimport SnowTable from './SnowTable'\r\n\r\nconst SnowDataContainer = ({ resort, skiAreaDailyReport }) => {\r\n\r\n    console.log(skiAreaDailyReport)\r\n\r\n    const [snowData, setSnowData] = useState([]);\r\n\r\n    const fetchSnowData = async (resortId) => {\r\n        axios({\r\n            method: 'POST',\r\n            url: `${window.$baseAPIUrl}/skiarea/snowfall/${resortId}`\r\n        }).then(dataSnowData => {\r\n            if (dataSnowData.data.length > 0) {\r\n\r\n                let thisAllSnowData = dataSnowData.data\r\n\r\n                let thisSnowData = thisAllSnowData.filter(function (currentElement) {\r\n                    return (currentElement.SnowDepth !== 999 && currentElement.Season !== '-');\r\n                });\r\n\r\n                setSnowData(thisSnowData)\r\n            }\r\n        })\r\n    };\r\n\r\n    useEffect(() => {\r\n        fetchSnowData(resort.Id);\r\n    }, [resort.Id]);\r\n\r\n    const chartOptions = {\r\n        chart: {\r\n            type: 'area',\r\n            zoomType: 'x',\r\n            backgroundColor: \"#efefef\",\r\n            borderWidth: 1,\r\n            borderColor: \"#dedede\",\r\n            style: {\r\n                fontFamily: 'Lato'\r\n            }\r\n        },\r\n        title: {\r\n            text: 'Official snow depth data',\r\n            style: {\r\n                fontSize: '18px',\r\n                fontWeight: 'bold',\r\n                fontFamily: 'Montserrat'\r\n            }\r\n        },\r\n        subtitle: {\r\n            text: 'Drag a section of the graph to zoom in',\r\n            style: {\r\n                fontSize: '15px',\r\n                fontWeight: 'bold',\r\n                fontFamily: 'Lato'\r\n            }\r\n        },\r\n        xAxis: {\r\n            type: 'datetime',\r\n            dateTimeLabelFormats: { // don't display the dummy year\r\n                month: '%b %e ', year: '%b'\r\n            },\r\n            title: {\r\n                text: '',\r\n                enabled: false\r\n            }\r\n        },\r\n        legend: {\r\n            itemStyle: {\r\n                fontWeight: 'bold',\r\n                fontSize: '14px'\r\n            }\r\n        },\r\n        yAxis: {\r\n            title: {\r\n                text: 'Official snow depth (cm)',\r\n                style: {\r\n                    fontSize: '15px',\r\n                    fontWeight: 'bold',\r\n                    fontFamily: 'Montserrat'\r\n                }\r\n            },\r\n            min: 0,\r\n            labels: {\r\n                style: {\r\n                    fontSize: '12px',\r\n                    fontWeight: 'bold',\r\n                    fontFamily: 'Montserrat'\r\n                }\r\n            }\r\n        },\r\n        tooltip: {\r\n            headerFormat: '<b>{series.name}</b><br>',\r\n            pointFormat: '{point.x:%b %e}: {point.y}cm'\r\n        },\r\n        exporting:\r\n        {\r\n            enabled: false\r\n        },\r\n        plotOptions: {\r\n            area: {\r\n                marker: {\r\n                    enabled: false,\r\n                    symbol: 'circle',\r\n                    radius: 3,\r\n                    states: {\r\n                        hover: {\r\n                            enabled: true\r\n                        }\r\n                    }\r\n                },\r\n                lineWidth: 1,\r\n                states: {\r\n                    hover: {\r\n                        lineWidth: 3\r\n                    }\r\n                },\r\n                threshold: null\r\n            }\r\n        },\r\n        credits:\r\n        {\r\n            enabled: false\r\n        }\r\n    };\r\n\r\n    if (snowData.length <= 0) {\r\n        return (\r\n            <Loader />\r\n        )\r\n    }\r\n    else {\r\n        let seasons = [...new Set(snowData.map(item => item.Season))].sort().reverse();\r\n\r\n        return (\r\n            <div className='empty-row'>\r\n                <Helmet>\r\n                    <title>Snow depth data for {resort.Name} ({resort.TownName} {resort.TownTypeStr}, {resort.PrefectureName}, Japan) | SnowJapan</title>\r\n                    <meta name=\"description\" content={`Official snow depth data (current and archive) for ${resort.Name}, a ski area located in ${resort.TownName} ${resort.TownTypeStr}, ${resort.PrefectureName}, Japan.`} />\r\n                </Helmet>\r\n                <div className='empty-row'>\r\n                    <div className=\"sj-para-image\"><img src=\"https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-Snow-Depth.svg\" alt={`${resort.Name} snow data`} /></div>\r\n                    <div>\r\n                        <SkiAreaInfo resort={resort} />\r\n                        <div className=\"sj-para\">\r\n                            <h3>Official snow depth data</h3>\r\n                            <div className=\"sj-para\">\r\n                                The data published on this page is official snow depth data - as originally reported by the ski area. It is updated daily during the main winter season. Please note that each ski area has its own method of measuring snow depth, and SnowJapan does not control the data.\r\n                            </div>\r\n                            <div className=\"sj-para\">\r\n                                Click on each season's name to toggle on/off and compare the seasons on the top graph. Data is presented in the tables below the graphs.\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                <SnowChart resortName={resort.Name} snowData={snowData} />\r\n                {seasons.map((season, index) => (\r\n                    <div key={index}>\r\n                        <SeasonSnowChart resortName={resort.Name} snowData={snowData} season={season} chartOptions={chartOptions} index={index} />\r\n                    </div>\r\n                ))}\r\n                {skiAreaDailyReport !== undefined &&\r\n                    <SnowTable resort={resort} snowData={snowData} skiAreaDailyReport={skiAreaDailyReport} />\r\n                }\r\n            </div>\r\n        )\r\n    }\r\n};\r\n\r\nexport default SnowDataContainer;","import { useState } from 'react'\r\nimport { Button, Collapse } from 'react-bootstrap'\r\nimport { Helmet } from 'react-helmet'\r\nimport SkiAreaInfo from '../SkiAreaInfo'\r\n\r\nconst WeatherContainer = ({ resort }) => {\r\n\r\n    const [openPrecipitationMap, setOpenPrecipitationMap] = useState(false);\r\n    const [openAnimateForecasts, setOpenAnimateForecasts] = useState(false);\r\n\r\n    return (\r\n        <div className='empty-row'>\r\n            <Helmet>\r\n                <title>Weather & snow forecasts for {resort.Name} ({resort.TownName} {resort.TownTypeStr}, {resort.PrefectureName}, Japan) | SnowJapan</title>\r\n                <meta name=\"description\" content={`Weather and snow forecast resources for ${resort.Name}, a ski area located in ${resort.TownName} ${resort.TownTypeStr}, ${resort.PrefectureName}, Japan.`} />\r\n            </Helmet>\r\n            <div className='empty-row'>\r\n                <div className=\"sj-para-image\"><img src=\"https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-Weather-HeavySnow.svg\" alt={`${resort.Name} weather forecast`} /></div>\r\n                <div>\r\n                    <SkiAreaInfo resort={resort} />\r\n                    <div className=\"sj-para\">\r\n                        <h3>Weather resources</h3>\r\n                        <div className='sj-para'>\r\n                            The <strong>Japan Meteorological Agency (JMA)</strong> publishes various real-time snowfall, weather and forecast related resources. We introduce various resources for the region where <strong>{resort.Name}</strong> is located on this page. All links open in a new window. All maps are centred on the exact location of <strong>{resort.Name}</strong>.\r\n                        </div>\r\n                        <div className='sj-para sj-red-text'>\r\n                            Important: The below information is provided to give a general insight into the weather and snowfall conditions in the region. It is not ski area specific. Actual snowfall is often more than shown, especially at higher elevations.\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            <div className=\"sj-row\">\r\n                <div>\r\n                    <div className=\"sj-box sj-box-dark-gray sj-round-full center-aligned mt-2\">\r\n                        <h4>{resort.Name} region</h4>\r\n                    </div>\r\n                    <div className=\"row sj-row-no-margin-padding sj-no-bg\">\r\n                        <div className=\"col-lg-3 left-aligned-jma sj-row-no-margin-padding\">\r\n                            <div className='sj-box sj-box-dark-blue sj-round-full m-2 p-2 pt-3 pb-3'>\r\n                                <h5>Town information</h5>\r\n                            </div>\r\n                        </div>\r\n                        {(resort.HotelBookingLink1 !== null && resort.HotelBookingLink1 !== undefined && resort.HotelBookingLink1 !== '') &&\r\n                            <div className=\"col-lg-3 left-aligned sj-row-no-margin-padding\">\r\n                                <div className='sj-box-lighter-gray sj-round-full m-2 p-2 pt-3 pb-3'>\r\n                                    <h5><a href={resort.HotelBookingLink1} target='_blank' rel='noreferrer'>Local forecast</a></h5>\r\n                                </div>\r\n                            </div>\r\n                        }\r\n                        {(resort.HotelBookingLink2Text !== null && resort.HotelBookingLink2Text !== undefined && resort.HotelBookingLink2Text !== '') &&\r\n                            <div className=\"col-lg-3 left-aligned sj-row-no-margin-padding\">\r\n                                <div className='sj-box-lighter-gray sj-round-full m-2 p-2 pt-3 pb-3'>\r\n                                    <h5><a href={resort.HotelBookingLink2Text} target='_blank' rel='noreferrer'>Observations</a></h5>\r\n                                </div>\r\n                            </div>\r\n                        }\r\n                        {(resort.HotelBookingLink1Text !== null && resort.HotelBookingLink1Text !== undefined && resort.HotelBookingLink1Text !== '') &&\r\n                            <div className=\"col-lg-3 left-aligned sj-row-no-margin-padding\">\r\n                                <div className='sj-box-lighter-gray sj-round-full m-2 p-2 pt-3 pb-3'>\r\n                                    <h5><a href={resort.HotelBookingLink1Text} target='_blank' rel='noreferrer'>Weather Advisory</a></h5>\r\n                                </div>\r\n                            </div>\r\n                        }\r\n                    </div>\r\n                    <div className=\"row sj-row-no-margin-padding sj-no-bg\">\r\n                        <div className=\"col-lg-3 left-aligned-jma sj-row-no-margin-padding\">\r\n                            <div className='sj-box sj-box-dark-blue sj-round-full m-2 p-2 pt-3 pb-3'>\r\n                                <h5>Precipitation analysis</h5>\r\n                            </div>\r\n                        </div>\r\n                        <div className=\"col-lg-3 left-aligned sj-row-no-margin-padding\">\r\n                            <div className='sj-box-lighter-gray sj-round-full m-2 p-2 pt-3 pb-3'>\r\n                                <h5><a href={`https://www.jma.go.jp/bosai/en_nowc/#zoom:12/lat:${resort.Location_Latitude}/lon:${resort.Location_Longitude}/colordepth:deep/elements:hrpns&slmcs&amds_rain10m`} target='_blank' rel='noreferrer'>Now</a></h5>\r\n                            </div>\r\n                        </div>\r\n                        <div className=\"col-lg-3 left-aligned sj-row-no-margin-padding\">\r\n                            <div className='sj-box-lighter-gray sj-round-full m-2 p-2 pt-3 pb-3'>\r\n                                <h5><a href={`https://www.jma.go.jp/bosai/en_kaikotan/#zoom:12/lat:${resort.Location_Latitude}/lon:${resort.Location_Longitude}/colordepth:normal/#zoom:6/elements:slmcs&rasrf24h`} target='_blank' rel='noreferrer'>24-hour</a></h5>\r\n                            </div>\r\n                        </div>\r\n                        <div className=\"col-lg-3 left-aligned sj-row-no-margin-padding\">\r\n                            <div className='sj-box-lighter-gray sj-round-full m-2 p-2 pt-3 pb-3'>\r\n                                <h5><a href={`https://www.jma.go.jp/bosai/en_snow/#zoom:12/lat:${resort.Location_Latitude}/lon:${resort.Location_Longitude}/colordepth:deep/elements:snowd`} target='_blank' rel='noreferrer'>Snow depth</a></h5>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                    <div className=\"row sj-row-no-margin-padding sj-no-bg\">\r\n                        <div className=\"col-lg-3 left-aligned-jma sj-row-no-margin-padding\">\r\n                            <div className='sj-box sj-box-dark-blue sj-round-full m-2 p-2 pt-3 pb-3'>\r\n                                <h5>Snowfall</h5>\r\n                            </div>\r\n                        </div>\r\n                        <div className=\"col-lg-3 left-aligned sj-row-no-margin-padding\">\r\n                            <div className='sj-box-lighter-gray sj-round-full m-2 p-2 pt-3 pb-3'>\r\n                                <h5><a href={`https://www.jma.go.jp/bosai/en_snow/#zoom:12/lat:${resort.Location_Latitude}/lon:${resort.Location_Longitude}/colordepth:deep/elements:snowf24h`} target='_blank' rel='noreferrer'>24-hour snowfall</a></h5>\r\n                            </div>\r\n                        </div>\r\n                        <div className=\"col-lg-3 left-aligned sj-row-no-margin-padding\">\r\n                            <div className='sj-box-lighter-gray sj-round-full m-2 p-2 pt-3 pb-3'>\r\n                                <h5><a href={`https://www.jma.go.jp/bosai/en_snow/#zoom:12/lat:${resort.Location_Latitude}/lon:${resort.Location_Longitude}/colordepth:deep/elements:snowf48h`} target='_blank' rel='noreferrer'>48-hour snowfall</a></h5>\r\n                            </div>\r\n                        </div>\r\n                        <div className=\"col-lg-3 left-aligned sj-row-no-margin-padding\">\r\n                            <div className='sj-box-lighter-gray sj-round-full m-2 p-2 pt-3 pb-3'>\r\n                                <h5><a href={`https://www.jma.go.jp/bosai/en_snow/#zoom:12/lat:${resort.Location_Latitude}/lon:${resort.Location_Longitude}/colordepth:deep/elements:snowf72h`} target='_blank' rel='noreferrer'>72-hour snowfall</a></h5>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            <div className=\"sj-row\">\r\n                The JMA is an agency of the Ministry of Land, Infrastructure, Transport and Tourism.\r\n            </div>\r\n            <div className=\"sj-row\">\r\n                <h3 className='mt-5'>About weather forecasts</h3>\r\n                We do not specifically recommend any detailed weather forecasting service for all regions of Japan. However, many forecasts, both in Japanese and English, are free to use and widely available. Such services offer varying accuracy, with some seemingly more accurate for some areas of Japan than others.\r\n            </div>\r\n            {resort.WeatherFeedUrl !== '' &&\r\n                <>\r\n                    <div className=\"sj-box sj-box-dark-gray sj-round-full center-aligned mt-5\">\r\n                        <h4>Weather map</h4>\r\n                    </div>\r\n                    <div className=\"sj-row\">\r\n                        <h4>Precipitation & 9-day forecast</h4>\r\n                        <div className=\"mt-2\">\r\n                            <div className=\"mt-2\">\r\n                                <Button\r\n                                    onClick={() => setOpenPrecipitationMap(!openPrecipitationMap)}\r\n                                    aria-expanded={openPrecipitationMap} className='w-100 mb-1'><h5 className='mt-1'>{openPrecipitationMap ? 'Click to hide map -' : 'Click to view map +'}</h5></Button>\r\n                                <Collapse in={openPrecipitationMap}>\r\n                                    <>\r\n                                        {(openPrecipitationMap) &&\r\n                                            <>\r\n                                                <div className='ratio ratio-16x9'>\r\n\r\n                                                    <iframe title='Precipitation & 9 Days Forecast' src={`https://embed.windy.com/embed2.html?lat=${resort.Location_Latitude}&lon=${resort.Location_Longitude}&detailLat=${resort.Location_Latitude}&detailLon=${resort.Location_Longitude}&zoom=${resort.Location_MapZoomLevel}&level=surface&overlay=rain&product=ecmwf&menu=&message=true&marker=true&calendar=now&pressure=&type=map&location=coordinates&detail=true&metricWind=m%2Fs&metricTemp=%C2%B0C&radarRange=-1`} allowFullScreen></iframe>\r\n\r\n                                                </div>\r\n                                                <div className='center-aligned'>\r\n                                                    Use the bar above the forecast to advance the timeline\r\n                                                </div>\r\n                                            </>\r\n                                        }\r\n                                    </>\r\n                                </Collapse>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                    <div className=\"sj-row\">\r\n                        <h4>Animated forecasts</h4>\r\n                        <div className=\"mt-2\">\r\n                            <div className=\"mt-2\">\r\n                                <Button\r\n                                    onClick={() => setOpenAnimateForecasts(!openAnimateForecasts)}\r\n                                    aria-expanded={openAnimateForecasts} className='w-100 mb-1'><h5 className='mt-1'>{openAnimateForecasts ? 'Click to hide map -' : 'Click to view map +'}</h5></Button>\r\n                                <Collapse in={openAnimateForecasts}>\r\n                                    <>\r\n                                        {(openAnimateForecasts) &&\r\n                                            <>\r\n                                                <div className='ratio ratio-16x9'>\r\n                                                    <iframe title='Various animated forecasts' src={`https://embed.windy.com/embed2.html?lat=${resort.Location_Latitude}&lon=${resort.Location_Longitude}&detailLat=${resort.Location_Latitude}&detailLon=${resort.Location_Longitude}&width=920&height=750&zoom=${resort.Location_MapZoomLevel}&level=surface&overlay=temp&product=ecmwf&menu=&message=true&marker=&calendar=now&pressure=true&type=map&location=coordinates&detail=&metricWind=m%2Fs&metricTemp=%C2%B0C&radarRange=-1`} allowFullScreen></iframe>\r\n                                                </div>\r\n                                                <div className='center-aligned'>\r\n                                                    Use the play button (bottom left) to start a forecast animation\r\n                                                </div>\r\n                                            </>\r\n                                        }\r\n                                    </>\r\n                                </Collapse>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </>\r\n            }\r\n            {resort.WeatherFeedUrl === '' &&\r\n                <>\r\n                    <h4>Currently there is no weather map available for {resort.Name}</h4>\r\n                </>\r\n            }\r\n        </div>\r\n    )\r\n};\r\n\r\nexport default WeatherContainer;","import { useState, useEffect } from 'react'\r\nimport axios from 'axios'\r\nimport Loader from \"../../../Common/Loader\"\r\nimport { RenderBreak } from '../../../../helpers/Helper'\r\n\r\nconst SpotlightContainer = ({ resort }) => {\r\n\r\n    const [listingDetail, setListingDetail] = useState({});\r\n\r\n    const fetchListing = async (thisResort) => {\r\n        axios({\r\n            method: 'POST',\r\n            url: `${window.$baseAPIUrl}/listingGuideSection/listings/${thisResort.ResortSpotlightUrl}`\r\n        }).then(dataListingDetail => {\r\n            setListingDetail(dataListingDetail.data)\r\n        })\r\n    };\r\n\r\n    useEffect(() => {\r\n        fetchListing(resort);\r\n    }, [resort]);\r\n\r\n    if (listingDetail === undefined) {\r\n        <Loader />\r\n    } else {\r\n        return (\r\n            <div>\r\n                <div dangerouslySetInnerHTML={{ __html: RenderBreak(listingDetail.HtmlContent) }} />\r\n            </div>\r\n        )\r\n    }\r\n};\r\n\r\nexport default SpotlightContainer;","import { useState, useEffect, Fragment } from 'react'\r\nimport { useParams } from 'react-router-dom'\r\nimport axios from 'axios'\r\nimport Loader from '../../Common/Loader'\r\nimport SkiAreaDetailTabs from './SkiAreaDetailTabs'\r\nimport BasicContainer from './BasicInfo/BasicInfoContainer'\r\nimport DailyReportContainer from './DailyReport/DailyReportContainer'\r\nimport HistoryContainer from './History/HistoryContainer'\r\nimport ListingsContainer from './Listings/ListingsContainer'\r\nimport LocationContainer from './Location/LocationContainer'\r\nimport PhotosContainer from './Photos/PhotosContainer'\r\nimport ReviewsContainer from './Reviews/ReviewsContainer'\r\nimport RouteFinderContainer from './RouteFinder/RouteFinderContainer'\r\nimport SnowDataContainer from './SnowData/SnowDataContainer'\r\nimport WeatherContainer from './Weather/WeatherContainer'\r\nimport SpotlightContainer from './Spotlight/SpotlightContainer'\r\n\r\nconst SkiAreaDetailContainer = () => {\r\n\r\n    const params = useParams()\r\n\r\n    const [showSnowData, setShowSnowData] = useState('')\r\n\r\n    const [resort, setResort] = useState([])\r\n    const [nearbySkiAreas, setNearbySkiAreas] = useState([])\r\n    const [skiAreaDailyReport, setSkiAreaDailyReport] = useState(undefined)\r\n    const [skiAreaLatestWeather, setSkiAreaLatestWeather] = useState(undefined)\r\n\r\n    const [nearbyAccommodations, setNearbyAccommodations] = useState([])\r\n    const [areaSectionListings, setAreaSectionListings] = useState([])\r\n\r\n    const [hasListings, setHasListings] = useState(false)\r\n\r\n    const getAreaListingValue = (sectionUniqueName, listingList) => {\r\n\r\n        let listingSectionData = []\r\n\r\n        let listingData = listingList.filter(function (currentElement) {\r\n            return (currentElement.SectionUniqueName === sectionUniqueName)\r\n        })\r\n\r\n        listingData.forEach(function (dataItem) {\r\n\r\n            listingSectionData.push(dataItem)\r\n        })\r\n\r\n        return listingSectionData;\r\n    }\r\n\r\n    const getListingSectionName = (sectionUniqueName, listingList) => {\r\n\r\n        let sectionName = ''\r\n\r\n        let listingData = listingList.filter(function (currentElement) {\r\n            return (currentElement.SectionUniqueName === sectionUniqueName)\r\n        })\r\n\r\n        listingData.forEach(function (dataItem) {\r\n\r\n            sectionName = dataItem.SectionName\r\n        })\r\n\r\n        return sectionName\r\n    }\r\n\r\n    const fetchData = async (resortUniqueName) => {\r\n\r\n        let areaUniqueName = ''\r\n\r\n        axios({\r\n            method: 'POST',\r\n            url: `${window.$baseAPIUrl}/skiarea/${resortUniqueName}`\r\n        }).then(dataResort => {\r\n\r\n            if (Object.keys(dataResort.data).length <= 0) {\r\n                window.location.href = \"https://www.snowjapan.com/404.html\"\r\n            }\r\n\r\n            setResort(dataResort.data)\r\n\r\n            areaUniqueName = dataResort.data.AreaUniqueName\r\n\r\n            return axios({\r\n                method: 'POST',\r\n                url: `${window.$baseAPIUrl}/skiarea/latestweather/latest`,\r\n                data: {\r\n                    resortid: dataResort.data.Id\r\n                }\r\n            })\r\n        }).then(dataResortLatestWeather => {\r\n            setSkiAreaLatestWeather(dataResortLatestWeather.data)\r\n\r\n            return axios({\r\n                method: 'POST',\r\n                url: `${window.$baseAPIUrl}/skiarea/nearby-resorts/${resortUniqueName}`\r\n            })\r\n        }).then(dataNearbySkiAreas => {\r\n            let thisNearbySkiAreaList = []\r\n\r\n            if (dataNearbySkiAreas.data.length > 0) {\r\n                dataNearbySkiAreas.data.forEach(nr => {\r\n                    if (nr.FromSkiAreaUniqueName === resortUniqueName) {\r\n                        thisNearbySkiAreaList.push({ Id: nr.Id, Distance: nr.Distance, IsConnected: nr.IsConnected, SkiAreaName: nr.ToSkiAreaName, SkiAreaUniqueName: nr.ToSkiAreaUniqueName, SkiAreaPrefectureName: nr.ToSkiAreaPrefectureName, SkiAreaPrefectureUniqueName: nr.ToSkiAreaPrefectureUniqueName, SkiAreaTownName: nr.ToSkiAreaTownName, SkiAreaTownUniqueName: nr.ToSkiAreaTownUniqueName, SkiAreaTownTypeStr: nr.ToSkiAreaTownTypeStr, SkiAreaAreaName: nr.ToSkiAreaAreaName, SkiAreaAreaUniqueName: nr.ToSkiAreaAreaUniqueName })\r\n                    } else if (nr.ToSkiAreaUniqueName === resortUniqueName) {\r\n                        thisNearbySkiAreaList.push({ Id: nr.Id, Distance: nr.Distance, IsConnected: nr.IsConnected, SkiAreaName: nr.FromSkiAreaName, SkiAreaUniqueName: nr.FromSkiAreaUniqueName, SkiAreaPrefectureName: nr.FromSkiAreaPrefectureName, SkiAreaPrefectureUniqueName: nr.FromSkiAreaPrefectureUniqueName, SkiAreaTownName: nr.FromSkiAreaTownName, SkiAreaTownUniqueName: nr.FromSkiAreaTownUniqueName, SkiAreaTownTypeStr: nr.FromSkiAreaTownTypeStr, SkiAreaAreaName: nr.FromSkiAreaAreaName, SkiAreaAreaUniqueName: nr.FromSkiAreaAreaUniqueName })\r\n                    }\r\n                })\r\n\r\n                thisNearbySkiAreaList = thisNearbySkiAreaList.sort(function (a, b) {\r\n                    if (a.Distance > b.Distance) return 1;\r\n                    if (a.Distance < b.Distance) return -1;\r\n\r\n                    if (a.SkiAreaName > b.SkiAreaName) return 1;\r\n                    if (a.SkiAreaName < b.SkiAreaName) return -1;\r\n\r\n                    return 0;\r\n                })\r\n            }\r\n\r\n            setNearbySkiAreas(thisNearbySkiAreaList)\r\n\r\n            return axios({\r\n                method: 'POST',\r\n                url: `${window.$baseAPIUrl}/dailyreport/dailyreportskiareas/resort/${resortUniqueName}`\r\n            })\r\n        }).then(dataSkiAreaDailyReport => {\r\n            setSkiAreaDailyReport(dataSkiAreaDailyReport.data)\r\n            return axios({\r\n                method: 'POST',\r\n                url: `${window.$baseAPIUrl}/accommodation/nearby-hotels/${resortUniqueName}`\r\n            })\r\n        }).then(dataNearbyAccommodations => {\r\n            setNearbyAccommodations(dataNearbyAccommodations.data)\r\n\r\n            setHasListings(dataNearbyAccommodations.data.length > 0)\r\n\r\n            return axios({\r\n                method: 'POST',\r\n                url: `${window.$baseAPIUrl}/generalmessage/ShowSnowData`\r\n            })\r\n        }).then(resGeneralMessages => {\r\n            setShowSnowData(resGeneralMessages.data.Title)\r\n            return axios({\r\n                method: 'POST',\r\n                url: `${window.$baseAPIUrl}/listingGuideSection/listings/list/area/${areaUniqueName}`\r\n            })\r\n        }).then(dataAreaListings => {\r\n            if (dataAreaListings.data.length > 0) {\r\n                let listingDataSeries = [];\r\n                let sections = [...new Set(dataAreaListings.data.map(item => item.SectionUniqueName))].sort().reverse();\r\n\r\n                sections.forEach(function (item) {\r\n                    listingDataSeries.push({\r\n                        'sectionName': getListingSectionName(item, dataAreaListings.data),\r\n                        'sectionUniqueName': item,\r\n                        'listings': getAreaListingValue(item, dataAreaListings.data)\r\n                    })\r\n                })\r\n\r\n                setAreaSectionListings(listingDataSeries)\r\n                setHasListings(dataAreaListings.data.length > 0)\r\n            }\r\n        })\r\n    };\r\n\r\n    useEffect(() => {\r\n        fetchData(params.resort)\r\n    }, [params.resort]);\r\n\r\n    if (Object.keys(resort).length <= 0) {\r\n        return (<Loader />)\r\n    }\r\n    else {\r\n        return (\r\n            <Fragment>\r\n                <h2>{resort.Name}</h2>\r\n                <div className='sj-para-large mt-1 mb-3'>{resort.NameJapanese}</div>\r\n                <SkiAreaDetailTabs params={params} resort={resort} skiAreaDailyReport={skiAreaDailyReport} skiAreaLatestWeather={skiAreaLatestWeather} hasListings={hasListings} />\r\n                <>\r\n                    {\r\n                        {\r\n                            undefined: <BasicContainer resort={resort} nearbySkiAreaList={nearbySkiAreas} skiAreaLatestWeather={skiAreaLatestWeather} showSnowData={showSnowData} />,\r\n                            'daily-report': <DailyReportContainer resort={resort} skiAreaDailyReport={skiAreaDailyReport} />,\r\n                            'spotlight': <SpotlightContainer resort={resort} />,\r\n                            'location': <LocationContainer resort={resort} nearbySkiAreaList={nearbySkiAreas} />,\r\n                            'snow-data': <SnowDataContainer resort={resort} skiAreaDailyReport={skiAreaDailyReport} />,\r\n                            'weather': <WeatherContainer resort={resort} />,\r\n                            'history': <HistoryContainer resort={resort} />,\r\n                            'reviews': <ReviewsContainer resort={resort} />,\r\n                            'photos': <PhotosContainer resort={resort} />,\r\n                            'route-finder': <RouteFinderContainer resort={resort} />,\r\n                            'listing': <ListingsContainer resort={resort} nearbyAccommodations={nearbyAccommodations} areaSectionListings={areaSectionListings} />\r\n                        }[params.type]\r\n                    }\r\n                </>\r\n            </Fragment>\r\n        )\r\n    }\r\n}\r\n\r\nexport default SkiAreaDetailContainer","import axios from 'axios'\r\nimport { useState, useEffect } from 'react'\r\nimport { Helmet } from 'react-helmet'\r\nimport { Link, useParams } from 'react-router-dom'\r\nimport { Button, Collapse, Image } from 'react-bootstrap'\r\nimport Loader from '../Common/Loader'\r\nimport { RenderBreak } from '../../helpers/Helper'\r\n\r\nconst Home = ({ seasonName }) => {\r\n\r\n    const params = useParams()\r\n\r\n    const [dailyReportList, setDailyReportList] = useState([])\r\n    const [generalMessageList, setSeneralMessageList] = useState([])\r\n    const [dailyReportMessage, setDailyReportMessage] = useState('')\r\n    const [dailyReportWeatherMapUrl, setDailyReportWeatherMapUrl] = useState('')\r\n    const [showSnowData, setShowSnowData] = useState('')\r\n    const [latestSkiAreaWeatherList, setLatestSkiAreaWeatherList] = useState([])\r\n    const [seasonTotalSnowList, setSeasonTotalSnowList] = useState([])\r\n    const [open, setOpen] = useState(false)\r\n\r\n    let singleSkiAreaWeatherReport = undefined\r\n\r\n    const fetchGeneralMessagesAndDailyReports = async (thisSeasonName) => {\r\n        const generalMessageIds = ['Nows', 'NowWeatherUrl', 'ShowSnowData']\r\n        axios({\r\n            method: 'POST',\r\n            url: `${window.$baseAPIUrl}/generalmessage/all`,\r\n            data: { generalMessageIds: generalMessageIds }\r\n        }).then(resGeneralMessages => {\r\n            setSeneralMessageList(resGeneralMessages.data)\r\n            return axios({\r\n                method: 'POST',\r\n                url: `${window.$baseAPIUrl}/dailyreport/latest/all`\r\n            })\r\n        }).then(resDailyReportLatest => {\r\n            setDailyReportList(resDailyReportLatest.data)\r\n            return axios({\r\n                method: 'POST',\r\n                url: `${window.$baseAPIUrl}/dailyreport/reports/season-snowfall/${thisSeasonName}/0`\r\n            })\r\n        }).then(resSeasonTotalSnow => {\r\n            setSeasonTotalSnowList(resSeasonTotalSnow.data)\r\n\r\n            return axios({\r\n                method: 'POST',\r\n                url: `${window.$baseAPIUrl}/skiarea/latestweather/list`,\r\n                data: { filter_type: 'with-snow' }\r\n            })\r\n        }).then(resSkiAreaWeather => {\r\n            if (resSkiAreaWeather.data) {\r\n                const skiAreaLatestWeather = resSkiAreaWeather.data\r\n\r\n                var maxCreated = skiAreaLatestWeather.sort((a, b) => b.CreatedAt - a.CreatedAt)[0].CreatedAt;\r\n\r\n                const latestSkiAreaWeather = skiAreaLatestWeather.filter(function (currentElement) {\r\n                    return (currentElement.CreatedAt === maxCreated);\r\n                })\r\n\r\n                latestSkiAreaWeather.sort(function (a, b) {\r\n                    return a.SnowDepth - b.SnowDepth\r\n                })\r\n\r\n                setLatestSkiAreaWeatherList(latestSkiAreaWeather.reverse().slice(0, 25))\r\n            }\r\n        })\r\n    }\r\n\r\n    useEffect(() => {\r\n        fetchGeneralMessagesAndDailyReports(seasonName)\r\n    }, [params, seasonName])\r\n\r\n    const GetSeasonTotal = (nowId) => {\r\n\r\n\r\n        let seasonTotalSnow = seasonTotalSnowList.filter(function (currentElement) {\r\n            return (currentElement.Now_Id === nowId);\r\n        });\r\n\r\n        let seasonSnowfall = '--'\r\n\r\n        if (seasonTotalSnow.length > 0) {\r\n            seasonSnowfall = seasonTotalSnow[0].TotalSnow + 'cm'\r\n        }\r\n\r\n        return seasonSnowfall\r\n    }\r\n\r\n    console.log(generalMessageList)\r\n\r\n    if (generalMessageList.length > 0 && (dailyReportMessage === undefined || dailyReportMessage === '')) {\r\n        setDailyReportMessage(generalMessageList[0].Message)\r\n    }\r\n\r\n    if (generalMessageList.length > 1 && (dailyReportWeatherMapUrl === undefined || dailyReportWeatherMapUrl === '')) {\r\n        setDailyReportWeatherMapUrl(generalMessageList[1].Message)\r\n    }\r\n\r\n    if (generalMessageList.length > 2 && (showSnowData === undefined || showSnowData === '')) {\r\n        setShowSnowData(generalMessageList[2].Title)\r\n    }\r\n\r\n    if (latestSkiAreaWeatherList.length > 0) {\r\n        singleSkiAreaWeatherReport = latestSkiAreaWeatherList[0];\r\n    }\r\n\r\n    if (latestSkiAreaWeatherList.length <= 0) {\r\n        return (<Loader />)\r\n    } else {\r\n        return (\r\n            <div className='empty-row'>\r\n                <Helmet>\r\n                    <title>Independent daily snow and weather reporting from Japan’s ski areas | SnowJapan</title>\r\n                    <meta name=\"description\" content=\"SnowJapan publishes exclusive daily snow and weather reports from popular ski area regions of Japan, including detailed analysis and archive data.\" />\r\n                </Helmet>\r\n                <h3>Daily Reports</h3>\r\n                <div className=\"sj-para-image mb-4\"><img src=\"https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-Weather-HeavySnow.svg\" alt=\"Japan as 'Snow Country'\" /></div>\r\n                <div>\r\n                    <div className=\"sj-para\"><div dangerouslySetInnerHTML={{ __html: RenderBreak(dailyReportMessage) }} /></div>\r\n                </div>\r\n                <div className=\"sj-row sj-box sj-box-dark-gray sj-round-full center-aligned mt-5\">\r\n                    <h4>Now daily reports</h4>\r\n                </div>\r\n                <div className='center-aligned sj-row' style={{ overflow: 'none' }}>\r\n                    <div className=\"row sj-row-no-margin-padding sj-no-bg\">\r\n                        {dailyReportList.map(dailyReport => (\r\n                            <div key={dailyReport.Id} className=\"col-lg-4 col-md-6 sj-row-small-margin-padding\">\r\n                                <div className='daily-report-tile-container'>\r\n                                    <div className='daily-report-tile'>\r\n                                        <div className='daily-report-tile-body table-container'>\r\n                                            <table className='table-container__table sj-table'>\r\n                                                <tbody>\r\n                                                    <tr>\r\n                                                        <td colSpan='2'>\r\n                                                            <h4><Link to={`${window.$baseDailyReportUrl}/${dailyReport.UniqueName}`}>{dailyReport.Name}</Link></h4>\r\n                                                            <div className='sj-red-text'>{dailyReport.NowReportDayTh} {dailyReport.NowReportMonthFull} {dailyReport.NowReportYear} ({dailyReport.NowReportHourMinute})</div>\r\n                                                        </td>\r\n                                                    </tr>\r\n                                                    <tr>\r\n                                                        <td className='sj-td-50'>Latest</td>\r\n                                                        <td className='sj-td-50'>{dailyReport.NewSnowfallResortA}cm</td>\r\n                                                    </tr>\r\n                                                </tbody>\r\n                                            </table>\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                        ))}\r\n                    </div>\r\n                </div>\r\n                <div className=\"sj-box sj-box-dark-gray sj-round-full center-aligned mt-5\">\r\n                    <h4>Webcams</h4>\r\n                </div>\r\n                <div className=\"sj-row\">\r\n                    <div className=\"row sj-no-bg sj-row-no-margin-padding\">\r\n                        <div className=\"col-lg-3 col-md-5 p-0 sj-list-icon-holder\">\r\n                            <Image src=\"https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-Webcam.svg\" alt='snowjapan webcam' />\r\n                        </div>\r\n                        <div className=\"col-lg-9 col-md-7 sj-list-text-holder\">\r\n                            <div className=\"center-aligned mb-4\">\r\n                                <Link to={`${window.$baseDailyReportUrl}/webcams`}><h5>Webcam images and live video feeds from ski areas (and related places of interest) around Japan.</h5></Link>\r\n                            </div>\r\n                            <div className=\"row sj-no-bg sj-row-no-margin-padding\">\r\n                                <div className=\"col-lg-4 center-aligned sj-row-no-margin-padding\">\r\n                                    <div className='sj-box-lighter-gray sj-round-full m-2 mt-0 p-2 pt-3 pb-3'>\r\n                                        <h5><Link to='guides/ski-webcams/northern-japan'>Northern regions</Link></h5>\r\n                                        <h6>including Hokkaido, Tohoku<br />&nbsp;</h6>\r\n                                    </div>\r\n                                </div>\r\n                                <div className=\"col-lg-4 center-aligned sj-row-no-margin-padding\">\r\n                                    <div className='sj-box-lighter-gray sj-round-full m-2 mt-0 p-2 pt-3 pb-3'>\r\n                                        <h5><Link to='guides/ski-webcams/central-japan'>Central regions</Link></h5>\r\n                                        <h6>including Niigata, Nagano, Gunma</h6>\r\n                                    </div>\r\n                                </div>\r\n                                <div className=\"col-lg-4 center-aligned sj-row-no-margin-padding\">\r\n                                    <div className='sj-box-lighter-gray sj-round-full m-2 mt-0 p-2 pt-3 pb-3'>\r\n                                        <h5><Link to='guides/ski-webcams/western-japan'>Western regions</Link></h5>\r\n                                        <h6>including Gifu, Kansai and Western Japan</h6>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                <div className=\"sj-box sj-box-dark-gray sj-round-full center-aligned mt-5\">\r\n                    <h4>Reports calendar</h4>\r\n                </div>\r\n                <div className=\"sj-row\">\r\n                    <div className=\"row sj-row sj-no-bg sj-row-no-margin-padding\">\r\n                        <div className=\"col-lg-3 col-md-5 p-0 sj-list-icon-holder\">\r\n                            <img src=\"https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-Calendar.svg\" alt='snowjapan calendar' />\r\n                        </div>\r\n                        <div className=\"col-lg-9 col-md-7 sj-list-text-holder\">\r\n                            <Link to={`${window.$baseDailyReportUrl}/calendar`}><h5>View the current season calendar with links to all the daily reports posted on SnowJapan.</h5></Link>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                <div className=\"sj-box sj-box-dark-gray sj-round-full center-aligned mt-5\">\r\n                    <h4>Real-time snowfall (new window) </h4>\r\n                </div>\r\n                <div className=\"sj-row\">\r\n                    <div className=\"row sj-no-bg sj-row-no-margin-padding\">\r\n                        <div className=\"col-lg-3 col-md-5 p-0 sj-list-icon-holder\">\r\n                            <img src=\"https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-Snow-Forecast.svg\" alt='snowjapan forecast' />\r\n                        </div>\r\n                        <div className=\"col-lg-9 col-md-7 sj-list-text-holder\">\r\n                            <div className=\"row sj-no-bg sj-row-no-margin-padding\">\r\n                                <div className=\"col-lg-4 sj-row-no-margin-padding\">\r\n                                    <div className='sj-box-lighter-gray sj-round-full m-2 mt-0 p-2 pt-3 pb-3'>\r\n                                        <h5><a href='https://www.jma.go.jp/bosai/en_kaikotan/#zoom:6/lat:38.916682/lon:138.823242/colordepth:normal/#zoom:6/elements:slmcs&rasrf' target='_blank' rel='noreferrer'>1-hour precipitation</a></h5>\r\n                                    </div>\r\n                                </div>\r\n                                <div className=\"col-lg-4 sj-row-no-margin-padding\">\r\n                                    <div className='sj-box-lighter-gray sj-round-full m-2 mt-0 p-2 pt-3 pb-3'>\r\n                                        <h5><a href='https://www.jma.go.jp/bosai/en_kaikotan/#zoom:6/lat:38.916682/lon:138.823242/colordepth:normal/#zoom:6/elements:slmcs&rasrf03h' target='_blank' rel='noreferrer'>3-hour precipitation</a></h5>\r\n                                    </div>\r\n                                </div>\r\n                                <div className=\"col-lg-4 sj-row-no-margin-padding\">\r\n                                    <div className='sj-box-lighter-gray sj-round-full m-2 mt-0 p-2 pt-3 pb-3'>\r\n                                        <h5><a href='https://www.jma.go.jp/bosai/en_kaikotan/#zoom:6/lat:38.916682/lon:138.823242/colordepth:normal/#zoom:6/elements:slmcs&rasrf24h' target='_blank' rel='noreferrer'>24-hour precipitation</a></h5>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                            <div className=\"row sj-no-bg sj-row-no-margin-padding\">\r\n                                <div className=\"col-lg-4 sj-row-no-margin-padding\">\r\n                                    <div className='sj-box-lighter-gray sj-round-full m-2 p-2 pt-3 pb-3'>\r\n                                        <h5><a href='https://www.jma.go.jp/bosai/en_snow/#zoom:6/lat:38.916682/lon:138.823242/colordepth:normal/elements:snowf03h' target='_blank' rel='noreferrer'>3-hour snowfall</a></h5>\r\n                                    </div>\r\n                                </div>\r\n                                <div className=\"col-lg-4 sj-row-no-margin-padding\">\r\n                                    <div className='sj-box-lighter-gray sj-round-full m-2 p-2 pt-3 pb-3'>\r\n                                        <h5><a href='https://www.jma.go.jp/bosai/en_snow/#zoom:6/lat:38.916682/lon:138.823242/colordepth:normal/elements:snowf24h' target='_blank' rel='noreferrer'>24-hour snowfall</a></h5>\r\n                                    </div>\r\n                                </div>\r\n                                <div className=\"col-lg-4 sj-row-no-margin-padding\">\r\n                                    <div className='sj-box-lighter-gray sj-round-full m-2 p-2 pt-3 pb-3'>\r\n                                        <h5><a href='https://www.jma.go.jp/bosai/en_snow/#zoom:6/lat:38.916682/lon:138.823242/colordepth:normal/elements:snowf48h' target='_blank' rel='noreferrer'>48-hour snowfall</a></h5>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                            <div className=\"row sj-no-bg sj-row-no-margin-padding\">\r\n                                <div className=\"col-lg-4 sj-row-no-margin-padding\">\r\n                                    <div className='sj-box-lighter-gray sj-round-full m-2 p-2 pt-3 pb-3'>\r\n                                        <h5><a href='https://www.jma.go.jp/bosai/en_snow/#zoom:6/lat:38.916682/lon:138.823242/colordepth:normal/elements:snowd' target='_blank' rel='noreferrer'>Snow depth</a></h5>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                <div className=\"sj-box sj-box-dark-gray sj-round-full center-aligned mt-5\">\r\n                    <h4>Weather map</h4>\r\n                </div>\r\n                <div className=\"sj-row\">\r\n                    <div className=\"row sj-row sj-no-bg sj-row-no-margin-padding\">\r\n                        <div className=\"col-lg-3 col-md-5 p-0 sj-list-icon-holder\">\r\n                            <img src=\"https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-Weather-HeavySnow.svg\" alt='snowjapan snowfall' />\r\n                        </div>\r\n                        <div className=\"col-lg-9 col-md-7 sj-list-text-holder\">\r\n                            <Button\r\n                                onClick={() => setOpen(!open)}\r\n                                aria-expanded={open} className='w-100 mb-1'><h5 className='mt-1'>{open ? 'Click to hide map -' : 'Click to view map +'}</h5></Button>\r\n                            <Collapse in={open}>\r\n                                <div className='ratio ratio-16x9'>\r\n                                    {(open) &&\r\n                                        <iframe title='Various animated forecasts' src={`${dailyReportWeatherMapUrl}`} allowFullScreen></iframe>\r\n                                    }\r\n                                </div>\r\n                            </Collapse>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                {(showSnowData == \"Y\") &&\r\n                    <>\r\n                        <div className=\"sj-box sj-box-dark-gray sj-round-full center-aligned mt-5\">\r\n                            <h4>Official ski area snow depth data</h4>\r\n                        </div>\r\n                        <div className=\"sj-row\">\r\n                            <div className=\"row sj-row sj-no-bg sj-row-no-margin-padding\">\r\n                                <div className=\"col-lg-3 col-md-5 p-0 sj-list-icon-holder\">\r\n                                    <img src=\"https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-Snow-Depth.svg\" alt='snowjapan snow depth' />\r\n                                </div>\r\n                                <div className=\"col-lg-9 col-md-7 sj-list-text-holder\">\r\n                                    <div>\r\n                                        <h5>Updated: {singleSkiAreaWeatherReport.WeatherDayTh} {singleSkiAreaWeatherReport.WeatherMonthFull} {singleSkiAreaWeatherReport.WeatherYear}</h5>\r\n                                    </div>\r\n                                    <div>\r\n                                        The data in the below table originates from ski areas and is updated once a day in the main winter season.\r\n                                    </div>\r\n                                    {(latestSkiAreaWeatherList.length > 0) &&\r\n                                        <div className='sj-row'>\r\n                                            <div className='table-container'>\r\n                                                <table className='table-container__table sj-list-table sj-snow-table'>\r\n                                                    <thead>\r\n                                                        <tr>\r\n                                                            <th></th>\r\n                                                            <th>Prefecture</th>\r\n                                                            <th>Current snow depth</th>\r\n                                                            <th>Change</th>\r\n                                                        </tr>\r\n                                                    </thead>\r\n                                                    <tbody>\r\n                                                        {latestSkiAreaWeatherList.map(skiAreaWeather => (\r\n                                                            <tr key={skiAreaWeather.Id}>\r\n                                                                <td>\r\n                                                                    <Link to={`${window.$baseSkiAreaUrl}/${skiAreaWeather.PrefectureUniqueName}/${skiAreaWeather.TownUniqueName}/${skiAreaWeather.UniqueName}`}>{skiAreaWeather.Name}</Link>\r\n                                                                </td>\r\n                                                                <td>\r\n                                                                    <Link to={`${window.$baseSkiAreaUrl}/prefecture/${skiAreaWeather.PrefectureUniqueName}`}>{skiAreaWeather.PrefectureName}</Link>\r\n                                                                </td>\r\n                                                                <td>\r\n                                                                    {skiAreaWeather.SnowDepth} cm\r\n                                                                </td>\r\n                                                                <td>\r\n                                                                    {skiAreaWeather.SnowDepthCompareToYesterday} cm\r\n                                                                </td>\r\n                                                            </tr>\r\n                                                        ))}\r\n                                                    </tbody>\r\n                                                </table>\r\n                                            </div>\r\n                                            <div className='center-aligned mt-4'>\r\n                                                <h6><Link to={`${window.$baseDailyReportUrl}/official-snow-depth`} className=\"btn btn-primary sj-large-button-blue sj-full-width\">View the full list</Link></h6>\r\n                                            </div>\r\n                                        </div>\r\n                                    }\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    </>\r\n                }\r\n                <div className='sj-row sj-box sj-box-red sj-round-full m-0 mt-2'>\r\n                    Weather maps, real-time snowfall data and weather information can be found within the individual Now daily report sections and on individual ski area information pages within SnowJapan.\r\n                </div>\r\n                <div className=\"banner-holder\">\r\n                    <div className=\"sj-row mb-0\">\r\n                        <div className=\"row sj-row-no-margin-padding sj-no-bg\">\r\n                            <div className=\"col-lg-3 col-md-6 sj-row-no-margin-padding\">\r\n                                <div className='home-listing-holder-left mt-3'>\r\n                                    <a href='https://en.nozawaski.com/' target='_blank' rel='noreferrer'><Image src='https://www.snowjapan.com/UploadedFiles/CMSImages/Listings/listing-nozawa-onsen.jpg' alt='listing-nozawa-onsen' /></a>\r\n                                </div>\r\n                            </div>\r\n                            <div className=\"col-lg-3 col-md-6 sj-row-no-margin-padding\">\r\n                                <div className='home-listing-holder-center1 mt-3'>\r\n                                    <Link to='/listings/resort-spotlights/maiko-snow-resort'><Image src='https://www.snowjapan.com/UploadedFiles/ListingImages/link-maiko-snow-resort.jpg' fluid='true' alt='listing-geto-kogen.jpg' /></Link>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        )\r\n    }\r\n}\r\n\r\nexport default Home","import { useState, useEffect } from 'react';\r\nimport { Link } from 'react-router-dom'\r\nimport Popup from \"reactjs-popup\";\r\n\r\nconst AllReportCalendar = ({ nowYear, nowMonth, dailySnowfallMonthlyList }) => {\r\n\r\n  const DAYS = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\r\n  const DAYS_LEAP = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\r\n  const DAYS_OF_THE_WEEK = ['MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT', 'SUN'];\r\n  const MONTHS = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\r\n\r\n  //const today = new Date();\r\n  const [date, setDate] = useState(new Date(nowYear, nowMonth, 1));\r\n  //const [day, setDay] = useState(date.getDate());\r\n  const [month, setMonth] = useState(date.getMonth());\r\n  //const [year, setYear] = useState(date.getFullYear());\r\n  const [startDay, setStartDay] = useState(getStartDayOfMonth(date));\r\n\r\n  useEffect(() => {\r\n    //setDay(date.getDate());\r\n    setMonth(date.getMonth());\r\n    //setYear(date.getFullYear());\r\n    setStartDay(getStartDayOfMonth(date));\r\n  }, [nowYear, nowMonth, date]);\r\n\r\n  function getStartDayOfMonth(date) {\r\n    const startDate = new Date(date.getFullYear(), date.getMonth(), 1).getDay();\r\n    return startDate === 0 ? 7 : startDate;\r\n  }\r\n\r\n  function isLeapYear(year) {\r\n    return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\r\n  }\r\n\r\n  const getDayOrdinal = (day) => {\r\n    if (day > 3 && day < 21) return 'th';\r\n    switch (day % 10) {\r\n      case 1: return \"st\";\r\n      case 2: return \"nd\";\r\n      case 3: return \"rd\";\r\n      default: return \"th\";\r\n    }\r\n  }\r\n\r\n  const getDailySnowfallReports = (calDay) => {\r\n\r\n    let dailySnowfallData = dailySnowfallMonthlyList.filter(function (currentElement) {\r\n      return (currentElement.NowReportDay === calDay);\r\n    });\r\n\r\n    dailySnowfallData.sort((a, b) => {\r\n      let nameA = a.Name.toLowerCase(),\r\n        nameB = b.Name.toLowerCase();\r\n\r\n      if (nameA < nameB) {\r\n        return -1;\r\n      }\r\n      if (nameA > nameB) {\r\n        return 1;\r\n      }\r\n      return 0;\r\n    });\r\n\r\n    return dailySnowfallData\r\n  }\r\n\r\n  const containerId = \"keepinside\" + nowMonth + nowYear;\r\n  const containerIdSelector = \"#keepinside\" + nowMonth + nowYear;\r\n\r\n  const days = isLeapYear(date.getFullYear()) ? DAYS_LEAP : DAYS;\r\n\r\n  return (\r\n    <div className='now-calendar-frame' id={containerId}>\r\n      <div className='now-calendar-frame-header'>\r\n        <div className='center-aligned'>\r\n          <h4>{MONTHS[month]} {nowYear}</h4>\r\n        </div>\r\n      </div>\r\n      <div className='now-calendar-frame-body'>\r\n        {DAYS_OF_THE_WEEK.map((d) => (\r\n          <div key={d} className='now-calendar-day-header'>\r\n            <strong>{d}</strong>\r\n          </div>\r\n        ))}\r\n        {Array(days[month] + (startDay - 1)).fill(null).map((_, index) => {\r\n\r\n          const d = index - (startDay - 2);\r\n          var dayClassName = ''\r\n\r\n          var allDailyReports = []\r\n\r\n          if (d <= 0) {\r\n            dayClassName = ' empty-date'\r\n          } else {\r\n            dayClassName = ' with-date'\r\n            allDailyReports = getDailySnowfallReports(d)\r\n\r\n            if (allDailyReports.length > 0) {\r\n              dayClassName = ' with-date with-report'\r\n            }\r\n          }\r\n\r\n          return (\r\n            <>\r\n              {allDailyReports.length <= 0 &&\r\n                <div className={dayClassName} key={index}>\r\n                  {d > 0 ? d : ''}\r\n                </div>\r\n              }\r\n\r\n              {allDailyReports.length > 0 &&\r\n                <Popup\r\n                  trigger={open => (\r\n                    <div className={dayClassName} key={index}>\r\n                      {d > 0 ? d : ''}\r\n                    </div>\r\n                  )}\r\n                  position=\"top\"\r\n                  closeOnDocumentClick=\"true\"\r\n                  keepTooltipInside={containerIdSelector}\r\n                >\r\n                  <div className='popup-content-header'><h5>Daily Reports on {MONTHS[month]} {d}{getDayOrdinal(d)}, {nowYear}</h5></div>\r\n                  <div className='popup-content-body'>\r\n                    {(allDailyReports.length > 0) &&\r\n                      <div>\r\n                        {allDailyReports.map((dailyData, index) => (\r\n                          <div key={index}>\r\n                            <Link to={`${window.$baseDailyReportUrl}/${dailyData.UniqueName}/archives/${dailyData.NowReportDayTh}-${dailyData.NowReportMonthFull}-${dailyData.NowReportYear}`}>{dailyData.Name}</Link>\r\n                          </div>\r\n                        ))}\r\n                      </div>\r\n                    }\r\n                  </div>\r\n                </Popup>\r\n              }\r\n            </>\r\n          );\r\n        })}\r\n      </div>\r\n    </div>\r\n  );\r\n}\r\n\r\nexport default AllReportCalendar;","import axios from 'axios'\r\nimport { useState, useEffect } from 'react'\r\nimport AllReportCalendar from './AllReportCalendar';\r\n\r\nconst Calendar = ({ seasonName }) => {\r\n    const [years, setYears] = useState(seasonName.split('-'));\r\n    const [dailySnowfallList, setDailySnowfallList] = useState([]);\r\n\r\n    const fetchDailyObservedSnowfall = async (thisSeasonName) => {\r\n        axios({\r\n            method: 'POST',\r\n            url: `${window.$baseAPIUrl}/dailyreport/reports/All/${thisSeasonName}`\r\n            //url: `${window.$baseAPIUrl}/dailyreport/reports/All/2020-2021`\r\n        }).then(resDailySnowfall => {\r\n            setDailySnowfallList(resDailySnowfall.data)\r\n        })\r\n    };\r\n\r\n    const getDailySnowfallMonthlyList = (month) => {\r\n        let dailyData = dailySnowfallList.filter(function (currentElement) {\r\n            return (currentElement.NowReportMonth === month);\r\n        });\r\n\r\n        return dailyData\r\n    }\r\n\r\n    useEffect(() => {\r\n        fetchDailyObservedSnowfall(seasonName)\r\n        setYears(seasonName.split('-'))\r\n    }, [seasonName]);\r\n\r\n    return (\r\n        <div className='empty-row'>\r\n            <div>\r\n                <div className=\"sj-para-image mb-4\"><img src=\"https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-Calendar.svg\" alt=\"Japan as 'Snow Country'\" /></div>\r\n                <div>\r\n                    <h3>Daily snowfall calendar</h3>\r\n                    <div className=\"sj-para\">\r\n                        <h3 className='sj-red-header'>{seasonName} season</h3>\r\n                        View any of our Now daily reports from across the Japan using the links on the calendar below. Detailed snowfall analysis and archives are available within each report section.\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            <div className='center-aligned sj-row' style={{ overflow: 'none' }}>\r\n                <div className=\"row sj-row-no-margin-padding sj-no-bg\">\r\n                    <div className=\"col-lg-4 col-md-6\">\r\n                        <AllReportCalendar nowYear={years[0]} nowMonth={10} dailySnowfallMonthlyList={getDailySnowfallMonthlyList(11)} />\r\n                    </div>\r\n                    <div className=\"col-lg-4 col-md-6\">\r\n                        <AllReportCalendar nowYear={years[0]} nowMonth={11} dailySnowfallMonthlyList={getDailySnowfallMonthlyList(12)} />\r\n                    </div>\r\n                    <div className=\"col-lg-4 col-md-6\">\r\n                        <AllReportCalendar nowYear={years[1]} nowMonth={0} dailySnowfallMonthlyList={getDailySnowfallMonthlyList(1)} />\r\n                    </div>\r\n                    <div className=\"col-lg-4 col-md-6\">\r\n                        <AllReportCalendar nowYear={years[1]} nowMonth={1} dailySnowfallMonthlyList={getDailySnowfallMonthlyList(2)} />\r\n                    </div>\r\n                    <div className=\"col-lg-4 col-md-6\">\r\n                        <AllReportCalendar nowYear={years[1]} nowMonth={2} dailySnowfallMonthlyList={getDailySnowfallMonthlyList(3)} />\r\n                    </div>\r\n                    <div className=\"col-lg-4 col-md-6\">\r\n                        <AllReportCalendar nowYear={years[1]} nowMonth={3} dailySnowfallMonthlyList={getDailySnowfallMonthlyList(4)} />\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div >\r\n    )\r\n};\r\n\r\nexport default Calendar;","import axios from 'axios'\r\nimport { useState, useEffect } from 'react'\r\nimport { Link, useParams } from 'react-router-dom'\r\nimport Loader from \"../Common/Loader\"\r\nimport { Helmet } from 'react-helmet'\r\nimport { DropdownButton, Dropdown } from 'react-bootstrap'\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\nimport { faAngleDoubleDown, faAngleDoubleUp } from '@fortawesome/free-solid-svg-icons'\r\n\r\nconst OfficialSnowDepth = () => {\r\n\r\n    const params = useParams()\r\n\r\n    const [allSkiAreaWeatherList, setAllSkiAreaWeatherList] = useState([])\r\n    const [lastUpdateDate, setLastUpdateDate] = useState('')\r\n    const [showSnowData, setShowSnowData] = useState('')\r\n\r\n    const [buttonTitle, setButtonTitle] = useState('Current Snow Depth [highest>lowest]')\r\n    const [nameSorted, setNameSorted] = useState('')\r\n    const [townSorted, setTownSorted] = useState('')\r\n    const [prefectureSorted, setPrefectureSorted] = useState('')\r\n    const [snowDepthSorted, setSnowDepthSorted] = useState('sorted-column')\r\n    const [changeSorted, setChangeSorted] = useState('')\r\n    const [sortOrder, setSortOrder] = useState('ASC')\r\n\r\n    const fetchSkiAreaWeatherList = async (thisMatch) => {\r\n        axios({\r\n            method: 'POST',\r\n            url: `${window.$baseAPIUrl}/skiarea/latestweather/list`,\r\n            data: { filter_type: 'all' }\r\n        }).then(resSkiAreaWeather => {\r\n            if (resSkiAreaWeather.data) {\r\n                const skiAreaLatestWeather = resSkiAreaWeather.data\r\n\r\n                if (skiAreaLatestWeather.length > 0) {\r\n                    var latestReport = skiAreaLatestWeather.sort((a, b) => b.CreatedAt - a.CreatedAt)[0]\r\n\r\n                    setLastUpdateDate(latestReport.WeatherDayTh + ' ' + latestReport.WeatherMonthFull + ' ' + latestReport.WeatherYear)\r\n\r\n                    var maxCreated = latestReport.CreatedAt;\r\n\r\n                    const latestSkiAreaWeather = skiAreaLatestWeather.filter(function (currentElement) {\r\n                        return (currentElement.CreatedAt === maxCreated);\r\n                    });\r\n\r\n                    if (latestSkiAreaWeather.length > 0) {\r\n                        latestSkiAreaWeather.sort(function (a, b) {\r\n                            return b.SnowDepth - a.SnowDepth\r\n                        })\r\n\r\n                        setAllSkiAreaWeatherList(latestSkiAreaWeather)\r\n                    }\r\n                }\r\n            }\r\n\r\n            return axios({\r\n                method: 'POST',\r\n                url: `${window.$baseAPIUrl}/generalmessage/ShowSnowData`\r\n            })\r\n        }).then(resGeneralMessages => {\r\n            setShowSnowData(resGeneralMessages.data.Title)\r\n        })\r\n    };\r\n\r\n    useEffect((params) => {\r\n        fetchSkiAreaWeatherList()\r\n    }, [params]);\r\n\r\n    const SortResult = (evtKey, evt) => {\r\n\r\n        var sortedResult = []\r\n\r\n        var sortOrder = ''\r\n\r\n        setNameSorted('')\r\n        setTownSorted('')\r\n        setPrefectureSorted('')\r\n        setSnowDepthSorted('')\r\n        setChangeSorted('')\r\n\r\n        if (evtKey === '1' || evtKey === '2') {\r\n            sortedResult = allSkiAreaWeatherList.sort(function (a, b) {\r\n                let nameA = a.Name.toLowerCase(), nameB = b.Name.toLowerCase()\r\n\r\n                if (nameA < nameB) { return -1 }\r\n                if (nameA > nameB) { return 1 }\r\n                return 0\r\n            })\r\n            sortOrder = \"ASC\"\r\n\r\n            if (evtKey === '2') {\r\n                sortedResult = sortedResult.reverse()\r\n                sortOrder = \"DESC\"\r\n            }\r\n\r\n            setNameSorted('sorted-column')\r\n\r\n        } else if (evtKey === '3' || evtKey === '4') {\r\n            if (evtKey === '3') {\r\n                sortedResult = allSkiAreaWeatherList.sort(function (a, b) {\r\n                    let nameA = a.Name.toLowerCase(), nameB = b.Name.toLowerCase();\r\n                    let townNameA = a.TownName.toLowerCase(), townNameB = b.TownName.toLowerCase();\r\n\r\n                    if (townNameA < townNameB) { return -1 }\r\n                    if (townNameA > townNameB) { return 1 }\r\n\r\n                    if (nameA < nameB) { return -1 }\r\n                    if (nameA > nameB) { return 1 }\r\n\r\n                    return 0;\r\n                })\r\n                sortOrder = \"ASC\"\r\n            } else if (evtKey === '4') {\r\n                sortedResult = allSkiAreaWeatherList.sort(function (a, b) {\r\n                    let nameA = a.Name.toLowerCase(), nameB = b.Name.toLowerCase();\r\n                    let townNameA = a.TownName.toLowerCase(), townNameB = b.TownName.toLowerCase();\r\n\r\n                    if (townNameA < townNameB) { return 1 }\r\n                    if (townNameA > townNameB) { return -1 }\r\n\r\n                    if (nameA < nameB) { return -1 }\r\n                    if (nameA > nameB) { return 1 }\r\n\r\n                    return 0;\r\n                })\r\n\r\n                sortOrder = \"DESC\"\r\n            }\r\n\r\n            setTownSorted('sorted-column')\r\n\r\n        } else if (evtKey === '5' || evtKey === '6') {\r\n            if (evtKey === '5') {\r\n                sortedResult = allSkiAreaWeatherList.sort(function (a, b) {\r\n                    let nameA = a.Name.toLowerCase(), nameB = b.Name.toLowerCase()\r\n                    let townNameA = a.TownName.toLowerCase(), townNameB = b.TownName.toLowerCase()\r\n                    let prefectureNameA = a.PrefectureName.toLowerCase(), prefectureNameB = b.PrefectureName.toLowerCase()\r\n\r\n                    if (prefectureNameA < prefectureNameB) { return -1 }\r\n                    if (prefectureNameA > prefectureNameB) { return 1 }\r\n\r\n                    if (townNameA < townNameB) { return -1 }\r\n                    if (townNameA > townNameB) { return 1 }\r\n\r\n                    if (nameA < nameB) { return -1 }\r\n                    if (nameA > nameB) { return 1 }\r\n\r\n                    return 0;\r\n                })\r\n                sortOrder = \"ASC\"\r\n            } else if (evtKey === '6') {\r\n                sortedResult = allSkiAreaWeatherList.sort(function (a, b) {\r\n                    let nameA = a.Name.toLowerCase(), nameB = b.Name.toLowerCase()\r\n                    let townNameA = a.TownName.toLowerCase(), townNameB = b.TownName.toLowerCase()\r\n                    let prefectureNameA = a.PrefectureName.toLowerCase(), prefectureNameB = b.PrefectureName.toLowerCase()\r\n\r\n                    if (prefectureNameA < prefectureNameB) { return 1 }\r\n                    if (prefectureNameA > prefectureNameB) { return -1 }\r\n\r\n                    if (townNameA < townNameB) { return -1 }\r\n                    if (townNameA > townNameB) { return 1 }\r\n\r\n                    if (nameA < nameB) { return -1 }\r\n                    if (nameA > nameB) { return 1 }\r\n\r\n                    return 0\r\n                })\r\n                sortOrder = \"DESC\"\r\n            }\r\n\r\n            setPrefectureSorted('sorted-column')\r\n\r\n        } else if (evtKey === '7' || evtKey === '8') {\r\n            if (evtKey === '7') {\r\n                sortedResult = allSkiAreaWeatherList.sort(function (a, b) {\r\n                    if (a.SnowDepth < b.SnowDepth) return 1\r\n                    if (a.SnowDepth > b.SnowDepth) return -1\r\n\r\n                    if (a.Name > b.Name) return 1\r\n                    if (a.Name < b.Name) return -1\r\n\r\n                    return 0;\r\n                })\r\n                sortOrder = \"ASC\"\r\n            } else if (evtKey === '8') {\r\n                sortedResult = allSkiAreaWeatherList.sort(function (a, b) {\r\n                    if (a.SnowDepth > b.SnowDepth) return 1\r\n                    if (a.SnowDepth < b.SnowDepth) return -1\r\n\r\n                    if (a.Name > b.Name) return 1\r\n                    if (a.Name < b.Name) return -1\r\n\r\n                    return 0;\r\n                })\r\n\r\n                sortOrder = \"DESC\"\r\n            }\r\n\r\n            setSnowDepthSorted('sorted-column')\r\n        } else if (evtKey === '9' || evtKey === '10') {\r\n            if (evtKey === '9') {\r\n                sortedResult = allSkiAreaWeatherList.sort(function (a, b) {\r\n                    if (a.SnowDepthCompareToYesterday < b.SnowDepthCompareToYesterday) return 1\r\n                    if (a.SnowDepthCompareToYesterday > b.SnowDepthCompareToYesterday) return -1\r\n\r\n                    if (a.Name > b.Name) return 1\r\n                    if (a.Name < b.Name) return -1\r\n\r\n                    return 0\r\n                })\r\n                sortOrder = \"ASC\"\r\n            } else if (evtKey === '10') {\r\n                sortedResult = allSkiAreaWeatherList.sort(function (a, b) {\r\n                    if (a.SnowDepthCompareToYesterday > b.SnowDepthCompareToYesterday) return 1\r\n                    if (a.SnowDepthCompareToYesterday < b.SnowDepthCompareToYesterday) return -1\r\n\r\n                    if (a.Name > b.Name) return 1\r\n                    if (a.Name < b.Name) return -1\r\n\r\n                    return 0\r\n                })\r\n\r\n                sortOrder = \"DESC\"\r\n            }\r\n\r\n            setChangeSorted('sorted-column')\r\n        }\r\n\r\n        setButtonTitle('Sort by: ' + evt.target.innerText)\r\n        setSortOrder(sortOrder)\r\n    }\r\n\r\n    if (allSkiAreaWeatherList.length <= 0) {\r\n        return (\r\n            <Loader />\r\n        )\r\n    } else {\r\n        return (\r\n            <div className='empty-row'>\r\n                <Helmet>\r\n                    <title>Official snow depth data of ski areas in Japan | SnowJapan</title>\r\n                    <meta name=\"description\" content=\"Official snow depth data chart for ski areas throughout Japan. Updated daily in winter.\" />\r\n                </Helmet>\r\n                <div className='mb-4'>\r\n                    <div className=\"sj-para-image mb-4\"><img src=\"https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-Snow-Depth.svg\" alt=\"Official ski area snow depth data\" /></div>\r\n                    <div>\r\n                        <h3>Official ski area snow depth data</h3>\r\n                        <div className=\"sj-para\">\r\n                            {(showSnowData !== undefined && showSnowData === \"Y\") &&\r\n                                <h3 className='sj-red-header'>Latest update: {lastUpdateDate}</h3>\r\n                            }\r\n                            {(showSnowData !== undefined && showSnowData === \"Y\") &&\r\n                                <>The information presented in this table is official snow depth data originating from ski areas and is updated once a day through the main winter season. Please keep in mind that every ski area has its own policy and methods of measuring snow depth.</>\r\n                            }\r\n                            {(showSnowData !== undefined && showSnowData === \"N\") &&\r\n                                <>Official snow depth data for ski areas throughout Japan is displayed here during the winter season</>\r\n                            }\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                {(showSnowData !== undefined && showSnowData === \"Y\") &&\r\n                    <div className='empty-row'>\r\n                        <div className='right-aligned'>\r\n                            <DropdownButton align=\"end\" title={buttonTitle} onSelect={SortResult} id=\"dropdown-menu-align-end\">\r\n                                <Dropdown.Item eventKey=\"1\">Ski area name [A-Z]</Dropdown.Item>\r\n                                <Dropdown.Item eventKey=\"2\">Ski area name [Z-A]</Dropdown.Item>\r\n                                <Dropdown.Item eventKey=\"3\">Town name [A-Z]</Dropdown.Item>\r\n                                <Dropdown.Item eventKey=\"4\">Town name [Z-A]</Dropdown.Item>\r\n                                <Dropdown.Item eventKey=\"5\">Prefecture name [A-Z]</Dropdown.Item>\r\n                                <Dropdown.Item eventKey=\"6\">Prefecture name [Z-A]</Dropdown.Item>\r\n                                <Dropdown.Item eventKey=\"7\">Current Snow Depth [highest{'>'}lowest]</Dropdown.Item>\r\n                                <Dropdown.Item eventKey=\"8\">Current Snow Depth [lowest{'>'}highest]</Dropdown.Item>\r\n                                <Dropdown.Item eventKey=\"9\">Change [highest{'>'}lowest]</Dropdown.Item>\r\n                                <Dropdown.Item eventKey=\"10\">Change [lowest{'>'}highest]</Dropdown.Item>\r\n                            </DropdownButton>\r\n                        </div>\r\n                        <div className='table-container overflow-x'>\r\n                            <table className='table-container__table sj-list-table'>\r\n                                <thead>\r\n                                    <tr>\r\n                                        <th className={`${nameSorted !== '' ? \"sorted-column-header\" : \"\"}`}>\r\n                                            <h5>\r\n                                                {(nameSorted !== '' && sortOrder === 'ASC') &&\r\n                                                    <FontAwesomeIcon icon={faAngleDoubleDown} />\r\n                                                }\r\n                                                {(nameSorted !== '' && sortOrder === 'DESC') &&\r\n                                                    <FontAwesomeIcon icon={faAngleDoubleUp} />\r\n                                                }\r\n                                            </h5>\r\n                                        </th>\r\n                                        <th className={`${townSorted !== '' ? \"sorted-column-header\" : \"\"}`}>\r\n                                            <h5>\r\n                                                Town&nbsp;&nbsp;\r\n                                                {(townSorted !== '' && sortOrder === 'ASC') &&\r\n                                                    <FontAwesomeIcon icon={faAngleDoubleDown} />\r\n                                                }\r\n                                                {(townSorted !== '' && sortOrder === 'DESC') &&\r\n                                                    <FontAwesomeIcon icon={faAngleDoubleUp} />\r\n                                                }\r\n                                            </h5>\r\n                                        </th>\r\n                                        <th className={`${prefectureSorted !== '' ? \"sorted-column-header\" : \"\"}`}>\r\n                                            <h5>\r\n                                                Prefecture&nbsp;&nbsp;\r\n                                                {(prefectureSorted !== '' && sortOrder === 'ASC') &&\r\n                                                    <FontAwesomeIcon icon={faAngleDoubleDown} />\r\n                                                }\r\n                                                {(prefectureSorted !== '' && sortOrder === 'DESC') &&\r\n                                                    <FontAwesomeIcon icon={faAngleDoubleUp} />\r\n                                                }\r\n                                            </h5>\r\n                                        </th>\r\n                                        <th className={`${snowDepthSorted !== '' ? \"sorted-column-header\" : \"\"}`}>\r\n                                            <h5>\r\n                                                Current Snow Depth&nbsp;&nbsp;\r\n                                                {(snowDepthSorted !== '' && sortOrder === 'ASC') &&\r\n                                                    <FontAwesomeIcon icon={faAngleDoubleDown} />\r\n                                                }\r\n                                                {(snowDepthSorted !== '' && sortOrder === 'DESC') &&\r\n                                                    <FontAwesomeIcon icon={faAngleDoubleUp} />\r\n                                                }\r\n                                            </h5>\r\n                                        </th>\r\n                                        <th className={`${changeSorted !== '' ? \"sorted-column-header\" : \"\"}`}>\r\n                                            <h5>\r\n                                                Change&nbsp;&nbsp;\r\n                                                {(changeSorted !== '' && sortOrder === 'ASC') &&\r\n                                                    <FontAwesomeIcon icon={faAngleDoubleDown} />\r\n                                                }\r\n                                                {(changeSorted !== '' && sortOrder === 'DESC') &&\r\n                                                    <FontAwesomeIcon icon={faAngleDoubleUp} />\r\n                                                }\r\n                                            </h5>\r\n                                        </th>\r\n                                    </tr>\r\n                                </thead>\r\n                                <tbody>\r\n                                    {allSkiAreaWeatherList.map(skiAreaWeather => (\r\n                                        <tr key={skiAreaWeather.Id}>\r\n                                            <td className={nameSorted}>\r\n                                                <Link to={`${window.$baseSkiAreaUrl}/${skiAreaWeather.PrefectureUniqueName}/${skiAreaWeather.TownUniqueName}/${skiAreaWeather.UniqueName}`}>{skiAreaWeather.Name}</Link>\r\n                                            </td>\r\n                                            <td className={townSorted}>\r\n                                                <Link to={`${window.$baseSkiAreaUrl}/town/${skiAreaWeather.TownUniqueName}`}>{skiAreaWeather.TownName} {skiAreaWeather.TownTypeStr}</Link>\r\n                                            </td>\r\n                                            <td className={prefectureSorted}>\r\n                                                <Link to={`${window.$baseSkiAreaUrl}/prefecture/${skiAreaWeather.PrefectureUniqueName}`}>{skiAreaWeather.PrefectureName}</Link>\r\n                                            </td>\r\n                                            <td className={snowDepthSorted}>\r\n                                                {skiAreaWeather.SnowDepth !== null &&\r\n                                                    <>{skiAreaWeather.SnowDepth} cm</>\r\n                                                }\r\n                                                {skiAreaWeather.SnowDepth === null &&\r\n                                                    <>--</>\r\n                                                }\r\n                                            </td>\r\n                                            <td className={changeSorted}>\r\n                                                {skiAreaWeather.SnowDepthCompareToYesterday !== null &&\r\n                                                    <>{skiAreaWeather.SnowDepthCompareToYesterday} cm</>\r\n                                                }\r\n                                                {skiAreaWeather.SnowDepthCompareToYesterday === null &&\r\n                                                    <>--</>\r\n                                                }\r\n                                            </td>\r\n                                        </tr>\r\n                                    ))}\r\n                                </tbody>\r\n                            </table>\r\n                        </div>\r\n                    </div>\r\n                }\r\n            </div>\r\n        )\r\n    }\r\n}\r\n\r\nexport default OfficialSnowDepth","import axios from 'axios'\r\nimport { Helmet } from 'react-helmet'\r\nimport { useState, useEffect } from 'react'\r\nimport { useParams } from 'react-router-dom'\r\nimport Loader from '../Common/Loader'\r\nimport { RenderBreak } from '../../helpers/Helper'\r\n\r\nconst Webcams = () => {\r\n\r\n    const params = useParams()\r\n\r\n    const [generalMessageWebCam, setGeneralMessageWebCam] = useState(undefined)\r\n    const [guide, setGuide] = useState(undefined)\r\n\r\n    const fetchGeneralMessage = async () => {\r\n        axios({\r\n            method: 'POST',\r\n            url: `${window.$baseAPIUrl}/generalmessage/NowWebCam`\r\n        }).then(resGeneralMessages => {\r\n            setGeneralMessageWebCam(resGeneralMessages.data)\r\n        })\r\n    }\r\n\r\n    const fetchGuides = async (guideUniqueName) => {\r\n        axios({\r\n            method: 'POST',\r\n            url: `${window.$baseAPIUrl}/listingGuideSection/guides/${guideUniqueName}`\r\n        }).then(resGuide => {\r\n            setGuide(resGuide.data)\r\n        })\r\n    }\r\n\r\n    useEffect(() => {\r\n        if (params !== undefined && params.type !== undefined) {\r\n            fetchGuides(params.type)\r\n        } else {\r\n            fetchGeneralMessage()\r\n        }\r\n    }, [params])\r\n\r\n    if (generalMessageWebCam === undefined && guide === undefined) {\r\n        return (\r\n            <Loader />\r\n        )\r\n    } else {\r\n        return (\r\n            <div className='empty-row'>\r\n                {generalMessageWebCam !== undefined &&\r\n                    <>\r\n                        <Helmet>\r\n                            <title>{generalMessageWebCam.Title}</title>\r\n                            <meta name=\"description\" content={`${generalMessageWebCam.Description}`} />\r\n                        </Helmet>\r\n                        <div dangerouslySetInnerHTML={{ __html: RenderBreak(generalMessageWebCam.Message) }} />\r\n                    </>\r\n                }\r\n                {guide !== undefined &&\r\n                    <>\r\n                        <Helmet>\r\n                            <title>{guide.Title}</title>\r\n                            <meta name=\"description\" content={`${guide.Description}`} />\r\n                        </Helmet>\r\n                        <div dangerouslySetInnerHTML={{ __html: RenderBreak(guide.HtmlContent) }} />\r\n                    </>\r\n                }\r\n            </div>\r\n        )\r\n    }\r\n}\r\n\r\nexport default Webcams","import { Fragment } from 'react'\r\nimport { useLocation } from 'react-router-dom'\r\nimport Home from './Home'\r\nimport Calendar from './Calendar'\r\nimport OfficialSnowDepth from './OfficialSnowDepth'\r\nimport Webcams from './Webcams'\r\nimport { GetCurrentSeasonName } from '../../helpers/Helper'\r\n\r\n\r\nconst DailyReportContainer = () => {\r\n\r\n    const location = useLocation()\r\n\r\n    console.log(location)\r\n\r\n    const currentSeasonName = GetCurrentSeasonName();\r\n\r\n    let requestType = undefined\r\n\r\n    if (location.pathname.includes('calendar')) {\r\n        requestType = 'calendar'\r\n    }\r\n    else if (location.pathname.includes('official-snow-depth')) {\r\n        requestType = 'officialsnowdepth'\r\n    }\r\n    else if (location.pathname.includes('webcams')) {\r\n        requestType = 'webcams'\r\n    }\r\n\r\n    return (\r\n        <Fragment>\r\n            <>\r\n                {\r\n                    {\r\n                        undefined: <Home seasonName={currentSeasonName} />,\r\n                        'calendar': <Calendar seasonName={currentSeasonName} />,\r\n                        'officialsnowdepth': <OfficialSnowDepth />,\r\n                        'webcams': <Webcams />\r\n                    }[requestType]\r\n                }\r\n            </>\r\n        </Fragment>\r\n    )\r\n}\r\n\r\nexport default DailyReportContainer","import { useState, useEffect } from 'react'\r\nimport { DropdownButton, Dropdown } from 'react-bootstrap'\r\nimport { Link, useParams } from 'react-router-dom'\r\nimport { GetCurrentSeasonName } from '../../../helpers/Helper'\r\n\r\nconst DetailTabs = () => {\r\n\r\n  const params = useParams()\r\n\r\n  const [buttonTitle, setButtonTitle] = useState('')\r\n  const [subItemName, setSubItemName] = useState('')\r\n\r\n  const currentSeason = GetCurrentSeasonName()\r\n\r\n  const nowUniqueName = params.now\r\n\r\n  useEffect(() => {\r\n    setSubItemName(params.type)\r\n\r\n    let thisButtonTitle\r\n    switch (params.type) {\r\n      case 'observed-snowfall-analysis':\r\n        thisButtonTitle = 'Snowfall analysis'\r\n        break\r\n      case 'season':\r\n        thisButtonTitle = 'Seasonal archives'\r\n        break\r\n      case 'snow-depth-analysis':\r\n        thisButtonTitle = 'Snow depth data'\r\n        break\r\n      case 'weather':\r\n        thisButtonTitle = 'Weather'\r\n        break\r\n      case 'about-daily-reports':\r\n        thisButtonTitle = 'About'\r\n        break\r\n      default:\r\n        thisButtonTitle = \"Latest report\"\r\n    }\r\n\r\n    setButtonTitle(thisButtonTitle)\r\n\r\n  }, [params]);\r\n\r\n  return (\r\n    <div>\r\n      <div className=\"d-none d-lg-block bg-color-report\">\r\n        <ul className=\"tabs\">\r\n          <li className={`${(subItemName === '' || subItemName === undefined) ? \" active\" : \"\"}`}>\r\n            <Link to={`${window.$baseDailyReportUrl}/${nowUniqueName}`}>Latest report</Link>\r\n          </li>\r\n          <li className={`${subItemName === 'observed-snowfall-analysis' ? \" active\" : \"\"}`}>\r\n            <Link to={`${window.$baseDailyReportUrl}/${nowUniqueName}/observed-snowfall-analysis`}>Snowfall analysis</Link>\r\n          </li>\r\n          <li className={`${subItemName === 'season' ? \" active\" : \"\"}`}>\r\n            <Link to={`${window.$baseDailyReportUrl}/${nowUniqueName}/season/${currentSeason}`}>Seasonal archives</Link>\r\n          </li>\r\n          <li className={`${subItemName === 'snow-depth-analysis' ? \" active\" : \"\"}`}>\r\n            <Link to={`${window.$baseDailyReportUrl}/${nowUniqueName}/snow-depth-analysis`}>Snow depth data</Link>\r\n          </li>\r\n          <li className={`${subItemName === 'weather' ? \" active\" : \"\"}`}>\r\n            <Link to={`${window.$baseDailyReportUrl}/${nowUniqueName}/weather`}>Weather</Link>\r\n          </li>\r\n          <li className={`${subItemName === 'about-daily-reports' ? \" active\" : \"\"}`}>\r\n            <Link to={`${window.$baseDailyReportUrl}/${nowUniqueName}/about-daily-reports`}>About</Link>\r\n          </li>\r\n        </ul>\r\n      </div>\r\n      <div className=\"d-lg-none sj-row-100\">\r\n        <DropdownButton align=\"end\" title={buttonTitle} id=\"dropdown-menu-align-end\" className='sj-large-font-button daily-report-sub-menu'>\r\n          <Dropdown.Item as={Link} to={`${window.$baseDailyReportUrl}/${nowUniqueName}`}>Latest report</Dropdown.Item>\r\n          <Dropdown.Item as={Link} to={`${window.$baseDailyReportUrl}/${nowUniqueName}/observed-snowfall-analysis`}>Snowfall analysis</Dropdown.Item>\r\n          <Dropdown.Item as={Link} to={`${window.$baseDailyReportUrl}/${nowUniqueName}/season/${currentSeason}`}>Seasonal archives</Dropdown.Item>\r\n          <Dropdown.Item as={Link} to={`${window.$baseDailyReportUrl}/${nowUniqueName}/snow-depth-analysis`}>Snow depth data</Dropdown.Item>\r\n          <Dropdown.Item as={Link} to={`${window.$baseDailyReportUrl}/${nowUniqueName}/weather`}>Weather</Dropdown.Item>\r\n          <Dropdown.Item as={Link} to={`${window.$baseDailyReportUrl}/${nowUniqueName}/about-daily-reports`}>About</Dropdown.Item>\r\n        </DropdownButton>\r\n      </div>\r\n    </div>\r\n  )\r\n}\r\n\r\nexport default DetailTabs","import { Image } from 'react-bootstrap'\r\nimport { GetPCIconImageName, GetWindCIconImageName, GetWthConditionIconImageName, GetVConditionIconImageName } from '../../../../helpers/Helper'\r\n\r\nconst DailyReportInfo = ({ dailyReport, isArchive }) => {\r\n\r\n  let reportType = '(latest report)'\r\n  if (isArchive) {\r\n    reportType = '(Archive report)'\r\n  }\r\n\r\n  //console.log(dailyReport)\r\n\r\n  return (\r\n    <div>\r\n      <h3 className={`mt-4 mb-4 ${isArchive ? 'sj-red-text' : ''}`}>{dailyReport.NowReportWeekDay} {dailyReport.NowReportDayTh} {dailyReport.NowReportMonthFull} {dailyReport.NowReportYear} {dailyReport.NowReportHourMinute} {reportType}</h3>\r\n      {dailyReport.Season > '2011-2012' &&\r\n        <>\r\n          <div className='row sj-no-margin'>\r\n            <div className='col-md-6 sj-no-margin'>\r\n              <div className='sj-box sj-box-lighter-gray center-aligned white-border'><h5>Observed snowfall at base (24 hrs)</h5></div>\r\n              <div className='center-aligned mt-3'>\r\n                <h2 className='sj-light-blue-text'>{dailyReport.NewSnowfallResortA}cm</h2>\r\n              </div>\r\n            </div>\r\n            <div className='col-md-6 sj-no-margin'>\r\n              <div className='sj-box sj-box-lighter-gray center-aligned white-border'><h5>Temperature (base / top)</h5></div>\r\n              <div className='center-aligned mt-3'>\r\n                <h2 className='sj-light-blue-text'>{dailyReport.TemperatureBottom}°C / {dailyReport.TemperatureTop}°C</h2>\r\n              </div>\r\n            </div>\r\n          </div>\r\n          <div className='row sj-no-margin'>\r\n            <div className='col-3 sj-no-margin'>\r\n              <div className='center-aligned'>\r\n                <Image src={`https://www.snowjapan.com/UploadedFiles/NowImages/NowIconsNew/${GetWthConditionIconImageName(dailyReport.WeatherConditionIcon)}`} fluid='true' alt='Weather Condition' />\r\n              </div>\r\n              <div className='center-aligned'>\r\n                <h6>[Overview]</h6>\r\n                {dailyReport.WeatherCondition}\r\n              </div>\r\n            </div>\r\n            <div className='col-3 sj-no-margin'>\r\n              <div className='center-aligned'>\r\n                <Image src={`https://www.snowjapan.com/UploadedFiles/NowImages/NowIconsNew/${GetPCIconImageName(dailyReport.PrecipitationConditionIcon)}`} fluid='true' alt='Precipitation Condition' />\r\n              </div>\r\n              <div className='center-aligned'>\r\n                <h6>[Precipitation]</h6>\r\n                {dailyReport.PrecipitationCondition}\r\n              </div>\r\n            </div>\r\n            <div className='col-3 sj-no-margin'>\r\n              <div className='center-aligned'>\r\n                <Image src={`https://www.snowjapan.com/UploadedFiles/NowImages/NowIconsNew/${GetWindCIconImageName(dailyReport.WindConditionIcon)}`} fluid='true' alt='Wind Condition' />\r\n              </div>\r\n              <div className='center-aligned'>\r\n                <h6>[Wind]</h6>\r\n                {dailyReport.WindCondition}\r\n              </div>\r\n            </div>\r\n            <div className='col-3 sj-no-margin'>\r\n              <div className='center-aligned'>\r\n                <Image src={`https://www.snowjapan.com/UploadedFiles/NowImages/NowIconsNew/${GetVConditionIconImageName(dailyReport.VisibilityConditionIcon)}`} fluid='true' alt='Visibility Condition' />\r\n              </div>\r\n              <div className='center-aligned'>\r\n                <h6>[Visibility]</h6>\r\n                {dailyReport.VisibilityCondition}\r\n              </div>\r\n            </div>\r\n          </div>\r\n        </>\r\n      }\r\n    </div>\r\n  )\r\n}\r\n\r\nexport default DailyReportInfo","import { useRef } from 'react'\r\nimport Highcharts from 'highcharts'\r\nimport HighchartsReact from 'highcharts-react-official'\r\nimport Loader from \"../../../Common/Loader\"\r\n\r\nconst DailyObservedSnowfall = ({ season, dailySnowfallList }) => {\r\n\r\n  const chartRef = useRef()\r\n\r\n  const getSnowDataValue = () => {\r\n\r\n    let dailySnowData = {}\r\n    let dailySnowfallData = []\r\n    let accumulatedSnowData = []\r\n    let dailyAccumulatedSnow = 0\r\n\r\n    let sortedDailySnowfallList = dailySnowfallList.sort(function (a, b) {\r\n      if (a.Id < b.Id) { return -1; }\r\n      if (a.Id > b.Id) { return 1; }\r\n\r\n      return 0;\r\n    })\r\n\r\n\r\n    sortedDailySnowfallList.forEach(function (dataItem) {\r\n      let valueCounter = 0;\r\n\r\n      if (dataItem.NowReportMonth < 6) {\r\n        valueCounter = 1\r\n      }\r\n\r\n      dailySnowfallData.push([Date.UTC(1969 + valueCounter, Number(dataItem.NowReportMonth) - 1, dataItem.NowReportDay), dataItem.NewSnowfallResortA])\r\n\r\n      dailyAccumulatedSnow = dailyAccumulatedSnow + dataItem.NewSnowfallResortA\r\n\r\n      accumulatedSnowData.push([Date.UTC(1969 + valueCounter, Number(dataItem.NowReportMonth) - 1, dataItem.NowReportDay), dailyAccumulatedSnow])\r\n    })\r\n\r\n    dailySnowData = { ...dailySnowData, 'dailySnowfallData': dailySnowfallData }\r\n    dailySnowData = { ...dailySnowData, 'accumulatedSnowData': accumulatedSnowData }\r\n\r\n    return dailySnowData\r\n  }\r\n\r\n  var thisDailySnowfallDataSeries = [];\r\n\r\n  thisDailySnowfallDataSeries.push({\r\n    'name': season,\r\n    'data': getSnowDataValue().dailySnowfallData\r\n  })\r\n\r\n  const options = {\r\n    //colors: \"#0000CC\".split(\",\"),\r\n    colors: [\"#0000CC\"],\r\n    chart: {\r\n      type: 'column',\r\n      zoomType: 'x',\r\n      backgroundColor: \"#efefef\",\r\n      borderWidth: 1,\r\n      borderColor: \"#dedede\",\r\n      style: {\r\n        fontFamily: 'Lato'\r\n      }\r\n    },\r\n    title: {\r\n      text: 'Daily observed snowfall at base',\r\n      style: {\r\n        fontSize: '18px',\r\n        fontWeight: 'bold',\r\n        fontFamily: 'Montserrat'\r\n      }\r\n    },\r\n    subtitle: {\r\n      text: 'Drag a section of the graph to zoom in',\r\n      style: {\r\n        fontSize: '15px',\r\n        fontWeight: 'bold',\r\n        fontFamily: 'Lato'\r\n      }\r\n    },\r\n    xAxis: {\r\n      type: 'datetime',\r\n      dateTimeLabelFormats: { // don't display the dummy year\r\n        month: '%b %e ', year: '%b'\r\n      },\r\n      title: {\r\n        text: '',\r\n        style: {\r\n          fontSize: '15px',\r\n          fontWeight: 'bold',\r\n          fontFamily: 'Montserrat'\r\n        }\r\n      }\r\n    },\r\n    legend: {\r\n      itemStyle: {\r\n        fontWeight: 'bold',\r\n        fontSize: '14px'\r\n      }\r\n    },\r\n    yAxis: {\r\n      title: {\r\n        text: 'Observed snowfall at base (cm)',\r\n        style: {\r\n          fontSize: '15px',\r\n          fontWeight: 'bold',\r\n          fontFamily: 'Montserrat'\r\n        }\r\n      },\r\n      min: 0\r\n    },\r\n    tooltip: {\r\n      headerFormat: '<b>{series.name}</b><br>',\r\n      pointFormat: '{point.x:%b %e}: {point.y}cm'\r\n    },\r\n    exporting:\r\n    {\r\n      enabled: false\r\n    },\r\n    plotOptions: {\r\n      spline: {\r\n        marker: {\r\n          enabled: true\r\n        }\r\n      }\r\n    },\r\n    series: thisDailySnowfallDataSeries,\r\n    credits:\r\n    {\r\n      enabled: false\r\n    }\r\n  };\r\n\r\n  const ShowAccumSnowChart = () => {\r\n    if (chartRef.current.chart !== undefined) {\r\n      var accumulatedSnowDataSeries = [];\r\n\r\n      accumulatedSnowDataSeries.push({\r\n        'name': season,\r\n        'data': getSnowDataValue().accumulatedSnowData\r\n      })\r\n\r\n      chartRef.current.chart.update({\r\n        title: {\r\n          text: 'Observed accumulated snowfall'\r\n        },\r\n        yAxis: {\r\n          title: {\r\n            text: 'Observed accumulated snowfall (cm)'\r\n          },\r\n          min: 0\r\n        },\r\n        series: accumulatedSnowDataSeries\r\n      });\r\n    }\r\n  }\r\n\r\n  const ShowSnowfallChart = () => {\r\n    if (chartRef.current.chart !== undefined) {\r\n\r\n      var dailySnowfallDataSeries = [];\r\n\r\n      dailySnowfallDataSeries.push({\r\n        'name': season,\r\n        'data': getSnowDataValue().dailySnowfallData\r\n      })\r\n\r\n      chartRef.current.chart.update({\r\n        title: {\r\n          text: 'Daily observed snowfall at base'\r\n        },\r\n        yAxis: {\r\n          title: {\r\n            text: 'Observed snowfall at base (cm)'\r\n          },\r\n          min: 0\r\n        },\r\n        series: dailySnowfallDataSeries\r\n      });\r\n    }\r\n  }\r\n\r\n  if (dailySnowfallList.length <= 0) {\r\n    return (\r\n      <Loader />\r\n    )\r\n  }\r\n  else {\r\n    return (\r\n      <div>\r\n        <div className=\"sj-box sj-box-dark-gray sj-round-full center-aligned mt-5 mb-4\">\r\n          <h4>Daily observed snowfall at base</h4>\r\n        </div>\r\n        <h3 className='center-aligned space-above'>{season} season</h3>\r\n        <div className='row sj-row-no-margin-padding sj-no-bg center-aligned'>\r\n          <div className='col-md-6 sj-row-no-margin-padding sj-padding-right-10'>\r\n            <button className='btn btn-primary sj-large-button-blue sj-full-width' onClick={ShowSnowfallChart}>Show snowfall</button>\r\n          </div>\r\n          <div className='col-md-6 sj-row-no-margin-padding sj-padding-left-10'>\r\n            <button className='btn btn-primary sj-large-button-blue sj-full-width' onClick={ShowAccumSnowChart}>Show accumulated snowfall</button>\r\n          </div>\r\n        </div>\r\n        <div className='mt-4'>\r\n          <HighchartsReact highcharts={Highcharts} options={options} allowChartUpdate={true} ref={chartRef} />\r\n        </div>\r\n      </div>\r\n    );\r\n  }\r\n}\r\n\r\nexport default DailyObservedSnowfall;","import { Link } from 'react-router-dom'\r\nimport Loader from \"../../../Common/Loader\"\r\n\r\nconst RecentDailyReports = ({ dailySnowfallList }) => {\r\n\r\n    let sortedDailySnowfallList = dailySnowfallList.sort(function (a, b) {\r\n        if (a.Id < b.Id) { return 1; }\r\n        if (a.Id > b.Id) { return -1; }\r\n\r\n        return 0;\r\n    })\r\n\r\n    let last7daysDailyReports = sortedDailySnowfallList.slice(1, 8)\r\n\r\n    if (last7daysDailyReports.length <= 0) {\r\n        return (\r\n            <Loader />\r\n        )\r\n    }\r\n    else {\r\n        return (\r\n            <div>\r\n                <div className=\"sj-box sj-box-dark-gray sj-round-full center-aligned mt-5 mb-4\">\r\n                    <h4>Previous 7 reports</h4>\r\n                </div>\r\n                <div className='mt-4'>\r\n                    {last7daysDailyReports.map(dailyReport => (\r\n                        <div key={dailyReport.Id}>\r\n                            <h5><Link to={`${window.$baseDailyReportUrl}/${dailyReport.UniqueName}/archives/${dailyReport.NowReportDayTh}-${dailyReport.NowReportMonthFull}-${dailyReport.NowReportYear}`}>{dailyReport.NowReportWeekDay} {dailyReport.NowReportDayTh} {dailyReport.NowReportMonthFull} {dailyReport.NowReportYear}, {dailyReport.NowReportHourMinute} ({dailyReport.NewSnowfallResortA}cm)</Link></h5>\r\n                        </div>\r\n                    ))}\r\n                </div>\r\n            </div>\r\n        );\r\n    }\r\n};\r\n\r\nexport default RecentDailyReports;","import axios from 'axios'\r\nimport { useState, useEffect } from 'react'\r\nimport { Link } from 'react-router-dom'\r\nimport DailyObservedSnowfall from './DailyObservedSnowfall'\r\nimport RecentDailyReports from './RecentDailyReports'\r\n\r\nconst SnowfallStatistics = ({ dailyReport, isArchive }) => {\r\n\r\n  const [snowfallTotalList, setSnowfallTotalList] = useState([]);\r\n  const [seasonDailyReportList, setSeasonDailyReportList] = useState([]);\r\n\r\n  const fetchSeasonDailyReportAndSnowfallTotal = async (nowId) => {\r\n    axios({\r\n      method: 'POST',\r\n      url: `${window.$baseAPIUrl}/dailyreport/snowfalltotal/${nowId}`\r\n    }).then(resSnowfallTotal => {\r\n      setSnowfallTotalList(resSnowfallTotal.data)\r\n      return axios({\r\n        method: 'POST',\r\n        url: `${window.$baseAPIUrl}/dailyreport/reports/${dailyReport.UniqueName}/${dailyReport.Season}/${dailyReport.CreatedAt}`\r\n      })\r\n    }).then(resSeasonDailyReport => {\r\n      setSeasonDailyReportList(resSeasonDailyReport.data)\r\n      console.log(seasonDailyReportList)\r\n    })\r\n  };\r\n\r\n  useEffect(() => {\r\n    fetchSeasonDailyReportAndSnowfallTotal(dailyReport.Now_Id)\r\n  }, [dailyReport.Now_Id]);\r\n\r\n  let TotalSnow7Days = '-'\r\n  let TotalSnow14Days = '-'\r\n  let TotalSnowCurrentMonth = '0cm'\r\n  let TotalSnowCurrentSeason = '0cm'\r\n\r\n  if (snowfallTotalList !== undefined) {\r\n    let TotalSnow7DaysData = snowfallTotalList.find(item => item.TotalType === '7')\r\n    if (TotalSnow7DaysData !== undefined) {\r\n      TotalSnow7Days = TotalSnow7DaysData['TotalSnow'] + 'cm'\r\n    }\r\n\r\n    let TotalSnow14DaysData = snowfallTotalList.find(item => item.TotalType === '14')\r\n    if (TotalSnow14DaysData !== undefined) {\r\n      TotalSnow14Days = TotalSnow14DaysData['TotalSnow'] + 'cm'\r\n    }\r\n\r\n    let TotalSnowCurrentMonthData = snowfallTotalList.find(item => item.TotalType === 'CurrentMonth')\r\n    if (TotalSnowCurrentMonthData !== undefined) {\r\n      TotalSnowCurrentMonth = TotalSnowCurrentMonthData['TotalSnow'] + 'cm'\r\n    }\r\n\r\n    let TotalSnowCurrentSeasonData = snowfallTotalList.find(item => item.TotalType === 'CurrentSeason')\r\n    if (TotalSnowCurrentSeasonData !== undefined) {\r\n      TotalSnowCurrentSeason = TotalSnowCurrentSeasonData['TotalSnow'] + 'cm'\r\n    }\r\n  }\r\n\r\n  return (\r\n    <div>\r\n      {(!isArchive) &&\r\n        <>\r\n          <div className=\"sj-box sj-box-dark-gray sj-round-full center-aligned mt-2 mb-4\">\r\n            <h4>Recent observed snowfall data at base</h4>\r\n          </div>\r\n          <div className='row sj-no-margin'>\r\n            <div className='col-md-3 sj-no-margin'>\r\n              <div className='sj-box sj-box-lighter-gray center-aligned white-border'><h5>Lastest 7 reports</h5></div>\r\n              <div className='center-aligned mt-3'>\r\n                <h3 className='sj-light-blue-text'>{TotalSnow7Days}</h3>\r\n              </div>\r\n            </div>\r\n            <div className='col-md-3 sj-no-margin'>\r\n              <div className='sj-box sj-box-lighter-gray center-aligned white-border'><h5>Lastest 14 reports</h5></div>\r\n              <div className='center-aligned mt-3'>\r\n                <h3 className='sj-light-blue-text'>{TotalSnow14Days}</h3>\r\n              </div>\r\n            </div>\r\n            <div className='col-md-3 sj-no-margin'>\r\n              <div className='sj-box sj-box-lighter-gray center-aligned white-border'><h5>Current month</h5></div>\r\n              <div className='center-aligned mt-3'>\r\n                <h3 className='sj-light-blue-text'>{TotalSnowCurrentMonth}</h3>\r\n              </div>\r\n            </div>\r\n            <div className='col-md-3 sj-no-margin'>\r\n              <div className='sj-box sj-box-lighter-gray center-aligned white-border'><h5>Season so far</h5></div>\r\n              <div className='center-aligned mt-3'>\r\n                <h3 className='sj-light-blue-text'>{TotalSnowCurrentSeason}</h3>\r\n              </div>\r\n            </div>\r\n          </div>\r\n        </>\r\n      }\r\n      {(isArchive) &&\r\n        <div className=\"sj-box sj-box-red sj-round-full center-aligned mt-5\">\r\n          <h5>This is an archive report from {dailyReport.NowReportWeekDay} {dailyReport.NowReportDayTh} {dailyReport.NowReportMonthFull} {dailyReport.NowReportYear}</h5>\r\n        </div>\r\n      }\r\n      {(seasonDailyReportList.length > 1) &&\r\n        <div>\r\n          <RecentDailyReports dailySnowfallList={seasonDailyReportList} />\r\n        </div>\r\n      }\r\n      <div>\r\n        <DailyObservedSnowfall season={dailyReport.Season} dailySnowfallList={seasonDailyReportList} />\r\n      </div>\r\n      <div className=\"sj-para\">\r\n        <Link to={`${window.$baseDailyReportUrl}/${dailyReport.UniqueName}/observed-snowfall-analysis`} className=\"btn btn-primary sj-large-button-blue sj-full-width\">Full analysis here</Link>\r\n      </div>\r\n    </div>\r\n  );\r\n}\r\n\r\nexport default SnowfallStatistics;","import axios from 'axios'\r\nimport { useState, useEffect } from 'react'\r\nimport { Link } from 'react-router-dom'\r\nimport { Image } from 'react-bootstrap'\r\nimport { Helmet } from 'react-helmet'\r\nimport Loader from \"../../../Common/Loader\"\r\nimport DailyReportInfo from './DailyReportInfo'\r\nimport SnowfallStatistics from './SnowfallStatistics'\r\nimport { RenderBreak } from '../../../../helpers/Helper'\r\n\r\nconst DetailDailyReport = ({ dailyReport, params, isArchive }) => {\r\n\r\n    const [thisReport, setThisReport] = useState(undefined)\r\n\r\n    const fetchDailyReport = async (reportUniqueName, seasonName) => {\r\n        axios({\r\n            method: 'POST',\r\n            url: `${window.$baseAPIUrl}/dailyreport/reports/archived/${reportUniqueName}/${seasonName}`\r\n        }).then(resDailyReport => {\r\n            setThisReport(resDailyReport.data)\r\n        })\r\n    };\r\n\r\n    useEffect(() => {\r\n        if (params.season !== undefined) {\r\n            fetchDailyReport(dailyReport.UniqueName, params.season)\r\n        } else {\r\n            setThisReport(dailyReport)\r\n        }\r\n    }, [dailyReport, params.season])\r\n\r\n    const getDayOrdinal = (day) => {\r\n        if (day > 3 && day < 21) return 'th'\r\n        switch (day % 10) {\r\n            case 1: return \"st\"\r\n            case 2: return \"nd\"\r\n            case 3: return \"rd\"\r\n            default: return \"th\"\r\n        }\r\n    }\r\n\r\n    const getFormattedDate = (reportDate) => {\r\n        const MONTHS = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\r\n        let thisReportDate = new Date(reportDate)\r\n        let formattedDate = ''\r\n\r\n        formattedDate = [\r\n            thisReportDate.getDate() + getDayOrdinal(thisReportDate.getDate()),\r\n            MONTHS[thisReportDate.getMonth()],\r\n            thisReportDate.getFullYear()\r\n        ].join('-')\r\n\r\n        return formattedDate\r\n    }\r\n\r\n    if (thisReport === undefined) {\r\n        return (\r\n            <Loader />\r\n        )\r\n    } else {\r\n        return (\r\n            <div>\r\n                <Helmet>\r\n                    <title>{`${thisReport.Name} | ${thisReport.NowReportDayTh} ${thisReport.NowReportMonthFull} ${thisReport.NowReportYear} | ${isArchive ? \"Archive\" : \"Latest\"} snow and weather report from ${thisReport.AreaName} | SnowJapan`}</title>\r\n                    <meta name=\"description\" content={`${isArchive ? \"Archive\" : \"Exclusive independent daily\"} snow and weather reports from the ${thisReport.AreaName} of Japan. ${isArchive ? \"All SnowJapan reports are exclusive and 100% independent\" : \"Snowfall is observed from base areas\"}.`} />\r\n                    <link rel=\"canonical\" href={window.location.href} />\r\n                </Helmet>\r\n                <DailyReportInfo dailyReport={thisReport} isArchive={isArchive} />\r\n                {(isArchive) &&\r\n                    <div className=\"sj-box sj-box-red sj-round-full center-aligned mt-5\">\r\n                        <h5>This is an archive report from {thisReport.NowReportWeekDay} {thisReport.NowReportDayTh} {thisReport.NowReportMonthFull} {thisReport.NowReportYear}</h5>\r\n                    </div>\r\n                }\r\n                <hr className='mt-5' />\r\n                <div className='empty-row'>\r\n                    <pre>\r\n                        <div dangerouslySetInnerHTML={{ __html: RenderBreak(thisReport.MainReport) }} />\r\n                    </pre>\r\n                    <div className='sj-para'>\r\n                        <h4>Opening, lift & other notes</h4>\r\n                    </div>\r\n                    <pre>\r\n                        <div dangerouslySetInnerHTML={{ __html: RenderBreak(thisReport.LiftOperation) }} />\r\n                    </pre>\r\n                </div>\r\n                {thisReport.Season > '2011-2012' &&\r\n                    <SnowfallStatistics dailyReport={thisReport} isArchive={isArchive} />\r\n                }\r\n                <div className='empty-row'>\r\n                    {thisReport.Photo1 !== null &&\r\n                        <div className='sj-image-holder-now center-aligned mt-5'>\r\n                            <Image src={`https://www.snowjapan.com${thisReport.Photo1.replace('~', '')}`} fluid='true' alt='Report 1' />\r\n                        </div>\r\n                    }\r\n                    {thisReport.Photo2 !== null &&\r\n                        <div className='sj-image-holder-now center-aligned mt-4'>\r\n                            <Image src={`https://www.snowjapan.com${thisReport.Photo2.replace('~', '')}`} fluid='true' alt='Report 2' />\r\n                        </div>\r\n                    }\r\n                    {thisReport.Photo3 !== null &&\r\n                        <div className='sj-image-holder-now center-aligned mt-4'>\r\n                            <Image src={`https://www.snowjapan.com${thisReport.Photo3.replace('~', '')}`} fluid='true' alt='Report 3' />\r\n                        </div>\r\n                    }\r\n                </div>\r\n                {\r\n                    (isArchive) &&\r\n                    <div className=\"sj-box sj-box-red sj-round-full center-aligned mt-5\">\r\n                        <h5>This is an archive report from {thisReport.NowReportWeekDay} {thisReport.NowReportDayTh} {thisReport.NowReportMonthFull} {thisReport.NowReportYear}</h5>\r\n                    </div>\r\n                }\r\n                {\r\n                    (isArchive) &&\r\n                    <div className='mt-5'>\r\n                        <Link to={`${window.$baseDailyReportUrl}/${thisReport.UniqueName}`} className='btn btn-primary sj-large-button-blue sj-full-width'>View latest Yuzawa Now report</Link>\r\n                    </div>\r\n                }\r\n            </div>\r\n        )\r\n    }\r\n}\r\n\r\nexport default DetailDailyReport","import { useState, useEffect } from 'react'\r\nimport axios from 'axios'\r\nimport Highcharts from 'highcharts'\r\nimport Loader from \"../../../Common/Loader\"\r\nimport HighchartsReact from 'highcharts-react-official'\r\nimport { GetCurrentSeasonName, GetPreviousSeasonName } from '../../../../helpers/Helper'\r\n\r\nconst DailySnowfall = ({ dailyReport }) => {\r\n\r\n    const [dailySnowfallList, setDailySnowfallList] = useState([]);\r\n\r\n    const fetchDailySnowfall = async (nowUniqueName) => {\r\n        axios({\r\n            method: 'POST',\r\n            url: `${window.$baseAPIUrl}/dailyreport/reports/${nowUniqueName}/All`\r\n        }).then(resDailySnowfall => {\r\n            setDailySnowfallList(resDailySnowfall.data)\r\n        })\r\n    };\r\n\r\n    useEffect(() => {\r\n        fetchDailySnowfall(dailyReport.UniqueName)\r\n    }, [dailyReport.UniqueName]);\r\n\r\n    const getSnowfallValue = (season) => {\r\n\r\n        let dailySnowfallData = [];\r\n\r\n        let dailyData = dailySnowfallList.filter(function (currentElement) {\r\n            return (currentElement.Season === season);\r\n        });\r\n\r\n        dailyData.sort(function (a, b) {\r\n            var dateA = new Date(a.Id), dateB = new Date(b.Id)\r\n            return dateA - dateB\r\n        })\r\n\r\n        dailyData.forEach(function (dataItem) {\r\n            let valueCounter = 0;\r\n\r\n            if (dataItem.NowReportMonth < 6) {\r\n                valueCounter = 1\r\n            }\r\n\r\n            dailySnowfallData.push([Date.UTC(1969 + valueCounter, Number(dataItem.NowReportMonth) - 1, dataItem.NowReportDay), dataItem.NewSnowfallResortA])\r\n        })\r\n\r\n        return dailySnowfallData\r\n    }\r\n\r\n    let dailySnowfallDataSeries = [];\r\n    let seasons = [...new Set(dailySnowfallList.map(item => item.Season))].sort().reverse();\r\n    let currentSesson = GetCurrentSeasonName()\r\n    let previousSeason = GetPreviousSeasonName()\r\n\r\n    seasons.forEach(function (item) {\r\n\r\n        if (item > '2011-2012') {\r\n\r\n            let seriesVisible = false\r\n\r\n            if (item === currentSesson || item === previousSeason) {\r\n                seriesVisible = true;\r\n            }\r\n\r\n            dailySnowfallDataSeries.push({\r\n                'name': item,\r\n                'data': getSnowfallValue(item),\r\n                'visible': seriesVisible\r\n            })\r\n        }\r\n    })\r\n\r\n    const options = {\r\n        colors: [\"#DF7401\", \"#0033CC\", \"#3366CC\", \"#3399FF\", \"#000066\", \"#990000\", \"#CC0000\", \"#FF0066\", \"#660033\", \"#8904B1\", \"#FE9A2E\", \"#DF7401\"],\r\n        chart: {\r\n            type: 'spline',\r\n            zoomType: 'x',\r\n            backgroundColor: \"#efefef\",\r\n            borderWidth: 1,\r\n            borderColor: \"#dedede\",\r\n            style: {\r\n                fontFamily: 'Lato'\r\n            }\r\n        },\r\n        title: {\r\n            text: 'Daily observed snowfall at base',\r\n            style: {\r\n                fontSize: '18px',\r\n                fontWeight: 'bold',\r\n                fontFamily: 'Montserrat'\r\n            }\r\n        },\r\n        subtitle: {\r\n            text: 'Drag a section of the graph to zoom in',\r\n            style: {\r\n                fontSize: '15px',\r\n                fontWeight: 'bold',\r\n                fontFamily: 'Lato'\r\n            }\r\n        },\r\n        xAxis: {\r\n            type: 'datetime',\r\n            dateTimeLabelFormats: { // don't display the dummy year\r\n                month: '%b %e ', year: '%b'\r\n            },\r\n            title: {\r\n                text: '',\r\n                style: {\r\n                    fontSize: '15px',\r\n                    fontWeight: 'bold',\r\n                    fontFamily: 'Montserrat'\r\n                }\r\n            }\r\n        },\r\n        legend: {\r\n            itemStyle: {\r\n                fontWeight: 'bold',\r\n                fontSize: '14px'\r\n            }\r\n        },\r\n        yAxis: {\r\n            min: 0,\r\n            title: {\r\n                text: 'Daily observed snowfall (cm)',\r\n                style: {\r\n                    fontSize: '15px',\r\n                    fontWeight: 'bold',\r\n                    fontFamily: 'Montserrat'\r\n                }\r\n            },\r\n            minorTickInterval: 'auto',\r\n            labels: {\r\n                style: {\r\n                    fontSize: '12px',\r\n                    fontWeight: 'bold',\r\n                    fontFamily: 'Montserrat'\r\n                }\r\n            }\r\n        },\r\n        tooltip: {\r\n            headerFormat: '<b>{series.name}</b><br>',\r\n            pointFormat: '{point.x:%b %e}: {point.y}cm'\r\n        },\r\n        exporting:\r\n        {\r\n            enabled: false\r\n        },\r\n        plotOptions: {\r\n            spline: {\r\n                marker: {\r\n                    enabled: true\r\n                }\r\n            }\r\n        },\r\n        series: dailySnowfallDataSeries,\r\n        credits:\r\n        {\r\n            enabled: false\r\n        }\r\n    };\r\n\r\n    if (dailySnowfallList.length <= 0) {\r\n        return (<Loader />)\r\n    }\r\n    else {\r\n        return (\r\n            <div className='sj-para'>\r\n                <HighchartsReact highcharts={Highcharts} options={options} />\r\n                <div className='center-aligned sj-box-lighter-gray p-2'>\r\n                    <h6>Click on each season to add or remove data from other seasons</h6>\r\n                </div>\r\n            </div>\r\n        )\r\n    }\r\n};\r\n\r\nexport default DailySnowfall;","import Highcharts from 'highcharts'\r\nimport HighchartsReact from 'highcharts-react-official'\r\nimport Loader from \"../../../Common/Loader\"\r\n\r\nconst MonthlySnowfall = ({ monthlySnowfall }) => {\r\n\r\n    const getSnowfallValue = (season) => {\r\n\r\n        let monthlySnowfallData = [];\r\n\r\n        let monthlyData = monthlySnowfall.filter(function (currentElement) {\r\n            return (currentElement.Season === season);\r\n        });\r\n\r\n        let novemberData = monthlyData.filter(function (currentElement) {\r\n            return (currentElement.NowReportMonthFull === 'November');\r\n        });\r\n\r\n        if (novemberData.length <= 0) {\r\n            monthlySnowfallData.push(null)\r\n        }\r\n\r\n        monthlyData.forEach(function (dataItem) {\r\n            monthlySnowfallData.push(dataItem.TotalSnow)\r\n        })\r\n\r\n        return monthlySnowfallData;\r\n    }\r\n\r\n    let monthlySnowfallDataSeries = [];\r\n    let seasons = [...new Set(monthlySnowfall.map(item => item.Season))].sort().reverse();\r\n\r\n    seasons.forEach(function (item) {\r\n        if (item > '2011-2012') {\r\n            monthlySnowfallDataSeries.push({\r\n                'name': item,\r\n                'data': getSnowfallValue(item),\r\n                'visible': true\r\n            })\r\n        }\r\n    })\r\n\r\n    const options = {\r\n        colors: [\"#0000CC\", \"#0033CC\", \"#3366CC\", \"#3399FF\", \"#000066\", \"#990000\", \"#CC0000\", \"#FF0066\", \"#660033\", \"#8904B1\", \"#FE9A2E\", \"#DF7401\"],\r\n        chart: {\r\n            /*renderTo: 'newsnowfall-season',*/\r\n            type: 'column',\r\n            backgroundColor: \"#efefef\",\r\n            style: {\r\n                fontFamily: 'Lato'\r\n            },\r\n            borderWidth: 1,\r\n            borderColor: \"#dedede\"\r\n        },\r\n        title: {\r\n            text: 'Monthly observed snowfall at base',\r\n            style: {\r\n                fontSize: '18px',\r\n                fontWeight: 'bold',\r\n                fontFamily: 'Montserrat'\r\n            }\r\n        },\r\n        legend: {\r\n            itemStyle: {\r\n                fontWeight: 'bold',\r\n                fontSize: '14px'\r\n            }\r\n        },\r\n        xAxis: {\r\n            categories: [\r\n                'Nov',\r\n                'Dec',\r\n                'Jan',\r\n                'Feb',\r\n                'Mar',\r\n                'Apr'\r\n            ],\r\n            crosshair: true\r\n        },\r\n        yAxis: {\r\n            min: 0,\r\n            title: {\r\n                text: 'Daily observed snowfall (cm)',\r\n                style: {\r\n                    fontSize: '15px',\r\n                    fontWeight: 'bold',\r\n                    fontFamily: 'Montserrat'\r\n                }\r\n            },\r\n            minorTickInterval: 'auto',\r\n            labels: {\r\n                style: {\r\n                    fontSize: '12px',\r\n                    fontWeight: 'bold'\r\n                }\r\n            }\r\n        },\r\n        tooltip: {\r\n            headerFormat: '<span style=\"font-size:12px;font-weight:bold;\">{point.key}</span><table>',\r\n            pointFormat: '<tr><td style=\"color:{series.color};padding:0\">{series.name}: </td>' +\r\n                '<td style=\"padding:0;text-align:right;\"><b>{point.y} cm</b></td></tr>',\r\n            footerFormat: '</table>',\r\n            shared: true,\r\n            useHTML: true,\r\n            backgroundColor: 'rgba(255,255,255,0.8)',\r\n            shadow: true\r\n        },\r\n        plotOptions: {\r\n            column: {\r\n                pointPadding: 0.2,\r\n                borderWidth: 0\r\n            },\r\n            candlestick: {\r\n                lineColor: '#404048'\r\n            }\r\n        },\r\n        // General\r\n        background2: '#F0F0EA',\r\n        exporting:\r\n        {\r\n            enabled: false\r\n        },\r\n        series: monthlySnowfallDataSeries,\r\n        credits:\r\n        {\r\n            enabled: false\r\n        }\r\n    };\r\n\r\n    if (monthlySnowfall.length <= 0) {\r\n        return (<Loader />)\r\n    }\r\n    else {\r\n        return (\r\n            <div className='sj-para'>\r\n                <HighchartsReact highcharts={Highcharts} options={options} />\r\n                <div className='center-aligned sj-box-lighter-gray p-2'>\r\n                    <h6>Click on each season to add or remove data from other seasons</h6>\r\n                </div>\r\n            </div>\r\n        )\r\n    }\r\n};\r\n\r\nexport default MonthlySnowfall;","import { Link } from 'react-router-dom'\r\nimport Loader from \"../../../Common/Loader\"\r\n\r\nconst MonthlySnowfallTable = ({ monthlySnowfall, nowUniqueName }) => {\r\n\r\n    const getSnowfallValue = (season) => {\r\n        let monthlySnowfallData = [];\r\n\r\n        let monthlyData = monthlySnowfall.filter(function (currentElement) {\r\n            return (currentElement.Season === season);\r\n        });\r\n\r\n        monthlyData.forEach(function (dataItem) {\r\n            let totalSeasonSnowfall = dataItem.TotalSnow + dataItem.PrevMonthTotalSnow1 + dataItem.PrevMonthTotalSnow2 + dataItem.PrevMonthTotalSnow3 + dataItem.PrevMonthTotalSnow4 + dataItem.PrevMonthTotalSnow5 + dataItem.PrevMonthTotalSnow6\r\n\r\n            monthlySnowfallData.push({ 'month': dataItem.NowReportMonthFull, 'newSnowfall': dataItem.TotalSnow, 'seasonSnowfall': totalSeasonSnowfall })\r\n        })\r\n\r\n        return monthlySnowfallData;\r\n    }\r\n\r\n    let monthlySnowfallData = [];\r\n    let seasons = [...new Set(monthlySnowfall.map(item => item.Season))].sort().reverse();\r\n\r\n    seasons.forEach(function (item) {\r\n        if (item > '2011-2012') {\r\n            monthlySnowfallData.push({\r\n                'name': item,\r\n                'data': getSnowfallValue(item)\r\n            })\r\n        }\r\n    })\r\n\r\n    const GetNovemberBlankCells = (monthlyData) => {\r\n        let novemberData = monthlyData.filter(function (currentElement) {\r\n            return (currentElement.month === 'November');\r\n        });\r\n\r\n        if (novemberData.length <= 0) {\r\n            return (\r\n                <td className=\"center-aligned\">-</td>\r\n            )\r\n        }\r\n        else {\r\n            return (<></>)\r\n        }\r\n    }\r\n\r\n    const GetBlankCells = (monthlyData) => {\r\n        let novemberData = monthlyData.filter(function (currentElement) {\r\n            return (currentElement.month === 'November');\r\n        });\r\n\r\n        let blankCells = monthlyData.length\r\n\r\n        if (novemberData.length <= 0) {\r\n            blankCells = blankCells + 1\r\n        }\r\n\r\n        return (\r\n            <>\r\n                {(() => {\r\n                    const rows = [];\r\n                    for (let i = 0; i < (6 - blankCells); i++) {\r\n                        rows.push(<td className=\"center-aligned\" key={i}>-</td>);\r\n                    }\r\n                    return rows;\r\n                })()}\r\n            </>\r\n        )\r\n    }\r\n\r\n    if (monthlySnowfall.length <= 0) {\r\n        return (<Loader />)\r\n    }\r\n    else {\r\n        return (\r\n            <div className='table-container overflow-x'>\r\n                <table className='table-container__table sj-list-table monthly-snow-fall'>\r\n                    <thead>\r\n                        <tr>\r\n                            <th className=\"td-table-header center-aligned\">Season</th>\r\n                            <th className=\"td-table-header\"><span className=\"d-none d-lg-block\">November</span><span className=\"d-lg-none\">NOV</span></th>\r\n                            <th className=\"td-table-header\"><span className=\"d-none d-lg-block\">December</span><span className=\"d-lg-none\">DEC</span></th>\r\n                            <th className=\"td-table-header\"><span className=\"d-none d-lg-block\">January</span><span className=\"d-lg-none\">JAN</span></th>\r\n                            <th className=\"td-table-header\"><span className=\"d-none d-lg-block\">February</span><span className=\"d-lg-none\">FEB</span></th>\r\n                            <th className=\"td-table-header\"><span className=\"d-none d-lg-block\">March</span><span className=\"d-lg-none\">MAR</span></th>\r\n                            <th className=\"td-table-header\"><span className=\"d-none d-lg-block\">April</span><span className=\"d-lg-none\">APR</span></th>\r\n                        </tr>\r\n                    </thead>\r\n                    <tbody>\r\n                        {monthlySnowfallData.map(season => (\r\n                            <tr key={season.name}>\r\n                                <td className='td-first-column'><Link to={`${window.$baseDailyReportUrl}/${nowUniqueName}/season/${season.name}`}>{season.name}</Link></td>\r\n                                {GetNovemberBlankCells(season.data)}\r\n                                {season.data.map((snowdata, index) => (\r\n                                    <td key={index} className=\"center-aligned\">\r\n                                        <div className='td-monthly-snowfall'>{snowdata.newSnowfall}cm</div>\r\n                                        <div className='td-season-snowfall'>[{snowdata.seasonSnowfall}cm]</div>\r\n                                    </td>\r\n                                ))}\r\n                                {GetBlankCells(season.data)}\r\n                            </tr>\r\n                        ))}\r\n                    </tbody>\r\n                </table>\r\n            </div>\r\n        )\r\n    }\r\n};\r\n\r\nexport default MonthlySnowfallTable;","import { useState, useEffect } from 'react'\r\nimport axios from 'axios'\r\nimport Loader from \"../../../Common/Loader\"\r\nimport Highcharts from 'highcharts'\r\nimport HighchartsReact from 'highcharts-react-official'\r\n\r\nconst SeasonSnowfall = ({ dailyReport }) => {\r\n\r\n    const [seasonSnowfallList, setSeasonSnowfallList] = useState([]);\r\n\r\n    const fetchSeasonSnowfall = async (nowId) => {\r\n        axios({\r\n            method: 'POST',\r\n            url: `${window.$baseAPIUrl}/dailyreport/reports/season-snowfall/All/${nowId}`\r\n        }).then(resSeasonSnowfall => {\r\n            setSeasonSnowfallList(resSeasonSnowfall.data)\r\n        })\r\n    };\r\n\r\n    useEffect(() => {\r\n        fetchSeasonSnowfall(dailyReport.Now_Id)\r\n    }, [dailyReport.Now_Id]);\r\n\r\n    const getSnowfallValue = (season) => {\r\n\r\n        let seasonSnowfallData = [];\r\n\r\n        let seasonData = seasonSnowfallList.filter(function (currentElement) {\r\n            return (currentElement.Season === season);\r\n        });\r\n\r\n        seasonData.forEach(function (dataItem) {\r\n\r\n            seasonSnowfallData.push(dataItem.TotalSnow)\r\n        })\r\n\r\n        return seasonSnowfallData;\r\n    }\r\n\r\n    let seasonSnowfallDataSeries = [];\r\n    let seasons = [...new Set(seasonSnowfallList.map(item => item.Season))].sort().reverse();\r\n\r\n    seasons.forEach(function (item) {\r\n        if (item > '2011-2012') {\r\n            seasonSnowfallDataSeries.push({\r\n                'name': item,\r\n                'data': getSnowfallValue(item),\r\n                'visible': true\r\n            })\r\n        }\r\n    })\r\n\r\n    const options = {\r\n        colors: [\"#0000CC\", \"#0033CC\", \"#3366CC\", \"#3399FF\", \"#000066\", \"#990000\", \"#CC0000\", \"#FF0066\", \"#660033\", \"#8904B1\", \"#FE9A2E\", \"#DF7401\"],\r\n        chart: {\r\n            type: 'column',\r\n            backgroundColor: \"#efefef\",\r\n            style: {\r\n                fontFamily: 'Lato'\r\n            },\r\n            borderWidth: 1,\r\n            borderColor: \"#dedede\"\r\n        },\r\n        title: {\r\n            text: 'Season total observed snowfall at base',\r\n            style: {\r\n                fontSize: '18px',\r\n                fontWeight: 'bold',\r\n                fontFamily: 'Montserrat'\r\n            }\r\n        },\r\n        legend: {\r\n            itemStyle: {\r\n                fontWeight: 'bold',\r\n                fontSize: '14px'\r\n            }\r\n        },\r\n        xAxis: {\r\n            categories: [''\r\n            ],\r\n            crosshair: true\r\n        },\r\n        yAxis: {\r\n            min: 0,\r\n            title: {\r\n                text: 'Season total observed snowfall (cm)',\r\n                style: {\r\n                    fontSize: '15px',\r\n                    fontWeight: 'bold',\r\n                    fontFamily: 'Montserrat'\r\n                }\r\n            },\r\n            minorTickInterval: 'auto',\r\n            labels: {\r\n                style: {\r\n                    fontSize: '12px',\r\n                    fontWeight: 'bold'\r\n                }\r\n            }\r\n        },\r\n        tooltip: {\r\n        },\r\n        plotOptions: {\r\n            column: {\r\n                pointPadding: 0.2,\r\n                borderWidth: 0\r\n            },\r\n            candlestick: {\r\n                lineColor: '#404048'\r\n            }\r\n        },\r\n        // General\r\n        background2: '#F0F0EA',\r\n        exporting:\r\n        {\r\n            enabled: false\r\n        },\r\n        series: seasonSnowfallDataSeries,\r\n        credits:\r\n        {\r\n            enabled: false\r\n        }\r\n    };\r\n\r\n    if (seasonSnowfallList.length <= 0) {\r\n        return (<Loader />)\r\n    }\r\n    else {\r\n        return (\r\n            <div className='sj-para'>\r\n                <HighchartsReact highcharts={Highcharts} options={options} />\r\n                <div className='center-aligned sj-box-lighter-gray p-2'>\r\n                    <h6>Click on each season to add or remove data from other seasons</h6>\r\n                </div>\r\n            </div>\r\n        )\r\n    }\r\n};\r\n\r\nexport default SeasonSnowfall;","import { useState, useEffect } from 'react'\r\nimport { Link } from 'react-router-dom'\r\nimport axios from 'axios'\r\nimport Loader from \"../../../Common/Loader\"\r\nimport { GetTotalMonthDays, GetCurrentSeasonName } from '../../../../helpers/Helper'\r\n\r\nconst DaylySnowfallTable = ({ dailyReport }) => {\r\n\r\n    const [dailySnowfallList, setDailySnowfallList] = useState([]);\r\n\r\n    const fetchDailySnowfall = async (nowUniqueName) => {\r\n        axios({\r\n            method: 'POST',\r\n            url: `${window.$baseAPIUrl}/dailyreport/reports/${nowUniqueName}/All`\r\n        }).then(resDailySnowfall => {\r\n            setDailySnowfallList(resDailySnowfall.data)\r\n        })\r\n    };\r\n\r\n    useEffect(() => {\r\n        fetchDailySnowfall(dailyReport.UniqueName)\r\n    }, [dailyReport.UniqueName]);\r\n\r\n    const getMonthlySeasonSnowfallValue = (month) => {\r\n        let monthlySeasonSnowfallData = []\r\n\r\n        let seasons = [...new Set(dailySnowfallList.map(item => item.Season))].sort().reverse();\r\n\r\n        seasons.forEach(function (season) {\r\n            if (season > '2011-2012') {\r\n                let dailySnowfallData = []\r\n\r\n                let dailyReportData = dailySnowfallList.filter(function (currentElement) {\r\n                    return (currentElement.NowReportMonthFull === month && currentElement.Season === season);\r\n                });\r\n\r\n                dailyReportData.forEach(function (dataItem) {\r\n                    dailySnowfallData.push({ 'day': dataItem.NowReportDay, 'dailySnowfall': dataItem.NewSnowfallResortA, 'reportDate': dataItem.NowReportDayTh + '-' + dataItem.NowReportMonthFull + '-' + dataItem.NowReportYear })\r\n                })\r\n\r\n                monthlySeasonSnowfallData.push({ 'seasonName': season, 'seasonDailySnowfall': dailySnowfallData })\r\n            }\r\n        })\r\n\r\n        return monthlySeasonSnowfallData;\r\n    }\r\n\r\n    let dailySnowfallDataList = [];\r\n    let months = ['November', 'December', 'January', 'February', 'March', 'April'];\r\n\r\n    months.forEach(function (month) {\r\n        dailySnowfallDataList.push({\r\n            'name': month,\r\n            'seasonData': getMonthlySeasonSnowfallValue(month)\r\n        })\r\n    })\r\n\r\n    let totalDays = 0\r\n\r\n    const runCallback = (cb) => {\r\n        return cb();\r\n    };\r\n\r\n    const GetDailyData = (monthlyData, day) => {\r\n        let snowData = monthlyData.filter(function (elm) {\r\n            return (elm.day === day);\r\n        });\r\n\r\n        if (snowData.length > 0) {\r\n            return snowData[0].dailySnowfall;\r\n        } else {\r\n            return '';\r\n        }\r\n    };\r\n\r\n    const GetDailyDataCell = (monthlyData, day, seasonName) => {\r\n        let snowData = monthlyData.filter(function (elm) {\r\n            return (elm.day === day);\r\n        });\r\n\r\n        if (snowData.length > 0) {\r\n            return (<td key={day} className={`${seasonName === currentSeason ? \"sj-box-light-red\" : \"\"}`}><Link to={`${window.$baseDailyReportUrl}/${dailyReport.UniqueName}/archives/${snowData[0].reportDate}`}>{snowData[0].dailySnowfall}</Link></td>);\r\n        } else {\r\n            return (<td key={day} className={`${seasonName === currentSeason ? \"sj-box-light-red\" : \"\"}`}></td>);\r\n        }\r\n    };\r\n\r\n    const GetDayTh = (day) => {\r\n        let dayTh = ''\r\n\r\n        switch (day) {\r\n            case 1:\r\n            case 21:\r\n            case 31:\r\n                dayTh = 'st'\r\n                break;\r\n            case 2:\r\n            case 22:\r\n                dayTh = 'nd'\r\n                break;\r\n            case 3:\r\n            case 23:\r\n                dayTh = 'rd'\r\n                break;\r\n            default:\r\n                dayTh = 'th'\r\n        }\r\n\r\n        return day + dayTh\r\n    };\r\n\r\n    const currentSeason = GetCurrentSeasonName()\r\n\r\n    if (dailySnowfallList.length <= 0) {\r\n        return (<Loader />)\r\n    }\r\n    else {\r\n        return (\r\n            <div className='empty-row'>\r\n                <div className='center-aligned mt-5'>\r\n                    <h5>Click on the dates in the tables below to view each daily report</h5>\r\n                </div>\r\n                {dailySnowfallDataList.map((monthlyData, index) => (\r\n                    <div key={index} className='empty-row' style={{ overflowX: 'auto' }}>\r\n                        <div>\r\n                            <h3 className='center-aligned'>{monthlyData.name}</h3>\r\n                        </div>\r\n                        <div className='table-container'>\r\n                            <table className='table-container__table sj-data-table'>\r\n                                <thead>\r\n                                    <tr>\r\n                                        <th>Season</th>\r\n                                        {runCallback(() => {\r\n                                            totalDays = GetTotalMonthDays(monthlyData.name)\r\n                                            const row = [];\r\n                                            for (var i = 1; i < (totalDays + 1); i++) {\r\n                                                row.push(<th key={i}>{GetDayTh(i)}</th>);\r\n                                            }\r\n                                            return row;\r\n                                        })}\r\n                                    </tr>\r\n                                </thead>\r\n                                <tbody>\r\n                                    {monthlyData.seasonData.map((seasonSnowData, key) => (\r\n                                        <tr key={key} >\r\n                                            <td className={`td-first-column ${seasonSnowData.seasonName === currentSeason ? \"sj-box-red\" : \"\"}`}><Link to={`${window.$baseDailyReportUrl}/${dailyReport.UniqueName}/season/${seasonSnowData.seasonName}`}>{seasonSnowData.seasonName}</Link></td>\r\n                                            {runCallback(() => {\r\n                                                const row = [];\r\n                                                for (var i = 1; i < (totalDays + 1); i++) {\r\n                                                    /*row.push(<td key={i} className={`${seasonSnowData.seasonName === currentSeason ? \"sj-box-light-red\" : \"\"}`}>{\r\n                                                        GetDailyData(seasonSnowData.seasonDailySnowfall, i)\r\n                                                    }</td>);*/\r\n                                                    row.push(GetDailyDataCell(seasonSnowData.seasonDailySnowfall, i, seasonSnowData.seasonName));\r\n                                                }\r\n                                                return row;\r\n                                            })}\r\n                                        </tr>\r\n                                    ))}\r\n                                </tbody>\r\n                            </table>\r\n                        </div>\r\n                    </div>\r\n                ))\r\n                }\r\n            </div>\r\n        )\r\n    }\r\n};\r\n\r\nexport default DaylySnowfallTable;","import { useState, useEffect } from 'react'\r\nimport axios from 'axios'\r\nimport { Link } from 'react-router-dom'\r\nimport { Helmet } from 'react-helmet'\r\nimport DailySnowfall from './DailySnowfall'\r\nimport MonthlySnowfall from './MonthlySnowfall'\r\nimport MonthlySnowfallTable from './MonthlySnowfallTable'\r\nimport SeasonSnowfall from './SeasonSnowfall'\r\nimport DaylySnowfallTable from './DaylySnowfallTable'\r\nimport { GetCurrentSeasonName } from '../../../../helpers/Helper'\r\n\r\nconst ObservedSnowfallAnalysisContainer = ({ dailyReport }) => {\r\n\r\n    const currentSeason = GetCurrentSeasonName()\r\n    const [monthlySnowfall, setMonthlySnowfall] = useState([]);\r\n\r\n    const fetchMonthlySnowfallWithPrevMonth = async (nowId) => {\r\n        axios({\r\n            method: 'POST',\r\n            url: `${window.$baseAPIUrl}/dailyreport/reports/monthly-snowfall-with-prev-month/${nowId}`\r\n        }).then(resMonthlySnowfallWithPrevMonth => {\r\n            setMonthlySnowfall(resMonthlySnowfallWithPrevMonth.data)\r\n        })\r\n    };\r\n\r\n    useEffect(() => {\r\n        fetchMonthlySnowfallWithPrevMonth(dailyReport.Now_Id)\r\n    }, [dailyReport.Now_Id]);\r\n\r\n    return (\r\n        <div>\r\n            <Helmet>\r\n                <title>{dailyReport.Name} | Snowfall data and analysis from from {dailyReport.AreaName} | SnowJapan</title>\r\n                <meta name=\"description\" content={`Daily and monthly observed snowfall data and analysis from the ${dailyReport.AreaName} of Japan. Snowfall is observed from base areas.`} />\r\n            </Helmet>\r\n            <h3>Snowfall analysis</h3>\r\n            <div className='sj-para'>\r\n                All data is the snowfall observed by our reporters around base areas. Please read <Link to={`${window.$baseDailyReportUrl}/${dailyReport.UniqueName}/about-daily-reports`}>this</Link> to learn more about our reporting.\r\n            </div>\r\n            <DailySnowfall dailyReport={dailyReport} />\r\n            <MonthlySnowfall monthlySnowfall={monthlySnowfall} />\r\n            <MonthlySnowfallTable monthlySnowfall={monthlySnowfall} nowUniqueName={dailyReport.UniqueName} />\r\n            <SeasonSnowfall dailyReport={dailyReport} />\r\n            <DaylySnowfallTable dailyReport={dailyReport} season={currentSeason} />\r\n        </div>\r\n    )\r\n};\r\n\r\nexport default ObservedSnowfallAnalysisContainer;","import { useState, useEffect } from 'react'\r\nimport axios from 'axios'\r\nimport { Helmet } from 'react-helmet'\r\nimport { DropdownButton, Dropdown } from 'react-bootstrap'\r\nimport Loader from \"../../../Common/Loader\"\r\nimport SnowChart from '../../../Common/SnowChart'\r\nimport SeasonSnowChart from '../../../Common/SeasonSnowChart'\r\n\r\nconst SnowDepthAnalysisContainer = ({ dailyReport }) => {\r\n    const [snowData, setSnowData] = useState([])\r\n    const [skiAreaName, setSkiAreaName] = useState(dailyReport.ResortAName)\r\n    const [dailyReportSkiAreas, setDailyReportSkiAreas] = useState([])\r\n    const [showChart, setShowChart] = useState(true)\r\n\r\n    const fetchSnowData = async (resortId) => {\r\n        axios({\r\n            method: 'POST',\r\n            url: `${window.$baseAPIUrl}/skiarea/snowfall/${resortId}`\r\n        }).then(dataSnowData => {\r\n\r\n            if (dataSnowData.data.length > 0) {\r\n\r\n                let thisAllSnowData = dataSnowData.data\r\n\r\n                let thisSnowData = thisAllSnowData.filter(function (currentElement) {\r\n                    return (currentElement.SnowDepth !== 999 && currentElement.Season !== '-');\r\n                });\r\n\r\n                setSnowData(thisSnowData)\r\n                setShowChart(true)\r\n            }\r\n        })\r\n    };\r\n\r\n    const fetchDailyReportSkiAreas = async (dailyReportId) => {\r\n        axios({\r\n            method: 'POST',\r\n            url: `${window.$baseAPIUrl}/dailyreport/dailyreportskiareas/${dailyReportId}`\r\n        }).then(dailyReportSkiAreaData => {\r\n            setDailyReportSkiAreas(dailyReportSkiAreaData.data)\r\n        })\r\n    };\r\n\r\n    useEffect(() => {\r\n        fetchSnowData(dailyReport.ResortAId)\r\n        fetchDailyReportSkiAreas(dailyReport.Now_Id)\r\n    }, [dailyReport]);\r\n\r\n    const ResortSelected = (evtKey, evt) => {\r\n\r\n        setShowChart(false)\r\n        let selectedSkiAreaId = evtKey;\r\n\r\n        let selectedSkiAreaList = dailyReportSkiAreas.filter(function (currentElement) {\r\n            return (currentElement.Resort_Id === parseInt(selectedSkiAreaId));\r\n        });\r\n\r\n        setSkiAreaName(selectedSkiAreaList[0].ResortName)\r\n\r\n        fetchSnowData(selectedSkiAreaId)\r\n    }\r\n\r\n    const chartOptions = {\r\n        chart: {\r\n            type: 'area',\r\n            zoomType: 'x',\r\n            backgroundColor: \"#efefef\",\r\n            borderWidth: 1,\r\n            borderColor: \"#dedede\",\r\n            style: {\r\n                fontFamily: 'Lato'\r\n            }\r\n        },\r\n        title: {\r\n            text: 'Official snow depth data',\r\n            style: {\r\n                fontSize: '18px',\r\n                fontWeight: 'bold',\r\n                fontFamily: 'Montserrat'\r\n            }\r\n        },\r\n        subtitle: {\r\n            text: 'Drag a section of the graph to zoom in',\r\n            style: {\r\n                fontSize: '15px',\r\n                fontWeight: 'bold',\r\n                fontFamily: 'Lato'\r\n            }\r\n        },\r\n        xAxis: {\r\n            type: 'datetime',\r\n            dateTimeLabelFormats: { // don't display the dummy year\r\n                month: '%b %e ', year: '%b'\r\n            },\r\n            title: {\r\n                text: '',\r\n                enabled: false\r\n            }\r\n        },\r\n        legend: {\r\n            itemStyle: {\r\n                fontWeight: 'bold',\r\n                fontSize: '14px'\r\n            }\r\n        },\r\n        yAxis: {\r\n            title: {\r\n                text: 'Official snow depth (cm)',\r\n                style: {\r\n                    fontSize: '15px',\r\n                    fontWeight: 'bold',\r\n                    fontFamily: 'Montserrat'\r\n                }\r\n            },\r\n            min: 0,\r\n            labels: {\r\n                style: {\r\n                    fontSize: '12px',\r\n                    fontWeight: 'bold',\r\n                    fontFamily: 'Montserrat'\r\n                }\r\n            }\r\n        },\r\n        tooltip: {\r\n            headerFormat: '<b>{series.name}</b><br>',\r\n            pointFormat: '{point.x:%b %e}: {point.y}cm'\r\n        },\r\n        exporting:\r\n        {\r\n            enabled: false\r\n        },\r\n        plotOptions: {\r\n            area: {\r\n                marker: {\r\n                    enabled: false,\r\n                    symbol: 'circle',\r\n                    radius: 3,\r\n                    states: {\r\n                        hover: {\r\n                            enabled: true\r\n                        }\r\n                    }\r\n                },\r\n                lineWidth: 1,\r\n                states: {\r\n                    hover: {\r\n                        lineWidth: 3\r\n                    }\r\n                },\r\n                threshold: null\r\n            }\r\n        },\r\n        credits:\r\n        {\r\n            enabled: false\r\n        }\r\n    };\r\n\r\n    if (snowData.length <= 0) {\r\n        return (<Loader />)\r\n    }\r\n    else {\r\n        let seasons = [...new Set(snowData.map(item => item.Season))].sort().reverse();\r\n\r\n        return (\r\n            <>\r\n                <Helmet>\r\n                    <title>{dailyReport.Name} | Individual ski area official snow depth data from {dailyReport.AreaName} | SnowJapan</title>\r\n                    <meta name=\"description\" content={`Official snow depth data for ski areas in the ${dailyReport.AreaName} of Japan. Snowfall is observed from base areas.`} />\r\n                </Helmet>\r\n                {(showChart) &&\r\n                    <div className='empty-row'>\r\n                        <h3>Ski area snow depth data</h3>\r\n                        <div>\r\n                            The data published on this page is official snow depth data, as originally reported by the ski areas. Please note that each ski area has its own method of measuring snow. SnowJapan does not control this data.\r\n                        </div>\r\n                        <div className='mt-3 mb-4'>\r\n                            On the top graph click on each season name to toggle on/off and compare seasons.\r\n                        </div>\r\n                        <div className='sj-row-100'>\r\n                            <DropdownButton align=\"start\" title={skiAreaName} onSelect={ResortSelected} id=\"snow-depth-resort\" className='sj-large-font-button'>\r\n                                {dailyReportSkiAreas.map((item, index) => (\r\n                                    <Dropdown.Item eventKey={item.Resort_Id} key={index}>{item.ResortName}</Dropdown.Item>\r\n                                ))}\r\n                            </DropdownButton>\r\n                        </div>\r\n                        <SnowChart resortName={skiAreaName} snowData={snowData} />\r\n                        {seasons.map((season, index) => (\r\n                            <div key={index}>\r\n                                <SeasonSnowChart resortName={skiAreaName} snowData={snowData} season={season} chartOptions={chartOptions} index={index} />\r\n                            </div>\r\n                        ))}\r\n                    </div>\r\n                }\r\n            </>\r\n        )\r\n    }\r\n};\r\n\r\nexport default SnowDepthAnalysisContainer;","import { useState } from 'react'\r\nimport { Button, Collapse } from 'react-bootstrap'\r\nimport { Helmet } from 'react-helmet'\r\n\r\nconst WeatherContainer = ({ dailyReport }) => {\r\n    const [open, setOpen] = useState(false);\r\n\r\n    return (\r\n        <div>\r\n            <Helmet>\r\n                <title>Yuzawa Now | Real-time snowfall resources, snow forecasts and weather maps from {dailyReport.AreaName} | SnowJapan</title>\r\n                <meta name=\"description\" content={`Real time snowfall maps, snow and weather forecasts and weather maps for ${dailyReport.AreaName} of Japan.`} />\r\n            </Helmet>\r\n            <h3>Weather</h3>\r\n            <div>\r\n                The <strong>Japan Meteorological Agency (JMA)</strong> publishes various real-time snowfall, weather and forecast related resources. We introduce various resources for the region covered by {dailyReport.Name} located on this page. All links open in a new window. All maps are centred on the region.\r\n            </div>\r\n            <div className='sj-para sj-red-text'>\r\n                Important: The below information is provided to give a general insight into the weather and snowfall conditions in the region. It is not ski area specific. Actual snowfall is often more than shown, especially at higher elevations.\r\n            </div>\r\n            <div className=\"sj-row\">\r\n                <div>\r\n                    <div className=\"sj-box sj-box-dark-gray sj-round-full center-aligned mt-2\">\r\n                        <h4>{dailyReport.Name} region</h4>\r\n                    </div>\r\n                    <div className=\"row sj-row-no-margin-padding sj-no-bg\">\r\n                        <div className=\"col-lg-3 left-aligned-jma sj-row-no-margin-padding\">\r\n                            <div className='sj-box sj-box-dark-blue sj-round-full m-2 p-2 pt-3 pb-3'>\r\n                                <h5>Town information</h5>\r\n                            </div>\r\n                        </div>\r\n                        <div className=\"col-lg-3 left-aligned sj-row-no-margin-padding\">\r\n                            <div className='sj-box-lighter-gray sj-round-full m-2 p-2 pt-3 pb-3'>\r\n                                <h5><a href={`https://www.jma.go.jp/bosai/en_snow/#zoom:12/lat:${dailyReport.Location_Latitude}/lon:${dailyReport.Location_Longitude}/colordepth:normal/elements:snowd`} target='_blank' rel='noreferrer'>Snow depth</a></h5>\r\n                            </div>\r\n                        </div>\r\n                        <div className=\"col-lg-3 left-aligned sj-row-no-margin-padding\">\r\n                            <div className='sj-box-lighter-gray sj-round-full m-2 p-2 pt-3 pb-3'>\r\n                                <h5><a href={`${dailyReport.HotelBookingLink1}`} target='_blank' rel='noreferrer'>Weather Advisory</a></h5>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                    <div className=\"row sj-row-no-margin-padding sj-no-bg\">\r\n                        <div className=\"col-lg-3 left-aligned-jma sj-row-no-margin-padding\">\r\n                            <div className='sj-box sj-box-dark-blue sj-round-full m-2 p-2 pt-3 pb-3'>\r\n                                <h5>Precipitation analysis</h5>\r\n                            </div>\r\n                        </div>\r\n                        <div className=\"col-lg-3 left-aligned sj-row-no-margin-padding\">\r\n                            <div className='sj-box-lighter-gray sj-round-full m-2 p-2 pt-3 pb-3'>\r\n                                <h5><a href={`https://www.jma.go.jp/bosai/en_nowc/#zoom:12/lat:${dailyReport.Location_Latitude}/lon:${dailyReport.Location_Longitude}/colordepth:deep/elements:hrpns&slmcs&amds_rain10m`} target='_blank' rel='noreferrer'>Now</a></h5>\r\n                            </div>\r\n                        </div>\r\n                        <div className=\"col-lg-3 left-aligned sj-row-no-margin-padding\">\r\n                            <div className='sj-box-lighter-gray sj-round-full m-2 p-2 pt-3 pb-3'>\r\n                                <h5><a href={`https://www.jma.go.jp/bosai/en_kaikotan/#zoom:12/lat:${dailyReport.Location_Latitude}/lon:${dailyReport.Location_Longitude}/colordepth:normal/#zoom:6/elements:slmcs&rasrf24h`} target='_blank' rel='noreferrer'>24-hour</a></h5>\r\n                            </div>\r\n                        </div>\r\n                        <div className=\"col-lg-3 left-aligned sj-row-no-margin-padding\">\r\n                            <div className='sj-box-lighter-gray sj-round-full m-2 p-2 pt-3 pb-3'>\r\n                                <h5><a href={`https://www.jma.go.jp/bosai/en_snow/#zoom:12/lat:${dailyReport.Location_Latitude}/lon:${dailyReport.Location_Longitude}/colordepth:deep/elements:snowd`} target='_blank' rel='noreferrer'>Snow depth</a></h5>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                    <div className=\"row sj-row-no-margin-padding sj-no-bg\">\r\n                        <div className=\"col-lg-3 left-aligned-jma sj-row-no-margin-padding\">\r\n                            <div className='sj-box sj-box-dark-blue sj-round-full m-2 p-2 pt-3 pb-3'>\r\n                                <h5>Snowfall</h5>\r\n                            </div>\r\n                        </div>\r\n                        <div className=\"col-lg-3 left-aligned sj-row-no-margin-padding\">\r\n                            <div className='sj-box-lighter-gray sj-round-full m-2 p-2 pt-3 pb-3'>\r\n                                <h5><a href={`https://www.jma.go.jp/bosai/en_snow/#zoom:12/lat:${dailyReport.Location_Latitude}/lon:${dailyReport.Location_Longitude}/colordepth:deep/elements:snowf24h`} target='_blank' rel='noreferrer'>24-hour snowfall</a></h5>\r\n                            </div>\r\n                        </div>\r\n                        <div className=\"col-lg-3 left-aligned sj-row-no-margin-padding\">\r\n                            <div className='sj-box-lighter-gray sj-round-full m-2 p-2 pt-3 pb-3'>\r\n                                <h5><a href={`https://www.jma.go.jp/bosai/en_snow/#zoom:12/lat:${dailyReport.Location_Latitude}/lon:${dailyReport.Location_Longitude}/colordepth:deep/elements:snowf48h`} target='_blank' rel='noreferrer'>48-hour snowfall</a></h5>\r\n                            </div>\r\n                        </div>\r\n                        <div className=\"col-lg-3 left-aligned sj-row-no-margin-padding\">\r\n                            <div className='sj-box-lighter-gray sj-round-full m-2 p-2 pt-3 pb-3'>\r\n                                <h5><a href={`https://www.jma.go.jp/bosai/en_snow/#zoom:12/lat:${dailyReport.Location_Latitude}/lon:${dailyReport.Location_Longitude}/colordepth:deep/elements:snowf72h`} target='_blank' rel='noreferrer'>72-hour snowfall</a></h5>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            <div className=\"sj-row\">\r\n                The JMA is an agency of the Ministry of Land, Infrastructure, Transport and Tourism.\r\n            </div>\r\n            <div className=\"sj-row\">\r\n                <h3 className='mt-5'>About weather forecasts</h3>\r\n                We do not specifically recommend any detailed weather forecasting service for all regions of Japan. However, many forecasts, both in Japanese and English, are free to use and widely available. Such services offer varying accuracy, with some seemingly more accurate for some areas of Japan than others.\r\n            </div>\r\n            <div className=\"sj-box sj-box-dark-gray sj-round-full center-aligned mt-5\">\r\n                <h4>Weather map</h4>\r\n            </div>\r\n            <div className=\"sj-row\">\r\n                <div className=\"row sj-row\">\r\n                    <Button\r\n                        onClick={() => setOpen(!open)}\r\n                        aria-expanded={open} className='w-100 mb-1'><h5 className='mt-1'>{open ? 'Click to hide map -' : 'Click to view map +'}</h5></Button>\r\n                    <Collapse in={open}>\r\n                        <div className='ratio ratio-16x9'>\r\n                            {(open) &&\r\n                                <iframe title='Various animated forecasts' src={`${dailyReport.WeatherMapUrl}`} allowFullScreen></iframe>\r\n                            }\r\n                        </div>\r\n                    </Collapse>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    )\r\n};\r\n\r\nexport default WeatherContainer;","import { useState, useEffect } from 'react'\r\nimport axios from 'axios'\r\nimport Loader from \"../../../Common/Loader\"\r\n\r\nconst SeasonSummary = ({ dailyReport, seasonName }) => {\r\n\r\n    const seasonNameParts = seasonName.split('-')\r\n\r\n    const [dailyReportSeasonSummary, setDailyReportSeasonSummary] = useState([]);\r\n\r\n    const fetchSeasonSummary = async (nowId, season) => {\r\n        axios({\r\n            method: 'POST',\r\n            url: `${window.$baseAPIUrl}/dailyreport/reports/archive/${nowId}/${season}`\r\n        }).then(resSeasonSummary => {\r\n            console.log(resSeasonSummary.data)\r\n            setDailyReportSeasonSummary(resSeasonSummary.data)\r\n        })\r\n    };\r\n\r\n    useEffect(() => {\r\n        if (seasonName > '2011-2012') {\r\n            fetchSeasonSummary(dailyReport.Now_Id, seasonName)\r\n        }\r\n    }, [dailyReport.Now_Id, seasonName]);\r\n\r\n    if (dailyReportSeasonSummary.length <= 0) {\r\n        return (<Loader />)\r\n    }\r\n    else {\r\n        return (\r\n            <div className='empty-row'>\r\n                <div className=\"sj-box sj-box-dark-gray sj-round-half center-aligned mt-2\">\r\n                    <h4>Observed snowfall during the {seasonName} winter season</h4>\r\n                </div>\r\n                {dailyReportSeasonSummary.TotalSnowfall > 0 &&\r\n                    <div className=\"sj-table-container sj-full-width sj-no-margin\">\r\n                        <table className=\"sj-table sj-table-season-summary\">\r\n                            <tbody>\r\n                                <tr>\r\n                                    <td>Total snowfall over the season</td>\r\n                                    <td colSpan={2}>{dailyReportSeasonSummary.TotalSnowfall}cm</td>\r\n                                </tr>\r\n                                <tr>\r\n                                    <td>Number of days snowfall observed at base</td>\r\n                                    <td colSpan={2}>{dailyReportSeasonSummary.TotalSnowfallDays} days</td>\r\n                                </tr>\r\n                                <tr>\r\n                                    <td>Most observed snowfall in 1 day</td>\r\n                                    <td className='left-aligned'>{dailyReportSeasonSummary.MostDailySnowfall}cm</td>\r\n                                    <td>[{dailyReportSeasonSummary.MostDailySnowfallDate}]</td>\r\n                                </tr>\r\n                                <tr>\r\n                                    <td>November {seasonNameParts[0]} snowfall</td>\r\n                                    <td className='left-aligned'>{dailyReportSeasonSummary.NovemberSnowfall}cm</td>\r\n                                    <td>Reported on <strong>{dailyReportSeasonSummary.NovemberSnowfallDays}</strong> days in November {seasonNameParts[0]}</td>\r\n                                </tr>\r\n                                <tr>\r\n                                    <td>December {seasonNameParts[0]} snowfall</td>\r\n                                    <td className='left-aligned'>{dailyReportSeasonSummary.DecemberSnowfall}cm</td>\r\n                                    <td>Reported on <strong>{dailyReportSeasonSummary.DecemberSnowfallDays}</strong> days in December {seasonNameParts[0]}</td>\r\n                                </tr>\r\n                                <tr>\r\n                                    <td>January {seasonNameParts[1]} snowfall</td>\r\n                                    <td className='left-aligned'>{dailyReportSeasonSummary.JanuarySnowfall}cm</td>\r\n                                    <td>Reported on <strong>{dailyReportSeasonSummary.JanuarySnowfallDays}</strong> days in January {seasonNameParts[1]}</td>\r\n                                </tr>\r\n                                <tr>\r\n                                    <td>February {seasonNameParts[1]} snowfall</td>\r\n                                    <td className='left-aligned'>{dailyReportSeasonSummary.FebruarySnowfall}cm</td>\r\n                                    <td>Reported on <strong>{dailyReportSeasonSummary.FebruarySnowfallDays}</strong> days in February {seasonNameParts[1]}</td>\r\n                                </tr>\r\n                                <tr>\r\n                                    <td>March {seasonNameParts[1]} snowfall</td>\r\n                                    <td className='left-aligned'>{dailyReportSeasonSummary.MarchSnowfall}cm</td>\r\n                                    <td>Reported on <strong>{dailyReportSeasonSummary.MarchSnowfallDays}</strong> days in March {seasonNameParts[1]}</td>\r\n                                </tr>\r\n                                <tr>\r\n                                    <td>April {seasonNameParts[1]} snowfall</td>\r\n                                    <td className='left-aligned'>{dailyReportSeasonSummary.AprilSnowfall}cm</td>\r\n                                    <td>Reported on <strong>{dailyReportSeasonSummary.AprilSnowfallDays}</strong> days in April {seasonNameParts[1]}</td>\r\n                                </tr>\r\n                            </tbody>\r\n                        </table>\r\n                    </div>\r\n                }\r\n                {dailyReportSeasonSummary.TotalSnowfall == 0 &&\r\n                    <div>\r\n                        <h3 className='center-aligned space-above'>No data yet</h3>\r\n                    </div>\r\n                }\r\n            </div>\r\n        )\r\n    }\r\n};\r\n\r\nexport default SeasonSummary;","import { useState, useEffect } from 'react';\r\nimport { useNavigate } from 'react-router-dom'\r\n\r\nconst SeasonReportCalendar = ({ dailyReport, nowYear, nowMonth, dailySnowfallMonthlyList }) => {\r\n\r\n  //const history = useHistory();\r\n  const navigate = useNavigate();\r\n\r\n  const DAYS = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\r\n  const DAYS_LEAP = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\r\n  const DAYS_OF_THE_WEEK = ['MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT', 'SUN'];\r\n  const MONTHS = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\r\n\r\n  const [date, setDate] = useState(new Date(nowYear, nowMonth, 1));\r\n  const [month, setMonth] = useState(date.getMonth());\r\n  const [startDay, setStartDay] = useState(getStartDayOfMonth(date));\r\n\r\n  useEffect(() => {\r\n    setMonth(date.getMonth());\r\n    setStartDay(getStartDayOfMonth(date));\r\n  }, [nowYear, nowMonth, date]);\r\n\r\n  function getStartDayOfMonth(date) {\r\n    const startDate = new Date(date.getFullYear(), date.getMonth(), 1).getDay();\r\n    return startDate === 0 ? 7 : startDate;\r\n  }\r\n\r\n  function isLeapYear(year) {\r\n    return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\r\n  }\r\n\r\n  const getDayOrdinal = (day) => {\r\n    if (day > 3 && day < 21) return 'th';\r\n    switch (day % 10) {\r\n      case 1: return \"st\";\r\n      case 2: return \"nd\";\r\n      case 3: return \"rd\";\r\n      default: return \"th\";\r\n    }\r\n  }\r\n\r\n  const getDailySnowfall = (calDay) => {\r\n\r\n    let dailySnowfall = undefined\r\n\r\n    let dailySnowfallData = dailySnowfallMonthlyList.filter(function (currentElement) {\r\n      return (currentElement.NowReportDay === calDay);\r\n    });\r\n\r\n    if (dailySnowfallData[0] !== undefined) {\r\n      dailySnowfall = dailySnowfallData[0].NewSnowfallResortA\r\n    }\r\n\r\n    return dailySnowfall\r\n  }\r\n\r\n  const getReportCSS = (snowfall) => {\r\n\r\n    let snowfallCSS = ' with-report-individual-0'\r\n\r\n    if (snowfall > 0 && snowfall < 10) {\r\n      snowfallCSS = ' with-report-individual-9'\r\n    } else if (snowfall > 9 && snowfall < 20) {\r\n      snowfallCSS = ' with-report-individual-19'\r\n    } else if (snowfall > 19 && snowfall < 50) {\r\n      snowfallCSS = ' with-report-individual-49'\r\n    } else if (snowfall > 49) {\r\n      snowfallCSS = ' with-report-individual-50'\r\n    }\r\n\r\n    return snowfallCSS\r\n  }\r\n\r\n  const goToDetail = (d) => {\r\n    const archiveUrl = `${window.$baseDailyReportUrl}/${dailyReport.UniqueName}/archives/${d}${getDayOrdinal(d)}-${MONTHS[month]}-${nowYear}`\r\n\r\n    //history.push(archiveUrl)\r\n    navigate(archiveUrl);\r\n  }\r\n\r\n  const days = isLeapYear(date.getFullYear()) ? DAYS_LEAP : DAYS;\r\n\r\n  return (\r\n    <div className='now-calendar-frame'>\r\n      <div className='now-calendar-frame-header'>\r\n        <div className='center-aligned'>\r\n          <h4>{MONTHS[month]} {nowYear}</h4>\r\n        </div>\r\n      </div>\r\n      <div className='now-calendar-frame-body'>\r\n        {DAYS_OF_THE_WEEK.map((d) => (\r\n          <div key={`${d}-${nowMonth}-${nowYear}`} className='now-calendar-day-header'>\r\n            <strong>{d}</strong>\r\n          </div>\r\n        ))}\r\n        {Array(days[month] + (startDay - 1)).fill(null).map((_, index) => {\r\n          const d = index - (startDay - 2);\r\n          var dayClassName = ''\r\n          var dailySnowfall = ''\r\n\r\n\r\n          if (d <= 0) {\r\n            dayClassName = ' empty-date'\r\n          } else {\r\n            dayClassName = ' with-date-individual'\r\n            dailySnowfall = getDailySnowfall(d)\r\n            if (dailySnowfall !== undefined) {\r\n              dayClassName = dayClassName + getReportCSS(dailySnowfall)\r\n            }\r\n          }\r\n\r\n          return (\r\n            <>\r\n              {d <= 0 &&\r\n                <div className={dayClassName} key={index}></div>\r\n              }\r\n              {(d > 0 && dailySnowfall !== undefined) &&\r\n                <div className={dayClassName} key={index} onClick={() => goToDetail(d)}>\r\n                  <div className='calendar-date-container'>{d}</div>\r\n                  <div className='calendar-snow-container'>{dailySnowfall}cm</div>\r\n                </div>\r\n              }\r\n              {(d > 0 && dailySnowfall === undefined) &&\r\n                <div className={dayClassName} key={index}>\r\n                  {d}\r\n                </div>\r\n              }\r\n            </>\r\n          );\r\n        })}\r\n      </div>\r\n    </div>\r\n  );\r\n}\r\n\r\nexport default SeasonReportCalendar;","import axios from 'axios'\r\nimport { useState, useEffect } from 'react'\r\nimport { Link } from 'react-router-dom'\r\nimport { Helmet } from 'react-helmet'\r\nimport SeasonSummary from './SeasonSummary'\r\nimport DailyObservedSnowfall from '../Common/DailyObservedSnowfall'\r\nimport SeasonReportCalendar from './SeasonReportCalendar';\r\n\r\nconst SeasonContainer = ({ dailyReport, seasonName }) => {\r\n    const [years, setYears] = useState(seasonName.split('-'));\r\n    const [dailySnowfallList, setDailySnowfallList] = useState([]);\r\n\r\n    const fetchDailyObservedSnowfall = async (nowUniqueName, seasonName) => {\r\n        axios({\r\n            method: 'POST',\r\n            url: `${window.$baseAPIUrl}/dailyreport/reports/${nowUniqueName}/${seasonName}`\r\n        }).then(resDailySnowfall => {\r\n            setDailySnowfallList(resDailySnowfall.data)\r\n        })\r\n    };\r\n\r\n    const getDailySnowfallMonthlyList = (month) => {\r\n        let dailyData = dailySnowfallList.filter(function (currentElement) {\r\n            return (currentElement.NowReportMonth === month);\r\n        });\r\n\r\n        return dailyData\r\n    }\r\n\r\n    useEffect(() => {\r\n        fetchDailyObservedSnowfall(dailyReport.UniqueName, seasonName)\r\n        setYears(seasonName.split('-'))\r\n    }, [dailyReport.UniqueName, seasonName]);\r\n\r\n    return (\r\n        <div className='empty-row'>\r\n            <Helmet>\r\n                <title>{dailyReport.Name} | {seasonName} season snowfall data, analysis and archives from {dailyReport.AreaName} | SnowJapan</title>\r\n                <meta name=\"description\" content={`Annual observed snowfall data and analysis with links to archive reports from the ${dailyReport.AreaName} of Japan. Snowfall is observed from base areas.`} />\r\n            </Helmet>\r\n            <h3>{seasonName} season statistics & archives</h3>\r\n            <div>\r\n                All data is the snowfall observed by our reporters around base areas. Please read <Link to={`${window.$baseDailyReportUrl}/${dailyReport.UniqueName}/about-daily-reports`}>this</Link> to learn more about our reporting.\r\n            </div>\r\n            {seasonName > '2011-2012' &&\r\n                <SeasonSummary dailyReport={dailyReport} seasonName={seasonName} />\r\n            }\r\n            {seasonName > '2011-2012' &&\r\n                <DailyObservedSnowfall dailyReport={dailyReport} season={seasonName} dailySnowfallList={dailySnowfallList} />\r\n            }\r\n            <div className='mt-5'>\r\n                <div className=\"sj-box sj-box-dark-gray sj-round-half center-aligned mt-2\">\r\n                    <h4>{seasonName} season calendar</h4>\r\n                </div>\r\n                <div className='center-aligned mt-3'>\r\n                    Click on the date to view each individual archive report\r\n                </div>\r\n            </div>\r\n            <div className='center-aligned sj-row' style={{ overflow: 'none' }}>\r\n                <div className=\"row sj-row-no-margin-padding sj-no-bg\">\r\n                    <div className=\"col-lg-4 col-md-6\">\r\n                        <SeasonReportCalendar dailyReport={dailyReport} nowYear={years[0]} nowMonth={10} dailySnowfallMonthlyList={getDailySnowfallMonthlyList(11)} />\r\n                    </div>\r\n                    <div className=\"col-lg-4 col-md-6\">\r\n                        <SeasonReportCalendar dailyReport={dailyReport} nowYear={years[0]} nowMonth={11} dailySnowfallMonthlyList={getDailySnowfallMonthlyList(12)} />\r\n                    </div>\r\n                    <div className=\"col-lg-4 col-md-6\">\r\n                        <SeasonReportCalendar dailyReport={dailyReport} nowYear={years[1]} nowMonth={0} dailySnowfallMonthlyList={getDailySnowfallMonthlyList(1)} />\r\n                    </div>\r\n                    <div className=\"col-lg-4 col-md-6\">\r\n                        <SeasonReportCalendar dailyReport={dailyReport} nowYear={years[1]} nowMonth={1} dailySnowfallMonthlyList={getDailySnowfallMonthlyList(2)} />\r\n                    </div>\r\n                    <div className=\"col-lg-4 col-md-6\">\r\n                        <SeasonReportCalendar dailyReport={dailyReport} nowYear={years[1]} nowMonth={2} dailySnowfallMonthlyList={getDailySnowfallMonthlyList(3)} />\r\n                    </div>\r\n                    <div className=\"col-lg-4 col-md-6\">\r\n                        <SeasonReportCalendar dailyReport={dailyReport} nowYear={years[1]} nowMonth={3} dailySnowfallMonthlyList={getDailySnowfallMonthlyList(4)} />\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    )\r\n};\r\n\r\nexport default SeasonContainer;","import styled from 'styled-components';\r\nimport { Link } from 'react-router-dom'\r\n\r\nconst Frame = styled.div`\r\nwidth: 400px;\r\nmin-height: 525px;\r\nborder: 1px solid lightgrey;\r\nbox-shadow: 2px 2px 2px #eee;\r\nfloat:left;\r\n`;\r\n\r\nconst Header = styled.div`\r\nfont-size: 18px;\r\nfont-weight: bold;\r\npadding: 10px 10px 5px 10px;\r\ndisplay: flex;\r\njustify-content: space-between;\r\nbackground-color: #f5f6fa;\r\n`;\r\n\r\nconst Body = styled.div`\r\nwidth: 100%;\r\n`;\r\n\r\nconst MonthlyReportsListing = ({ dailyReport, monthName, nowYear, dailySnowfallList }) => {\r\n\r\n    var dailyDataList = dailySnowfallList.filter(function (currentElement) {\r\n        return (currentElement.NowReportMonthFull === monthName && currentElement.NowReportYear === parseInt(nowYear));\r\n    });\r\n\r\n    dailyDataList.sort(function (a, b) {\r\n        var dateA = new Date(a.Id), dateB = new Date(b.Id)\r\n        return dateA - dateB\r\n    })\r\n\r\n    return (\r\n        <Frame>\r\n            <Header>\r\n                {/*<Button onClick={() => setDate(new Date(year, month - 1, day))}>Prev</Button>*/}\r\n                <div>\r\n                    {monthName} {nowYear}\r\n                </div>\r\n                {/*<Button onClick={() => setDate(new Date(year, month + 1, day))}>Next</Button>*/}\r\n            </Header>\r\n            <Body>\r\n                {dailyDataList.map((dailyData, index) => (\r\n                    <div key={index}>\r\n                        <Link to={`${window.$baseDailyReportUrl}/${dailyReport.UniqueName}/archives/${dailyData.NowReportDayTh}-${dailyData.NowReportMonthFull}-${dailyData.NowReportYear}`}>{dailyData.NowReportDayTh} {dailyData.NowReportMonthFull} {dailyData.NowReportYear}</Link>\r\n                    </div>\r\n                ))}\r\n            </Body>\r\n        </Frame>\r\n    )\r\n};\r\n\r\nexport default MonthlyReportsListing;","import { useState, useEffect } from 'react'\r\nimport axios from 'axios'\r\nimport MonthlyReportsListing from './MonthlyReportsListing'\r\nimport { GetCurrentSeasonName } from '../../../../helpers/Helper'\r\n\r\nconst MonthlyReportsListingContainer = ({ dailyReport }) => {\r\n\r\n    const [dailySnowfallList, setDailySnowfallList] = useState([]);\r\n    const [seasonName, setSeasonName] = useState(GetCurrentSeasonName());\r\n    const [years, setYears] = useState(seasonName.split('-'));\r\n\r\n    const fetchDailySnowfall = async (nowUniqueName) => {\r\n        axios({\r\n            method: 'POST',\r\n            url: `${window.$baseAPIUrl}/dailyreport/reports/${nowUniqueName}/All`\r\n        }).then(resDailySnowfall => {\r\n            setDailySnowfallList(resDailySnowfall.data)\r\n        })\r\n    };\r\n\r\n    useEffect(() => {\r\n        fetchDailySnowfall(dailyReport.UniqueName)\r\n        setYears(seasonName.split('-'))\r\n    }, [dailyReport.UniqueName, seasonName]);\r\n\r\n    let seasons = [...new Set(dailySnowfallList.map(item => item.Season))].sort().reverse();\r\n\r\n    const handleChange = (event) => {\r\n        setSeasonName(event.target.value)\r\n    };\r\n\r\n    return (\r\n        <div>\r\n            <h1>Daily Report Archives</h1>\r\n            <div>\r\n                <div>\r\n                    <select onChange={handleChange}>\r\n                        {seasons.map((item, index) => (\r\n                            <option key={index} value={item}>\r\n                                {item} Season\r\n                            </option>\r\n                        ))}\r\n                    </select>\r\n                </div>\r\n                <div>\r\n                    <MonthlyReportsListing dailyReport={dailyReport} monthName='April' nowYear={years[1]} dailySnowfallList={dailySnowfallList} />\r\n                    <MonthlyReportsListing dailyReport={dailyReport} monthName='March' nowYear={years[1]} dailySnowfallList={dailySnowfallList} />\r\n                    <MonthlyReportsListing dailyReport={dailyReport} monthName='February' nowYear={years[1]} dailySnowfallList={dailySnowfallList} />\r\n                    <MonthlyReportsListing dailyReport={dailyReport} monthName='January' nowYear={years[1]} dailySnowfallList={dailySnowfallList} />\r\n                    <MonthlyReportsListing dailyReport={dailyReport} monthName='December' nowYear={years[0]} dailySnowfallList={dailySnowfallList} />\r\n                    <MonthlyReportsListing dailyReport={dailyReport} monthName='November' nowYear={years[0]} dailySnowfallList={dailySnowfallList} />\r\n                </div>\r\n            </div>\r\n        </div>\r\n    )\r\n};\r\n\r\nexport default MonthlyReportsListingContainer;","import MonthlyReportsListingContainer from './MonthlyReportsListingContainer'\r\nimport DetailDailyReport from '../Common/DetailDailyReport'\r\n\r\nconst ArchivesContainer = ({ params, dailyReport, nowSeasons }) => {\r\n    return (\r\n        <div>\r\n            {params.season === undefined\r\n                ? <MonthlyReportsListingContainer dailyReport={dailyReport} />\r\n                : <DetailDailyReport dailyReport={dailyReport} params={params} nowSeasons={nowSeasons} isArchive={true} />\r\n            }\r\n        </div>\r\n    )\r\n}\r\n\r\nexport default ArchivesContainer","import { Link } from 'react-router-dom'\r\n\r\nconst YearlyAnalysisTab = ({ nowUniqueName, nowSeasons }) => {\r\n\r\n  return (\r\n    <div className='sj-link-button-container'>\r\n      {nowSeasons.map((season, index) => (\r\n        <div key={index} className='sj-weather-season-button center-aligned'><Link to={`${window.$baseDailyReportUrl}/${nowUniqueName}/season/${season.Season}`}>{season.Season}</Link></div>\r\n      ))}\r\n    </div >\r\n  );\r\n}\r\n\r\nexport default YearlyAnalysisTab;","import axios from 'axios'\r\nimport { useState, useEffect } from 'react'\r\nimport Loader from '../../../Common/Loader'\r\nimport { RenderBreak } from '../../../../helpers/Helper'\r\n\r\nconst AboutDailyReport = ({ params }) => {\r\n\r\n    const [guide, setGuide] = useState(undefined)\r\n\r\n    const fetchGuides = async (guideUniqueName) => {\r\n        axios({\r\n            method: 'POST',\r\n            url: `${window.$baseAPIUrl}/listingGuideSection/guides/${guideUniqueName}`\r\n        }).then(resGuide => {\r\n            setGuide(resGuide.data)\r\n        })\r\n    };\r\n\r\n    useEffect(() => {\r\n        fetchGuides('about-daily-reports')\r\n    }, [params])\r\n\r\n    if (guide !== undefined && guide !== null) {\r\n        return (\r\n            <>\r\n                <div dangerouslySetInnerHTML={{ __html: RenderBreak(guide.HtmlContent) }} />\r\n            </>\r\n        )\r\n    } else {\r\n        return (\r\n            <Loader />\r\n        )\r\n    }\r\n}\r\n\r\nexport default AboutDailyReport","import { useState, useEffect, Fragment } from 'react'\r\nimport axios from 'axios'\r\nimport { Link, useParams } from 'react-router-dom'\r\nimport { Image } from 'react-bootstrap'\r\nimport DetailTabs from './DetailTabs'\r\nimport Loader from \"../../Common/Loader\"\r\nimport DetailDailyReport from './Common/DetailDailyReport'\r\nimport ObservedSnowfallAnalysisContainer from './ObservedSnowfallAnalysis/ObservedSnowfallAnalysisContainer'\r\nimport SnowDepthAnalysisContainer from './SnowDepthAnalysis/SnowDepthAnalysisContainer'\r\nimport WeatherContainer from './Weather/WeatherContainer'\r\nimport SeasonContainer from './Season/SeasonContainer'\r\nimport ArchivesContainer from './Archives/ArchivesContainer'\r\nimport YearlyAnalysisTab from './YearlyAnalysisTab'\r\nimport AboutDailyReport from './About/AboutDailyReport'\r\n\r\n\r\nconst DetailContainer = () => {\r\n\r\n    const params = useParams()\r\n\r\n    const [latestReport, setLatestReport] = useState([]);\r\n    const [nowSeasons, setNowSeasons] = useState([]);\r\n\r\n    const fetchLatestReportAndNowSeasons = async (nowUniqueName) => {\r\n        axios({\r\n            method: 'POST',\r\n            url: `${window.$baseAPIUrl}/dailyreport/reports/latest/${nowUniqueName}`\r\n        }).then(resLatestReport => {\r\n\r\n            if (Object.keys(resLatestReport.data).length <= 0) {\r\n                window.location.href = \"https://www.snowjapan.com/404.html\";\r\n            }\r\n\r\n            setLatestReport(resLatestReport.data)\r\n\r\n            return axios({\r\n                method: 'POST',\r\n                url: `${window.$baseAPIUrl}/dailyreport/reports/snowfall-seasons/${resLatestReport.data.Now_Id}`\r\n            })\r\n        }).then(resNowSeasons => {\r\n            setNowSeasons(resNowSeasons.data)\r\n        })\r\n    };\r\n\r\n    useEffect(() => {\r\n        fetchLatestReportAndNowSeasons(params.now);\r\n    }, [params.now]);\r\n\r\n    if (Object.keys(latestReport).length <= 0) {\r\n        return (\r\n            <Loader />\r\n        )\r\n    }\r\n    else {\r\n        return (\r\n            <Fragment>\r\n                <h2>{latestReport.Name}</h2>\r\n                <div className='sj-para mt-1 mb-3'>\r\n                    Independent snow and weather reports from the <Link to={`${window.$baseSkiAreaUrl}/area/${latestReport.AreaUniqueName}`}>{latestReport.AreaName}</Link>, Japan\r\n                </div>\r\n                <DetailTabs />\r\n                <div>\r\n                    {\r\n                        {\r\n                            undefined: <DetailDailyReport dailyReport={latestReport} params={params} nowSeasons={nowSeasons} isActive={false} />,\r\n                            'observed-snowfall-analysis': <ObservedSnowfallAnalysisContainer dailyReport={latestReport} />,\r\n                            'snow-depth-analysis': <SnowDepthAnalysisContainer dailyReport={latestReport} />,\r\n                            'weather': <WeatherContainer dailyReport={latestReport} />,\r\n                            'archives': <ArchivesContainer params={params} dailyReport={latestReport} nowSeasons={nowSeasons} />,\r\n                            'season': <SeasonContainer dailyReport={latestReport} seasonName={params.season} />,\r\n                            'about-daily-reports': <AboutDailyReport params={params} />\r\n                        }[params.type]\r\n                    }\r\n                </div>\r\n                <div>\r\n                    <div className=\"sj-box sj-box-dark-gray sj-round-full center-aligned mt-5 mb-3\">\r\n                        <h4>Annual archives</h4>\r\n                    </div>\r\n                    <YearlyAnalysisTab nowUniqueName={params.now} nowSeasons={nowSeasons} />\r\n                </div>\r\n                {/*params.now === 'Niseko-Now' &&\r\n                    <div className=\"banner-holder\">\r\n                        <div className=\"sj-row mb-0\">\r\n                            <div className=\"row sj-row-no-margin-padding sj-no-bg\">\r\n                                <div className=\"col-lg-3 col-md-6 sj-row-no-margin-padding\">\r\n                                    <div className='home-listing-holder-left mt-3'>\r\n                                        <a href='https://www.yukiroro.com/' target='_blank' rel='noreferrer'><Image src='https://www.snowjapan.com/UploadedFiles/CMSImages/Listings/listing-yu-kiroro.jpg' alt='listing-yu-kiroro' /></a>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                */}\r\n                {params.now === 'Yuzawa-Now' &&\r\n                    <div className=\"banner-holder\">\r\n                        <div className=\"sj-row mb-0\">\r\n                            <div className=\"row sj-row-no-margin-padding sj-no-bg\">\r\n                                <div className=\"col-lg-3 col-md-6 sj-row-no-margin-padding\">\r\n                                    <div className='home-listing-holder-left mt-3'>\r\n                                        <a href='https://gala.co.jp/winter/english/' target='_blank' rel='noreferrer'><Image src='https://www.snowjapan.com/UploadedFiles/CMSImages/Listings/listing-gala-yuzawa.jpg' alt='listing-gala-yuzawa' /></a>\r\n                                    </div>\r\n                                </div>\r\n                                {/*<div className=\"col-lg-3 col-md-6 sj-row-no-margin-padding\">\r\n                                    <div className='home-listing-holder-center1 mt-3'>\r\n                                        <a href='https://www.naspanewotani.com/' target='_blank' rel='noreferrer'><Image src='https://www.snowjapan.com/UploadedFiles/CMSImages/Listings/listing-naspa.jpg' alt='listing-naspa' /></a>\r\n                                    </div>\r\n                                </div>\r\n                                <div className=\"col-lg-3 col-md-6 sj-row-no-margin-padding\">\r\n                                    <div className='home-listing-holder-center2 mt-3'>\r\n                                        <a href='https://www.snowjapan.com/listings/travel/yuzawa-minamiuonuma-eleven-plus' target='_blank' rel='noreferrer'><Image src='https://www.snowjapan.com/UploadedFiles/CMSImages/Listings/listing-eleven-plus.jpg' alt='listing-naspa' /></a>\r\n                                    </div>\r\n                                </div>*/}\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                }\r\n                {params.now === 'Nozawa-Onsen-Now' &&\r\n                    <div className=\"banner-holder\">\r\n                        <div className=\"sj-row mb-0\">\r\n                            <div className=\"row sj-row-no-margin-padding sj-no-bg\">\r\n                                <div className=\"col-lg-3 col-md-6 sj-row-no-margin-padding\">\r\n                                    <div className='home-listing-holder-left mt-3'>\r\n                                        <a href='https://en.nozawaski.com/' target='_blank' rel='noreferrer'><Image src='https://www.snowjapan.com/UploadedFiles/CMSImages/Listings/listing-nozawa-onsen.jpg' alt='listing-nozawa-onsen' /></a>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                }\r\n            </Fragment>\r\n        )\r\n    }\r\n};\r\n\r\nexport default DetailContainer;","import { useState, useEffect } from 'react'\r\nimport styled from 'styled-components';\r\n\r\nconst CheckboxText = styled.span`\r\n  ${props => props.Disabled && `\r\n         color: #b7b7b7;\r\n    `}\r\n`;\r\n\r\nconst NearbySkiAreaCheckList = ({ selectedPrefectures, selectedSkiAreas, options, onChange }) => {\r\n    const [skiAreaData, setSkiAreaData] = useState(options);\r\n\r\n    const toggle = index => {\r\n        const newData = [...skiAreaData];\r\n        newData.splice(index, 1, {\r\n            name: skiAreaData[index].name,\r\n            uniqueName: skiAreaData[index].uniqueName,\r\n            accommodationUniqueName: skiAreaData[index].accommodationUniqueName,\r\n            checked: !skiAreaData[index].checked,\r\n            disabled: skiAreaData[index].disabled\r\n        });\r\n        setSkiAreaData(newData);\r\n        onChange(newData);\r\n    };\r\n\r\n    const refreshSkiAreaOpetions = (prefectures, allSkiAreas, selSkiAreas) => {\r\n\r\n        let selectedSkiAreaList = selSkiAreas.filter(function (currentElement) {\r\n            return (currentElement.checked);\r\n        });\r\n\r\n        var selecteSkidAreaUniqueNames = selectedSkiAreaList.map(function (obj) { return obj.uniqueName; });\r\n\r\n        let selectedPrefectureList = prefectures.filter(function (currentElement) {\r\n            return (currentElement.checked);\r\n        });\r\n\r\n        var prefectureUniqueNames = selectedPrefectureList.map(function (obj) { return obj.uniqueName; });\r\n\r\n        allSkiAreas = allSkiAreas.map(item => {\r\n            item.disabled = false;\r\n            item.checked = selecteSkidAreaUniqueNames.includes(item.uniqueName);\r\n            return item;\r\n        })\r\n\r\n        setSkiAreaData(allSkiAreas);\r\n    }\r\n\r\n    useEffect(() => {\r\n        refreshSkiAreaOpetions(selectedPrefectures, options, selectedSkiAreas);\r\n    }, [selectedPrefectures, options, selectedSkiAreas]);\r\n\r\n    return (\r\n        <>\r\n            <h3>Nearby Ski Areas</h3>\r\n            {skiAreaData.map((item, index) => (\r\n                <div key={item.uniqueName}>\r\n                    <label>\r\n                        <input\r\n                            readOnly\r\n                            type=\"checkbox\"\r\n                            checked={item.checked || false}\r\n                            onClick={() => toggle(index)}\r\n                            disabled={item.disabled || false}\r\n                        /> <CheckboxText Disabled={item.disabled}>{item.name}</CheckboxText>\r\n                    </label><br />\r\n                </div>\r\n            ))}\r\n        </>\r\n    );\r\n};\r\n\r\nexport default NearbySkiAreaCheckList;","import { useState, useEffect } from 'react'\r\nimport { DropdownButton, Dropdown } from 'react-bootstrap'\r\nimport AccommodationListTable from './AccommodationListTable';\r\n\r\nconst SearchResult = ({ allAccommodationList, ClearSort, prefectures, areas, towns, nearbySkiAreas, noFilter }) => {\r\n\r\n    const [searchedAccommodationList, setSearchedAccommodationList] = useState(allAccommodationList)\r\n\r\n    const [buttonTitle, setButtonTitle] = useState('Sort By: Accommodation name [A-Z]')\r\n    const [sortColumn, setSortColumn] = useState('')\r\n    const [sortOrder, setSortOrder] = useState('')\r\n    const [searchFilterPrefecture, setSearchFilterPrefecture] = useState('')\r\n    const [searchFilterArea, setSearchFilterArea] = useState('')\r\n    const [searchFilterTown, setSearchFilterTown] = useState('')\r\n    const [searchFilterNearbySkiArea, setSearchFilterNearbySkiArea] = useState('')\r\n\r\n\r\n    const ClearSortValues = () => {\r\n        setButtonTitle('Sort By: Accommodation name [A-Z]')\r\n        setSortColumn('')\r\n        setSortOrder('')\r\n    }\r\n\r\n    const PerpareSearchFilter = () => {\r\n        if (prefectures.length > 0) {\r\n\r\n            let selectedPrefectures = prefectures.filter(function (currentElement) {\r\n                return (currentElement.checked === true);\r\n            });\r\n\r\n            let prefectureList = [...new Set(selectedPrefectures.map(item => item.name))].sort();\r\n\r\n            if (prefectureList.length > 0) {\r\n                setSearchFilterPrefecture(prefectureList.join(', '))\r\n            }\r\n        }\r\n\r\n        if (areas.length > 0) {\r\n\r\n            let selectedAreas = areas.filter(function (currentElement) {\r\n                return (currentElement.checked === true);\r\n            });\r\n\r\n            let areaList = [...new Set(selectedAreas.map(item => item.name))].sort();\r\n\r\n            if (areaList.length > 0) {\r\n                setSearchFilterArea(areaList.join(', '))\r\n            }\r\n        }\r\n\r\n        if (towns.length > 0) {\r\n\r\n            let selectedTowns = towns.filter(function (currentElement) {\r\n                return (currentElement.checked === true);\r\n            });\r\n\r\n            let townList = [...new Set(selectedTowns.map(item => item.name))].sort();\r\n\r\n            if (townList.length > 0) {\r\n                setSearchFilterTown(townList.join(', '))\r\n            }\r\n        }\r\n\r\n        if (nearbySkiAreas.length > 0) {\r\n\r\n            let selectedNearbySkiAreas = nearbySkiAreas.filter(function (currentElement) {\r\n                return (currentElement.checked === true);\r\n            });\r\n\r\n            let nearbySkiAreaList = [...new Set(selectedNearbySkiAreas.map(item => item.name))].sort();\r\n\r\n            if (nearbySkiAreaList.length > 0) {\r\n                setSearchFilterNearbySkiArea(nearbySkiAreaList.join(', '))\r\n            }\r\n        }\r\n    }\r\n\r\n    useEffect(() => {\r\n        PerpareSearchFilter()\r\n        setSearchedAccommodationList(allAccommodationList)\r\n        ClearSortValues()\r\n        if (noFilter) {\r\n            setSearchFilterPrefecture('')\r\n            setSearchFilterArea('')\r\n            setSearchFilterTown('')\r\n            setSearchFilterNearbySkiArea('')\r\n        }\r\n    }, [allAccommodationList, noFilter])\r\n\r\n    useEffect(() => {\r\n        ClearSort.current = ClearSortValues\r\n    }, [ClearSort])\r\n\r\n    const SortResult = (evtKey, evt) => {\r\n\r\n        var sortedResult = []\r\n        var sortColumn = ''\r\n        var sortOrder = ''\r\n\r\n        if (evtKey === '1' || evtKey === '2') {\r\n            sortedResult = searchedAccommodationList.sort(function (a, b) {\r\n                let nameA = a.Name.toLowerCase(), nameB = b.Name.toLowerCase();\r\n\r\n                if (nameA < nameB) { return -1; }\r\n                if (nameA > nameB) { return 1; }\r\n                return 0;\r\n            })\r\n            sortOrder = \"ASC\"\r\n\r\n            if (evtKey === '2') {\r\n                sortedResult = sortedResult.reverse()\r\n                sortOrder = \"DESC\"\r\n            }\r\n\r\n            sortColumn = \"Accommodation name\"\r\n\r\n        } else if (evtKey === '3' || evtKey === '4') {\r\n            sortedResult = searchedAccommodationList.sort(function (a, b) {\r\n                let nameA = a.AreaName.toLowerCase(), nameB = b.AreaName.toLowerCase();\r\n\r\n                if (nameA < nameB) { return -1; }\r\n                if (nameA > nameB) { return 1; }\r\n\r\n                if (a.Name > b.Name) return 1;\r\n                if (a.Name < b.Name) return -1;\r\n\r\n                return 0;\r\n            })\r\n            sortOrder = \"ASC\"\r\n\r\n            if (evtKey === '4') {\r\n                sortedResult = sortedResult.reverse()\r\n                sortOrder = \"DESC\"\r\n            }\r\n\r\n            sortColumn = \"Area\"\r\n\r\n        } else if (evtKey === '5' || evtKey === '6') {\r\n            sortedResult = searchedAccommodationList.sort(function (a, b) {\r\n                let nameA = a.PrefectureName.toLowerCase(), nameB = b.PrefectureName.toLowerCase();\r\n\r\n                if (nameA < nameB) { return -1; }\r\n                if (nameA > nameB) { return 1; }\r\n\r\n                if (a.Name > b.Name) return 1;\r\n                if (a.Name < b.Name) return -1;\r\n\r\n                return 0;\r\n            })\r\n            sortOrder = \"ASC\"\r\n\r\n            if (evtKey === '6') {\r\n                sortedResult = sortedResult.reverse()\r\n                sortOrder = \"DESC\"\r\n            }\r\n\r\n            sortColumn = \"Prefecture\"\r\n\r\n        }\r\n\r\n        setSearchedAccommodationList(sortedResult)\r\n        setButtonTitle('Sort by: ' + evt.target.innerText)\r\n        setSortColumn(sortColumn)\r\n        setSortOrder(sortOrder)\r\n    }\r\n\r\n\r\n    if (searchedAccommodationList.length > 0) {\r\n        return (\r\n            <>\r\n                <div className=\"empty-row\">\r\n                    <div className='row sj-no-bg sj-row-no-margin-padding'>\r\n                        <div className='col-md-6 sj-row-no-margin-padding'>\r\n                            {searchFilterPrefecture !== '' &&\r\n                                <div><strong>[Prefecture] </strong>{searchFilterPrefecture}</div>\r\n                            }\r\n                            {searchFilterArea !== '' &&\r\n                                <div><strong>[Area] </strong>{searchFilterArea}</div>\r\n                            }\r\n                            {searchFilterTown !== '' &&\r\n                                <div><strong>[Town] </strong>{searchFilterTown}</div>\r\n                            }\r\n                            {searchFilterNearbySkiArea !== '' &&\r\n                                <div><strong>[Nearby Ski areas] </strong>{searchFilterNearbySkiArea}</div>\r\n                            }\r\n                            {(searchFilterPrefecture === '' && searchFilterArea === '' && searchFilterTown === '' && searchFilterNearbySkiArea === '') &&\r\n                                <div>No filters selected</div>\r\n                            }\r\n                        </div>\r\n                        <div className='col-md-6 right-aligned sj-row-no-margin-padding'>\r\n                            <DropdownButton align=\"end\" title={buttonTitle} onSelect={SortResult} id=\"dropdown-menu-align-end\" className='sj-large-font-button'>\r\n                                <Dropdown.Item eventKey=\"1\">Accommodation name [A-Z]</Dropdown.Item>\r\n                                <Dropdown.Item eventKey=\"2\">Accommodation name [Z-A]</Dropdown.Item>\r\n                                <Dropdown.Item eventKey=\"3\">Area name [A-Z]</Dropdown.Item>\r\n                                <Dropdown.Item eventKey=\"4\">Area name [Z-A]</Dropdown.Item>\r\n                                <Dropdown.Item eventKey=\"5\">Prefecture name [A-Z]</Dropdown.Item>\r\n                                <Dropdown.Item eventKey=\"6\">Prefecture name [Z-A]</Dropdown.Item>\r\n                            </DropdownButton>\r\n                        </div>\r\n                    </div>\r\n                    <AccommodationListTable\r\n                        tableData={searchedAccommodationList}\r\n                        sortColumn={sortColumn}\r\n                        sortOrder={sortOrder}\r\n                        headingColumns={['', 'Accommodation name', 'Area', 'Prefecture']}\r\n                        dataMapping={['a', 'Name', 'AreaName', 'PrefectureName']}\r\n                        title={`Selected accommodations`}\r\n                    />\r\n                </div>\r\n            </>\r\n        )\r\n    } else {\r\n        return (\r\n            <>\r\n                <h3>No Result Found</h3>\r\n            </>\r\n        )\r\n    }\r\n};\r\n\r\nexport default SearchResult;","import axios from 'axios'\r\nimport { useState, useEffect, useRef } from 'react'\r\nimport { useParams } from 'react-router-dom'\r\nimport { Helmet } from \"react-helmet\"\r\nimport { Button, Offcanvas } from 'react-bootstrap'\r\nimport Loader from \"../Common/Loader\"\r\nimport PrefectureCheckList from \"../Common/PrefectureCheckList\"\r\nimport TownCheckList from \"../Common/TownCheckList\"\r\nimport AreaCheckList from \"../Common/AreaCheckList\"\r\nimport NearbySkiAreaCheckList from \"../Common/NearbySkiAreaCheckList\"\r\nimport SearchResult from './SearchResult'\r\nimport { RenderBreak } from '../../helpers/Helper'\r\n\r\nconst AccommodationHome = ({ accommodationList, uniqueSkiAreas, allNearbySkyAreaList }) => {\r\n\r\n    const params = useParams()\r\n\r\n    const [accommodationHomePage, setAccommodationHomePage] = useState('')\r\n\r\n    const [allAccommodationList, setAllAccommodationList] = useState([])\r\n\r\n    // Prefectures\r\n    const [prefectures, setPrefectures] = useState([])\r\n    const [selectedPrefectures, setSelectedPrefectures] = useState([])\r\n\r\n    // Areas\r\n    const [allAreas, setAllAreas] = useState([]);\r\n    const [selectedAreas, setSelectedAreas] = useState([])\r\n\r\n    // Towns\r\n    const [allTowns, setAllTowns] = useState([]);\r\n    const [selectedTowns, setSelectedTowns] = useState([])\r\n\r\n    // Ski Areas\r\n    const [selectedSkiAreas, setSelectedSkiAreas] = useState([])\r\n\r\n    const ClearSort = useRef(null)\r\n    const [show, setShow] = useState(false)\r\n\r\n    const handleClose = () => setShow(false)\r\n    const handleShow = () => setShow(true)\r\n\r\n    const [noFilter, setNoFilter] = useState(true)\r\n\r\n    const fetchAccommodationHomePage = async () => {\r\n        axios({\r\n            method: 'POST',\r\n            url: `${window.$baseAPIUrl}/generalmessage/Accommodation`\r\n        }).then(resGeneralMessages => {\r\n            setAccommodationHomePage(resGeneralMessages.data.Message)\r\n        })\r\n    };\r\n\r\n    // Pre-Searched Prefecture, Area and Town List\r\n    const getAccommodationPrefectures = (resultAccommodationList) => {\r\n        if (resultAccommodationList.length > 0) {\r\n            const prefectures = [...new Map(resultAccommodationList.map(item => [item['PrefectureUniqueName'], item])).values()]\r\n\r\n            const uniquePrefectures = prefectures.map(p => ({ name: p.PrefectureName, uniqueName: p.PrefectureUniqueName, checked: false }))\r\n\r\n            uniquePrefectures.sort(function (a, b) {\r\n                let nameA = a.name.toLowerCase(),\r\n                    nameB = b.name.toLowerCase();\r\n\r\n                if (nameA < nameB) {\r\n                    return -1\r\n                }\r\n                if (nameA > nameB) {\r\n                    return 1\r\n                }\r\n                return 0\r\n\r\n            })\r\n\r\n            setPrefectures(uniquePrefectures)\r\n        }\r\n    }\r\n\r\n    const getAllAccommodationAreas = (allAccommodations) => {\r\n\r\n        if (allAccommodations.length > 0) {\r\n            const areas = [...new Map(allAccommodations.map(item => [item['AreaUniqueName'], item])).values()]\r\n\r\n            const uniqueAreas = areas.map(a => ({ name: a.AreaName, uniqueName: a.AreaUniqueName, prefectureUniqueName: a.PrefectureUniqueName, checked: false, disabled: false }));\r\n\r\n            uniqueAreas.sort(function (a, b) {\r\n                if (a.name === null || b.name === null) {\r\n                    return 0;\r\n                }\r\n                let nameA = a.name.toLowerCase(),\r\n                    nameB = b.name.toLowerCase();\r\n\r\n                if (nameA < nameB) {\r\n                    return -1\r\n                }\r\n                if (nameA > nameB) {\r\n                    return 1\r\n                }\r\n                return 0\r\n            })\r\n\r\n            setAllAreas(uniqueAreas)\r\n        }\r\n    }\r\n\r\n    const getAllAccommodationTowns = (allAccommodations) => {\r\n        if (allAccommodations.length > 0) {\r\n            const towns = [...new Map(allAccommodations.map(item => [item['TownUniqueName'], item])).values()];\r\n\r\n            const uniqueTowns = towns.map(t => ({ name: t.TownName, uniqueName: t.TownUniqueName, prefectureUniqueName: t.PrefectureUniqueName, checked: false, disabled: false }));\r\n\r\n            uniqueTowns.sort(function (a, b) {\r\n                let nameA = a.name.toLowerCase(),\r\n                    nameB = b.name.toLowerCase();\r\n\r\n                if (nameA < nameB) {\r\n                    return -1\r\n                }\r\n                if (nameA > nameB) {\r\n                    return 1\r\n                }\r\n                return 0\r\n\r\n            })\r\n\r\n            setAllTowns(uniqueTowns)\r\n        }\r\n    }\r\n\r\n    const getSearchResult = (thisAccommodationList) => {\r\n        let searchedAccommodation = thisAccommodationList\r\n\r\n        var searchedAccommodationPrefecture = []\r\n        var searchedAccommodationArea = []\r\n        var searchedAccommodationTown = []\r\n        var searchedAccommodationSkiArea = []\r\n\r\n        // Prefecture Search\r\n        let selectedPrefectureList = selectedPrefectures.filter(function (currentElement) {\r\n            return (currentElement.checked)\r\n        })\r\n\r\n        if (selectedPrefectureList.length > 0) {\r\n\r\n            var prefectureUniqueNames = selectedPrefectureList.map(function (obj) { return obj.uniqueName; })\r\n\r\n            searchedAccommodationPrefecture = thisAccommodationList.filter(({ PrefectureUniqueName }) => prefectureUniqueNames.includes(PrefectureUniqueName))\r\n        }\r\n\r\n        // Area Search\r\n        let selectedAreaList = selectedAreas.filter(function (currentElement) {\r\n            return (currentElement.checked)\r\n        });\r\n\r\n        if (selectedAreaList.length > 0) {\r\n\r\n            var areaUniqueNames = selectedAreaList.map(function (obj) { return obj.uniqueName; })\r\n\r\n            searchedAccommodationArea = thisAccommodationList.filter(({ AreaUniqueName }) => areaUniqueNames.includes(AreaUniqueName))\r\n        }\r\n\r\n        // Town Search\r\n        let selectedTownList = selectedTowns.filter(function (currentElement) {\r\n            return (currentElement.checked)\r\n        });\r\n\r\n        if (selectedTownList.length > 0) {\r\n\r\n            var townUniqueNames = selectedTownList.map(function (obj) { return obj.uniqueName; })\r\n\r\n            searchedAccommodationTown = thisAccommodationList.filter(({ TownUniqueName }) => townUniqueNames.includes(TownUniqueName))\r\n        }\r\n\r\n        // Ski Area Search\r\n        let selectedSkiAreaList = selectedSkiAreas.filter(function (currentElement) {\r\n            return (currentElement.checked)\r\n        })\r\n\r\n        if (selectedSkiAreaList.length > 0) {\r\n\r\n            var skiAreaUniqueNames = selectedSkiAreaList.map(function (obj) { return obj.uniqueName; })\r\n\r\n            var selectedNearbySkiAreas = allNearbySkyAreaList.filter(({ SkiAreaUniqueName }) => skiAreaUniqueNames.includes(SkiAreaUniqueName))\r\n\r\n            var accommodationUniqueNames = selectedNearbySkiAreas.map(function (obj) { return obj.AccommodationUniqueName })\r\n\r\n            searchedAccommodationSkiArea = thisAccommodationList.filter(({ UniqueName }) => accommodationUniqueNames.includes(UniqueName))\r\n        }\r\n\r\n        if (selectedPrefectureList.length > 0 || selectedAreaList.length > 0 || selectedTownList.length > 0 || selectedSkiAreaList.length > 0) {\r\n            searchedAccommodation = [...new Set([...searchedAccommodationPrefecture, ...searchedAccommodationTown, ...searchedAccommodationArea, ...searchedAccommodationSkiArea])];\r\n\r\n            setNoFilter(false)\r\n        }\r\n\r\n        searchedAccommodation = searchedAccommodation.sort(function (a, b) {\r\n            let nameA = a.Name.toLowerCase(), nameB = b.Name.toLowerCase()\r\n\r\n            if (nameA < nameB) {\r\n                return -1\r\n            }\r\n            if (nameA > nameB) {\r\n                return 1\r\n            }\r\n            return 0\r\n        })\r\n\r\n        setAllAccommodationList(searchedAccommodation)\r\n        getAccommodationPrefectures(searchedAccommodation)\r\n        getAllAccommodationAreas(accommodationList)\r\n        getAllAccommodationTowns(accommodationList)\r\n    }\r\n\r\n    useEffect(() => {\r\n        fetchAccommodationHomePage()\r\n    }, [params])\r\n\r\n    useEffect(() => {\r\n        getSearchResult(accommodationList)\r\n\r\n    }, [params, accommodationList, uniqueSkiAreas, selectedPrefectures, selectedTowns, selectedAreas, selectedSkiAreas])\r\n\r\n    const ClearSearch = () => {\r\n\r\n        if (selectedPrefectures.length > 0) {\r\n            const selPrefectures = selectedPrefectures.map(p => ({ name: p.name, uniqueName: p.uniqueName, checked: false }))\r\n            setSelectedPrefectures(selPrefectures)\r\n        }\r\n\r\n        if (selectedAreas.length > 0) {\r\n            const selAreas = selectedAreas.map(a => ({ name: a.AreaName, uniqueName: a.AreaUniqueName, prefectureUniqueName: a.PrefectureUniqueName, checked: false, disabled: false }))\r\n            setSelectedAreas(selAreas)\r\n        }\r\n\r\n        if (selectedTowns.length > 0) {\r\n            const selTowns = selectedTowns.map(t => ({ name: t.TownName, uniqueName: t.TownUniqueName, prefectureUniqueName: t.PrefectureUniqueName, checked: false, disabled: false }))\r\n            setSelectedTowns(selTowns)\r\n        }\r\n\r\n        if (selectedSkiAreas.length > 0) {\r\n            const selSkiAreas = uniqueSkiAreas.map(sa => ({ name: sa.name, uniqueName: sa.uniqueName, prefectureUniqueName: sa.prefectureUniqueName, accommodationUniqueName: sa.accommodationUniqueName, checked: false, disabled: false }))\r\n            setSelectedSkiAreas(selSkiAreas)\r\n        }\r\n\r\n        getSearchResult(accommodationList)\r\n        setNoFilter(true)\r\n\r\n        ClearSort.current()\r\n    }\r\n\r\n    if (prefectures.length <= 0) {\r\n        return (\r\n            <Loader />\r\n        )\r\n    } else {\r\n        return (\r\n            <div className='empty-row'>\r\n                <Helmet>\r\n                    <title>Accommodation near ski areas in Japan | SnowJapan</title>\r\n                    <meta name=\"description\" content=\"Accommodation and places to stay near popular ski areas throughout Japan\" />\r\n                </Helmet>\r\n                <h3>Accommodation</h3>\r\n                <div className=\"sj-para-image\"><img src=\"https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-Accommodations.svg\" alt=\"Japan Ski Areas\" /></div>\r\n                <div>\r\n                    <div className=\"sj-para\">\r\n                        <div dangerouslySetInnerHTML={{ __html: RenderBreak(accommodationHomePage) }} />\r\n                    </div>\r\n                </div>\r\n                <div className='empty-row'>\r\n                    <Button variant=\"primary\" onClick={handleShow} className='sj-large-font-button sj-red-bg'>{'< Select filters'}</Button>&nbsp;\r\n                    <Button variant=\"primary\" onClick={ClearSearch} className='sj-large-font-button'>Clear all filters</Button>\r\n                    <Offcanvas show={show} onHide={handleClose}>\r\n                        <Offcanvas.Header closeButton>\r\n                            <Offcanvas.Title>\r\n                                <h3>Choose filter(s)</h3>\r\n                            </Offcanvas.Title>\r\n                        </Offcanvas.Header>\r\n                        <Offcanvas.Body>\r\n                            <div>Choose any combination of filters from this list of Prefectures, Areas and Towns.</div>\r\n                            <div className='search-bar-frame'>\r\n                                <div className='search-bar-frame-body sj-box-lighter-blue'>\r\n                                    <PrefectureCheckList\r\n                                        options={prefectures}\r\n                                        selectedPrefectures={selectedPrefectures}\r\n                                        onChange={data => {\r\n                                            setSelectedPrefectures(data)\r\n                                        }}\r\n                                    />\r\n                                </div>\r\n                            </div>\r\n                            <div className='search-bar-frame'>\r\n                                <div className='search-bar-frame-body sj-box-lighter-blue'>\r\n                                    <AreaCheckList\r\n                                        options={allAreas}\r\n                                        selectedPrefectures={selectedPrefectures}\r\n                                        selectedAreas={selectedAreas}\r\n                                        onChange={data => {\r\n                                            setSelectedAreas(data)\r\n                                        }}\r\n                                    />\r\n                                </div>\r\n                            </div>\r\n                            <div className='search-bar-frame'>\r\n                                <div className='search-bar-frame-body sj-box-lighter-blue'>\r\n                                    <TownCheckList\r\n                                        options={allTowns}\r\n                                        selectedPrefectures={selectedPrefectures}\r\n                                        selectedTowns={selectedTowns}\r\n                                        onChange={data => {\r\n                                            setSelectedTowns(data)\r\n                                        }}\r\n                                    />\r\n                                </div>\r\n                            </div>\r\n                            <div className='search-bar-frame'>\r\n                                <div className='search-bar-frame-body sj-box-lighter-blue'>\r\n                                    <NearbySkiAreaCheckList\r\n                                        options={uniqueSkiAreas}\r\n                                        selectedPrefectures={selectedPrefectures}\r\n                                        selectedSkiAreas={selectedSkiAreas}\r\n                                        onChange={data => {\r\n                                            setSelectedSkiAreas(data)\r\n                                        }}\r\n                                    />\r\n                                </div>\r\n                            </div>\r\n                        </Offcanvas.Body>\r\n                    </Offcanvas>\r\n                    <div>\r\n                        <SearchResult allAccommodationList={allAccommodationList} ClearSort={ClearSort} prefectures={selectedPrefectures} areas={selectedAreas} towns={selectedTowns} nearbySkiAreas={selectedSkiAreas} noFilter={noFilter} />\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        )\r\n    }\r\n};\r\n\r\nexport default AccommodationHome","import { useState, useEffect } from 'react'\r\nimport { useParams } from 'react-router-dom'\r\nimport axios from 'axios'\r\nimport { Helmet } from \"react-helmet\"\r\nimport AccommodationHome from './Home'\r\n\r\nconst AccommodationContainer = () => {\r\n    const params = useParams()\r\n    const [accommodationList, setAccommodationList] = useState([])\r\n    const [allNearbySkyAreaList, setAllNearbySkyAreaList] = useState([])\r\n    const [uniqueSkiAreas, setuniqueSkiAreas] = useState([])\r\n\r\n    const fetchAccommodationList = async (thisParam) => {\r\n        axios({\r\n            method: 'POST',\r\n            url: `${window.$baseAPIUrl}/accommodation/list/all/all`\r\n        }).then(dataAccommodationList => {\r\n            setAccommodationList(dataAccommodationList.data)\r\n            return axios({\r\n                method: 'POST',\r\n                url: `${window.$baseAPIUrl}/accommodation/nearby-resorts/list/all`\r\n            })\r\n        }).then(dataNearbySkyAras => {\r\n            setAllNearbySkyAreaList(dataNearbySkyAras.data)\r\n            getAllAccommodationNearbySkiAreas(dataNearbySkyAras.data)\r\n        })\r\n    };\r\n\r\n    const getAllAccommodationNearbySkiAreas = (nearbySkyAreas) => {\r\n\r\n        if (nearbySkyAreas.length > 0) {\r\n            const nearbySkiAreas = [...new Map(nearbySkyAreas.map(item => [item['SkiAreaUniqueName'], item])).values()];\r\n\r\n            const allUniqueSkiAreas = nearbySkiAreas.map(sa => ({ name: sa.SkiAreaName, uniqueName: sa.SkiAreaUniqueName, prefectureUniqueName: sa.SkiAreaPrefectureUniqueName, accommodationUniqueName: sa.AccommodationUniqueName, checked: false, disabled: false }));\r\n\r\n            allUniqueSkiAreas.sort(function (a, b) {\r\n                let nameA = a.name.toLowerCase(),\r\n                    nameB = b.name.toLowerCase();\r\n\r\n                if (nameA < nameB) {\r\n                    return -1;\r\n                }\r\n                if (nameA > nameB) {\r\n                    return 1;\r\n                }\r\n                return 0;\r\n\r\n            })\r\n\r\n            setuniqueSkiAreas(allUniqueSkiAreas)\r\n        }\r\n    }\r\n\r\n    useEffect(() => {\r\n        fetchAccommodationList(params)\r\n    }, [params]);\r\n\r\n    return (\r\n        <>\r\n            <Helmet>\r\n                <title>Accommodation Title</title>\r\n                <meta name=\"description\" content=\"Helmet application\" />\r\n            </Helmet>\r\n            <AccommodationHome accommodationList={accommodationList} uniqueSkiAreas={uniqueSkiAreas} allNearbySkyAreaList={allNearbySkyAreaList} />\r\n        </>\r\n    )\r\n};\r\n\r\nexport default AccommodationContainer;","import { useState, useEffect } from 'react'\r\nimport { useParams } from 'react-router-dom'\r\nimport { DropdownButton, Dropdown } from 'react-bootstrap'\r\nimport { Link } from 'react-router-dom'\r\n\r\nconst AccommodationDetailTabs = () => {\r\n\r\n  const params = useParams()\r\n\r\n  const [buttonTitle, setButtonTitle] = useState('Introduction')\r\n  const [subItemName, setSubItemName] = useState('')\r\n  const baseUrlPath = window.$baseAccommodationUrl + '/' + params.prefecture + '/' + params.town + '/' + params.hotel\r\n\r\n  useEffect(() => {\r\n\r\n    setSubItemName(params.type)\r\n\r\n    let thisButtonTitle\r\n    switch (params.type) {\r\n      case 'photographs':\r\n        thisButtonTitle = 'Photographs';\r\n        break;\r\n      case 'route-finder':\r\n        thisButtonTitle = 'Route Finder';\r\n        break;\r\n      default:\r\n        thisButtonTitle = \"Introduction\";\r\n    }\r\n\r\n    setButtonTitle(thisButtonTitle)\r\n\r\n  }, [params]);\r\n\r\n  return (\r\n    <div>\r\n      <div className=\"d-none d-lg-block bg-color-accommodation\">\r\n        <ul className=\"tabs\">\r\n          <li className={`${subItemName === undefined ? \" active\" : \"\"}`}>\r\n            <Link to={`${baseUrlPath}`}>Introduction</Link>\r\n          </li>\r\n          <li className={`${subItemName === 'photographs' ? \" active\" : \"\"}`}>\r\n            <Link to={`${baseUrlPath}/photographs`}>Photographs</Link>\r\n          </li>\r\n          {/*<li className={`${subItemName === 'route-finder' ? \" active\" : \"\"}`}>\r\n            <Link to={`${baseUrlPath}/route-finder`}>Route Finder</Link>\r\n  </li>*/}\r\n        </ul>\r\n      </div>\r\n      <div className=\"d-lg-none sj-row-100\">\r\n        <DropdownButton align=\"end\" title={buttonTitle} id=\"dropdown-menu-align-end\" variant=\"danger\" className='sj-large-font-button accommodation-sub-menu'>\r\n          <Dropdown.Item as={Link} to={`${baseUrlPath}`}>Introduction</Dropdown.Item>\r\n          <Dropdown.Item as={Link} to={`${baseUrlPath}/photographs`}>Photographs</Dropdown.Item>\r\n          {/*<Dropdown.Item as={Link} to={`${baseUrlPath}/route-finder`}>Route Finder</Dropdown.Item>*/}\r\n        </DropdownButton>\r\n      </div>\r\n    </div>\r\n  );\r\n}\r\n\r\nexport default AccommodationDetailTabs;","const AccommodationInfo = ({ accommodation }) => {\r\n  return (\r\n    <div className='sj-para'>\r\n      <div className=\"sj-para-large\">\r\n        <h3 className=\"sj-lighter-blue-text\">{accommodation.TownName} {accommodation.TownTypeStr}, {accommodation.PrefectureName}</h3>\r\n        {accommodation.PrefectureNameJapanese}{accommodation.TownNameJapanese}\r\n      </div>\r\n      {(accommodation.WebUrl !== '' && accommodation.WebUrl !== undefined && accommodation.WebUrl !== null) &&\r\n        <div>\r\n          <a className=\"sj-large-button-blue btn btn-primary\" href={accommodation.WebUrl} target=\"_blank\" rel='noreferrer'> <strong>VISIT WEBSITE</strong> </a>\r\n        </div>\r\n      }\r\n      {/*{(accommodation.EmailAddress1 !== '' && accommodation.EmailAddress1 !== undefined && accommodation.EmailAddress1 !== null) &&\r\n        <div className='sj-para'>\r\n          <h4>Email: <a href={`mailto:${accommodation.EmailAddress1}`}>Send</a></h4>\r\n        </div>\r\n      }\r\n      {(accommodation.PhoneNumber1 !== '' && accommodation.PhoneNumber1 !== undefined && accommodation.PhoneNumber1 !== null) &&\r\n        <div className='sj-para'>\r\n          <h4>Phone (in Japan): {accommodation.PhoneNumber1}</h4>\r\n        </div>\r\n      }*/}\r\n    </div>\r\n  );\r\n}\r\n\r\nexport default AccommodationInfo;","import { Link } from 'react-router-dom'\r\nimport { Image } from 'react-bootstrap'\r\nimport AccommodationInfo from '../AccommodationInfo'\r\nimport { RenderBreak } from '../../../../helpers/Helper'\r\n\r\nconst BasicContainer = ({ accommodation, nearbySkyAraList, accommodationPhotos }) => {\r\n\r\n    let sortedAccommodationPhotos = []\r\n    let firstAccommodationPhoto = undefined\r\n\r\n    if (accommodationPhotos.length > 0) {\r\n        sortedAccommodationPhotos = accommodationPhotos.filter(function (currentElement) {\r\n            return (currentElement.SortOrder !== null);\r\n        });\r\n\r\n        sortedAccommodationPhotos.sort(function (a, b) {\r\n            return a.SortOrder - b.SortOrder\r\n        })\r\n\r\n        if (sortedAccommodationPhotos.length > 0) {\r\n            firstAccommodationPhoto = sortedAccommodationPhotos[0]\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div className='empty-row'>\r\n            <div className='empty-row'>\r\n                {firstAccommodationPhoto !== undefined &&\r\n                    <div className=\"accommodation-first-photo right-aligned\">\r\n                        <Image src={`https://www.snowjapan.com/UploadedFiles/HotelImages/Photos/${firstAccommodationPhoto.FileName}`} className='img-fluid' alt='Hotel 1' />\r\n                    </div>\r\n                }\r\n                <div>\r\n                    <AccommodationInfo accommodation={accommodation} firstAccommodationPhoto={firstAccommodationPhoto} />\r\n                    <div className=\"sj-para\">\r\n                        <div dangerouslySetInnerHTML={{ __html: RenderBreak(accommodation.PageContent) }} />\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            <div>\r\n                <div className='ratio ratio-16x9'>\r\n                    <iframe title='Location Map' width='930' height='600' src={`https://www.google.com/maps/embed/v1/place?q=${accommodation.Location_Latitude},${accommodation.Location_Longitude}&key=AIzaSyAmyWUwcoNW504tXuRlQ_mZssrKEEhGn20&zoom=${accommodation.Location_MapZoomLevel}`} allowFullScreen></iframe>\r\n                </div>\r\n            </div>\r\n            <div className='empty-row'>\r\n                <div className='row sj-no-bg sj-row-no-margin-padding'>\r\n                    {sortedAccommodationPhotos.length > 1 &&\r\n                        <div className='col-md-6 center-aligned mt-3'>\r\n                            <Image src={`https://www.snowjapan.com/UploadedFiles/HotelImages/Photos/${sortedAccommodationPhotos[1].FileName}`} fluid='true' alt='Hotel 2' />\r\n                        </div>\r\n                    }\r\n                    {sortedAccommodationPhotos.length > 2 &&\r\n                        <div className='col-md-6 center-aligned mt-3'>\r\n                            <Image src={`https://www.snowjapan.com/UploadedFiles/HotelImages/Photos/${sortedAccommodationPhotos[2].FileName}`} fluid='true' alt='Hotel 3' />\r\n                        </div>\r\n                    }\r\n                </div>\r\n            </div>\r\n            <div className='empty-row padding-top'>\r\n                <h2 className='mt-3'>Nearby Ski Areas</h2>\r\n                <div>\r\n                    <div className='row sj-frame-header sj-row-no-margin-padding'>\r\n                        <div className=\"col-8\">\r\n                            <h5>Ski Area</h5>\r\n                        </div>\r\n                        <div className=\"col-4\">\r\n                            <h5>Distance</h5>\r\n                        </div>\r\n                    </div>\r\n                    <div className='sj-data-table-holder'>\r\n                        {nearbySkyAraList.map(nearbySkyAra => (\r\n                            <div className='row sj-frame-body sj-row-no-margin-padding' key={nearbySkyAra.Id}>\r\n                                <div className=\"col-8\">\r\n                                    <Link to={`${window.$baseSkiAreaUrl}/${nearbySkyAra.SkiAreaPrefectureName}/${nearbySkyAra.SkiAreaTownUniqueName}/${nearbySkyAra.SkiAreaUniqueName}`}>{nearbySkyAra.SkiAreaName}</Link>\r\n                                </div>\r\n                                <div className=\"col-4\">\r\n                                    {nearbySkyAra.Distance}km\r\n                                </div>\r\n                            </div>\r\n                        ))}\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    )\r\n};\r\n\r\nexport default BasicContainer;","import AccommodationInfo from '../AccommodationInfo'\r\nimport { useState, useEffect, useCallback } from 'react'\r\nimport Gallery from \"react-photo-gallery\";\r\nimport Carousel, { Modal, ModalGateway } from \"react-images\";\r\nimport Loader from \"../../../Common/Loader\"\r\n\r\nconst PhotographsContainer = ({ accommodation, accommodationPhotos }) => {\r\n    const [currentImage, setCurrentImage] = useState(0);\r\n    const [viewerIsOpen, setViewerIsOpen] = useState(false);\r\n    const [photoList, setPhotoList] = useState([]);\r\n\r\n    const openLightbox = useCallback((event, { photo, index }) => {\r\n        setCurrentImage(index);\r\n        setViewerIsOpen(true);\r\n    }, []);\r\n\r\n    const closeLightbox = () => {\r\n        setCurrentImage(0);\r\n        setViewerIsOpen(false);\r\n    };\r\n\r\n    const fetchAccommodationPhotos = (thisAccommodationPhotos) => {\r\n        var accommodationPhotoList = thisAccommodationPhotos.map(p => ({ src: 'https://www.snowjapan.com/UploadedFiles/HotelImages/Photos/' + p.FileName, width: p.ImageWidth, height: p.ImageHeight }));\r\n        setPhotoList(accommodationPhotoList);\r\n    }\r\n\r\n    useEffect(() => {\r\n        fetchAccommodationPhotos(accommodationPhotos);\r\n    }, [accommodationPhotos]);\r\n\r\n    if (photoList.length <= 0) {\r\n        return (\r\n            <Loader />\r\n        )\r\n    } else {\r\n        return (\r\n            <div className='empty-row'>\r\n                <div className='empty-row'>\r\n                    <AccommodationInfo accommodation={accommodation} />\r\n                </div>\r\n                <div className='empty-row'>\r\n                    <h1>Photographs</h1>\r\n                </div>\r\n                <div className='empty-row'>\r\n                    <Gallery photos={photoList} onClick={openLightbox} />\r\n                    <ModalGateway>\r\n                        {viewerIsOpen ? (\r\n                            <Modal onClose={closeLightbox}>\r\n                                <Carousel\r\n                                    currentIndex={currentImage}\r\n                                    views={photoList.map(x => ({\r\n                                        ...x,\r\n                                        srcset: x.srcSet,\r\n                                        caption: x.title\r\n                                    }))}\r\n                                />\r\n                            </Modal>\r\n                        ) : null}\r\n                    </ModalGateway>\r\n                </div>\r\n            </div >\r\n        )\r\n    }\r\n};\r\n\r\nexport default PhotographsContainer;","import AccommodationInfo from '../AccommodationInfo'\r\n\r\nconst RouteFinderContainer = ({ accommodation }) => {\r\n    return (\r\n        <div>\r\n            <h1>Route Finder</h1>\r\n            <AccommodationInfo accommodation={accommodation} />\r\n            <div>\r\n            </div>\r\n        </div>\r\n    )\r\n};\r\n\r\nexport default RouteFinderContainer;","import { useState, useEffect, Fragment } from 'react'\r\nimport { useParams } from 'react-router-dom'\r\nimport axios from 'axios'\r\nimport { Helmet } from 'react-helmet'\r\nimport Loader from \"../../Common/Loader\"\r\nimport AccommodationDetailTabs from './AccommodationDetailTabs'\r\nimport BasicContainer from './BasicInfo/BasicInfoContainer'\r\nimport PhotographsContainer from './Photographs/PhotographsContainer'\r\nimport RouteFinderContainer from './RouteFinder/RouteFinderContainer'\r\n\r\nconst AccommodationDetailContainer = () => {\r\n\r\n    const params = useParams()\r\n\r\n    const [accommodation, setAccommodation] = useState([]);\r\n    const [accommodationPhotos, setAccommodationPhotos] = useState([]);\r\n    const [nearbySkyAras, setNearbySkyAras] = useState([]);\r\n\r\n    const fetchAccommodationPhotosAndNearbySkyAras = async (hotelUniqueName) => {\r\n        axios({\r\n            method: 'POST',\r\n            url: `${window.$baseAPIUrl}/accommodation/${hotelUniqueName}`\r\n        }).then(dataAccommodation => {\r\n            setAccommodation(dataAccommodation.data)\r\n            return axios({\r\n                method: 'POST',\r\n                url: `${window.$baseAPIUrl}/accommodation/photos/${hotelUniqueName}`\r\n            })\r\n        }).then(dataAccommodationPhotos => {\r\n            setAccommodationPhotos(dataAccommodationPhotos.data)\r\n            return axios({\r\n                method: 'POST',\r\n                url: `${window.$baseAPIUrl}/accommodation/nearby-resorts/skiarea/${hotelUniqueName}`\r\n            })\r\n        }).then(dataNearbySkyAreas => {\r\n            setNearbySkyAras(dataNearbySkyAreas.data)\r\n        })\r\n    };\r\n\r\n    useEffect(() => {\r\n        fetchAccommodationPhotosAndNearbySkyAras(params.hotel);\r\n    }, [params.hotel]);\r\n\r\n    if (accommodation.length <= 0) {\r\n        return (\r\n            <Loader />\r\n        )\r\n    }\r\n    else {\r\n        return (\r\n            <Fragment>\r\n                <Helmet>\r\n                    <title>{accommodation.Name}, an accommodation {accommodation.TownName} {accommodation.TownTypeStr}, {accommodation.PrefectureName}, Japan  |  {accommodation.NameJapanese} | SnowJapan</title>\r\n                    <meta name=\"description\" content={`Introducing ${accommodation.Name}, an accommodation located close to ski areas in ${accommodation.TownName} ${accommodation.TownTypeStr}, ${accommodation.PrefectureName}, Japan.`} />\r\n                </Helmet>\r\n                <h2>{accommodation.Name}</h2>\r\n                <div className='sj-para-large mt-1 mb-3'>{accommodation.NameJapanese}</div>\r\n                <AccommodationDetailTabs />\r\n                <>\r\n                    {\r\n                        {\r\n                            undefined: <BasicContainer accommodation={accommodation} nearbySkyAraList={nearbySkyAras} accommodationPhotos={accommodationPhotos} />,\r\n                            'photographs': <PhotographsContainer accommodation={accommodation} accommodationPhotos={accommodationPhotos} />,\r\n                            'route-finder': <RouteFinderContainer accommodation={accommodation} />\r\n                        }[params.type]\r\n                    }\r\n                </>\r\n            </Fragment>\r\n        )\r\n    }\r\n};\r\n\r\nexport default AccommodationDetailContainer;","import axios from 'axios'\r\nimport { useState, useEffect } from 'react'\r\nimport { Link, useLocation } from 'react-router-dom'\r\nimport { Helmet } from 'react-helmet'\r\nimport { DropdownButton, Dropdown } from 'react-bootstrap'\r\nimport { RenderBreak } from '../../helpers/Helper'\r\n\r\nconst Home = ({ listingSectionList, listingList, accommodationList }) => {\r\n\r\n    const location = useLocation()\r\n\r\n    const [listingIntroductionText, setListingIntroductionText] = useState('')\r\n\r\n    const fetchListingMessage = async () => {\r\n        axios({\r\n            method: 'POST',\r\n            url: `${window.$baseAPIUrl}/generalmessage/Listing`\r\n        }).then(resGeneralMessages => {\r\n            setListingIntroductionText(resGeneralMessages.data.Message)\r\n        })\r\n    }\r\n\r\n    useEffect(() => {\r\n        fetchListingMessage()\r\n    }, [location.pathname]);\r\n\r\n    const getSectionListingList = (sectionUniqueName) => {\r\n        const listings = listingList.filter(function (currentElement) {\r\n            return (currentElement.SectionUniqueName === sectionUniqueName)\r\n        })\r\n\r\n        return listings\r\n    }\r\n\r\n    return (\r\n        <div className='sj-row'>\r\n            <Helmet>\r\n                <title>Accommodation, ski lessons and jobs available near ski areas around Japan | SnowJapan</title>\r\n                <meta name=\"description\" content='Introducing various accommodations, ski schools and other businesses near ski areas in Japan' />\r\n            </Helmet>\r\n            {\r\n                (listingIntroductionText !== null && listingIntroductionText !== undefined && listingIntroductionText !== '') &&\r\n                <div dangerouslySetInnerHTML={{ __html: RenderBreak(listingIntroductionText) }} />\r\n            }\r\n            <div className='sj-listing-frame-row'>\r\n                {(accommodationList !== undefined && accommodationList.length > 0) &&\r\n                    <div className='sj-listing-frame-holder'>\r\n                        <div className='sj-listing-frame'>\r\n                            <div className='sj-listing-frame-body'>\r\n                                <div>\r\n                                    <h4>Accommodation</h4>\r\n                                </div>\r\n                                <div>\r\n                                    <DropdownButton id=\"accommodation-list-button\" title=\"Please Select\" drop='down'>\r\n                                        {accommodationList.map((item, index) => (\r\n                                            <Dropdown.Item key={index} as={Link} to={`${window.$baseAccommodationUrl}/${item.PrefectureUniqueName}/${item.TownUniqueName}/${item.UniqueName}`}>{item.Name}</Dropdown.Item>\r\n                                        ))}\r\n                                    </DropdownButton>\r\n                                </div>\r\n                                <div className='mt-3'>\r\n                                    <Link to={window.$baseAccommodationUrl}>Full accommodation listings</Link>\r\n                                </div>\r\n                                <div>\r\n                                    <Link to={window.$baseAccommodationUrl}><img src={`https://www.snowjapan.com/UploadedFiles/SectionIcons/SnowJapan-Icons_Accommodation.svg`} alt='accommodation' /></Link>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                }\r\n                {listingSectionList.map(listingSection => (\r\n                    <div key={listingSection.Id} className='sj-listing-frame-holder'>\r\n                        <div className='sj-listing-frame'>\r\n                            <div className='sj-listing-frame-body'>\r\n                                <div>\r\n                                    <h4>{listingSection.Name}</h4>\r\n                                </div>\r\n                                <div>\r\n                                    <DropdownButton id={listingSection.UniqueName} title=\"Please Select\" drop='down'>\r\n                                        {getSectionListingList(listingSection.UniqueName).map((item, index) => (\r\n                                            <Dropdown.Item key={index} as={Link} to={`${window.$baseListingUrl}/${listingSection.UniqueName}/${item.UniqueName}`}>{item.Name}</Dropdown.Item>\r\n                                        ))}\r\n                                    </DropdownButton>\r\n                                </div>\r\n                                <div className='mt-3'>\r\n                                    <Link to={`${window.$baseListingUrl}/${listingSection.UniqueName}`}>Full {listingSection.Name} listings</Link>\r\n                                </div>\r\n                                <div>\r\n                                    <Link to={`${window.$baseListingUrl}/${listingSection.UniqueName}`}><img src={`https://www.snowjapan.com/UploadedFiles/SectionIcons/${listingSection.SectionIcon}`} alt={`${listingSection.Name}`} /></Link>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                ))}\r\n            </div>\r\n        </div>\r\n    )\r\n}\r\n\r\nexport default Home","import { useState, useEffect } from 'react'\r\nimport { DropdownButton, Dropdown } from 'react-bootstrap'\r\nimport Loader from \"../Common/Loader\"\r\nimport ListingListTable from './ListingListTable';\r\n\r\nconst ListingList = ({ listingList }) => {\r\n\r\n  const [listings, setListings] = useState([])\r\n  const [buttonTitle, setButtonTitle] = useState('Sort By: Listing name [A-Z]')\r\n  const [sortColumn, setSortColumn] = useState('')\r\n  const [sortOrder, setSortOrder] = useState('')\r\n\r\n  useEffect(() => {\r\n    setListings(listingList)\r\n  }, [listingList])\r\n\r\n  const SortResult = (evtKey, evt) => {\r\n\r\n    var sortedResult = []\r\n    var sortColumn = ''\r\n    var sortOrder = ''\r\n\r\n    if (evtKey === '1' || evtKey === '2') {\r\n      sortedResult = listings.sort(function (a, b) {\r\n        let nameA = a.Name.toLowerCase(), nameB = b.Name.toLowerCase();\r\n\r\n        if (nameA < nameB) { return -1; }\r\n        if (nameA > nameB) { return 1; }\r\n        return 0;\r\n      })\r\n      sortOrder = \"ASC\"\r\n\r\n      if (evtKey === '2') {\r\n        sortedResult = sortedResult.reverse()\r\n        sortOrder = \"DESC\"\r\n      }\r\n\r\n      sortColumn = \"Listing name\"\r\n\r\n    } else if (evtKey === '3' || evtKey === '4') {\r\n      sortedResult = listings.sort(function (a, b) {\r\n        let nameA = a.AreaName.toLowerCase(), nameB = b.AreaName.toLowerCase();\r\n\r\n        if (nameA < nameB) { return -1; }\r\n        if (nameA > nameB) { return 1; }\r\n\r\n        if (a.Name > b.Name) return 1;\r\n        if (a.Name < b.Name) return -1;\r\n\r\n        return 0;\r\n      })\r\n      sortOrder = \"ASC\"\r\n\r\n      if (evtKey === '4') {\r\n        sortedResult = sortedResult.reverse()\r\n        sortOrder = \"DESC\"\r\n      }\r\n\r\n      sortColumn = \"Area\"\r\n\r\n    } else if (evtKey === '5' || evtKey === '6') {\r\n      sortedResult = listings.sort(function (a, b) {\r\n        let nameA = a.PrefectureName.toLowerCase(), nameB = b.PrefectureName.toLowerCase();\r\n\r\n        if (nameA < nameB) { return -1; }\r\n        if (nameA > nameB) { return 1; }\r\n\r\n        if (a.Name > b.Name) return 1;\r\n        if (a.Name < b.Name) return -1;\r\n\r\n        return 0;\r\n      })\r\n      sortOrder = \"ASC\"\r\n\r\n      if (evtKey === '6') {\r\n        sortedResult = sortedResult.reverse()\r\n        sortOrder = \"DESC\"\r\n      }\r\n\r\n      sortColumn = \"Prefecture\"\r\n    }\r\n\r\n    setListings(sortedResult)\r\n    setButtonTitle('Sort by: ' + evt.target.innerText)\r\n    setSortColumn(sortColumn)\r\n    setSortOrder(sortOrder)\r\n  }\r\n\r\n  if (listings.length > 0) {\r\n    return (\r\n      <>\r\n        <div className=\"empty-row right-aligned\">\r\n          <DropdownButton align=\"end\" title={buttonTitle} onSelect={SortResult} id=\"dropdown-menu-align-end\" className='sj-large-font-button'>\r\n            <Dropdown.Item eventKey=\"1\">Listing name [A-Z]</Dropdown.Item>\r\n            <Dropdown.Item eventKey=\"2\">Listing name [Z-A]</Dropdown.Item>\r\n            <Dropdown.Item eventKey=\"3\">Area name [A-Z]</Dropdown.Item>\r\n            <Dropdown.Item eventKey=\"4\">Area name [Z-A]</Dropdown.Item>\r\n            <Dropdown.Item eventKey=\"5\">Prefecture name [A-Z]</Dropdown.Item>\r\n            <Dropdown.Item eventKey=\"6\">Prefecture name [Z-A]</Dropdown.Item>\r\n          </DropdownButton>\r\n        </div>\r\n        <ListingListTable\r\n          tableData={listings}\r\n          sortColumn={sortColumn}\r\n          sortOrder={sortOrder}\r\n          headingColumns={['', 'Listing name', 'Area', 'Prefecture']}\r\n          dataMapping={['a', 'Name', 'AreaName', 'PrefectureName']}\r\n          title=''\r\n        />\r\n      </>\r\n    )\r\n  } else {\r\n    return (\r\n      <Loader />\r\n    )\r\n  }\r\n};\r\n\r\nexport default ListingList;","import Loader from \"../Common/Loader\"\r\nimport { Helmet } from \"react-helmet\";\r\nimport { RenderBreak } from '../../helpers/Helper'\r\nimport ListingList from './ListingList';\r\n\r\nconst ListingListContainer = ({ sectionUniqueName, listingSectionList, listingList }) => {\r\n\r\n  //const [listingSection, setListingSection] = useState({})\r\n  //const [listings, setListings] = useState([])\r\n\r\n  const listingSection = listingSectionList.filter(function (currentElement) {\r\n    return (currentElement.UniqueName === sectionUniqueName);\r\n  });\r\n\r\n  const listings = listingList.filter(function (currentElement) {\r\n    return (currentElement.SectionUniqueName === sectionUniqueName);\r\n  });\r\n\r\n  if (listingSectionList.length > 0 && listingList.length > 0) {\r\n    return (\r\n      <>\r\n        {(sectionUniqueName !== 'accommodation') &&\r\n          <div className='empty-row'>\r\n            <Helmet>\r\n              <title>{listingSection[0].Name} near ski areas in Japan | SnowJapan</title>\r\n              <meta name=\"description\" content={`${listingSection[0].Name} near popular ski areas throughout Japan`} />\r\n            </Helmet>\r\n            <h3>{listingSection[0].Name}</h3>\r\n            <div className=\"sj-para-image\">\r\n              {listingSection[0].UniqueName === 'resort-spotlights' &&\r\n                <img src=\"https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-SkiArea.svg\" alt={listingSection[0].Name} />\r\n              }\r\n              {listingSection[0].UniqueName === 'lessons' &&\r\n                <img src=\"https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-Facilities-Lessons.svg\" alt={listingSection[0].Name} />\r\n              }\r\n              {listingSection[0].UniqueName === 'job-listings' &&\r\n                <img src=\"https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-Jobs-Available.svg\" alt={listingSection[0].Name} />\r\n              }\r\n            </div>\r\n            <div>\r\n              <div className=\"sj-para\">\r\n                {(listingSection[0].IntroductionText !== null && listingSection[0].IntroductionText !== undefined && listingSection[0].IntroductionText !== '') &&\r\n                  <div dangerouslySetInnerHTML={{ __html: RenderBreak(listingSection[0].IntroductionText) }} />\r\n                }\r\n              </div>\r\n            </div>\r\n            <ListingList listingList={listings} />\r\n          </div>\r\n        }\r\n      </>\r\n    )\r\n  } else {\r\n    return (\r\n      <Loader />\r\n    )\r\n  }\r\n};\r\n\r\nexport default ListingListContainer;","import { RenderBreak } from '../../helpers/Helper'\r\nimport Loader from \"../Common/Loader\"\r\nimport { Helmet } from 'react-helmet'\r\n\r\nconst ListingDetail = ({ listingUniqueName, listingList }) => {\r\n\r\n  const listings = listingList.filter(function (currentElement) {\r\n    return (currentElement.UniqueName === listingUniqueName);\r\n  });\r\n\r\n  const listingDetail = listings[0]\r\n\r\n  if (listingDetail !== undefined) {\r\n    return (\r\n      <>\r\n        <Helmet>\r\n          <title>{listingDetail.Name}</title>\r\n          <meta name=\"description\" content={listingDetail.Description} />\r\n        </Helmet>\r\n        <div dangerouslySetInnerHTML={{ __html: RenderBreak(listingDetail.HtmlContent) }} />\r\n      </>\r\n    )\r\n  } else {\r\n    return (\r\n      <Loader />\r\n    )\r\n  }\r\n\r\n\r\n};\r\n\r\nexport default ListingDetail;","import axios from 'axios'\r\nimport { useState, useEffect, Fragment } from 'react'\r\nimport { useParams } from 'react-router-dom'\r\nimport Home from './Home'\r\nimport ListingListContainer from './ListingListContainer'\r\nimport ListingDetail from './ListingDetail'\r\n\r\nconst ListingContainer = () => {\r\n\r\n    const params = useParams()\r\n\r\n    let requestType = undefined\r\n\r\n    if (params.section_name !== undefined && params.section_name !== '' && (params.listing_name === '' || params.listing_name === undefined)) {\r\n        requestType = 'section_listing'\r\n    } else if (params.section_name !== undefined && params.section_name !== '' && params.listing_name !== undefined && params.listing_name !== '') {\r\n        requestType = 'listing_detail'\r\n    }\r\n\r\n    const [listingList, setListingList] = useState([]);\r\n    const [listingSectionList, setListingSectionList] = useState([]);\r\n    const [accommodationList, setAccommodationList] = useState([]);\r\n\r\n    const fetchListingSectionsAndListings = async (thisMatch) => {\r\n        axios({\r\n            method: 'POST',\r\n            url: `${window.$baseAPIUrl}/listingGuideSection/sections/list/Listing`\r\n        }).then(resListingSections => {\r\n            setListingSectionList(resListingSections.data)\r\n            return axios({\r\n                method: 'POST',\r\n                url: `${window.$baseAPIUrl}/listingGuideSection/listings/list/All`\r\n            })\r\n        }).then(resListings => {\r\n            setListingList(resListings.data)\r\n            return axios({\r\n                method: 'POST',\r\n                url: `${window.$baseAPIUrl}/accommodation/list/all/all`\r\n            })\r\n        }).then(dataAccommodationList => {\r\n\r\n            if (dataAccommodationList.data.length > 0) {\r\n                let thisAccommodationList = dataAccommodationList.data\r\n                thisAccommodationList.sort(function (a, b) {\r\n                    let nameA = a.Name.toLowerCase(),\r\n                        nameB = b.Name.toLowerCase();\r\n\r\n                    if (nameA < nameB) {\r\n                        return -1;\r\n                    }\r\n                    if (nameA > nameB) {\r\n                        return 1;\r\n                    }\r\n                    return 0;\r\n\r\n                })\r\n                setAccommodationList(thisAccommodationList)\r\n            }\r\n        })\r\n    };\r\n\r\n    useEffect(() => {\r\n        fetchListingSectionsAndListings(params)\r\n    }, [params]);\r\n\r\n    return (\r\n        <Fragment>\r\n            <>\r\n                {\r\n                    {\r\n                        undefined: <Home listingSectionList={listingSectionList} listingList={listingList} accommodationList={accommodationList} />,\r\n                        'section_listing': <ListingListContainer sectionUniqueName={params.section_name} listingSectionList={listingSectionList} listingList={listingList} />,\r\n                        'listing_detail': <ListingDetail listingUniqueName={params.listing_name} listingList={listingList} />\r\n                    }[requestType]\r\n                }\r\n            </>\r\n        </Fragment>\r\n    )\r\n};\r\n\r\nexport default ListingContainer;","import axios from 'axios'\r\nimport { useState, useEffect } from 'react'\r\nimport { useLocation } from 'react-router-dom'\r\nimport { RenderBreak } from '../../helpers/Helper'\r\n\r\nconst GuideHome = () => {\r\n\r\n    const location = useLocation()\r\n\r\n    const [guideHomePage, setGuideHomePage] = useState('');\r\n\r\n    const fetchGuideHomePage = async () => {\r\n        axios({\r\n            method: 'POST',\r\n            url: `${window.$baseAPIUrl}/generalmessage/Guide`\r\n        }).then(resGeneralMessages => {\r\n            setGuideHomePage(resGeneralMessages.data.Message)\r\n        })\r\n    };\r\n\r\n    useEffect(() => {\r\n        fetchGuideHomePage()\r\n    }, [location.path]);\r\n\r\n    return (\r\n        <>\r\n            <div dangerouslySetInnerHTML={{ __html: RenderBreak(guideHomePage) }} />\r\n        </>\r\n    )\r\n};\r\n\r\nexport default GuideHome;","import axios from 'axios'\r\nimport { useState, useEffect } from 'react'\r\nimport { Helmet } from 'react-helmet'\r\nimport Loader from '../Common/Loader'\r\nimport { RenderBreak } from '../../helpers/Helper'\r\n\r\nconst GuideDetail = ({ params }) => {\r\n\r\n  const guideUniqueName = params.guide_name\r\n  const [guideList, setGuideList] = useState([])\r\n\r\n  const fetchGuides = async (sectionUniqueName) => {\r\n    axios({\r\n      method: 'POST',\r\n      url: `${window.$baseAPIUrl}/listingGuideSection/guides/list/${sectionUniqueName}`\r\n    }).then(resGuides => {\r\n\r\n      /*let guidePages = resGuides.data.filter(function (currentElement) {\r\n        return (currentElement.UniqueName === guideUniqueName);\r\n      });\r\n\r\n      if (guidePages.length <= 0) {\r\n        window.location.href = \"https://www.snowjapan.com/404.html\";\r\n      }*/\r\n\r\n      setGuideList(resGuides.data)\r\n    })\r\n  };\r\n\r\n  useEffect(() => {\r\n    fetchGuides(params.section_name)\r\n  }, [params]);\r\n\r\n  let guides = []\r\n\r\n  if (guideUniqueName !== undefined && guideUniqueName !== '') {\r\n    guides = guideList.filter(function (currentElement) {\r\n      return (currentElement.UniqueName === guideUniqueName);\r\n    })\r\n  } else {\r\n    guides = guideList.filter(function (currentElement) {\r\n      return (currentElement.IsHomePage);\r\n    })\r\n  }\r\n\r\n  let guideDetail = undefined\r\n\r\n  if (guides.length > 0) {\r\n    guideDetail = guides[0]\r\n  }\r\n\r\n  if (guideDetail !== undefined) {\r\n    return (\r\n      <>\r\n        <Helmet>\r\n          <title>{guideDetail.Title}</title>\r\n          <meta name=\"description\" content={`${guideDetail.Description}`} />\r\n          <script src=\"https://public.flourish.studio/resources/embed.js\"></script>\r\n        </Helmet>\r\n        <div dangerouslySetInnerHTML={{ __html: RenderBreak(guideDetail.HtmlContent) }} />\r\n      </>\r\n    )\r\n  } else {\r\n    return (\r\n      <Loader />\r\n    )\r\n  }\r\n}\r\n\r\nexport default GuideDetail","import { Fragment } from 'react'\r\nimport { useParams } from 'react-router-dom'\r\nimport GuideHome from './Home'\r\nimport GuideDetail from './GuideDetail'\r\n\r\nconst GuideContainer = () => {\r\n\r\n    const params = useParams()\r\n\r\n    let requestType = undefined\r\n\r\n    if (params.section_name !== '' && params.section_name !== undefined) {\r\n        requestType = 'guide-detail'\r\n    }\r\n\r\n    return (\r\n        <Fragment>\r\n            <>\r\n                {\r\n                    {\r\n                        undefined: <GuideHome />,\r\n                        'guide-detail': <GuideDetail params={params} />\r\n                    }[requestType]\r\n                }\r\n            </>\r\n        </Fragment>\r\n    )\r\n}\r\n\r\nexport default GuideContainer","import axios from 'axios'\r\nimport { useState, useEffect } from 'react'\r\nimport { Link, useLocation } from 'react-router-dom'\r\nimport { Helmet } from 'react-helmet'\r\nimport Loader from '../Common/Loader'\r\n\r\nconst MemberHome = ({ user }) => {\r\n\r\n    const [memberHomePage, setMemberHomePage] = useState('')\r\n    const location = useLocation()\r\n    const [userFullName, setUserFullName] = useState('')\r\n\r\n    const fetchData = async () => {\r\n        axios({\r\n            method: 'POST',\r\n            url: `${window.$baseAPIUrl}/generalmessage/MemberHome`\r\n        }).then(resGeneralMessages => {\r\n            setMemberHomePage(resGeneralMessages.data.Message)\r\n        })\r\n    };\r\n\r\n    useEffect(() => {\r\n        fetchData()\r\n    }, [location.pathname])\r\n\r\n    useEffect(() => {\r\n        if (user === null) {\r\n            setUserFullName('')\r\n        } else {\r\n            setUserFullName(user.FullName)\r\n        }\r\n    }, [user])\r\n\r\n    if (memberHomePage === '') {\r\n        return (\r\n            <Loader />\r\n        )\r\n\r\n    } else {\r\n        return (\r\n            <div className='empty-row'>\r\n                <Helmet>\r\n                    <title>{userFullName}’s member area | SnowJapan</title>\r\n                    <meta name=\"description\" content=\"Member area | SnowJapan\" />\r\n                </Helmet>\r\n                <div>\r\n                    <div className=\"sj-para-image\"><img src=\"https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-Icons-Member.svg\" alt='member-login' /></div>\r\n                    <div>\r\n                        <h3>{userFullName}’s member area</h3>\r\n                        <div className=\"sj-para\">\r\n                            <p>Thank you for sharing your thoughts and/or photographs of Japanese ski areas with other SnowJapan readers.</p>\r\n                            <p>Be assured that your email address is strictly only used for registration purposes. It is not shared with anyone or added to any mailing list, and you will not receive any emails from us.</p>\r\n                            <p>Before submitting content to SnowJapan, <Link to={`${window.$baseAppUrl}/about-members-area`}>please read this</Link>.</p>\r\n                        </div>\r\n                        <div>\r\n                            <div className='sj-row'>\r\n                                <div className='sj-para'>\r\n                                    <h3>Submit new content</h3>\r\n                                    <div className=\"row sj-row sj-no-bg sj-row-no-margin-padding\">\r\n                                        <div className=\"col-md-6 sj-row-no-margin-padding padding-right-5\">\r\n                                            <Link to={`${window.$baseMemberUrl}/upload-photo`} className='btn btn-primary sj-large-font-button sj-red-bg w-100 mt-1'><h6 className='mt-1 mb-1'>Upload new ski area photos</h6></Link>\r\n                                        </div>\r\n                                        <div className=\"col-md-6 sj-row-no-margin-padding padding-left-5\">\r\n                                            <Link to={`${window.$baseMemberUrl}/submit-review`} className='btn btn-primary sj-large-font-button sj-red-bg w-100 mt-1'><h6 className='mt-1 mb-1'>Write a new ski area review</h6></Link>\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n                                <div className='sj-para'>\r\n                                    <h3>Your current content </h3>\r\n                                    <div className=\"row sj-row sj-no-bg sj-row-no-margin-padding\">\r\n                                        <div className=\"col-md-6 sj-row-no-margin-padding padding-right-5\">\r\n                                            <Link to={`${window.$baseMemberUrl}/photos`} className='btn btn-primary w-100 sj-box-dark-blue mt-1'><h6 className='mt-1 mb-1'>My photos</h6></Link>\r\n                                        </div>\r\n                                        <div className=\"col-md-6 sj-row-no-margin-padding padding-left-5\">\r\n                                            <Link to={`${window.$baseMemberUrl}/reviews`} className='btn btn-primary w-100 sj-box-dark-blue mt-1'><h6 className='mt-1 mb-1'>My reviews</h6></Link>\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        )\r\n    }\r\n}\r\n\r\nexport default MemberHome","import { Link } from 'react-router-dom'\r\nimport { RenderBreak } from '../../helpers/Helper'\r\nimport PropTypes from 'prop-types'\r\n\r\nconst MemberReviewDetail = ({ review }) => {\r\n    return (\r\n        <div className='sj-row'>\r\n            <div className=\"sj-box sj-box-blue sj-round-half left-aligned mt-3\">\r\n                <h4>{review.Headline}</h4>\r\n            </div>\r\n            <div className=\"row sj-row-small-margin-padding sj-no-bg\">\r\n                <div>\r\n                    <Link to={`${window.$baseSkiAreaUrl}/${review.PrefectureUniqueName}/${review.TownUniqueName}/${review.ResortUniqueName}`}><h4>{review.ResortName}</h4></Link>\r\n                </div>\r\n                <div className='sj-large-font'>\r\n                    <Link to={`${window.$baseSkiAreaUrl}/town/${review.TownUniqueName}`}>{review.TownName} {review.TownTypeStr}</Link>,&nbsp;\r\n                    <Link to={`${window.$baseSkiAreaUrl}/prefecture/${review.PrefectureUniqueName}`}>{review.PrefectureName}</Link>\r\n                </div>\r\n            </div>\r\n            {review.ReviewText !== '' &&\r\n                <div className='row sj-row-small-margin-padding sj-no-bg'>\r\n                    <div dangerouslySetInnerHTML={{ __html: RenderBreak(review.ReviewText) }} />\r\n                </div>\r\n            }\r\n            <div className=\"row sj-row-small-margin-padding\">\r\n                <div className=\"col-lg-2\">\r\n                    <strong>Date visited:</strong>\r\n                </div>\r\n                <div className=\"col-lg-10\">\r\n                    {review.DateVisited}\r\n                </div>\r\n            </div>\r\n            <div className=\"row sj-row-small-margin-padding\">\r\n                <div className=\"col-lg-2\">\r\n                    <strong>Things I liked:</strong>\r\n                </div>\r\n                <div className=\"col-lg-10\">\r\n                    {review.ThingsILiked}\r\n                </div>\r\n            </div>\r\n            <div className=\"row sj-row-small-margin-padding\">\r\n                <div className=\"col-lg-2\">\r\n                    <strong>Things I didn’t like:</strong>\r\n                </div>\r\n                <div className=\"col-lg-10\">\r\n                    {review.ThingsIDidnotLike}\r\n                </div>\r\n            </div>\r\n            <div className=\"row sj-row-small-margin-padding\">\r\n                <div className=\"col-lg-2\">\r\n                    <strong>Review by:</strong>\r\n                </div>\r\n                <div className=\"col-lg-10\">\r\n                    {review.ReaderName}\r\n                </div>\r\n            </div>\r\n            <div className=\"row sj-row-small-margin-padding\">\r\n                <div className=\"col-lg-2\">\r\n                    <strong>Posted:</strong>\r\n                </div>\r\n                <div className=\"col-lg-10\">\r\n                    {review.SubmittedDayTh} {review.SubmittedMonthFull} {review.SubmittedYear}\r\n                </div>\r\n            </div>\r\n            <hr className='mt-5' />\r\n        </div>\r\n    )\r\n};\r\n\r\nMemberReviewDetail.propTypes = {\r\n    review: PropTypes.object.isRequired\r\n}\r\n\r\nexport default MemberReviewDetail;","import { useState, useRef, useCallback } from 'react'\r\nimport { Helmet } from 'react-helmet'\r\nimport Loader from '../Common/Loader'\r\nimport { Link } from 'react-router-dom'\r\nimport useSkiAreaReviews from '../CustomHooks/useSkiAreaReviews'\r\nimport MemberReviewDetail from './MemberReviewDetail'\r\n\r\nconst MemberReviews = ({ user }) => {\r\n\r\n    const queryReview = 0\r\n    const userName = user.UserName\r\n    const [pageNumberReview, setPaegNumberReview] = useState(1)\r\n\r\n    const {\r\n        loadingReview,\r\n        errorReview,\r\n        reviews,\r\n        hasMoreReview\r\n    } = useSkiAreaReviews(queryReview, userName, pageNumberReview)\r\n\r\n    const observerReview = useRef()\r\n    const lastReviewElementRef = useCallback(nodeReview => {\r\n        if (loadingReview)\r\n            return\r\n        if (observerReview.current)\r\n            observerReview.current.disconnect()\r\n        observerReview.current = new IntersectionObserver(entriesReview => {\r\n            if (entriesReview[0].isIntersecting && hasMoreReview) {\r\n                setPaegNumberReview(prevPageNumberReview => prevPageNumberReview + 1)\r\n            }\r\n        })\r\n\r\n        if (nodeReview)\r\n            observerReview.current.observe(nodeReview)\r\n    }, [loadingReview, hasMoreReview])\r\n\r\n    return (\r\n        <div className='empty-row'>\r\n            <Helmet>\r\n                <title>{user.FullName}’s reviews | Member area | SnowJapan</title>\r\n                <meta name=\"description\" content=\"Member reviews | Member area | SnowJapan\" />\r\n            </Helmet>\r\n            <div>\r\n                <div className=\"sj-para-image\"><img src=\"https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-Reviews.svg\" alt='review' /></div>\r\n                <div>\r\n                    <h3>My ski area reviews</h3>\r\n                    <div className=\"sj-para\">\r\n                        Below are the ski area reviews you have posted on SnowJapan. Please note that reviews need to be manually approved before appearing on the site, so please allow some time after posting a review.\r\n                    </div>\r\n                    {/*<div className=\"col-md-6 sj-row-no-margin-padding padding-right-5\">\r\n                        <Link to={`${window.$baseMemberUrl}/upload-photo`} className='btn btn-primary sj-large-font-button sj-red-bg w-100 mt-1'><h6 className='mt-1 mb-1'>Upload new ski area photos</h6></Link>\r\n                    </div>\r\n                    <div className=\"col-md-6 sj-row-no-margin-padding padding-left-5\">\r\n                        <Link to={`${window.$baseMemberUrl}/submit-review`} className='btn btn-primary sj-large-font-button sj-red-bg w-100 mt-1'><h6 className='mt-1 mb-1'>Write a new ski area review</h6></Link>\r\n                    </div>*/}\r\n                    <div className=\"sj-para\">\r\n                        <h6 className='mt-1 mb-1'><Link to={`${window.$baseMemberUrl}/submit-review`} className='btn btn-primary sj-large-font-button sj-red-bg sj-50-box'>Write a new ski area review</Link></h6>\r\n                    </div>\r\n                    <div className=\"sj-para\">\r\n                        <h6 className='mt-1 mb-1'><Link to={`${window.$baseMemberUrl}/upload-photo`} className='btn btn-primary sj-large-font-button sj-red-bg sj-50-box'>Upload new ski area photos</Link></h6>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            <div className='empty-row'>\r\n                <div className=\"sj-para\">\r\n                    <h3>Recent reviews</h3>\r\n                </div>\r\n                {reviews.map((review, index) => {\r\n                    if (reviews.length === index + 1) {\r\n                        return (\r\n                            <div ref={lastReviewElementRef} key={review.Id}>\r\n                                <MemberReviewDetail review={review} />\r\n                            </div>\r\n                        )\r\n                    } else {\r\n                        return (\r\n                            <div key={review.Id}>\r\n                                <MemberReviewDetail review={review} />\r\n                            </div>\r\n                        )\r\n                    }\r\n                })}\r\n                <div>\r\n                    {loadingReview &&\r\n                        <Loader />\r\n                    }\r\n                </div>\r\n                <div>{errorReview && 'Error'}</div>\r\n            </div>\r\n        </div>\r\n    )\r\n}\r\n\r\nexport default MemberReviews","import { useState, Fragment } from 'react'\r\nimport { useNavigate } from 'react-router-dom'\r\nimport { Form } from 'react-bootstrap'\r\n\r\nconst ResortAutocomplete = ({ skiAreaList, onResortSelect }) => {\r\n\r\n    const [activeSuggestion, setActiveSuggestion] = useState(0)\r\n    const [filteredSkiAreas, setFilteredSkiAreas] = useState([])\r\n    const [showSuggestions, setShowSuggestions] = useState(false)\r\n    const [userInput, setUserInput] = useState('')\r\n\r\n    //const history = useHistory()\r\n    const navigate = useNavigate();\r\n\r\n    const onChange = (e) => {\r\n        let selectedSkiAreaNameParts = e.currentTarget.value.split('(')\r\n\r\n        const userInput = selectedSkiAreaNameParts[0].trim();\r\n\r\n        const thisFilteredSkiAreas = skiAreaList.filter(\r\n            //skiArea => (skiArea.Name.toLowerCase().indexOf(userInput.toLowerCase()) === 0 || skiArea.Name.toLowerCase().indexOf(userInput.toLowerCase()) === 0 || skiArea.NameJapanese.indexOf(userInput) === 0 || skiArea.TownName.toLowerCase().indexOf(userInput.toLowerCase()) === 0 || skiArea.TownNameJapanese.indexOf(userInput) === 0 || (skiArea.AreaName !== null && skiArea.AreaName !== undefined && skiArea.AreaName.toLowerCase().indexOf(userInput.toLowerCase()) === 0) || (skiArea.AreaNameJapanese !== null && skiArea.AreaNameJapanese !== undefined && skiArea.AreaNameJapanese.indexOf(userInput) === 0))\r\n            skiArea => (skiArea.Name.toLowerCase().indexOf(userInput.toLowerCase()) >= 0 || skiArea.NameJapanese.indexOf(userInput) >= 0 || skiArea.TownName.toLowerCase().indexOf(userInput.toLowerCase()) >= 0 || skiArea.TownNameJapanese.indexOf(userInput) >= 0 || (skiArea.AreaName !== null && skiArea.AreaName !== undefined && skiArea.AreaName.toLowerCase().indexOf(userInput.toLowerCase()) >= 0) || (skiArea.AreaNameJapanese !== null && skiArea.AreaNameJapanese !== undefined && skiArea.AreaNameJapanese.indexOf(userInput) >= 0))\r\n        );\r\n\r\n        setActiveSuggestion(0)\r\n        setFilteredSkiAreas(thisFilteredSkiAreas)\r\n        setShowSuggestions(true)\r\n        setUserInput(e.currentTarget.value)\r\n    };\r\n\r\n    const onClick = e => {\r\n        setActiveSuggestion(0)\r\n        setFilteredSkiAreas([])\r\n        setShowSuggestions(false)\r\n        setUserInput(e.currentTarget.innerText)\r\n\r\n        let resortUniqueName = ''\r\n        let selectedSkiAreaNameParts = e.currentTarget.innerText.split('(')\r\n\r\n        const selectedSkiAreaList = skiAreaList.filter(\r\n            skiArea => (skiArea.Name === selectedSkiAreaNameParts[0].trim())\r\n        );\r\n\r\n        if (selectedSkiAreaList.length > 0) {\r\n\r\n            let selectedSkiArea = selectedSkiAreaList[0];\r\n\r\n            //let path = `${window.$baseSkiAreaUrl}/${selectedSkiArea.PrefectureUniqueName}/${selectedSkiArea.TownUniqueName}/${selectedSkiArea.UniqueName}`;\r\n            //history.push(path);\r\n            //navigate(path);\r\n            //console.log(selectedSkiArea)\r\n            resortUniqueName = selectedSkiArea.UniqueName\r\n        }\r\n\r\n        onResortSelect(resortUniqueName)\r\n    };\r\n\r\n    const onKeyDown = (e) => {\r\n        if (e.keyCode === 13) {\r\n            setActiveSuggestion(0)\r\n            setShowSuggestions(false)\r\n            let selectedSkiArea = filteredSkiAreas[activeSuggestion]\r\n            if (selectedSkiArea !== null && selectedSkiArea !== undefined) {\r\n                setUserInput(selectedSkiArea.Name)\r\n                let path = `${window.$baseSkiAreaUrl}/${selectedSkiArea.PrefectureUniqueName}/${selectedSkiArea.TownUniqueName}/${selectedSkiArea.UniqueName}`;\r\n                //history.push(path);\r\n                navigate(path);\r\n            }\r\n        }\r\n        else if (e.keyCode === 38) {\r\n            if (activeSuggestion === 0) {\r\n                return;\r\n            }\r\n\r\n            setActiveSuggestion(activeSuggestion - 1)\r\n        }\r\n        else if (e.keyCode === 40) {\r\n            if (activeSuggestion - 1 === filteredSkiAreas.length) {\r\n                return;\r\n            }\r\n            setActiveSuggestion(activeSuggestion + 1)\r\n        }\r\n    };\r\n\r\n    let suggestionsListComponent;\r\n\r\n    if (showSuggestions && userInput) {\r\n        if (filteredSkiAreas.length) {\r\n            suggestionsListComponent = (\r\n                <ul className=\"suggestions\">\r\n                    {filteredSkiAreas.map((skiArea, index) => {\r\n                        let className;\r\n\r\n                        if (index === activeSuggestion) {\r\n                            className = \"suggestion-active\";\r\n                        }\r\n\r\n                        return (\r\n                            <li className={className} key={index} onClick={onClick}>\r\n                                {skiArea.Name} ({skiArea.PrefectureName})\r\n                            </li>\r\n                        );\r\n                    })}\r\n                </ul>\r\n            );\r\n        } else {\r\n            suggestionsListComponent = (\r\n                <div className=\"no-suggestions\">\r\n                    <em>No ski area found</em>\r\n                </div>\r\n            );\r\n        }\r\n    }\r\n\r\n    return (\r\n        <Fragment>\r\n            <Form.Group controlId=\"txtResort\" className=\"mt-2 mb-4\">\r\n                <Form.Label>\r\n                    <h5>Choose ski area:</h5>\r\n                    Type a ski area name, and available options will appear.\r\n                </Form.Label>\r\n                <Form.Control name=\"txtResort\" type=\"text\" onChange={onChange} onKeyDown={onKeyDown} value={userInput} />\r\n                {suggestionsListComponent}\r\n            </Form.Group>\r\n        </Fragment>\r\n    );\r\n};\r\n\r\nexport default ResortAutocomplete;","import { useState, useEffect } from 'react'\r\nimport { Helmet } from 'react-helmet'\r\nimport { Link } from 'react-router-dom'\r\nimport axios from 'axios'\r\nimport { Form, Button, Row } from 'react-bootstrap'\r\nimport { useNavigate, useParams } from 'react-router-dom'\r\nimport ResortAutocomplete from './ResortAutocomplete'\r\n\r\nconst MemberSubmitReview = ({ user, skiAreaList }) => {\r\n\r\n    const params = useParams()\r\n    const navigate = useNavigate()\r\n\r\n    /*const headlineRef = useRef()\r\n    const dateVisitedRef = useRef()\r\n    const snowConditionOnVisitRef = useRef()\r\n    const reviewTextRef = useRef()\r\n    const thingsILikedRef = useRef()\r\n    const thingsIDidnotLikeRef = useRef()\r\n    const errRef = useRef()*/\r\n\r\n    const [resortUniqueNameFromParam, setResortUniqueNameFromParam] = useState('')\r\n    const [thisResort, setThisResort] = useState(undefined)\r\n    const [resortUniqueName, setResortUniqueName] = useState('')\r\n    /*const [validResortUniqueName, setValidResortUniqueName] = useState(true)\r\n    //const [resortUniqueNameFocus, setResortUniqueNameFocus] = useState(false)\r\n\r\n    const [headline, setHeadline] = useState('')\r\n    const [validHeadline, setValidHeadline] = useState(true)\r\n    const [headlineFocus, setHeadlineFocus] = useState(false)\r\n\r\n    const [snowConditionOnVisit, setSnowConditionOnVisit] = useState('')\r\n    const [validSnowConditionOnVisit, setValidSnowConditionOnVisit] = useState(false)\r\n    const [snowConditionOnVisitFocus, setSnowConditionOnVisitFocus] = useState(false)\r\n\r\n    const [reviewText, setReviewText] = useState('')\r\n    const [validReviewText, setValidReviewText] = useState(false)\r\n    const [reviewTextFocus, setReviewTextFocus] = useState(false)\r\n\r\n    const [thingsILiked, setThingsILiked] = useState('')\r\n    const [validThingsILiked, setValidThingsILiked] = useState(false)\r\n    const [thingsILikedFocus, setThingsILikedFocus] = useState(false)\r\n\r\n    const [thingsIDidnotLike, setThingsIDidnotLike] = useState('')\r\n    const [validThingsIDidnotLike, setValidThingsIDidnotLike] = useState(false)\r\n    const [thingsIDidnotLikeFocus, setThingsIDidnotLikeFocus] = useState(false)\r\n\r\n    const [dateVisited, setDateVisited] = useState('')\r\n    const [validDateVisited, setValidDateVisited] = useState(true)\r\n    const [dateVisitedFocus, setDateVisitedFocus] = useState(false)\r\n\r\n    const [success, setSuccess] = useState(false)*/\r\n    const [errMsg, setErrMsg] = useState('')\r\n    const [formerrors, setFormErrors] = useState({})\r\n\r\n    const [values, setValues] = useState({\r\n        Headline: \"\",\r\n        SnowConditionOnVisit: \"\",\r\n        ReviewText: \"\",\r\n        ThingsILiked: \"\",\r\n        ThingsIDidnotLike: \"\",\r\n        DateVisited: \"\"\r\n    });\r\n\r\n    useEffect(() => {\r\n        if (params !== undefined && params.resort_unique !== undefined) {\r\n            setResortUniqueNameFromParam(params.resort_unique)\r\n            setResortUniqueName(params.resort_unique)\r\n        }\r\n    }, [params.resort_unique]);\r\n\r\n    useEffect(() => {\r\n        let passedResort = skiAreaList.filter(function (currentElement) {\r\n            return (currentElement.UniqueName === params.resort_unique);\r\n        });\r\n\r\n        if (passedResort !== undefined && passedResort[0] !== undefined) {\r\n            setThisResort(passedResort[0])\r\n        }\r\n    }, [skiAreaList, params.resort_unique])\r\n\r\n    /*useEffect(() => {\r\n        headlineRef.current.focus()\r\n    }, [])\r\n\r\n    useEffect(() => {\r\n        setValidResortUniqueName(resortUniqueName !== undefined && resortUniqueName !== '')\r\n    }, [resortUniqueName])\r\n\r\n    useEffect(() => {\r\n        setValidHeadline(headline !== undefined && headline !== '')\r\n    }, [headline])\r\n\r\n    useEffect(() => {\r\n        setValidDateVisited(dateVisited !== undefined && dateVisited !== '')\r\n    }, [dateVisited])\r\n\r\n    useEffect(() => {\r\n        setValidSnowConditionOnVisit(snowConditionOnVisit !== undefined && snowConditionOnVisit !== '')\r\n    }, [snowConditionOnVisit])\r\n\r\n    useEffect(() => {\r\n        setValidReviewText(reviewText !== undefined && reviewText !== '')\r\n    }, [reviewText])\r\n\r\n    useEffect(() => {\r\n        setValidThingsILiked(thingsILiked !== undefined && thingsILiked !== '')\r\n    }, [thingsILiked])\r\n\r\n    useEffect(() => {\r\n        setValidThingsIDidnotLike(thingsIDidnotLike !== undefined && thingsIDidnotLike !== '')\r\n    }, [thingsIDidnotLike])\r\n\r\n    useEffect(() => {\r\n        setErrMsg('')\r\n    }, [headline, snowConditionOnVisit, reviewText, thingsILiked, thingsIDidnotLike])\r\n\r\n    const handleChange = (value, selectOptionSetter) => {\r\n        selectOptionSetter(value)\r\n    }*/\r\n\r\n    const handleChange = (event) => {\r\n        setValues((values) => ({\r\n            ...values,\r\n            [event.target.name.slice(3)]: event.target.value,\r\n        }))\r\n    }\r\n\r\n    const validate = () => {\r\n        let errors = {}\r\n\r\n        if (!values.Headline) {\r\n            errors.Headline = \"The headline field cannot be blank.\"\r\n        }\r\n\r\n        if (!values.SnowConditionOnVisit) {\r\n            errors.SnowConditionOnVisit = \"The snow condition on visit field cannot be blank.\"\r\n        }\r\n\r\n        if (!values.ReviewText) {\r\n            errors.ReviewText = \"The review text field cannot be blank.\"\r\n        }\r\n\r\n        if (!values.ThingsILiked) {\r\n            errors.ThingsILiked = \"The headline field cannot be blank.\"\r\n        }\r\n\r\n        if (!values.ThingsIDidnotLike) {\r\n            errors.ThingsIDidnotLike = \"The things I liked field cannot be blank.\"\r\n        }\r\n\r\n        /*if (!values.DateVisited) {\r\n            errors.DateVisited = \"The cate of visit field cannot be blank.\"\r\n        }*/\r\n\r\n        setFormErrors(errors);\r\n\r\n        if (Object.keys(errors).length === 0) {\r\n            return true\r\n        } else {\r\n            return false\r\n        }\r\n    }\r\n\r\n    const handleSubmit = async (e) => {\r\n        e.preventDefault();\r\n        if (validate(values)) {\r\n            try {\r\n                var inputData = {\r\n                    Headline: values.Headline,\r\n                    SnowConditionOnVisit: values.SnowConditionOnVisit,\r\n                    ReviewText: values.ReviewText,\r\n                    ThingsILiked: values.ThingsILiked,\r\n                    ThingsIDidnotLike: values.ThingsIDidnotLike,\r\n                    ResortRanking: 0,\r\n                    UserType: \"User Type\",\r\n                    ResortUniqueName: resortUniqueName,\r\n                    DateVisited: values.DateVisited,\r\n                    Email: user.Email,\r\n                    Token: user.Token\r\n                }\r\n                console.log(inputData)\r\n\r\n                axios({\r\n                    method: 'POST',\r\n                    url: `${window.$baseSJAPIUrl}/sjmember/SubmitReview`,\r\n                    data: inputData\r\n                }).then(reviewSubmissionResult => {\r\n\r\n                    console.log(reviewSubmissionResult?.data);\r\n\r\n                    let reviewSubmission = reviewSubmissionResult.data\r\n\r\n                    if (reviewSubmission !== null) {\r\n                        console.log(reviewSubmission)\r\n\r\n                        let path = window.$baseMemberUrl + '/reviews';\r\n                        navigate(path);\r\n                    } else {\r\n                        setErrMsg('An error occured. Please contact SnowJapan administrator')\r\n                    }\r\n                })\r\n            } catch (err) {\r\n                if (!err?.response) {\r\n                    setErrMsg('No Server Response')\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div className='empty-row'>\r\n            <Helmet>\r\n                <title>Write a ski area review | Member area | SnowJapan</title>\r\n                <meta name=\"description\" content=\"Write a ski area review | Member area | SnowJapan\" />\r\n            </Helmet>\r\n            <div>\r\n                <div className=\"sj-para-image\"><img src=\"https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-Reviews.svg\" alt='submit-review' /></div>\r\n                <div>\r\n                    <h3>Write a new ski area review</h3>\r\n                    <div className=\"sj-para\">\r\n                        Please note that all submissions will be reviewed before appearing on the site. We reserve the right to decline content that we feel is inappropriate. Before submitting content to SnowJapan and for full details, <Link to={`${window.$baseAppUrl}/about-members-area`}>please read this</Link>.\r\n                    </div>\r\n                    <div className='sj-row'>\r\n                        <Form onSubmit={handleSubmit}>\r\n                            <Row className=\"mb-3 sj-no-margin\">\r\n                                {resortUniqueNameFromParam === '' &&\r\n                                    <ResortAutocomplete skiAreaList={skiAreaList} onResortSelect={data => {\r\n                                        setResortUniqueName(data)\r\n                                    }} />\r\n                                }\r\n                                {(resortUniqueNameFromParam !== '' && thisResort !== undefined) &&\r\n                                    <Form.Group controlId=\"txtResortNameLabel\" className=\"mt-2 mb-4\">\r\n                                        <Form.Label><h5>Ski area:</h5></Form.Label>\r\n                                        <Form.Control name=\"txtResortNameLabel\" type=\"text\" placeholder=\"Caption\" value={thisResort.Name} readOnly=\"true\" />\r\n                                    </Form.Group>\r\n                                }\r\n                                <Form.Group controlId=\"txtCaption\" className=\"mt-2 mb-4\">\r\n                                    <Form.Label>\r\n                                        <h5>Headline:</h5>\r\n                                        A simple description/summary to display above the review.<br />\r\n                                        Please limit to 100 words.\r\n                                    </Form.Label>\r\n                                    <Form.Control name=\"txtHeadline\" type=\"text\" placeholder=\"Headline\" value={values.Headline} onChange={handleChange} />\r\n                                    {formerrors.Headline && (\r\n                                        <div className=\"text-danger\">{formerrors.Headline}</div>\r\n                                    )}\r\n                                </Form.Group>\r\n                                <Form.Group controlId=\"txtDateVisited\" className=\"mt-2 mb-4\">\r\n                                    <Form.Label>\r\n                                        <h5>Date of visit:</h5>\r\n                                        Enter a specific date or a more general description of when you visited the ski area.\r\n                                    </Form.Label>\r\n                                    <Form.Control name=\"txtDateVisited\" type=\"text\" placeholder=\"Date of visit\" value={values.DateVisited} onChange={handleChange} />\r\n                                    {formerrors.DateVisited && (\r\n                                        <div className=\"text-danger\">{formerrors.DateVisited}</div>\r\n                                    )}\r\n                                </Form.Group>\r\n                                <Form.Group controlId=\"txtSnowConditionOnVisit\" className=\"mt-2 mb-4\">\r\n                                    <Form.Label>\r\n                                        <h5>Snow conditions:</h5>\r\n                                        Summarise the snow conditions when you visited the ski area.\r\n                                    </Form.Label>\r\n                                    <Form.Control name=\"txtSnowConditionOnVisit\" as=\"textarea\" rows={3} placeholder=\"Snow conditions\" value={values.SnowConditionOnVisit} onChange={handleChange} />\r\n                                    {formerrors.SnowConditionOnVisit && (\r\n                                        <div className=\"text-danger\">{formerrors.SnowConditionOnVisit}</div>\r\n                                    )}\r\n                                </Form.Group>\r\n                                <Form.Group controlId=\"txtReviewText\" className=\"mt-2 mb-4\">\r\n                                    <Form.Label>\r\n                                        <h5>Review:</h5>\r\n                                        Write your main review of the ski area here.\r\n                                    </Form.Label>\r\n                                    <Form.Control name=\"txtReviewText\" as=\"textarea\" rows={12} placeholder=\"Review\" value={values.ReviewText} onChange={handleChange} />\r\n                                    {formerrors.ReviewText && (\r\n                                        <div className=\"text-danger\">{formerrors.ReviewText}</div>\r\n                                    )}\r\n                                </Form.Group>\r\n                                <Form.Group controlId=\"txtThingsILiked\" className=\"mt-2 mb-4\">\r\n                                    <Form.Label>\r\n                                        <h5>Things I liked:</h5>\r\n                                        Summarise what you liked about your visit to the ski area.\r\n                                    </Form.Label>\r\n                                    <Form.Control name=\"txtThingsILiked\" as=\"textarea\" rows={3} placeholder=\"Things I liked\" value={values.ThingsILiked} onChange={handleChange} />\r\n                                    {formerrors.ThingsILiked && (\r\n                                        <div className=\"text-danger\">{formerrors.ThingsILiked}</div>\r\n                                    )}\r\n                                </Form.Group>\r\n                                <Form.Group controlId=\"txtThingsIDidnotLike\" className=\"mt-2 mb-4\">\r\n                                    <Form.Label>\r\n                                        <h5>Things I didn’t like:</h5>\r\n                                        Summarise what you did not like about your visit to the ski area.\r\n                                    </Form.Label>\r\n                                    <Form.Control name=\"txtThingsIDidnotLike\" as=\"textarea\" rows={3} placeholder=\"Things I didn’t like\" value={values.ThingsIDidnotLike} onChange={handleChange} />\r\n                                    {formerrors.ThingsIDidnotLike && (\r\n                                        <div className=\"text-danger\">{formerrors.ThingsIDidnotLike}</div>\r\n                                    )}\r\n                                </Form.Group>\r\n                                <div className='center-aligned'>\r\n                                    <Button type=\"submit\" className='sj-large-font-button sj-red-bg sj-row-100'>Submit review</Button>\r\n                                </div>\r\n                            </Row>\r\n                        </Form>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    )\r\n}\r\n\r\nexport default MemberSubmitReview","import PropTypes from 'prop-types'\r\nimport { Button, Modal, Image } from 'react-bootstrap'\r\nimport { useNavigate, Link } from 'react-router-dom'\r\nimport { useState } from 'react'\r\nimport axios from 'axios'\r\n\r\nconst MemberPhotoDetail = ({ photo, user }) => {\r\n    //console.log(photo)\r\n    //const [show, setShow] = useState(false)\r\n    const [errMsg, setErrMsg] = useState('')\r\n    const navigate = useNavigate()\r\n\r\n    /*const handleClose = () => {\r\n        setShow(false)\r\n    }\r\n    const showModal = () => {\r\n        setShow(true)\r\n    }*/\r\n\r\n    const handleDeletePhoto = (e) => {\r\n        //console.log('agreed to delete')\r\n        //console.log(e)\r\n        if (e > 0) {\r\n            try {\r\n                var inputData = {\r\n                    Id: e,\r\n                    Caption: \"a\",\r\n                    ResortUniqueName: \"a\",\r\n                    Email: user.Email,\r\n                    Token: user.Token\r\n                }\r\n                console.log(inputData)\r\n\r\n                axios({\r\n                    method: 'POST',\r\n                    url: `${window.$baseSJAPIUrl}/sjmember/DeletePhoto`,\r\n                    data: inputData\r\n                }).then(photoDeleteResult => {\r\n\r\n                    console.log(photoDeleteResult?.data);\r\n\r\n                    let photoDelete = photoDeleteResult.data\r\n\r\n                    if (photoDelete !== null) {\r\n                        console.log(photoDelete)\r\n\r\n                        let path = window.$baseMemberUrl;\r\n                        navigate(path);\r\n                    } else {\r\n                        setErrMsg('An error occured. Please contact SnowJapan administrator')\r\n                    }\r\n                })\r\n            } catch (err) {\r\n                if (!err?.response) {\r\n                    setErrMsg('No Server Response')\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div>\r\n            <div className=\"sj-box sj-box-blue sj-round-half left-aligned mt-3\">\r\n                <h4>{photo.Caption}</h4>\r\n            </div>\r\n            {(photo.ResortUniqueName !== undefined && photo.ResortUniqueName !== null) &&\r\n                <div className=\"row sj-row-small-margin-padding sj-no-bg\">\r\n                    <div>\r\n                        <Link to={`${window.$baseSkiAreaUrl}/${photo.PrefectureUniqueName}/${photo.TownUniqueName}/${photo.ResortUniqueName}`}><h4>{photo.ResortName}</h4></Link>\r\n                    </div>\r\n                    <div className='sj-large-font'>\r\n                        <Link to={`${window.$baseSkiAreaUrl}/town/${photo.TownUniqueName}`}>{photo.TownName} {photo.TownTypeStr}</Link>,&nbsp;\r\n                        <Link to={`${window.$baseSkiAreaUrl}/prefecture/${photo.PrefectureUniqueName}`}>{photo.PrefectureName}</Link>\r\n                    </div>\r\n                </div>\r\n            }\r\n            <div className='sj-row-small-margin-padding center-aligned'>\r\n                <Image src={`${window.$baseAppUrl}/photo-galleries/${photo.CreatedByUserName}/${photo.PhotoFileName}`} alt={`thumb-${photo.Id}`} fluid='true' />\r\n            </div>\r\n            <div className=\"row sj-row-small-margin-padding\">\r\n                <div className=\"col-lg-2\">\r\n                    <strong>Uploaded by:</strong>\r\n                </div>\r\n                <div className=\"col-lg-10\">\r\n                    {photo.CreatedByUserName}\r\n                </div>\r\n            </div>\r\n            <div className=\"row sj-row-small-margin-padding\">\r\n                <div className=\"col-lg-2\">\r\n                    <strong>Uploaded on:</strong>\r\n                </div>\r\n                <div className=\"col-lg-10\">\r\n                    {photo.CreatedAtDayTh} {photo.CreatedAtMonthFull} {photo.CreatedAtYear}\r\n                </div>\r\n            </div>\r\n            <div className=\"sj-row-no-margin-padding sj-no-bg\">\r\n                <Button variant=\"primary\" onClick={() => {\r\n                    const confirmBox = window.confirm(\r\n                        \"Do you really want to delete this photo?\"\r\n                    )\r\n                    if (confirmBox === true) {\r\n                        handleDeletePhoto(photo.Id)\r\n                    }\r\n                }} className='sj-large-font-button sj-red-bg w-100'>{'Delete Photo'}</Button>\r\n            </div>\r\n            <hr className='mt-5' />\r\n            {/*<Modal\r\n                show={show}\r\n                size=\"lg\"\r\n                onHide={handleClose}\r\n                backdrop=\"static\"\r\n                keyboard={false}\r\n            >\r\n                <Modal.Header closeButton>\r\n                    <Modal.Title>{photo.Caption}</Modal.Title>\r\n                </Modal.Header>\r\n                <Modal.Body>\r\n                    <div className='center-aligned'>\r\n                        <img src={`${window.$baseAppUrl}/photo-galleries/${photo.CreatedByUserName}/${photo.PhotoFileName}`} alt={`full-${photo.Id}`} />\r\n                    </div>\r\n                    {(photo.ResortUniqueName !== undefined && photo.ResortUniqueName !== null) &&\r\n                        <div className=\"row sj-row-small-margin-padding\">\r\n                            <div>\r\n                                <Link to={`${window.$baseSkiAreaUrl}/${photo.PrefectureUniqueName}/${photo.TownUniqueName}/${photo.ResortUniqueName}`}><h5>{photo.ResortName}</h5></Link>\r\n                                (<Link to={`${window.$baseSkiAreaUrl}/town/${photo.TownUniqueName}`}>{photo.TownName} {photo.TownTypeStr}</Link>,&nbsp;\r\n                                <Link to={`${window.$baseSkiAreaUrl}/prefecture/${photo.PrefectureUniqueName}`}>{photo.PrefectureName}</Link>)\r\n                            </div>\r\n                        </div>\r\n                    }\r\n                    <div className=\"row sj-row-small-margin-padding\">\r\n                        <div className=\"col-lg-3\">\r\n                            <strong>Uploaded by:</strong>\r\n                        </div>\r\n                        <div className=\"col-lg-9\">\r\n                            {photo.CreatedByUserName}\r\n                        </div>\r\n                    </div>\r\n                    <div className=\"row sj-row-small-margin-padding\">\r\n                        <div className=\"col-lg-3\">\r\n                            <strong>Uploaded on:</strong>\r\n                        </div>\r\n                        <div className=\"col-lg-9\">\r\n                            {photo.CreatedAtDayTh} {photo.CreatedAtMonthFull} {photo.CreatedAtYear}\r\n                        </div>\r\n                    </div>\r\n                </Modal.Body>\r\n                <Modal.Footer>\r\n                    <Button variant=\"secondary\" onClick={handleClose}>\r\n                        Close\r\n                    </Button>\r\n                </Modal.Footer>\r\n                </Modal>*/}\r\n        </div>\r\n    )\r\n};\r\n\r\nMemberPhotoDetail.propTypes = {\r\n    photo: PropTypes.object.isRequired\r\n}\r\n\r\nexport default MemberPhotoDetail;","import { useState, useRef, useCallback } from 'react'\r\nimport { Helmet } from 'react-helmet'\r\nimport Loader from '../Common/Loader'\r\nimport { Link } from 'react-router-dom'\r\nimport useSkiAreaPhotos from '../CustomHooks/useSkiAreaPhotos'\r\nimport MemberPhotoDetail from './MemberPhotoDetail'\r\n\r\nconst MemberPhotos = ({ user }) => {\r\n    const queryPhoto = 0\r\n    /*if (user === null) {\r\n        return null\r\n    }*/\r\n    const userName = user.UserName\r\n    const [pageNumberPhoto, setPaegNumberPhoto] = useState(1)\r\n\r\n    const {\r\n        loadingPhoto,\r\n        errorPhoto,\r\n        photos,\r\n        hasMorePhoto\r\n    } = useSkiAreaPhotos(queryPhoto, userName, pageNumberPhoto)\r\n\r\n    const observerPhoto = useRef()\r\n    const lastPhotoElementRef = useCallback(nodePhoto => {\r\n        if (loadingPhoto)\r\n            return\r\n        if (observerPhoto.current)\r\n            observerPhoto.current.disconnect()\r\n        observerPhoto.current = new IntersectionObserver(entriesPhoto => {\r\n            if (entriesPhoto[0].isIntersecting && hasMorePhoto) {\r\n                setPaegNumberPhoto(prevPageNumberPhoto => prevPageNumberPhoto + 1)\r\n            }\r\n        })\r\n\r\n        if (nodePhoto)\r\n            observerPhoto.current.observe(nodePhoto)\r\n    }, [loadingPhoto, hasMorePhoto])\r\n\r\n    return (\r\n        <div className='empty-row'>\r\n            <Helmet>\r\n                <title>{user.FullName}’s photos | Member area | SnowJapan</title>\r\n                <meta name=\"description\" content=\"Member photos | Member area | SnowJapan\" />\r\n            </Helmet>\r\n            <div>\r\n                <div className=\"sj-para-image\"><img src=\"https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-Photos.svg\" alt='snowjapan-photo' /></div>\r\n                <div>\r\n                    <h3>My photos</h3>\r\n                    <div className=\"sj-para\">\r\n                        Below are the photos you have posted on SnowJapan. Please note that photos need to be manually approved before appearing on the site, so please allow some time after posting new photos.\r\n                    </div>\r\n                    {/*<div className=\"sj-para\">\r\n                        <h6 className='mt-1 mb-1'><Link to={`${window.$baseMemberUrl}/upload-photo`} className='btn btn-primary sj-large-font-button sj-red-bg sj-50-box'>Upload new ski area photos</Link></h6>\r\n                    </div>*/}\r\n                    <div className=\"sj-para\">\r\n                        <h6 className='mt-1 mb-1'><Link to={`${window.$baseMemberUrl}/upload-photo`} className='btn btn-primary sj-large-font-button sj-red-bg sj-50-box'>Upload new ski area photos</Link></h6>\r\n                    </div>\r\n                    <div className=\"sj-para\">\r\n                        <h6 className='mt-1 mb-1'><Link to={`${window.$baseMemberUrl}/submit-review`} className='btn btn-primary sj-large-font-button sj-red-bg sj-50-box'>Write a new ski area review</Link></h6>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            <div className='empty-row'>\r\n                <div className=\"sj-para\">\r\n                    <h3>Recent photos</h3>\r\n                </div>\r\n                {photos.map((photo, index) => {\r\n                    if (photos.length === index + 1) {\r\n                        return (\r\n                            <div ref={lastPhotoElementRef} key={photo.Id}>\r\n                                <MemberPhotoDetail photo={photo} user={user} />\r\n                            </div>\r\n                        )\r\n                    } else {\r\n                        return (\r\n                            <div key={photo.Id}>\r\n                                <MemberPhotoDetail photo={photo} user={user} />\r\n                            </div>\r\n                        )\r\n                    }\r\n                })}\r\n                <div>\r\n                    {loadingPhoto &&\r\n                        <Loader />\r\n                    }\r\n                </div>\r\n                <div>{errorPhoto && 'Error'}</div>\r\n            </div>\r\n        </div>\r\n    )\r\n}\r\n\r\nexport default MemberPhotos","import '../../Uploader.scss'\r\n\r\nconst Uploader = () => {\r\n    return (\r\n        <div className=\"uploader-container\">\r\n            <div className=\"uploader\">\r\n                <div className=\"uploader--dot\"></div>\r\n                <div className=\"uploader--dot\"></div>\r\n                <div className=\"uploader--dot\"></div>\r\n                <div className=\"uploader--dot\"></div>\r\n                <div className=\"uploader--dot\"></div>\r\n                <div className=\"uploader--dot\"></div>\r\n                <div className=\"uploader--text\"></div>\r\n            </div>\r\n        </div>\r\n    );\r\n}\r\n\r\nexport default Uploader;","import { useState, useEffect } from 'react'\r\nimport { Helmet } from 'react-helmet'\r\nimport { Link } from 'react-router-dom'\r\nimport axios from 'axios'\r\nimport { Form, Button, Row } from 'react-bootstrap'\r\nimport { useNavigate, useParams } from 'react-router-dom'\r\nimport ResortAutocomplete from './ResortAutocomplete'\r\nimport Uploader from '../Common/Uploader'\r\n\r\nconst imageTypeRegex = /image\\/(png|jpg|jpeg)/gm\r\nconst MIN_FILE_SIZE = 50 // .25MB\r\nconst MAX_FILE_SIZE = 5120 // 5MB\r\n\r\nconst MemberUploadPhoto = ({ user, skiAreaList }) => {\r\n\r\n    const params = useParams()\r\n    const navigate = useNavigate()\r\n\r\n    const [imageFiles, setImageFiles] = useState([])\r\n    const [images, setImages] = useState([])\r\n\r\n    /*const selectPhotoRef = useRef()\r\n    const captionRef = useRef()\r\n    const errRef = useRef()*/\r\n    const [success, setSuccess] = useState(false)\r\n    const [errMsg, setErrMsg] = useState('')\r\n    const [formerrors, setFormErrors] = useState({})\r\n    const [uploadStarted, setUploadStarted] = useState(false)\r\n\r\n    const [values, setValues] = useState({\r\n        Caption: \"\"\r\n    })\r\n\r\n    const [resortUniqueNameFromParam, setResortUniqueNameFromParam] = useState('')\r\n    const [thisResort, setThisResort] = useState(undefined)\r\n    const [resortUniqueName, setResortUniqueName] = useState('')\r\n\r\n    //const [selectPhoto, setSelectPhoto] = useState('')\r\n    const [validSelectPhoto, setValidSelectPhoto] = useState(true)\r\n    //const [selectPhotoFocus, setSelectPhotoFocus] = useState(false)\r\n\r\n    //const [caption, setCaption] = useState('')\r\n    //const [validCaption, setValidCaption] = useState(true)\r\n    //const [captionFocus, setCaptionFocus] = useState(false)\r\n\r\n    useEffect(() => {\r\n        if (params !== undefined && params.resort_unique !== undefined) {\r\n            setResortUniqueNameFromParam(params.resort_unique)\r\n            setResortUniqueName(params.resort_unique)\r\n        }\r\n    }, [params.resort_unique]);\r\n\r\n    useEffect(() => {\r\n        let passedResort = skiAreaList.filter(function (currentElement) {\r\n            return (currentElement.UniqueName === params.resort_unique);\r\n        })\r\n\r\n        if (passedResort !== undefined && passedResort[0] !== undefined) {\r\n            setThisResort(passedResort[0])\r\n        }\r\n    }, [skiAreaList, params.resort_unique])\r\n\r\n    /*useEffect(() => {\r\n        captionRef.current.focus()\r\n    }, [])\r\n\r\n    useEffect(() => {\r\n        setValidCaption(caption !== undefined && caption !== '')\r\n    }, [caption])\r\n\r\n    useEffect(() => {\r\n        setErrMsg('')\r\n    }, [caption])*/\r\n\r\n    useEffect(() => {\r\n        const images = [], fileReaders = []\r\n        let isCancel = false\r\n        if (imageFiles.length) {\r\n            imageFiles.forEach((file) => {\r\n                const fileReader = new FileReader()\r\n                fileReaders.push(fileReader)\r\n                fileReader.onload = (e) => {\r\n                    const { result } = e.target\r\n                    if (result) {\r\n                        images.push(result)\r\n                    }\r\n                    if (images.length === imageFiles.length && !isCancel) {\r\n                        setImages(images)\r\n                    }\r\n                }\r\n                fileReader.readAsDataURL(file)\r\n            })\r\n        }\r\n        return () => {\r\n            isCancel = true;\r\n            fileReaders.forEach(fileReader => {\r\n                if (fileReader.readyState === 1) {\r\n                    fileReader.abort()\r\n                }\r\n            })\r\n        }\r\n    }, [imageFiles])\r\n\r\n    const validate = () => {\r\n\r\n        let errors = {}\r\n\r\n        if (!values.Caption) {\r\n            errors.Caption = \"The caption field cannot be left blank\"\r\n        }\r\n\r\n        setFormErrors(errors)\r\n\r\n        if (Object.keys(errors).length === 0) {\r\n            return true\r\n        } else {\r\n            return false\r\n        }\r\n    }\r\n\r\n    const changeHandler = (e) => {\r\n        const { files } = e.target\r\n\r\n        const validImageFiles = []\r\n        let hasErrorWithSelectedFiles = false\r\n        for (let i = 0; i < files.length; i++) {\r\n            const file = files[i]\r\n\r\n            if (file.type.match(imageTypeRegex)) {\r\n\r\n                let fileSizeKiloBytes = file.size / 1024\r\n\r\n                if (fileSizeKiloBytes > MAX_FILE_SIZE || fileSizeKiloBytes < MIN_FILE_SIZE) {\r\n                    hasErrorWithSelectedFiles = true\r\n                    setValidSelectPhoto(false)\r\n                }\r\n                else {\r\n                    validImageFiles.push(file)\r\n                }\r\n            }\r\n            else {\r\n                hasErrorWithSelectedFiles = true\r\n                setValidSelectPhoto(false)\r\n            }\r\n        }\r\n\r\n        if (validImageFiles.length === files.length) {\r\n            setImageFiles(validImageFiles)\r\n            return;\r\n        }\r\n\r\n        if (hasErrorWithSelectedFiles) {\r\n            setImages([])\r\n            alert(\"The selected image(s) are either not valid type or too large\")\r\n        }\r\n    };\r\n\r\n    const handleChange = (event) => {\r\n        setValues((values) => ({\r\n            ...values,\r\n            [event.target.name.slice(3)]: event.target.value,\r\n        }))\r\n    }\r\n\r\n    const handleSubmit = async (e) => {\r\n        e.preventDefault();\r\n\r\n        if (validate(values)) {\r\n            try {\r\n                setUploadStarted(true)\r\n                const formData = new FormData()\r\n                formData.append(\"ResortUniqueName\", resortUniqueName);\r\n                formData.append(\"Caption\", values.Caption);\r\n                formData.append(\"Email\", user.Email);\r\n                formData.append(\"Token\", user.Token);\r\n                for (let i = 0; i < imageFiles.length; i++) {\r\n                    formData.append('files', imageFiles[i]);\r\n                }\r\n\r\n                //console.log(formData)\r\n\r\n                axios({\r\n                    headers: {\r\n                        \"Content-Type\": \"multipart/form-data\",\r\n                        \"x-rapidapi-host\": \"file-upload8.p.rapidapi.com\",\r\n                        \"x-rapidapi-key\": \"your-rapidapi-key-here\",\r\n                    },\r\n                    method: 'POST',\r\n                    url: `${window.$baseSJAPIUrl}/sjmember/UploadPhoto`,\r\n                    data: formData\r\n                }).then(photoUploadResult => {\r\n\r\n                    //console.log(photoUploadResult?.data);\r\n                    let photoUpload = photoUploadResult.data\r\n\r\n                    if (photoUpload !== null) {\r\n                        //console.log(photoUpload)\r\n\r\n                        let path = window.$baseMemberUrl + '/photos';\r\n                        navigate(path);\r\n                    } else {\r\n                        setUploadStarted(false)\r\n                        setErrMsg('An error occured. Please contact SnowJapan administrator')\r\n                    }\r\n                })\r\n            } catch (err) {\r\n                setUploadStarted(false)\r\n                //console.log(err)\r\n                if (!err?.response) {\r\n                    setErrMsg('No Server Response')\r\n                }\r\n                //errRef.current.focus()\r\n            }\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div className='empty-row'>\r\n            <Helmet>\r\n                <title>Upload photo(s) | Member area | SnowJapan</title>\r\n                <meta name=\"description\" content=\"Upload photo(s) | Member area | SnowJapan\" />\r\n            </Helmet>\r\n            <div>\r\n                <div className=\"sj-para-image\"><img src=\"https://www.snowjapan.com/UploadedFiles/CMSImages/Icons/SnowJapan-Photos.svg\" alt='upload-photo' /></div>\r\n                <div>\r\n                    <h3>Upload new photo(s)</h3>\r\n                    <div className=\"sj-para\">\r\n                        Please note that all submissions will be reviewed before appearing on the site. We reserve the right to decline content that we feel is inappropriate. Before submitting content to SnowJapan and for full details, <Link to={`${window.$baseAppUrl}/about-members-area`}>please read this</Link>.\r\n                    </div>\r\n                    <div className='sj-row'>\r\n                        <Form onSubmit={handleSubmit}>\r\n                            <Row className=\"mb-3 sj-no-margin\">\r\n                                {uploadStarted ? (\r\n                                    <>\r\n                                        <Uploader />\r\n                                    </>\r\n                                ) : (\r\n                                    <div>\r\n                                        {resortUniqueNameFromParam === '' &&\r\n                                            <ResortAutocomplete skiAreaList={skiAreaList} onResortSelect={data => {\r\n                                                setResortUniqueName(data)\r\n                                            }} />\r\n                                        }\r\n                                        {(resortUniqueNameFromParam !== '' && thisResort !== undefined) &&\r\n                                            <Form.Group controlId=\"txtResortNameLabel\" className=\"mt-2 mb-4\">\r\n                                                <Form.Label><h5>Ski area:</h5></Form.Label>\r\n                                                <Form.Control name=\"txtResortNameLabel\" type=\"text\" placeholder=\"Caption\" value={thisResort.Name} readOnly=\"true\" />\r\n                                            </Form.Group>\r\n                                        }\r\n                                        <Form.Group controlId=\"txtCaption\" className=\"mt-2 mb-4\">\r\n                                            <Form.Label>\r\n                                                <h5>Caption:</h5>\r\n                                                A simple description to display with the photo.<br />\r\n                                                Please limit to 100 words.\r\n                                            </Form.Label>\r\n                                            <Form.Control name=\"txtCaption\" type=\"text\" placeholder=\"Caption\" value={values.Caption} onChange={handleChange} />\r\n                                            {formerrors.Caption && (\r\n                                                <div className=\"text-danger\">{formerrors.Caption}</div>\r\n                                            )}\r\n                                        </Form.Group>\r\n                                        <Form.Group controlId=\"filePhotos\" className=\"mt-2 mb-4\">\r\n                                            <Form.Label>\r\n                                                <h5>Select photo(s):</h5>\r\n                                                Max. size allowed 5MB.<br />\r\n                                                After selecting image(s), click on Upload photos and wait.\r\n                                            </Form.Label>\r\n                                            <Form.Control name=\"filePhotos\" type=\"file\" placeholder=\"Caption\" accept=\"image/png, image/jpg, image/jpeg\" multiple required onChange={changeHandler} />\r\n                                            {formerrors.Photos && (\r\n                                                <div className=\"text-danger\">{formerrors.Photos}</div>\r\n                                            )}\r\n                                        </Form.Group>\r\n                                    </div>\r\n                                )\r\n                                }\r\n                                {\r\n                                    images.length > 0 ?\r\n                                        <div className=\"row sj-row-no-margin-padding sj-no-bg mb-2\">\r\n                                            {\r\n                                                images.map((image, idx) => {\r\n                                                    return <div className=\"col-lg-2 col-md-4 col-sm-6\" key={idx}> <img src={image} alt=\"\" className=\"sj-full-width\" /> </div>\r\n                                                })\r\n                                            }\r\n                                        </div> : null\r\n                                }\r\n                                {!uploadStarted &&\r\n                                    <div className='center-aligned'>\r\n                                        <Button type=\"submit\" className='sj-large-font-button sj-red-bg sj-row-100'>Upload Photo(s)</Button>\r\n                                    </div>\r\n                                }\r\n                            </Row>\r\n                        </Form>\r\n\r\n                    </div>\r\n                </div>\r\n            </div >\r\n        </div >\r\n    )\r\n}\r\n\r\nexport default MemberUploadPhoto","import { useNavigate, useParams } from 'react-router-dom'\r\nimport { useState, useEffect, Fragment } from 'react'\r\nimport axios from 'axios'\r\nimport MemberHome from './Home'\r\nimport MemberReviews from './MemberReviews'\r\nimport MemberSubmitReview from './MemberSubmitReview'\r\nimport MemberPhotos from './MemberPhotos'\r\nimport MemberUploadPhoto from './MemberUploadPhoto'\r\nimport { useAuth } from '../CustomHooks/useAuth'\r\n\r\nconst MemberContainer = () => {\r\n\r\n    const params = useParams()\r\n    const { setAuth, auth, setUser, user } = useAuth()\r\n    const navigate = useNavigate()\r\n\r\n    if (!sessionStorage.getItem('sessionUser') || sessionStorage.getItem('sessionUser') === null || sessionStorage.getItem('sessionUser') === 'null') {\r\n        setAuth(false)\r\n        navigate('/login')\r\n        console.log(\"b\")\r\n    }\r\n\r\n    console.log(auth)\r\n\r\n    if (auth === null) {\r\n        navigate(window.$baseAppUrl)\r\n        console.log(\"a\")\r\n        navigate('/')\r\n    }\r\n    const thisSessionUser = JSON.parse(sessionStorage.getItem('sessionUser'))\r\n    console.log(thisSessionUser)\r\n\r\n    const [skiAreaList, setSkiAreaList] = useState([])\r\n\r\n    /*const checkLogin = async () => {\r\n        if (auth === null || !auth) {\r\n            const thisSessionUser = JSON.parse(sessionStorage.getItem('sessionUser'))\r\n\r\n            try {\r\n                axios({\r\n                    method: 'POST',\r\n                    url: `${window.$baseSJAPIUrl}/Account/CheckLoginStatus`,\r\n                    data: {\r\n                        FullName: thisSessionUser.FullName,\r\n                        Email: thisSessionUser.Email,\r\n                        Token: thisSessionUser.Token\r\n                    }\r\n                }).then(loginStatusResult => {\r\n                    let loggedInUser = loginStatusResult.data\r\n                    if (loggedInUser.UserName !== null && loggedInUser.UserName !== '') {\r\n                        sessionStorage.setItem('sessionUser', JSON.stringify(loggedInUser))\r\n                        setAuth(true)\r\n                        setUser(loggedInUser)\r\n                    }\r\n                })\r\n            } catch (err) {\r\n                console.log(err)\r\n            }\r\n        }\r\n    }\r\n\r\n    useEffect((thisAuth, thisUser, localSessionUser) => {\r\n\r\n    }, [auth, user, thisSessionUser]);*/\r\n\r\n    const fetchSkiAreas = async () => {\r\n        axios({\r\n            method: 'POST',\r\n            url: `${window.$baseAPIUrl}/skiarea/home/list`\r\n        }).then(dataResortList => {\r\n            setSkiAreaList(dataResortList.data)\r\n        })\r\n    };\r\n\r\n    useEffect(() => {\r\n        fetchSkiAreas()\r\n        /*if (auth && user == null) {\r\n            if (thisSessionUser == null) {\r\n                checkLogin()\r\n            }\r\n            else {\r\n                setUser(thisSessionUser)\r\n            }\r\n        }*/\r\n    }, []);\r\n\r\n    return (\r\n        <Fragment>\r\n            <>\r\n                {\r\n                    {\r\n                        undefined: <MemberHome user={thisSessionUser} />,\r\n                        'reviews': <MemberReviews user={thisSessionUser} />,\r\n                        'submit-review': <MemberSubmitReview user={thisSessionUser} skiAreaList={skiAreaList} />,\r\n                        'photos': <MemberPhotos user={thisSessionUser} />,\r\n                        'upload-photo': <MemberUploadPhoto user={thisSessionUser} skiAreaList={skiAreaList} />\r\n                    }[params.type]\r\n                }\r\n            </>\r\n        </Fragment>\r\n    )\r\n}\r\n\r\nexport default MemberContainer","import React from 'react'\nimport { BrowserRouter as Router, Routes, Route } from 'react-router-dom'\nimport { AuthProvider } from './components/CustomHooks/useAuth'\nimport 'bootstrap/dist/css/bootstrap.css'\nimport './App.scss'\n\n//Misc Section\nimport ScrollToTop from './ScrollToTop'\nimport Home from './components/Common/Home'\nimport Login from './components/Common/Login'\nimport Register from './components/Common/Register'\nimport ConfirmEmail from './components/Common/ConfirmEmail'\nimport ForgotPassword from './components/Common/ForgotPassword'\nimport ResetPassword from './components/Common/ResetPassword'\nimport Contact from './components/Common/Contact'\nimport RouteFinder from './components/Common/RouteFinder'\nimport CommonPage from './components/Common/CommonPage'\nimport GeneralSearch from './components/Common/GeneralSearch'\nimport Header from './components/Common/Header'\nimport MainNav from './components/Common/MainNav'\nimport SearchMemberBar from './components/Common/SearchMemberBar'\nimport Footer from './components/Common/Footer'\n\n// Ski Area Section\nimport SkiAreaContainer from './components/SkiArea/SkiAreaContainer'\nimport SkiAreaList from './components/SkiArea/SkiAreaList'\nimport SkiAreaDetailContainer from './components/SkiArea/SkiAreaDetail/SkiAreaDetailContainer'\n\n// Daily Reports Section\nimport DailyReportContainer from './components/DailyReport/DailyReportContainer'\nimport DetailContainer from './components/DailyReport/Detail/DetailContainer'\n\n// Accommodation Section\nimport AccommodationContainer from './components/Accommodation/AccommodationContainer'\nimport AccommodationDetailContainer from './components/Accommodation/AccommodationDetail/AccommodationDetailContainer'\n\n// Listing Section\nimport ListingContainer from './components/Listing/ListingContainer'\n\n// Guide Section\nimport GuideContainer from './components/Guide/GuideContainer'\n\n// Member Section\nimport MemberContainer from './components/Member/MemberContainer'\n\nconst App = () => {\n  return (\n    <Router>\n      <div className='App'>\n\n        <ScrollToTop />\n        <React.StrictMode>\n          <AuthProvider>\n            <Header />\n            <MainNav />\n            <SearchMemberBar />\n            <div className='sj-content-holder'>\n              <Routes>\n                <Route path='/' exact element={<Home />} />\n                <Route path='/register' exact element={<Register />} />\n                <Route path='/confirm-email' exact element={<ConfirmEmail />} />\n                <Route path='/login' exact element={<Login />} />\n                <Route path='/forgot-password' exact element={<ForgotPassword />} />\n                <Route path='/reset-password' exact element={<ResetPassword />} />\n                <Route path='/contact' exact element={<Contact />} />\n                <Route path={`${window.$baseRouteFinderUrl}/:resort?`} element={<RouteFinder />} />\n\n                <Route path={`${window.$baseSkiAreaUrl}/prefecture/:key`} element={<SkiAreaList />} />\n                <Route path={`${window.$baseSkiAreaUrl}/town/:key`} element={<SkiAreaList />} />\n                <Route path={`${window.$baseSkiAreaUrl}/area/:key`} element={<SkiAreaList />} />\n                <Route path={`${window.$baseSkiAreaUrl}/:prefecture/:town/:resort/:type?`} element={<SkiAreaDetailContainer />} />\n                <Route path={`${window.$baseSkiAreaUrl}/:type?`} element={<SkiAreaContainer />} />\n\n                <Route path={`${window.$baseDailyReportUrl}`} exact element={<DailyReportContainer />} />\n                <Route path={`${window.$baseDailyReportUrl}/calendar`} exact element={<DailyReportContainer />} />\n                <Route path={`${window.$baseDailyReportUrl}/official-snow-depth`} exact element={<DailyReportContainer />} />\n                {/*<Route path={`${window.$baseDailyReportUrl}/about-daily-reports`} exact component={DailyReportCommonPage} />*/}\n                <Route path={`${window.$baseDailyReportUrl}/webcams/:type?`} exact element={<DailyReportContainer />} />\n                <Route path={`${window.$baseDailyReportUrl}/:now/:type?/:season?`} element={<DetailContainer />} />\n\n                <Route path={`${window.$baseAccommodationUrl}/:prefecture/:town/:hotel/:type?`} element={<AccommodationDetailContainer />} />\n                <Route path={`${window.$baseAccommodationUrl}`} element={<AccommodationContainer />} />\n\n                <Route path={`${window.$baseListingUrl}/:section_name/:listing_name`} element={<ListingContainer />} />\n                <Route path={`${window.$baseListingUrl}/:section_name`} element={<ListingContainer />} />\n                <Route path={`${window.$baseListingUrl}/`} element={<ListingContainer />} />\n\n                <Route path={`${window.$baseGuideUrl}/`} exact element={<GuideContainer />} />\n                <Route path={`${window.$baseGuideUrl}/:section_name/:guide_name?`} element={<GuideContainer />} />\n\n                <Route path={`${window.$baseMemberUrl}/:type?/:resort_unique?`} element={<MemberContainer />} />\n\n                <Route path='/search/:keyword?' exact element={<GeneralSearch />} />\n\n                <Route path='/:type' element={<CommonPage />} />\n              </Routes>\n            </div>\n            <Footer />\n          </AuthProvider>\n        </React.StrictMode>\n      </div>\n    </Router >\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 'bootstrap/dist/css/bootstrap.min.css'\nimport React from 'react'\nimport ReactDOM from 'react-dom'\nimport './index.css'\nimport App from './App'\nimport reportWebVitals from './reportWebVitals'\n\n// Winter Sports Japan\n//window.$baseAPIUrl = 'https://www.wintersportsjapan.net/rest-api'\n//window.$baseSJAPIUrl = 'https://www.wintersportsjapan.net/api'\n//window.$baseAppUrl = 'https://www.wintersportsjapan.net'\n\n// Snow Japan\nwindow.$baseAPIUrl = 'https://www.snowjapan.com/rest-api'\nwindow.$baseSJAPIUrl = 'https://www.snowjapan.com/api'\nwindow.$baseAppUrl = 'https://www.snowjapan.com'\n\n// Localhost\n//window.$baseAPIUrl = 'http://localhost/rest-api'\n//window.$baseSJAPIUrl = 'http://localhost/api'\n//window.$baseAppUrl = 'http://localhost'\n\nwindow.$baseSkiAreaUrl = '/japan-ski-resorts'\nwindow.$baseDailyReportUrl = '/japan-daily-snow-weather-reports'\nwindow.$baseAccommodationUrl = '/japan-places-to-stay'\nwindow.$baseListingUrl = '/listings'\nwindow.$baseGuideUrl = '/guides'\nwindow.$baseRouteFinderUrl = '/route-finder'\nwindow.$baseMemberUrl = '/members'\n\nReactDOM.render(\n  <React.StrictMode>\n    <App />\n  </React.StrictMode>,\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","import PropTypes from 'prop-types'\nimport { Link } from 'react-router-dom'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faAngleDoubleDown, faAngleDoubleUp } from '@fortawesome/free-solid-svg-icons'\n\nconst SkiAreaListTable = ({ tableData, sortColumn, sortOrder, headingColumns, dataMapping, title, breakOn = 'medium' }) => {\n\n  let tableClass = 'table-container__table';\n\n  if (breakOn === 'small') {\n    tableClass += ' table-container__table--break-sm';\n  } else if (breakOn === 'medium') {\n    tableClass += ' table-container__table--break-md';\n  } else if (breakOn === 'large') {\n    tableClass += ' table-container__table--break-lg';\n  }\n\n  const data = tableData.map((row, index) => {\n    let rowData = [];\n    let i = 0;\n\n    for (const key in row) {\n\n      if (dataMapping[i] === undefined) {\n        continue;\n      }\n\n      var objName = 'row.' + dataMapping[i]\n\n      rowData.push({\n        key: headingColumns[i],\n        val: eval(objName),\n        UniqueName: row.UniqueName,\n        PrefectureName: row.PrefectureName,\n        PrefectureUniqueName: row.PrefectureUniqueName,\n        TownName: row.TownName,\n        TownUniqueName: row.TownUniqueName,\n        TownTypeStr: row.TownTypeStr\n      });\n      i++;\n    }\n\n    return <tr key={index}>\n      {rowData.map((data, index) => {\n        if (index === 0) {\n          if (sortColumn === 'Ski area name') {\n            return <td key={index} className='sorted-column' data-heading={data.key}>\n              <Link to={`${window.$baseSkiAreaUrl}/${data.PrefectureUniqueName}/${data.TownUniqueName}/${data.UniqueName}`}><h5>{data.val}</h5></Link>\n              (<Link to={`${window.$baseSkiAreaUrl}/town/${data.TownUniqueName}`}>{data.TownName} {data.TownTypeStr}</Link>,&nbsp;\n              <Link to={`${window.$baseSkiAreaUrl}/prefecture/${data.PrefectureUniqueName}`}>{data.PrefectureName}</Link>)\n            </td>\n          } else {\n            return <td key={index} data-heading={data.key}>\n              <Link to={`${window.$baseSkiAreaUrl}/${data.PrefectureUniqueName}/${data.TownUniqueName}/${data.UniqueName}`}><h5>{data.val}</h5></Link>\n              (<Link to={`${window.$baseSkiAreaUrl}/town/${data.TownUniqueName}`}>{data.TownName} {data.TownTypeStr}</Link>,&nbsp;\n              <Link to={`${window.$baseSkiAreaUrl}/prefecture/${data.PrefectureUniqueName}`}>{data.PrefectureName}</Link>)\n            </td>\n          }\n        }\n        else {\n          if (data.key === sortColumn) {\n            return <td key={index} className='sorted-column' data-heading={data.key}>{data.val}</td>\n          } else {\n            return <td key={index} data-heading={data.key}>{data.val}</td>\n          }\n        }\n      }\n      )}\n    </tr>\n  });\n\n  return (\n    <div className=\"table-container\">\n      <div className=\"left-aligned\">\n        <h4>{title}</h4>\n      </div>\n      <table className={`ski-area-list ${tableClass}`}>\n        <thead>\n          <tr>\n            {headingColumns.map((col, index) => {\n              if (col === sortColumn) {\n                if (sortOrder === 'ASC') {\n                  return <th key={index} className='sorted-column-header'>{col}&nbsp;&nbsp;<FontAwesomeIcon icon={faAngleDoubleDown} /></th>\n                } else if (sortOrder === 'DESC') {\n                  return <th key={index} className='sorted-column-header'>{col}&nbsp;&nbsp;<FontAwesomeIcon icon={faAngleDoubleUp} /></th>\n                } else {\n                  return <th key={index} className='sorted-column-header'>{col}</th>\n                }\n              } else {\n                return <th key={index}>{col}</th>\n              }\n            })}\n          </tr>\n        </thead>\n        <tbody>\n          {data}\n        </tbody>\n      </table>\n    </div>\n  );\n}\n\nSkiAreaListTable.propTypes = {\n  tableData: PropTypes.arrayOf(PropTypes.object).isRequired,\n  headingColumns: PropTypes.arrayOf(PropTypes.string).isRequired,\n  title: PropTypes.string.isRequired,\n  breakOn: PropTypes.oneOf(['small', 'medium', 'large'])\n}\n\nexport default SkiAreaListTable;","/* eslint no-eval: 0 */\nimport PropTypes from 'prop-types';\nimport { Link } from 'react-router-dom'\nimport { RenderBreak } from '../../helpers/Helper'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faAngleDoubleDown, faAngleDoubleUp } from '@fortawesome/free-solid-svg-icons'\n\nconst AccommodationListTable = ({ tableData, sortColumn, sortOrder, headingColumns, dataMapping, title, breakOn = 'medium' }) => {\n  let tableClass = 'table-container__table';\n\n  if (breakOn === 'small') {\n    tableClass += ' table-container__table--break-sm';\n  } else if (breakOn === 'medium') {\n    tableClass += ' table-container__table--break-md';\n  } else if (breakOn === 'large') {\n    tableClass += ' table-container__table--break-lg';\n  }\n\n  const data = tableData.map((row, index) => {\n    let rowData = [];\n    let i = 0;\n\n    for (const key in row) {\n      //forEach(row){\n\n      if (dataMapping[i] === undefined) {\n        continue;\n      }\n\n      var objName = 'row.' + dataMapping[i]\n\n      rowData.push({\n        key: headingColumns[i],\n        val: eval(objName),\n        UniqueName: row.UniqueName,\n        PrefectureUniqueName: row.PrefectureUniqueName,\n        TownUniqueName: row.TownUniqueName,\n        TownTypeStr: row.TownTypeStr,\n        AreaUniqueName: row.AreaUniqueName,\n        TopIntroText: row.TopIntroText,\n        ListingImageName: row.ListingImageName\n      });\n      i++;\n    }\n\n    return <tr key={index}>\n      {rowData.map((data, index) => {\n        if (index === 0) {\n          return <td key={index}><Link to={`${window.$baseAccommodationUrl}/${data.PrefectureUniqueName}/${data.TownUniqueName}/${data.UniqueName}`}><img src={`https://www.snowjapan.com/UploadedFiles/ListingImages/${data.ListingImageName}`} alt={`${data.Name}`} /></Link></td>\n        } else if (index === 1) {\n          if (sortColumn === 'Accommodation name') {\n            return <td key={index} className='sorted-column' data-heading={data.key}>\n              <Link to={`${window.$baseAccommodationUrl}/${data.PrefectureUniqueName}/${data.TownUniqueName}/${data.UniqueName}`}><h5>{data.val}</h5></Link>\n              {(data.TopIntroText !== null && data.TopIntroText !== undefined && data.TopIntroText !== '') &&\n                <div dangerouslySetInnerHTML={{ __html: RenderBreak(data.TopIntroText) }} />\n              }\n            </td>\n          } else {\n            return <td key={index} data-heading={data.key}>\n              <Link to={`${window.$baseAccommodationUrl}/${data.PrefectureUniqueName}/${data.TownUniqueName}/${data.UniqueName}`}><h5>{data.val}</h5></Link>\n              {(data.TopIntroText !== null && data.TopIntroText !== undefined && data.TopIntroText !== '') &&\n                <div dangerouslySetInnerHTML={{ __html: RenderBreak(data.TopIntroText) }} />\n              }\n            </td>\n          }\n        }\n        else {\n          if (data.key === sortColumn) {\n            return <td key={index} className='sorted-column' data-heading={data.key}>\n              {data.val}\n            </td>\n          } else {\n            return <td key={index} data-heading={data.key}>\n              {data.val}\n            </td>\n          }\n        }\n      }\n      )}\n    </tr>\n  });\n\n  return (\n    <div className=\"table-container\">\n      <div className=\"left-aligned\">\n        <h4>{title}</h4>\n      </div>\n      <table className={`sj-list-table sj-accommodation-table ${tableClass}`}>\n        <thead>\n          <tr>\n            {headingColumns.map((col, index) => {\n              if (col !== '' && col === sortColumn) {\n                if (sortOrder === 'ASC') {\n                  return <th key={index} className='sorted-column-header'>{col}&nbsp;&nbsp;<FontAwesomeIcon icon={faAngleDoubleDown} /></th>\n                } else if (sortOrder === 'DESC') {\n                  return <th key={index} className='sorted-column-header'>{col}&nbsp;&nbsp;<FontAwesomeIcon icon={faAngleDoubleUp} /></th>\n                } else {\n                  return <th key={index} className='sorted-column-header'>{col}</th>\n                }\n              } else {\n                return <th key={index}>{col}</th>\n              }\n            })}\n          </tr>\n        </thead>\n        <tbody>\n          {data}\n        </tbody>\n      </table>\n    </div>\n  );\n}\n\nAccommodationListTable.propTypes = {\n  tableData: PropTypes.arrayOf(PropTypes.object).isRequired,\n  headingColumns: PropTypes.arrayOf(PropTypes.string).isRequired,\n  title: PropTypes.string.isRequired,\n  breakOn: PropTypes.oneOf(['small', 'medium', 'large'])\n}\n\nexport default AccommodationListTable;","/* eslint no-eval: 0 */\nimport PropTypes from 'prop-types';\nimport { Link } from 'react-router-dom'\nimport { RenderBreak } from '../../helpers/Helper'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faAngleDoubleDown, faAngleDoubleUp } from '@fortawesome/free-solid-svg-icons'\n\nconst ListingListTable = ({ tableData, sortColumn, sortOrder, headingColumns, dataMapping, title, breakOn = 'medium' }) => {\n  let tableClass = 'table-container__table';\n\n  if (breakOn === 'small') {\n    tableClass += ' table-container__table--break-sm';\n  } else if (breakOn === 'medium') {\n    tableClass += ' table-container__table--break-md';\n  } else if (breakOn === 'large') {\n    tableClass += ' table-container__table--break-lg';\n  }\n\n  const data = tableData.map((row, index) => {\n    let rowData = [];\n    let i = 0;\n\n    for (const key in row) {\n\n      if (dataMapping[i] === undefined) {\n        continue;\n      }\n\n      var objName = 'row.' + dataMapping[i]\n\n      rowData.push({\n        key: headingColumns[i],\n        val: eval(objName),\n        UniqueName: row.UniqueName,\n        SectionUniqueName: row.SectionUniqueName,\n        IntroductionText: row.IntroductionText,\n        ImageName: row.ImageName\n      });\n      i++;\n    }\n\n    return <tr key={index}>\n      {rowData.map((data, index) => {\n        if (index === 0) {\n          return <td key={index}>\n            <Link to={`${window.$baseListingUrl}/${data.SectionUniqueName}/${data.UniqueName}`}><img src={`https://www.snowjapan.com/UploadedFiles/ListingImages/${data.ImageName}`} alt={`${data.Name}`} /></Link>\n          </td>\n        } else if (index === 1) {\n          if (sortColumn === 'Listing name') {\n            return <td key={index} className='sorted-column' data-heading={data.key}>\n              <Link to={`${window.$baseListingUrl}/${data.SectionUniqueName}/${data.UniqueName}`}><h5>{data.val}</h5></Link>\n              {(data.IntroductionText !== null && data.IntroductionText !== undefined && data.IntroductionText !== '') &&\n                <div dangerouslySetInnerHTML={{ __html: RenderBreak(data.IntroductionText) }} />\n              }\n            </td>\n          } else {\n            return <td key={index} data-heading={data.key}>\n              <Link to={`${window.$baseListingUrl}/${data.SectionUniqueName}/${data.UniqueName}`}><h5>{data.val}</h5></Link>\n              {(data.IntroductionText !== null && data.IntroductionText !== undefined && data.IntroductionText !== '') &&\n                <div dangerouslySetInnerHTML={{ __html: RenderBreak(data.IntroductionText) }} />\n              }\n            </td>\n          }\n        }\n        else {\n          if (data.key === sortColumn) {\n            return <td key={index} className='sorted-column' data-heading={data.key}>\n              {data.val}\n            </td>\n          } else {\n            return <td key={index} data-heading={data.key}>\n              {data.val}\n            </td>\n          }\n        }\n      }\n      )}\n    </tr>\n  });\n\n  return (\n    <div className=\"table-container\">\n      <table className={`sj-list-table sj-accommodation-table ${tableClass}`}>\n        <thead>\n          <tr>\n            {headingColumns.map((col, index) => {\n              if (col !== '' && col === sortColumn) {\n                if (sortOrder === 'ASC') {\n                  return <th key={index} className='sorted-column-header'>{col}&nbsp;&nbsp;<FontAwesomeIcon icon={faAngleDoubleDown} /></th>\n                } else if (sortOrder === 'DESC') {\n                  return <th key={index} className='sorted-column-header'>{col}&nbsp;&nbsp;<FontAwesomeIcon icon={faAngleDoubleUp} /></th>\n                } else {\n                  return <th key={index} className='sorted-column-header'>{col}</th>\n                }\n              } else {\n                return <th key={index}>{col}</th>\n              }\n            })}\n          </tr>\n        </thead>\n        <tbody>\n          {data}\n        </tbody>\n      </table>\n    </div>\n  );\n}\n\nListingListTable.propTypes = {\n  tableData: PropTypes.arrayOf(PropTypes.object).isRequired,\n  headingColumns: PropTypes.arrayOf(PropTypes.string).isRequired,\n  title: PropTypes.string.isRequired,\n  breakOn: PropTypes.oneOf(['small', 'medium', 'large'])\n}\n\nexport default ListingListTable;"],"sourceRoot":""}