{"version":3,"sources":["constants.js","services/AuthService.js","services/UserService.js","services/AmplifyApiService.js","redux/features/user/userSlice.js","redux/features/subscription/subscriptionSlice.js","redux/features/auth/authSlice.js","redux/features/camera/cameraSlice.js","redux/store.js","components/Footers/FooterBlack.js","services/ApiService.js","components/PostCards/PostCards.js","views/home-sections/ForecastSection/ForecastSection.js","hooks/useShouldShowPrompt.js","hooks/useIosInstallPrompt.js","hooks/useWebInstallPrompt.js","assets/logo/gsn_logo_mobile.png","components/InstallPWA/InstallPWAIosPrompt.js","assets/icons/Navigation_Action_2x.png","assets/banners/get_app_banner.png","components/InstallPWA/InstallPWABanner.js","components/common/AdSpacer.js","components/Ads/AdSlot.js","hooks/useWindowDimensions.js","components/Loader/Loader.js","assets/loader/greyBackground.jpg","views/home-sections/GenricSection/GenericSection.js","components/video/VideoPlayer.js","components/Description/Description.js","views/home-sections/HomeDescription/HomeDescription.js","views/home-sections/HomeSections.js","assets/logo/gsn_logo_desktop.png","assets/nav/forecast_burger_icon.png","assets/coasts/niNorthEastCoast.png","assets/coasts/niSouthEastCoast.png","assets/coasts/niWestCoast.png","assets/coasts/siEastCoast.png","assets/coasts/siWestCoast.png","assets/banners/get_pitted.png","assets/banners/best_website.png","assets/cams/cam_icon.png","assets/cams/live_cam_pink.png","components/Locations/LocationFooter.js","assets/nav/forecasts_white.png","assets/labels/west.png","assets/labels/east.png","assets/nav/nav_icon.png","services/LocalStorageService.js","components/recentlyVisited/RecentlyVisited.js","assets/recent/favourite_flag.png","tools/utills.js","assets/cams/walrus-lock.png","assets/cams/play_button.svg","assets/nav/join.png","assets/nav/login.png","components/HomeCams/CamMask.js","assets/nav/seal_icon.png","assets/banners/banner_marketing1.jpeg","components/Navbars/GoodSurfNavBarProd.js","components/Premium/Premium.js","views/Home.js","hooks/useVisibility.js","services/NiwaTidesDataService.js","components/charts/TidesChart.js","components/charts/SpeedDirectionTrans.js","components/charts/WindArrow.js","components/charts/DirectionArrow.js","components/charts/Tooltip.js","components/charts/WaveHeightChart.js","components/charts/WindIcon.js","components/charts/WindChart.js","components/charts/MetOceanCharts.js","services/MetOceanDataService.js","assets/charts/legend.png","components/charts/ForcastCharts.js","components/Cams/Cam.js","components/Cams/CamContainer.js","assets/icons/chain-link-icon.svg","components/SocialLinks/SocialLinks.js","components/Ads/LocationAdSlotsTop.js","components/Ads/LocationAdSlotBody.js","components/WindyMap/WindyWidget.js","components/GSNCam/GSNCam.js","assets/logo/gsn_premium_small.png","views/packages-sections/package/OGPackage.js","views/location-sections/LocationSections.js","views/Location.js","views/posts-sections/PostSections.js","views/Posts.js","views/about-us-sections/AboutUsSection.js","views/AboutUs.js","views/privacy-policy-sections/PrivacyPolicySection.js","views/PrivacyPolicy.js","views/terms-and-conditions-sections/TermsAndConditionsSection.js","views/TermsAndConditions.js","components/common/Form/TextInput/TextInput.js","views/email-verification-sections/EmailVerificationSection.js","views/EmailVerification.js","views/reset-password-sections/ResetPasswordSection.js","views/ResetPassword.js","views/contact-us-sections/ContactUsSection.js","views/ContactUs.js","views/sign-in-sections/SignInSection.js","views/SignIn.js","components/common/Form/CheckBox/CheckBox.js","views/sign-up-sections/SignUpSection.js","views/SignUp.js","views/forgot-password-sections/ForgotPasswordSection.js","views/ForgotPassword.js","views/subcription-sections/SubscriptionSection.js","views/Subscriptions.js","views/payment-return-sections/PaymentReturnSection.js","views/PaymentReturn.js","components/Spinner/CenterSpinner.js","views/checkout-sections/CheckoutSection.js","views/Checkout.js","assets/icons/shaka.png","views/packages-sections/PackagesSection.js","views/Packages.js","views/account-sections/AccountSection.js","views/Account.js","routes.js","index.js","amplify/Config.js"],"names":["module","exports","Coasts","NI_NORTH_EAST_COAST","NI_SOUTH_EAST_COAST","NI_WEST_COAST","SI_EAST_COAST","SI_WEST_COAST","DirectionLabels","NORTH","NORTH_EAST","EAST","SOUTH_EAST","SOUTH","SOUTH_WEST","WEST","NORTH_WEST","ResourceTypes","CAM","BUOY","PostAdSlots","ONE","TWO","THREE","FOUR","FIVE","SIX","HomeAdSlots","SubscriptionPosition","ANONYMOUS","UNSUBSCRIBED","TRIAL","MONTHLY","YEARLY","EXPIRED","UNKNOWN","BLOCKED","DAILY","OVERDUE","CANCELLED","SubscriptionStatus","ACTIVE","INACTIVE","BillingPeriodUnit","MONTH","YEAR","DAY","MaskSize","SMALL","LARGE","AmplifyExceptions","USER_NOT_CONFIRMED_EXCEPTION","AuthService","username","password","Auth","signIn","user","email","attributes","emailVerified","email_verified","userId","signedIn","console","log","signOut","currentSession","isValid","currentAuthenticatedUser","results","Error","authService","UserService","firstName","lastName","signUp","autoSignIn","enabled","response","code","confirmSignUp","resendSignUp","forgotPassword","result","new_password","forgotPasswordSubmit","userService","AmplifyApiService","endpoint","process","path","myInit","headers","API","get","body","post","amplifyApiService","getUser","createAsyncThunk","params","getState","rejectWithValue","data","message","userSlice","createSlice","name","initialState","info","error","state","reducers","invalidateUser","extraReducers","builder","addCase","fulfilled","action","payload","status","pending","rejected","actions","getPackages","packages","subscriptionSlice","selectedPackage","selectSubscription","clearSubscriptionError","invalidatePackages","dispatch","login","authRes","unwrap","constants","logOut","receiveCurrentUser","getCurrentUserAmplify","register","pwdResetRequested","resetPassword","confirm","resendCode","resendConfirmationCode","codeResent","authSlice","loginAttempts","incrementLoginAttemptsByOne","incrementLoginAttemptsByNumber","clearAuthError","clearPwdRestReq","getCameras","cams","cameraSlice","selectedCamera","selectCamera","combineReducers","authInfo","authReducer","userReducer","subscription","subscriptionReducer","camera","cameraReducer","persistConfig","key","storage","persistedReducer","persistReducer","configureStore","reducer","devTools","middleware","thunk","FooterBlack","history","useHistory","handleClick","slug","push","pathname","className","Container","onClick","Button","color","href","target","id","Date","getFullYear","ApiService","opts","method","url","Axios","apiService","PostCards","onSelect","Col","xs","lg","md","style","paddingTop","Card","alt","src","thumbnail","CardBody","category","CardTitle","tag","e","preventDefault","title","short_description","moment","created_at","format","ForecastSection","onSelectPost","useState","page","posts","setPosts","useEffect","length","Row","_","map","index","setInstallPromptSeenToday","promptName","today","toISOString","localStorage","setItem","getUserShouldBePromptedToInstall","daysToWaitBeforePromptingAgain","lastPrompt","getItem","getInstallPromptLastSeenAt","daysSinceLastPrompt","diff","isNaN","useShouldShowPrompt","userShouldBePromptedToInstall","setUserShouldBePromptedToInstall","handleUserSeeingInstallPrompt","MobileDetect","window","navigator","userAgent","useIosInstallPrompt","standalone","is","useWebInstallPrompt","installPromptEvent","setInstallPromptEvent","beforeInstallPromptHandler","event","addEventListener","removeEventListener","prompt","userChoice","then","choice","outcome","browser","detect","InstallPWAIosPrompt","show","onClose","Modal","isOpen","centered","width","gsnLogo","CardText","margin","InstallPWABanner","iosInstallPrompt","handleIOSInstallDeclined","webInstallPrompt","handleWebInstallDeclined","handleWebInstallAccepted","setShow","displayBanner","accepted","declined","handleCloseInstallPWAIosPrompt","size","getAppBanner","height","boxShadow","borderRadius","isMobile","AdSpacer","customStyle","AdSlot","genericAds","bottomSpaced","topSpaced","slot","setSlot","image","link","hide","location","transition","getWindowDimensions","innerWidth","innerHeight","useWindowDimensions","windowDimensions","setWindowDimensions","handleResize","Loader","strokeColor","strokeWidth","animationDuration","visible","wrapperClass","GenericSection","ads","setPage","ad_slot2_image","ad_slot2_hide","cards","splice","adSlot2","ad_slot3_image","ad_slot3_hide","adSlot3","ad_slot4_image","ad_slot4_hide","adSlot4","ad_slot5_image","ad_slot5_hide","adSlot5","getPostCards","VideoPlayer","controls","memo","Description","value","parent","parts","split","part","startsWith","replace","val","JSON","parse","smooth","to","scroll","el","scrollIntoView","scrollBy","text","HomeDescription","description","setDescription","HomeSections","homeContent","setHomeContent","LocationFooter","locations","navbar","banner","setBanner","bnr","getBanner","handleClickLogo","getImage","coast","niWestCoast","niNorthEastCoast","niSouthEastCoast","siWestCoast","siEastCoast","renderLogo","cs","sm","paddingBottom","logoMobile","renderName","gap","gsn_cameras","liveCam","marginLeft","renderCoast","ListGroup","filter","nLocation","renderCamLinks","fluid","liveCamPink","marginBottom","best_website","get_pitted","localStorageService","recentlyVisited","findIndex","shift","label","hasCam","stringify","values","reverse","jwt","removeItem","date","RecentlyVisited","recent","setRecent","useLocation","recentLocations","getLocations","loc","handleCLickLocation","calculateRelativeDirection","direction","calculateWindRelativeSpeed","speed","directions","getDirectionLabel","heading","Math","round","getSubscriptionPosition","blocked","user_subscription","trial","billing_interval","CamMask","userInfo","useSelector","subscriptionPosition","setSubscriptionPosition","position","renderJoin","fontSize","display","flexDirection","justifyContent","alignItems","join","walrus","getMessage","GoodSurfNavBarProd","useDispatch","collapseOpen","setCollapseOpen","isOpenMenu","setIsOpenMenu","setSubscription","uss","sub","handleToggle","document","documentElement","classList","toggle","handleClickFreeTrial","handleClickLogin","handleClickMyAccount","handleSignOut","Navbar","expand","navIconMobile","logoDesktop","Dropdown","inNavbar","DropdownToggle","caret","nav","avatar","DropdownMenu","right","DropdownItem","Collapse","Premium","autoPlay","loop","muted","playsInline","backgroundColor","Home","hidden","visibilityChange","setLocations","orderBy","item","order","add","remove","scrollTo","scrollTop","script","createElement","appendChild","parentNode","removeChild","property","content","rel","fetchData","latitude","longitude","tz","TidesChart","setData","getTideTime","isHi","timestamp","getTides","isSame","mean","meanBy","y","textColor","borderColor","border","dates","uniq","startOf","calculateOpacity","SpeedDirectionTrans","transform","parseInt","opacity","fontWeight","WindArrow","iconColor","DirectionArrow","Tooltip","waveDirection","waveDirection8s","wavePeriodB8s","wavePeriod8s","wavePeriod","waveDirectionB8s","windDirection","windSpeed","waveHeight","waveHeight8s","toFixed","WaveHeightChart","props","addSymbol","chart","$","each","series","serie","p","i","renderToString","renderer","barX","plotLeft","barW","chartHeight","css","addClass","getPlotLines","lines","unshift","React","createRef","point","max","hour","top","compact","h","prevProps","newLocation","this","setOptions","THIS","options","type","useHTML","events","load","redraw","xAxis","categories","opposite","lineColor","alternateGridColor","labels","fontFamily","textAlign","yAxis","min","endOnTick","calculateMaxY","gridLineColor","stackLabels","textOutline","formatter","total","legend","tooltip","getArrow","shared","credits","getFilteredData","dataLabels","states","hover","stack","plotOptions","column","stacking","crop","overflow","groupPadding","borderWidth","inactive","setState","chartt","highcharts","Highcharts","ref","callback","onChartAvailable","immutable","Component","WindIcon","WindChart","time","MetOceanCharts","mergeData","variables","dimensions","seaSurfaceHeight","seaSurfaceHeight8s","utc","trim","ForcastCharts","metOceanData","setMetOceanData","handleClickHowTo","Cam","resource","CamContainer","cam_1","cam_2","buoy","SocialLinks","copied","setCopied","FacebookShareButton","FacebookIcon","FacebookMessengerIcon","TwitterShareButton","TwitterIcon","TelegramShareButton","TelegramIcon","WhatsappShareButton","WhatsappIcon","EmailShareButton","EmailIcon","clipboard","writeText","UncontrolledTooltip","placement","trigger","LocationAdSlotsTop","slot1","slot2","slot3","showClass","getClass","img","LocationAdSlotBody","WindyWidget","setWidth","setHeight","containerRef","useRef","current","clientWidth","toString","frameBorder","msHidden","webkitHidden","GSNCam","cam","videoRef","useInView","triggerOnce","inViewRef","inView","visibility","visibilityStatus","setVisibilityStatus","handleVisibilityChange","usePageVisibility","interval","setInterval","pause","clearInterval","iframe","contentWindow","postMessage","funcName","args","renderMask","thumbnails","allowFullScreen","allow","OGPackage","setIsOpen","ogPackage","setOGPackage","setTimeout","resp","catch","err","handleShowModal","setPremiumMessageShowedAt","ModalHeader","packageId","premium","stripe","price","unit_amount","renderModal","LocationSections","setLocation","setCoast","camInfo","selectedCam","setSelectedCam","displayPremium","setDisplayPremium","memoizedCams","useMemo","prevCams","setPrevCams","find","c","r","nextCams","every","prevCam","nextCam","deepCompareCams","cst","removeLocation","getPremiumMessageShowedAt","shouldDisplay","truncate","banner_link","offset","xl","ad_slot1_image","ad_slot1_link","ad_slot1_hide","ad_slot2_link","ad_slot3_link","ad_slot4_link","video","ad_slot5_link","handleSelectPost","ad_slot6_image","ad_slot6_link","Location","PostSections","setPost","related","setRelated","genericPostAds","setGenericPostAds","psts","tags","query","rted","postGenericAds","backgroundImage","zIndex","long_description","images","Embed","websiteId","loadMode","Post","AboutUsSection","minHeight","AboutUs","PrivacyPolicySection","PrivacyPolicy","TermsAndConditionsSection","TermsAndConditions","TextInput","placeholder","inputRef","invalid","isPassword","showPassword","setShowPassword","inputProps","inputType","FormGroup","Label","for","InputGroup","Input","innerRef","InputGroupText","cursor","padding","FormFeedback","EmailVerificationSection","loading","setLoading","useForm","handleSubmit","errors","formState","hubListenerCancelToken","Hub","listen","Form","onSubmit","required","block","Spinner","EmailVerification","ResetPasswordSection","confirmPassword","Link","ResetPassword","ContactUsSection","ContactUs","SignInSection","SignIn","CheckBox","paddingLeft","SignUpSection","mode","watch","ModalBody","pattern","validate","tnc","SignUp","ForgotPasswordSection","ForgotPassword","SubscriptionSection","Subscriptions","PaymentReturnSection","setStatus","setCustomerEmail","queryString","search","sessionId","URLSearchParams","callApi","customer_email","first_name","PaymentReturn","CenterSpinner","stripePromise","loadStripe","CheckoutSection","clientSecret","setClientSecret","subInfo","pac","_pac","priceId","toast","warn","autoClose","hideProgressBar","closeOnClick","pauseOnHover","draggable","progress","undefined","theme","newestOnTop","rtl","pauseOnFocusLoss","Checkout","PackagesSection","monthlyPackage","setMonthlyPackage","days","monthly","pkg","recurring","handleSelectPackage","listStyleType","promo","shaka","freeTrialDays","renderGenericPackage","renderOGPackage","Packages","AccountSection","billingUrl","last_name","unit","getPackageName","next_billing_amount","Account","Routes","render","Posts","TagManager","initialize","gtmId","auth","identityPoolId","region","userPoolId","userPoolWebClientId","oauth","domain","redirectSignIn","redirectSignOut","responseType","Amplify","configure","endpoints","Storage","AWSS3","bucket","root","ReactDOM","createRoot","getElementById","persistor","persistStore","store","context"],"mappings":"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","file":"static/js/main.10585c05.chunk.js","sourcesContent":["module.exports = {\n Coasts: {\n NI_NORTH_EAST_COAST: \"niNorthEastCoast\",\n NI_SOUTH_EAST_COAST: \"niSouthEastCoast\",\n NI_WEST_COAST: \"niWestCoast\",\n SI_EAST_COAST: \"siEastCoast\",\n SI_WEST_COAST: \"siWestCoast\",\n },\n DirectionLabels: {\n NORTH: \"N\",\n NORTH_EAST: \"NE\",\n EAST: \"E\",\n SOUTH_EAST: \"SE\",\n SOUTH: \"S\",\n SOUTH_WEST: \"SW\",\n WEST: \"W\",\n NORTH_WEST: \"NW\",\n },\n ResourceTypes: {\n CAM: \"cam\",\n BUOY: \"buoy\",\n },\n PostAdSlots: {\n ONE: 1,\n TWO: 2,\n THREE: 3,\n FOUR: 4,\n FIVE: 5,\n SIX: 6,\n },\n HomeAdSlots: {\n ONE: 1,\n TWO: 2,\n THREE: 3,\n FOUR: 4,\n FIVE: 5,\n SIX: 6,\n },\n SubscriptionPosition: {\n ANONYMOUS: \"anonymous\",\n UNSUBSCRIBED: \"unsubscribed\",\n TRIAL: \"trial\",\n MONTHLY: \"monthly\",\n YEARLY: \"yearly\",\n EXPIRED: \"expired\",\n UNKNOWN: \"unknown\",\n BLOCKED: \"blocked\",\n DAILY: \"daily\",\n OVERDUE: \"overdue\",\n CANCELLED: 'cancelled'\n },\n SubscriptionStatus: {\n ACTIVE: \"active\",\n INACTIVE: \"inactive\",\n OVERDUE: \"overdue\",\n CANCELLED: 'cancelled'\n },\n BillingPeriodUnit: {\n MONTH: \"month\",\n YEAR: \"year\",\n DAY: \"day\"\n },\n MaskSize: {\n SMALL: \"small\",\n LARGE: \"large\",\n },\n AmplifyExceptions: {\n USER_NOT_CONFIRMED_EXCEPTION: \"UserNotConfirmedException\",\n }\n};\n","import { Auth } from \"aws-amplify\";\n\nclass AuthService {\n /**\n * login with amplify using email and password\n * @param {*} username\n * @param {*} password\n */\n async login(username, password) {\n try {\n const user = await Auth.signIn(username, password);\n return {\n email: user?.attributes?.email,\n emailVerified: user?.attributes?.email_verified,\n userId: user?.attributes[\"custom:gsnUserId\"],\n signedIn: true,\n };\n } catch (error) {\n console.log(error);\n throw error;\n }\n }\n\n async logOut() {\n try {\n await Auth.signOut();\n } catch (error) {\n console.log(\"error signing out: \", error);\n }\n }\n\n async getCurrentUserAmplify() {\n try {\n const isValid = (await Auth.currentSession()).isValid();\n if (isValid) {\n const results = await Auth.currentAuthenticatedUser();\n return {\n email: results?.attributes?.email,\n emailVerified: results?.attributes?.email_verified,\n signedIn: isValid,\n };\n } else {\n throw Error(\"Not signed in\");\n }\n } catch (err) {\n throw err;\n }\n }\n}\n\nconst authService = new AuthService();\n\nexport default authService;\n","import { Auth, Hub } from \"aws-amplify\";\n\nclass UserService {\n /**\n * register user\n * @param {*} email\n * @param {*} password\n */\n async register(email, password, firstName, lastName) {\n try {\n const response = await Auth.signUp({\n username: email,\n password,\n attributes: {\n email, // optional\n \"custom:gsnUserId\": \"id\",\n \"custom:firstName\": firstName,\n \"custom:lastName\": lastName,\n // other custom attributes\n },\n autoSignIn: {\n enabled: true,\n },\n });\n return response?.user;\n } catch (error) {\n throw error;\n }\n }\n\n /**\n * send email confirmation\n * @param {*} username\n * @param {*} code\n */\n async confirm(username, code) {\n try {\n await Auth.confirmSignUp(username, code);\n } catch (error) {\n throw error;\n }\n }\n\n /**\n * resend confirmation code with amlify\n * @param {*} username\n */\n async resendConfirmationCode(username) {\n try {\n await Auth.resendSignUp(username);\n console.log(\"code resent successfully\");\n } catch (error) {\n throw error;\n }\n }\n\n /**\n * forgot password code send\n * @param {*} username\n */\n async forgotPassword(username) {\n try {\n const result = await Auth.forgotPassword(username);\n return result;\n } catch (error) {\n throw error;\n }\n }\n\n /**\n * new password submition\n * @param {*} username\n * @param {*} code\n * @param {*} new_password\n */\n async forgotPasswordSubmit(username, code, new_password) {\n try {\n const result = await Auth.forgotPasswordSubmit(\n username,\n code,\n new_password\n );\n return result;\n } catch (error) {\n throw error;\n }\n }\n}\n\nconst userService = new UserService();\n\nexport default userService;\n","import { API } from \"aws-amplify\";\n\nclass AmplifyApiService {\n async get(endpoint) {\n const apiName = process.env.REACT_APP_API_NAME;\n const path = `/${endpoint}`;\n const myInit = {\n headers: {}, // OPTIONAL\n };\n\n return API.get(apiName, path, myInit);\n }\n\n async post(endpoint, body) {\n const apiName = process.env.REACT_APP_API_NAME;\n const path = `/${endpoint}`;\n const myInit = {\n headers: {}, // OPTIONAL\n body,\n };\n\n return API.post(apiName, path, myInit);\n }\n}\n\nconst amplifyApiService = new AmplifyApiService();\nexport default amplifyApiService;\n","import { createAsyncThunk, createSlice } from \"@reduxjs/toolkit\";\nimport amplifyApiService from \"services/AmplifyApiService\";\n\nexport const getUser = createAsyncThunk(\n \"user/getUser\",\n async (params, { getState, rejectWithValue }) => {\n try {\n const results = await amplifyApiService.get(`users/${params}`);\n if (results?.data) {\n return results.data.user;\n } else {\n return [];\n }\n } catch (err) {\n return rejectWithValue({\n code: err.code,\n message: err.message,\n });\n }\n }\n);\n\nconst initialState = {\n info: null,\n error: null,\n state: \"idle\",\n};\n\nconst userSlice = createSlice({\n name: \"user\",\n initialState,\n reducers: {\n invalidateUser: (state) => {\n state.info = null;\n },\n },\n extraReducers: (builder) => {\n builder.addCase(getUser.fulfilled, (state, action) => {\n state.info = action.payload;\n state.status = \"succeeded\";\n });\n builder.addCase(getUser.pending, (state, action) => {\n state.status = \"pending\";\n });\n builder.addCase(getUser.rejected, (state, action) => {\n state.error = action.payload;\n state.status = \"failed\";\n state.user = null;\n });\n },\n});\n\nexport const { invalidateUser } = userSlice.actions;\nexport const selectUserInfo = (state) => state.user.info;\nexport default userSlice.reducer;\n","import { createAsyncThunk, createSlice } from \"@reduxjs/toolkit\";\n// import api2Service from \"../../../services/Api2Services\";\nimport amplifyApiService from \"services/AmplifyApiService\";\n\nexport const getPackages = createAsyncThunk(\n \"subscription/getPackages\",\n async (params, { rejectWithValue }) => {\n try {\n // const results = await api2Service.get(\"payments/packages\");\n const results = await amplifyApiService.get(\"payments/packages\");\n if (results?.data) {\n return results.data.packages;\n } else {\n return [];\n }\n } catch (err) {\n return rejectWithValue({\n code: err.code,\n message: err.message,\n });\n }\n }\n);\n\nconst initialState = {\n info: {\n packages: [],\n selectedPackage: null,\n },\n error: null,\n state: \"idle\",\n};\n\nconst subscriptionSlice = createSlice({\n name: \"subscription\",\n initialState,\n reducers: {\n selectSubscription: (state, action) => {\n state.info.selectedPackage = action.payload;\n },\n clearSubscriptionError: (state) => {\n state.error = null\n },\n invalidatePackages: (state) => {\n state.info.packages = [];\n state.info.selectedPackage = null;\n }\n },\n extraReducers: (builder) => {\n builder.addCase(getPackages.fulfilled, (state, action) => {\n state.info.packages = action.payload;\n state.status = \"succeeded\";\n state.error = null;\n });\n builder.addCase(getPackages.pending, (state, action) => {\n state.status = \"pending\";\n });\n builder.addCase(getPackages.rejected, (state, action) => {\n state.error = action.payload;\n state.info.packages = [];\n state.info.selectedPackage = null;\n state.status = \"failed\";\n });\n },\n});\n\nexport const selectSubscriptionInfo = (state) => state.subscription.info;\nexport const { selectSubscription, clearSubscriptionError, invalidatePackages } = subscriptionSlice.actions;\nexport default subscriptionSlice.reducer;\n","import { createAsyncThunk, createSlice } from \"@reduxjs/toolkit\";\nimport authService from \"../../../services/AuthService\";\nimport userService from \"services/UserService\";\nimport { getUser, invalidateUser } from \"../user/userSlice\";\nimport {invalidatePackages} from \"../subscription/subscriptionSlice\";\nimport constants from \"../../../constants\";\n\nexport const signIn = createAsyncThunk(\n \"authInfo/signIn\",\n async (params, { rejectWithValue, dispatch }) => {\n try {\n const authRes = await authService.login(params?.email, params?.password);\n await dispatch(getUser(authRes?.userId)).unwrap();\n return {\n email: authRes?.email,\n signedIn: authRes?.signedIn,\n emailVerified: authRes?.emailVerified,\n userId: authRes?.userId,\n };\n } catch (err) {\n return rejectWithValue({\n code: err.code,\n message: err.message,\n email:\n err.code === constants.AmplifyExceptions.USER_NOT_CONFIRMED_EXCEPTION\n ? params?.email\n : null,\n });\n }\n }\n);\n\nexport const signOut = createAsyncThunk(\n \"authInfo/signOut\",\n async (params, { rejectWithValue, dispatch }) => {\n try {\n await authService.logOut();\n dispatch(invalidateUser());\n dispatch(invalidatePackages());\n return {\n email: null,\n signedIn: false,\n emailVerified: false,\n userId: null,\n };\n } catch (err) {\n return rejectWithValue({\n code: err.code,\n message: err.message,\n });\n }\n }\n);\n\nexport const receiveCurrentUser = createAsyncThunk(\n \"authInfo/receiveCurrentUser\",\n async (params, { rejectWithValue }) => {\n try {\n const results = await authService.getCurrentUserAmplify();\n return {\n email: results?.email,\n signedIn: results?.signedIn,\n emailVerified: results?.emailVerified,\n };\n } catch (err) {\n // only logging the error\n // we don't do anything here\n console.log(err?.message);\n return {\n email: null,\n signedIn: false,\n emailVerified: false,\n };\n }\n }\n);\n\nexport const signUp = createAsyncThunk(\n \"authInfo/signUp\",\n async (params, { rejectWithValue }) => {\n try {\n const authRes = await userService.register(\n params?.email,\n params?.password,\n params?.firstName,\n params?.lastName\n );\n return {\n email: authRes?.username,\n userId: null,\n emailVerified: false,\n };\n } catch (err) {\n return rejectWithValue({\n code: err.code,\n message: err.message,\n });\n }\n }\n);\n\nexport const forgotPassword = createAsyncThunk(\n \"authInfo/forgotPassword\",\n async (params, { rejectWithValue }) => {\n try {\n const authRes = await userService.forgotPassword(params?.email);\n return {\n email: params?.email,\n pwdResetRequested: true,\n };\n } catch (err) {\n return rejectWithValue({\n code: err.code,\n message: err.message,\n });\n }\n }\n);\n\nexport const resetPassword = createAsyncThunk(\n \"authInfo/resetPassword\",\n async (params, { rejectWithValue }) => {\n try {\n const authRes = await userService.forgotPasswordSubmit(\n params?.email,\n params?.code,\n params?.password\n );\n return {\n pwdResetRequested: false,\n };\n } catch (err) {\n return rejectWithValue({\n code: err.code,\n message: err.message,\n });\n }\n }\n);\n\nexport const confirm = createAsyncThunk(\n \"authInfo/confirm\",\n async (params, { rejectWithValue }) => {\n try {\n await userService.confirm(params?.email, params?.code);\n return {\n emailVerified: true,\n };\n } catch (err) {\n return rejectWithValue({\n code: err.code,\n message: err.message,\n });\n }\n }\n);\n\nexport const resendCode = createAsyncThunk(\n \"authInfo/resendCode\",\n async (params, { rejectWithValue }) => {\n try {\n await userService.resendConfirmationCode(params?.email);\n return {\n codeResent: true,\n };\n } catch (err) {\n return rejectWithValue({\n code: err.code,\n message: err.message,\n });\n }\n }\n);\n\nconst initialState = {\n info: {\n email: null,\n loginAttempts: 0,\n userId: null,\n emailVerified: false,\n pwdResetRequested: false,\n },\n error: null,\n state: \"idle\",\n};\n\nconst authSlice = createSlice({\n name: \"authInfo\",\n initialState,\n reducers: {\n incrementLoginAttemptsByOne: (state) => {\n state.info.loginAttempts += 1;\n },\n incrementLoginAttemptsByNumber: (state, action) => {\n state.info.loginAttempts += action.payload;\n },\n clearAuthError: (state) => {\n state.error = null\n },\n clearPwdRestReq: (state) => {\n state.info.pwdResetRequested = false\n },\n autoSignIn: (state, action) => {\n state.info = {\n ...state.info,\n email: action?.payload?.email,\n signedIn: action?.payload?.signedIn,\n emailVerified: action?.payload?.emailVerified,\n userId: action?.payload?.userId,\n };\n },\n },\n extraReducers: (builder) => {\n builder.addCase(signIn.fulfilled, (state, action) => {\n state.info.email = action.payload?.email;\n state.info.signedIn = action.payload?.signedIn;\n state.info.emailVerified = action.payload.emailVerified;\n state.info.userId = action.payload.userId;\n state.status = \"succeeded\";\n state.error = null;\n });\n builder.addCase(signIn.pending, (state, action) => {\n state.status = \"pending\";\n });\n builder.addCase(signIn.rejected, (state, action) => {\n state.error = {\n code: action.payload.code,\n message: action.payload.message,\n };\n state.info.email = action.payload?.email; // retain the email even if sign in fails\n state.status = \"failed\";\n });\n builder.addCase(signOut.fulfilled, (state, action) => {\n state.info.email = action.payload?.email;\n state.info.signedIn = action.payload?.signedIn;\n state.info.emailVerified = action.payload.emailVerified;\n state.info.userId = action.payload.userId;\n state.status = \"succeeded\";\n state.error = null;\n });\n builder.addCase(signOut.pending, (state, action) => {\n state.status = \"pending\";\n });\n builder.addCase(signOut.rejected, (state, action) => {\n state.error = action.payload;\n state.status = \"failed\";\n });\n builder.addCase(receiveCurrentUser.fulfilled, (state, action) => {\n state.info.email = action.payload?.email;\n state.info.signedIn = action.payload?.signedIn;\n state.info.emailVerified = action.payload.emailVerified;\n state.status = \"succeeded\";\n state.error = null;\n });\n builder.addCase(receiveCurrentUser.pending, (state, action) => {\n state.status = \"pending\";\n });\n builder.addCase(receiveCurrentUser.rejected, (state, action) => {\n state.error = action.payload;\n state.status = \"failed\";\n });\n builder.addCase(signUp.fulfilled, (state, action) => {\n state.info = action.payload;\n state.status = \"succeeded\";\n state.error = null;\n });\n builder.addCase(signUp.pending, (state, action) => {\n state.status = \"pending\";\n });\n builder.addCase(signUp.rejected, (state, action) => {\n state.error = action.payload;\n state.status = \"failed\";\n });\n builder.addCase(confirm.fulfilled, (state, action) => {\n state.info.emailVerified = action.payload.emailVerified;\n state.status = \"succeeded\";\n state.error = null;\n });\n builder.addCase(confirm.pending, (state, action) => {\n state.status = \"pending\";\n });\n builder.addCase(confirm.rejected, (state, action) => {\n state.error = action.payload;\n state.status = \"failed\";\n state.emailVerified = false;\n });\n builder.addCase(resendCode.fulfilled, (state, action) => {\n state.info.codeResent = action.payload.codeResent;\n state.status = \"succeeded\";\n state.error = null;\n });\n builder.addCase(resendCode.pending, (state, action) => {\n state.status = \"pending\";\n });\n builder.addCase(resendCode.rejected, (state, action) => {\n state.error = action.payload;\n state.status = \"failed\";\n state.codeResent = false;\n });\n builder.addCase(forgotPassword.fulfilled, (state, action) => {\n state.info.pwdResetRequested = action.payload.pwdResetRequested;\n state.info.email = action.payload.email;\n state.status = \"succeeded\";\n state.error = null;\n });\n builder.addCase(forgotPassword.pending, (state, action) => {\n state.status = \"pending\";\n });\n builder.addCase(forgotPassword.rejected, (state, action) => {\n state.error = action.payload;\n state.status = \"failed\";\n });\n builder.addCase(resetPassword.fulfilled, (state, action) => {\n state.info.pwdResetRequested = action.payload.pwdResetRequested;\n state.status = \"succeeded\";\n state.error = null;\n });\n builder.addCase(resetPassword.pending, (state, action) => {\n state.status = \"pending\";\n });\n builder.addCase(resetPassword.rejected, (state, action) => {\n state.error = action.payload;\n state.status = \"failed\";\n });\n },\n});\n\nexport const selectAuthInfo = (state) => state.authInfo.info;\n\nexport const {\n incrementLoginAttemptsByNumber,\n incrementLoginAttemptsByOne,\n clearAuthError,\n clearPwdRestReq,\n autoSignIn,\n} = authSlice.actions;\n\nexport default authSlice.reducer;\n","import { createAsyncThunk, createSlice } from \"@reduxjs/toolkit\";\nimport amplifyApiService from \"services/AmplifyApiService\";\nimport _ from \"lodash\";\n\nexport const getCameras = createAsyncThunk(\n \"camera/getCameras\",\n async (params, { rejectWithValue }) => {\n try {\n const results = await amplifyApiService.get(\n params?.signedIn ? \"cams\" : \"demo/cams\"\n );\n if (results?.data) {\n return results.data.cams;\n } else {\n return [];\n }\n } catch (err) {\n return rejectWithValue({\n code: err.code,\n message: err.message,\n });\n }\n }\n);\n\nconst initialState = {\n info: {\n cams: [],\n selectedCamera: null,\n },\n error: null,\n state: \"idle\",\n};\n\nconst cameraSlice = createSlice({\n name: \"camera\",\n initialState,\n reducers: {\n selectCamera: (state, action) => {\n state.info.selectedCamera = action.payload;\n },\n },\n extraReducers: (builder) => {\n builder.addCase(getCameras.fulfilled, (state, action) => {\n state.info.cams = action.payload;\n state.status = \"succeeded\";\n state.error = null;\n });\n builder.addCase(getCameras.pending, (state, action) => {\n state.status = \"pending\";\n });\n builder.addCase(getCameras.rejected, (state, action) => {\n state.error = action.payload;\n state.info.cams = [];\n state.info.selectedCamera = null;\n state.status = \"failed\";\n });\n },\n});\n\nexport const selectCameraInfo = (state) => state.camera.info;\nexport const { selectCamera } = cameraSlice.actions;\nexport default cameraSlice.reducer;\n","import { configureStore, combineReducers } from \"@reduxjs/toolkit\";\nimport authReducer from \"./features/auth/authSlice\";\nimport userReducer from \"./features/user/userSlice\";\nimport subscriptionReducer from \"./features/subscription/subscriptionSlice\";\nimport cameraReducer from \"./features/camera/cameraSlice\";\n\nimport storage from \"redux-persist/lib/storage\";\nimport { persistReducer } from \"redux-persist\";\nimport { thunk } from \"redux-thunk\";\n\nconst reducers = combineReducers({\n authInfo: authReducer,\n user: userReducer,\n subscription: subscriptionReducer,\n camera: cameraReducer,\n});\n\nconst persistConfig = {\n key: \"root\",\n storage,\n};\n\nconst persistedReducer = persistReducer(persistConfig, reducers);\n\nexport default configureStore({\n reducer: persistedReducer,\n devTools: process.env.NODE_ENV !== \"production\",\n middleware: [thunk],\n});\n\n// export default configureStore({\n// reducer: {\n// authInfo: authReducer,\n// user: userReducer,\n// subscription: subscriptionReducer,\n// },\n// });\n","/*eslint-disable*/\nimport React from \"react\";\nimport { useHistory } from \"react-router-dom\";\n// reactstrap components\nimport { Container, Button } from \"reactstrap\";\nimport \"./FooterBlack.scss\";\n// core components\n\nconst FooterBlack = () => {\n const history = useHistory();\n\n const handleClick = (slug) => {\n history.push({\n pathname: `/${slug}`\n })\n }\n return (\n <>\n \n \n );\n};\n\nexport default FooterBlack;\n","\nimport Axios from 'axios';\n\nclass ApiService {\n /**\n * execute an get api method after signng it with the aws credentials\n * @param {*} endpoint\n * @param {*} credentials\n */\n async get(endpoint) {\n const opts = {\n method: 'GET',\n url: `https://api.goodsurfnow.com/${endpoint}`,\n headers: {}\n };\n const results= await Axios(opts);\n return results && results.data;\n }\n}\n\nconst apiService = new ApiService();\nexport default apiService;","import React from \"react\";\nimport { Col, Card, CardTitle, CardBody } from \"reactstrap\";\nimport moment from \"moment\";\nimport './PostCards.scss';\n\nconst PostCards = ({ post, className, onSelect }) => {\n return (\n \n
\n \n
\n \"...\" onSelect(post)}>\n
\n \n
\n {post.category}\n
\n \n {\n onSelect(post);\n e.preventDefault();\n }}\n >\n {post.title}\n \n \n

\n {post.short_description}\n

\n

\n {moment(post.created_at).format(\"MMM DD, YYYY\")}\n

\n
\n
\n
\n \n );\n};\n\nexport default PostCards;\n","import React, {useEffect, useState} from 'react';\nimport {Container, Row, Col, Card, CardTitle, CardBody} from 'reactstrap';\nimport _ from 'lodash';\nimport '../HomePostsSection.scss';\nimport ApiService from 'services/ApiService.js';\nimport moment from 'moment';\nimport PostCards from '../../../components/PostCards/PostCards';\n\nconst ForecastSection = ({\n onSelectPost\n}) => {\n const [page, setPage] = useState(1);\n const [posts, setPosts] = useState([]);\n \n useEffect(() => {\n (async function callApi() {\n const posts = await ApiService.get(`posts?_limit=${(page*3)+1}&_sort=id:DESC&zone_eq=forecast`);\n setPosts(posts)\n })();\n },[page]);\n\n // /**\n // * render the other posts\n // * @param {*} post \n // * @param {*} index \n // * @param {*} className \n // * @returns \n // */\n // const renderCard = (post, index, className) => (\n // \n //
\n // \n //
\n // onSelectPost(post)}\n // >\n //
\n // \n //
\n // {post.category}\n //
\n // \n // {\n // onSelectPost(post);\n // e.preventDefault();\n // }}\n // >\n // {post.title}\n // \n // \n //

{post.short_description}

\n //

\n // {moment(post.created_at).format(\"MMM DD, YYYY\")}\n //

\n //
\n //
\n //
\n // \n // );\n \n /**\n * render the fist post in an image container \n * only after medium size screen\n * @param {*} post \n * @returns \n */\n const renderMainPost = (post) => (\n
\n \n \n
\n onSelectPost(post)}\n >\n
\n \n {\n onSelectPost(post);\n e.preventDefault();\n }}\n >\n {post.title}\n \n \n

{post.short_description}

\n

\n {moment(post.created_at).format(\"MMM DD, YYYY\")}\n

\n
\n
\n \n
\n
\n );\n return (\n \n {posts && posts.length ? (\n
\n {renderMainPost(posts[0])}\n
\n \n {_.map(posts, (post, index) =>\n // renderCard(post, index, !index ? \"d-flex d-md-none\" : \"\")\n \n )}\n \n {/*
setPage(page + 1)}>\n
LOAD MORE
\n
*/}\n
\n
\n ) : (\n \n )}\n
\n );\n}\n\nexport default ForecastSection;","import { useState } from 'react';\nimport moment from 'moment';\n\nconst getInstallPromptLastSeenAt = (promptName) => localStorage.getItem(promptName);\n\nconst setInstallPromptSeenToday = (promptName) => {\n const today = moment().toISOString();\n localStorage.setItem(promptName, today);\n};\n\nfunction getUserShouldBePromptedToInstall(promptName, daysToWaitBeforePromptingAgain) {\n const lastPrompt = moment(getInstallPromptLastSeenAt(promptName));\n const daysSinceLastPrompt = moment().diff(lastPrompt, 'days');\n return isNaN(daysSinceLastPrompt) || daysSinceLastPrompt > daysToWaitBeforePromptingAgain;\n}\n\nconst useShouldShowPrompt = (promptName, daysToWaitBeforePromptingAgain = 1) => {\n const [userShouldBePromptedToInstall, setUserShouldBePromptedToInstall] = useState(\n getUserShouldBePromptedToInstall(promptName, daysToWaitBeforePromptingAgain)\n );\n\n const handleUserSeeingInstallPrompt = () => {\n setUserShouldBePromptedToInstall(false);\n setInstallPromptSeenToday(promptName);\n };\n\n return [userShouldBePromptedToInstall, handleUserSeeingInstallPrompt];\n};\nexport default useShouldShowPrompt;","import MobileDetect from \"mobile-detect\";\nimport useShouldShowPrompt from \"./useShouldShowPrompt\";\n\nconst iosInstallPromptedAt = \"iosInstallPromptedAt\";\n\nconst md = new MobileDetect(window.navigator.userAgent);\n\nconst isIOS = () => {\n // @ts-ignore\n if (navigator.standalone) {\n //user has already installed the app\n return false;\n }\n return md.is(\"iPhone\") || md.is(\"iPad\");\n};\n\nconst useIosInstallPrompt = () => {\n const [userShouldBePromptedToInstall, handleUserSeeingInstallPrompt] =\n useShouldShowPrompt(iosInstallPromptedAt);\n\n return [\n isIOS() && userShouldBePromptedToInstall,\n handleUserSeeingInstallPrompt,\n ];\n};\nexport default useIosInstallPrompt;\n","import { useState, useEffect } from 'react';\nimport useShouldShowPrompt from './useShouldShowPrompt';\n\nconst webInstallPromptedAt = 'webInstallPromptedAt';\n\nconst useWebInstallPrompt = () => {\n const [installPromptEvent, setInstallPromptEvent] = useState();\n const [userShouldBePromptedToInstall, handleUserSeeingInstallPrompt] = useShouldShowPrompt(webInstallPromptedAt);\n\n useEffect(() => {\n const beforeInstallPromptHandler = event => {\n event.preventDefault();\n\n // check if user has already been asked\n if (userShouldBePromptedToInstall) {\n // store the event for later use\n setInstallPromptEvent(event);\n }\n };\n window.addEventListener('beforeinstallprompt', beforeInstallPromptHandler);\n return () => window.removeEventListener('beforeinstallprompt', beforeInstallPromptHandler);\n }, [userShouldBePromptedToInstall]);\n\n const handleInstallDeclined = () => {\n handleUserSeeingInstallPrompt();\n setInstallPromptEvent(null);\n };\n\n const handleInstallAccepted = () => {\n // show native prompt\n installPromptEvent.prompt();\n\n // decide what to do after the user chooses\n installPromptEvent.userChoice.then(choice => {\n // if the user declined, we don't want to show the prompt again\n if (choice.outcome !== 'accepted') {\n handleUserSeeingInstallPrompt();\n }\n setInstallPromptEvent(null);\n });\n };\n return [installPromptEvent, handleInstallDeclined, handleInstallAccepted];\n};\nexport default useWebInstallPrompt;\n","export default __webpack_public_path__ + \"static/media/gsn_logo_mobile.a5139ea8.png\";","import React from 'react';\nimport { Button, Modal, Card, CardText, CardBody, CardTitle } from 'reactstrap';\nimport { detect } from 'detect-browser';\nimport appleIcon from '../../assets/icons/Navigation_Action_2x.png';\nimport gsnLogo from '../../assets/logo/gsn_logo_mobile.png';\nimport './InstallPWAIosPrompt.scss';\nconst browser = detect();\n\nconst InstallPWAIosPrompt = ({show, onClose}) => {\n \n return (\n \n \n
\n \n
\n \n \n

Get App

\n
\n <>\n {\n browser && browser.name !== 'safari' ? (\n Open the website on Safari browser\n ): \n }\n \n Tap\n \n then "Add to Home Screen"\n \n
\n \n
\n \n
\n
\n
\n );\n};\n\nexport default InstallPWAIosPrompt;","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACYAAAA1CAYAAAAtf5mbAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTM4IDc5LjE1OTgyNCwgMjAxNi8wOS8xNC0wMTowOTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NTZCQTRBN0Q2OTdDMTFFNzhCMEZDMTIwMUI0RkQzNjEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NTZCQTRBN0U2OTdDMTFFNzhCMEZDMTIwMUI0RkQzNjEiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo1NkJBNEE3QjY5N0MxMUU3OEIwRkMxMjAxQjRGRDM2MSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo1NkJBNEE3QzY5N0MxMUU3OEIwRkMxMjAxQjRGRDM2MSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pn8R4UYAAAELSURBVHja7NhLCsIwFAXQRLoQF6SORMGB4BYEQXDgwIEgFJfhxJE7ElfhN75AAg9N2gT7o94LF0VJOKZJKQqllPA1Mil1LopKQbC9nsp00RQYR9ku64ZZ1JWhXuZ1VReMo3oMNqM+zPt11bBPlGAwnSnDbaqCcVSfT8VgOhOG25YN86FcMJ0x9W4+35UF46iBayoHTGdIvZnv0lBXEvEbzgY1op4ixh2pT+qBeinrUnazpvKsWMjYr8is0yeljNoVdlgRN/6OaGgAi43M2bB5Y0P2mGrViiXstiF/PJWhKxt0urH5AQMMMMAAAwwwwBryoFjDAyEuJWCAAQYYYIABBlhL/4P9zxV7CzAARnAcTBPSXp8AAAAASUVORK5CYII=\"","export default __webpack_public_path__ + \"static/media/get_app_banner.3ac4fe93.png\";","import React, { useState } from \"react\";\nimport { isMobile } from \"react-device-detect\";\nimport { Card, Col } from \"reactstrap\";\nimport useIosInstallPrompt from \"../../hooks/useIosInstallPrompt\";\nimport useWebInstallPrompt from \"../../hooks/useWebInstallPrompt\";\nimport gsnLogo from \"../../assets/logo/gsn_logo_mobile.png\";\nimport \"./InstallPWABanner.scss\";\nimport { MdClose } from \"react-icons/md\";\nimport InstallPWAIosPrompt from \"./InstallPWAIosPrompt\";\nimport getAppBanner from \"../../assets/banners/get_app_banner.png\";\n\nconst InstallPWABanner = () => {\n const [iosInstallPrompt, handleIOSInstallDeclined] = useIosInstallPrompt();\n const [webInstallPrompt, handleWebInstallDeclined, handleWebInstallAccepted] =\n useWebInstallPrompt();\n const [show, setShow] = useState(false);\n\n const displayBanner = (accepted, declined) => (\n \n
\n \n \n \n {/*
*/}\n \n {/*
*/}\n
\n
\n \n );\n\n const handleCloseInstallPWAIosPrompt = () => {\n setShow(false);\n handleIOSInstallDeclined();\n };\n const handleClickBannerIos = () => {\n setShow(true);\n };\n\n if (!iosInstallPrompt && !webInstallPrompt) {\n return null;\n }\n if (iosInstallPrompt && isMobile) {\n return displayBanner(handleClickBannerIos, handleIOSInstallDeclined);\n }\n if (webInstallPrompt && isMobile) {\n return displayBanner(handleWebInstallAccepted, handleWebInstallDeclined);\n }\n return null;\n};\n\nexport default InstallPWABanner;\n","import React from \"react\";\nimport './AdSpacer.scss'\n\nconst AdSpacer = ({customStyle}) => (
);\n\nexport default AdSpacer;","import React, { useState, useEffect } from 'react';\nimport { Col, Row, Container } from 'reactstrap';\nimport './AdSlot.scss';\nimport AdSpacer from 'components/common/AdSpacer';\n\nconst AdSlot = ({\n id,\n page,\n genericAds,\n bottomSpaced,\n topSpaced\n}) => {\n const [slot, setSlot] = useState(null);\n\n useEffect(() => {\n if (page && page[`ad_slot${id}_image`] && !page[`ad_slot${id}_hide`]) {\n setSlot({\n image: page[`ad_slot${id}_image`] && page[`ad_slot${id}_image`].url,\n link: page[`ad_slot${id}_link`],\n hide: page[`ad_slot${id}_hide`]\n })\n } else if (genericAds && genericAds[`ad_slot${id}_image`] && !genericAds[`ad_slot${id}_hide`]) {\n setSlot({\n image: genericAds[`ad_slot${id}_image`].url,\n link: genericAds[`ad_slot${id}_link`],\n hide: genericAds[`ad_slot${id}_hide`]\n })\n } else {\n // google adslot\n }\n }, [id, page, genericAds]);\n\n const handleClick = (link) => {\n if (link) {\n window.location = link\n }\n }\n return slot && !slot.hide ? (\n \n {topSpaced ? : }\n \n \n
handleClick(slot.link)} className={`${slot.link ? 'generic-ad-slot generic-ad-slot-center' : 'generic-ad-slot-center'}`}>\n \"slot-1\"\n
\n \n
\n {bottomSpaced ? : }\n
\n ) :\n
\n}\n\nexport default AdSlot;","import { useState, useEffect } from 'react';\n\nfunction getWindowDimensions() {\n const { innerWidth: width, innerHeight: height } = window;\n return {\n width,\n height\n };\n}\n\nexport default function useWindowDimensions() {\n const [windowDimensions, setWindowDimensions] = useState(getWindowDimensions());\n\n useEffect(() => {\n function handleResize() {\n setWindowDimensions(getWindowDimensions());\n }\n\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n }, []);\n\n return windowDimensions;\n}","import React from \"react\";\nimport { RotatingLines } from \"react-loader-spinner\";\nimport greyBackground from \"./../../assets/loader/greyBackground.jpg\"\nimport \"./Loader.scss\";\n\nconst Loader = () => {\n return (\n
\n \n
\n \n
\n\n
\n )\n};\n\nexport default Loader;\n","export default \"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/wAALCALRBQIBAREA/8QAFQABAQAAAAAAAAAAAAAAAAAAAAn/xAAUEAEAAAAAAAAAAAAAAAAAAAAA/9oACAEBAAA/AKQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2Q==\"","import React, { useEffect, useState } from \"react\";\nimport { Container, Row, Col, CardTitle } from \"reactstrap\";\nimport _ from \"lodash\";\nimport \"../HomePostsSection.scss\";\nimport ApiService from \"services/ApiService.js\";\nimport moment from \"moment\";\nimport PostCards from \"../../../components/PostCards/PostCards\";\nimport InstallPWABanner from \"components/InstallPWA/InstallPWABanner\";\nimport AdSlot from \"components/Ads/AdSlot\";\nimport useWindowDimensions from \"../../../hooks/useWindowDimensions\";\nimport AdSpacer from \"../../../components/common/AdSpacer\";\nimport constants from \"../../../constants\";\nimport Loader from \"components/Loader/Loader\";\n\nconst GenericSection = ({ onSelectPost, ads }) => {\n const [page, setPage] = useState(1);\n const [posts, setPosts] = useState([]);\n const { width } = useWindowDimensions();\n\n useEffect(() => {\n (async function callApi() {\n try {\n const posts = await ApiService.get(\n `posts?_limit=${page * 9 + 1}&_sort=id:DESC&zone_eq=generic`\n );\n setPosts(posts);\n } catch (e) {\n console.log(e.message);\n }\n })();\n }, [page]);\n\n /**\n * render the fist post in an image container\n * only after medium size screen\n * @param {*} post\n * @returns\n */\n const renderMainPost = (post) => (\n \n \n {post ? (\n
\n onSelectPost(post)}\n >\n
\n \n {\n onSelectPost(post);\n e.preventDefault();\n }}\n >\n {post.title}\n \n \n {/*

{post.short_description}

*/}\n

\n {moment(post.created_at).format(\"MMM DD, YYYY\")}\n

\n
\n
\n ) : (\n \n )}\n \n
\n );\n\n const getPostCards = () => {\n const cards = _.map(posts, (post, index) => (\n \n ));\n cards.splice(1, 0,
);\n // mobile to tab\n if (width < 992 && cards.length > 2) {\n const adSlot2 =\n ads && ads.ad_slot2_image && !ads.ad_slot2_hide ? (\n
\n \n
\n ) : (\n \n );\n cards.splice(2, 0, adSlot2);\n }\n // tab pro\n if (width >= 992 && cards.length > 8) {\n const adSlot2 =\n ads && ads.ad_slot3_image && !ads.ad_slot3_hide ? (\n
\n \n
\n ) : (\n \n );\n cards.splice(8, 0, adSlot2);\n }\n if (width < 992 && cards.length > 7) {\n const adSlot3 =\n ads && ads.ad_slot3_image && !ads.ad_slot3_hide ? (\n
\n \n
\n ) : (\n \n );\n cards.splice(7, 0, adSlot3);\n }\n if (width >= 992 && cards.length > 15) {\n const adSlot3 =\n ads && ads.ad_slot4_image && !ads.ad_slot4_hide ? (\n
\n \n
\n ) : (\n \n );\n cards.splice(15, 0, adSlot3);\n }\n if (width < 992 && cards.length > 12) {\n const adSlot4 =\n ads && ads.ad_slot4_image && !ads.ad_slot4_hide ? (\n
\n \n
\n ) : (\n \n );\n cards.splice(12, 0, adSlot4);\n }\n if (width >= 992 && cards.length > 22) {\n const adSlot4 =\n ads && ads.ad_slot5_image && !ads.ad_slot5_hide ? (\n
\n \n
\n ) : (\n \n );\n cards.splice(22, 0, adSlot4);\n }\n if (width < 992 && cards.length > 16) {\n const adSlot5 =\n ads && ads.ad_slot5_image && !ads.ad_slot5_hide ? (\n
\n \n
\n ) : (\n \n );\n cards.splice(16, 0, adSlot5);\n }\n return cards;\n };\n\n return (\n \n
\n \n {renderMainPost(posts?.length ? posts[0] : null)}\n \n {width >= 992 && ads && ads.ad_slot2_image && !ads.ad_slot2_hide ? (\n
\n \n
\n ) : (\n \n )}\n
\n {getPostCards()}\n
setPage(page + 1)}>\n
LOAD MORE
\n
\n
\n
\n
\n );\n};\n\nexport default GenericSection;\n","import React, {memo} from 'react';\nimport './VideoPlayer.scss'\nimport ReactPlayer from 'react-player/lazy'\n\n\nconst VideoPlayer = ({\n link\n}) => {\n return (\n
\n \n
\n )\n}\n\nexport default memo(VideoPlayer);\n","import React from 'react';\nimport _ from 'lodash';\nimport { HashLink as Link } from 'react-router-hash-link';\nimport VideoPlayer from '../video/VideoPlayer';\nimport ReactMarkdown from \"react-markdown\";\nimport './Description.scss';\nimport AdSlot from '../Ads/AdSlot';\n\nconst Description = ({\n value,\n parent\n}) => {\n const parts = value ? value.split(\"\\n\") : [];\n\n return (\n
\n {_.map(parts, (part, index) => {\n if (part.startsWith(\"\")) {\n const link = part.replace(\"\", \"\");\n return (\n
\n
\n \"...\"\n
\n
\n );\n } else if (part.startsWith(\"\")) {\n const id = part.replace(\"\", \"\");\n return (\n
\n
\n \n
\n
\n )\n } else if (part.startsWith(\"
\n );\n}\n\nexport default Description;","import React, { useEffect, useState } from \"react\";\nimport { Container } from \"reactstrap\";\nimport ApiService from \"../../../services/ApiService\";\nimport Description from '../../../components/Description/Description';\n\nconst HomeDescription = () => {\n const [description, setDescription] = useState(null);\n useEffect(() => {\n (async function callApi() {\n try {\n const results = await ApiService.get('home-description');\n setDescription(results && results.description);\n } catch(e) {\n console.log(e);\n }\n })();\n }, []);\n\n return (\n <>\n {description ?\n (\n
\n
\n \n
\n
\n
) \n : \n }\n \n )\n}\n\nexport default HomeDescription;","import React, { useState, useEffect } from \"react\";\n// reactstrap components\nimport \"./HomeSections.scss\";\nimport ForecastSection from \"./ForecastSection/ForecastSection\";\nimport GenericSection from \"./GenricSection/GenericSection\";\nimport HomeDescription from \"./HomeDescription/HomeDescription\";\nimport AdSlot from \"components/Ads/AdSlot\";\nimport ApiService from \"services/ApiService\";\nimport constants from \"../../constants\";\n\n// core components\n\nconst HomeSections = ({ onSelectPost }) => {\n const [homeContent, setHomeContent] = useState(null);\n\n useEffect(() => {\n (async function callApi() {\n try {\n const results = await ApiService.get(\"home-content\");\n setHomeContent(results);\n } catch (e) {\n console.log(e);\n }\n })();\n }, []);\n\n return (\n <>\n
\n \n \n \n \n \n
\n \n );\n};\n\nexport default HomeSections;\n","export default __webpack_public_path__ + \"static/media/gsn_logo_desktop.51cd42de.png\";","export default __webpack_public_path__ + \"static/media/forecast_burger_icon.a305b7d5.png\";","export default __webpack_public_path__ + \"static/media/niNorthEastCoast.30d593e5.png\";","export default __webpack_public_path__ + \"static/media/niSouthEastCoast.7337e3fc.png\";","export default __webpack_public_path__ + \"static/media/niWestCoast.8d5cf44d.png\";","export default __webpack_public_path__ + \"static/media/siEastCoast.c8ae8aa0.png\";","export default __webpack_public_path__ + \"static/media/siWestCoast.26d715fa.png\";","export default __webpack_public_path__ + \"static/media/get_pitted.66d386cf.png\";","export default __webpack_public_path__ + \"static/media/best_website.38f24c86.png\";","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAbCAYAAAAH+20UAAABcklEQVRYhe3XMWsUQRTA8f8b9t4sUZGgtRcIfoKkUuy9tCnUxkrCVZcu3yFF2oC1bQipYiE2FhaK38EE0iZcCDIzd7lnZXFw590emewV+y933oMfwzYjZvY0pXQIdICH5K8PnKhqD7iuuiwxxiNg+85ZMzKzj977btU9B7zO4JmZiHSqzIcQ2kDhgAd5SDOb5/crUkpvUko/nHO/Y4xfi+ysxXocY/wgIj3g2b+PIvJqqcAhhDXnXBfYEZHVCSOyFODBYLBhZrvOuXfAf011g1dSSl+AF/MuuIyYeSqpgIX6wZVrwLlrwLlrwLlrwLlrwBULwPcqC3WD/6jqSxHZBD4Bw1kLdYMBaLVav1T1/Wg0eg7sA1fTZiXGaPdHG+tSVZ9MOZv44gBsKW54Qn3v/YGqrgNvgZ8AZvZNYow31PMQPVfV9rzDIYR2WZYXDvicETU1MzutMl+W5RkwLFS1m1K6BbaAR1l04/WBY+/93iLLfwE1lWZPo8lL+gAAAABJRU5ErkJggg==\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACYAAAAVCAYAAAAq05ytAAABUUlEQVR4Ae2WQU6DQBSG/zfSpiYm5QZyhLow1l1Jo2t7g95Ab2A9QbmCJ6hrEwPuMC7EG3AEFyYSKH0OkBBCLEIC0y76LSaZN4/Mz/sZ5gF7ChUnPFnp6+BkhBbRBt8eObMvNCQXFl3aSzDfoWXkBr4cF5prPm7LSQoC6CDHzF9AJEM4fpl3ISrdFDCY2OKJrf+1Hp4/j+Jg+IGwPyzGRfYwTdAlDD0KNjflcHhh35LQ7ER8eU3DDkisiwN9yeD5thzlwjLrtJUUZVTlCSikyroyyiomQPfyEBj18xVRp0pFlFrZhIOwphyEySvPyu7Neqg7lYTPCGRKgU918pVaeeyafu9tOpMyH/7L3ck31nOnC47XZ1XWpsKIuHEj1xTCxi/O++/XXpW1qbCYhSV/zd2JI3g998oph6uszTvYn7FtHIEXMnCKVuFXbSCsYndah18zaXV2YGlSHgAAAABJRU5ErkJggg==\"","import React, { useEffect, useState } from \"react\";\nimport { Col, ListGroup, Container, Row } from \"reactstrap\";\nimport { useHistory, Link } from \"react-router-dom\";\nimport { MdClose } from \"react-icons/md\";\nimport _ from \"lodash\";\nimport \"./LocationFooter.scss\";\nimport logoMobile from \"../../assets/logo/gsn_logo_mobile.png\";\nimport niNorthEastCoast from \"../../assets/coasts/niNorthEastCoast.png\";\nimport niSouthEastCoast from \"../../assets/coasts/niSouthEastCoast.png\";\nimport niWestCoast from \"../../assets/coasts/niWestCoast.png\";\nimport siEastCoast from \"../../assets/coasts/siEastCoast.png\";\nimport siWestCoast from \"../../assets/coasts/siWestCoast.png\";\nimport forecastImage from \"../../assets/nav/forecasts_white.png\";\nimport get_pitted from \"../../assets/banners/get_pitted.png\";\nimport best_website from \"../../assets/banners/best_website.png\";\nimport west_label from \"../../assets/labels/west.png\";\nimport east_label from \"../../assets/labels/east.png\";\nimport constants from \"../../constants\";\nimport ApiService from 'services/ApiService.js';\nimport liveCam from \"../../assets/cams/cam_icon.png\";\nimport liveCamPink from \"../../assets/cams/live_cam_pink.png\";\n\nconst LocationFooter = ({ locations, navbar, onClose }) => {\n const history = useHistory();\n const [banner, setBanner] = useState();\n\n useEffect(() => {\n async function getBanner() {\n const bnr = await ApiService.get('banner');\n setBanner(bnr);\n };\n if (navbar) {\n getBanner();\n }\n }, [navbar]);\n\n const handleClickLogo = () => {\n history.push({\n pathname: \"/\",\n });\n };\n const handleSelectLocation = (location) => {\n // should redirect to the location page with the id\n history.push({\n pathname: `/location/${location.slug}`,\n // search: '?query=abc',\n // state: { location }\n });\n };\n\n const getImage = (coast) => {\n switch (coast) {\n case constants.Coasts.NI_WEST_COAST:\n return niWestCoast;\n case constants.Coasts.NI_NORTH_EAST_COAST:\n return niNorthEastCoast;\n case constants.Coasts.NI_SOUTH_EAST_COAST:\n return niSouthEastCoast;\n case constants.Coasts.SI_WEST_COAST:\n return siWestCoast;\n case constants.Coasts.SI_EAST_COAST:\n return siEastCoast;\n default:\n return null;\n }\n };\n\n const renderLogo = (cs) => (\n \n
\n \"Good\n
\n \n );\n const renderName = (location, index, cams) => (\n
\n \n {location.name}\n {location.gsn_cameras?.length ? (\n \n ) : (\n \"\"\n )}\n \n
\n );\n\n const renderCoast = (coast) => (\n \n \n \n
\n \"Good\n
\n \n
\n \n {_.map(\n _.filter(locations, (location) => location.coast === coast),\n (nLocation, index) => (\n
\n {renderName(nLocation, index)}\n {nLocation.gap ?
:
}\n
\n )\n )}\n \n \n );\n const renderCamLinks = (coast) => (\n \n \n {_.map(\n _.filter(locations, (location) => location.coast === coast && location.gsn_cameras?.length),\n (nLocation, index) => (\n
\n {/* {renderName(nLocation, index, false)} */}\n
\n \n {nLocation.name}\n \n
\n
\n )\n )}\n
\n \n );\n return (\n \n \n {navbar ? (\n \n \n \n \n \n ) : (\n \n )}\n\n {!navbar ? \n \n \"gsn-nav\"\n \n : }\n
\n {navbar && banner && banner.image ? (\n \n \n \"banner\"\n \n \n ) : (\n \n )}\n {\n navbar ? (\n \n \n
\n
WEST COAST
\n CAMS \n
\n \n \n
\n
EAST COAST
\n CAMS \n
\n \n\n
\n ) :
\n }\n {\n navbar ? (\n {renderCamLinks(constants.Coasts.NI_WEST_COAST)}\n {renderCamLinks(constants.Coasts.NI_NORTH_EAST_COAST)}\n \n {renderCamLinks(constants.Coasts.NI_SOUTH_EAST_COAST)}\n {/* {renderCamLinks(constants.Coasts.SI_WEST_COAST)}\n {renderCamLinks(constants.Coasts.SI_EAST_COAST)} */}\n ) :
\n }\n {\n navbar ? (\n \n \n \"west\"\n \n \n \"east\"\n \n \n ) : \n }\n \n {renderCoast(constants.Coasts.NI_WEST_COAST)}\n {renderCoast(constants.Coasts.NI_NORTH_EAST_COAST)}\n {navbar ? renderLogo(`d-flex justify-content-center align-items-center`) : }\n {!navbar ? renderLogo(`d-flex d-sm-none justify-content-center align-items-center`) : }\n {renderCoast(constants.Coasts.NI_SOUTH_EAST_COAST)}\n {renderCoast(constants.Coasts.SI_WEST_COAST)}\n {renderCoast(constants.Coasts.SI_EAST_COAST)}\n {!navbar ? : }\n {!navbar ? renderLogo(`d-none d-sm-flex d-md-flex d-lg-none justify-content-center align-items-end`) : }\n {!navbar ? renderLogo(`d-none d-lg-flex justify-content-center align-items-start`) : }\n \n
\n {!navbar ?\n \n \n
\n \"banner\"\n
\n \n \n
\n
NZ Surf Cams - High Resolution Forecasts - Kiwi Owned

\n - The most accurate forecast data available

\n - Links to the free webcams and wave buoys for every forecast

\n - Regional forecasts every Thursday

\n And the latest surf videos and news from Owwwwtearoa and the world!\n
\n
\n
\n \"banner\"\n
\n \n
\n :
}\n \n \n );\n};\n\nexport default LocationFooter;\n","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGUAAAAgCAYAAAF87oaGAAAPzUlEQVRoBc1aC5BUxRXtfu8t+2FdZNlF8YdSKUkgMUYtf0ks/GsIsPPjIxI1pZgYteK3CMYEjUajJlZiNKIpRUiJ7PyWnyYxGj9EDRqNCkJpBE2ViIwL8tlld5n3Oue+mfum35s3s7OSqqQLtrvvvX27b9/b997uN0IUS7Rj+r3xaPxn3B+0jkYSSififiKSOIXg3Ofa0ompHYkk7pCGPI/athAvgVBksklJ/bzdfzDVBv2hAuLXqAZ2nnLUH6nNxNSmWVasWPEJtU36E48kXhz/pQmjN25852/Ur6nwWpmY+1Tj/2aGc21EIvHZwWUwslgfSTUzorYhhfwDlpcLIoiImG232g8gHIT1lu7uigsEAxBiw0rFt4Jo/H2h5DgfLKAqxumrIm4E99SkT8IDeEoaiPIYVjVOhwklFmW6kpcwzKul2Atco87HnaiwAgWxU56qeZA7iVCPGVLOUZqpMZNoNPEymJ7M/ZlTZx4yoGzfJMTLSsQSt9gONaUsTFgQNRaZ/gMl1G+ZAXAXERUVpnM7mJxpqD9g2h/pfZcGfzwdzZ07t257bsez0hDP5h3Va0oxIZVJecx5wOepPf18mtsx4DJwxDdgUcIR9mydIUugr5RhRCeFWprOpi7QYfp4t10NSTj+zwOpH4vFjqF+cGyQ1lV4NBpfx8TR6PSbmRHVc86ZM5z72Nt3im13XDqdfov6unRMq8MK26XkRIj7MMSdy0Rc9wzv20PexjLrtwrh3Edw+MJfCpgWSzC8p6F5yZ+X9BCuIxq/H6iyQocyBCxELBLfR7hYNLGwSOMZCnMJjqV+IpqYwXiqLQDdU09IdzuU2JLuSp598cUXN+za2eNKinPCEip488sdJR+k7eiIxP+kM+N2MpNcxm2qfYcQ4kwQ0llKCEyw15HqAWKm7y9NQHhalCHkOToOEvvcFNFRKROfgLRNSpTcD8H0ImHh6UzS9e06nNvwBv3QyzDq64tgPNcIJF1YwDTuF+vX29pHnvzQQw/tYzicwzWwh7sqrkmqTaaQ873zWBoYf9wbJI3LMpllv2fclClTmhoaGlqSySSMrbwkpiUm2IZYH2ZgOjV2di9U3eDCpIAfUBvh9N1jB9hx27dtPw31M4RHPD7DFupXFfadSFDkGDIFn2YSicQRdl58WCCovqtMw3UsEluihHEh97kOaiYaicMxQ7cIEJlMsonpJk1aYLW3r2/r7e3tX7169Q6Gcw0twumJF6lvSHU9vCtOrL/4NKMLQmRkr1QHF0QwvZANY6fdc9EyYngjnYMCXj7qo4skrgXDwgYi0jF/olFi3b3JZOpanV5vsyCAbQkThGgLjNHQFzTY4mkglfPPP7++saG5j9qQZFUqm5wSj06f7yh1O8Gk4RwHh/oGtblEO+I3Qi/HI4bBdcp6R4mpjDMtYcGEyw53SejwiM7jXc1A9Ut5Zw2hvsvIarWbMiIDZBrYzrdpUgjCIKELUjIvdU06k/L8qbbQj6GZckGi8Tf5DIalJt5kaMhpselTTEet0IHBtpRyezrTOYrhuhYpB87nnd46QxxqG/Jw6Yi7mI41XFowY/w10ph/ZrOpr/mhOPwIIrYSTxBcDcuPzy7Lvhuk0fvW8nTnSgA8c9ORYW3yaH39vW319fUtmUzmwyAN3PponO6T81J1Ms49R7v2vASzKi1Yip2Oox7o6krNZzq9Jodgq/UFQYS4czBBaGyoEMhO5iklZzmO3GCZ8gPbcTzvgjytFSdkZyrT+XN98v912+fJaDHRaHSscow7qI3rxDHYOUhbkhddHGr7y4QPK0gNrkPkvodwOOSvIrCeGEaX6Egc6xhiLY5XXQmvlCGNm7BJ7vwMh0l/DLqDua/XZP4wwO2+9IIIpDBf0AnD2jjQ68PgiE+NLEQRvzGMDiZ4ty3FG34hiFJKOA6fpiHEwkpC0AhcelqlElvLNIJBRxABFT60hR5cduyCcen045u4H6xtW3ymw6DJDXqf2lOnJr4ApV7PcGjtX1jIgfCAbQzTa6yHE0Ed7Gv35/vO9QkSiUy/jMIVFcNQSR81OtWEiEZnXCqU4+ZfPE4q9Xduc22Z4r1CW/XCtXKCr91plXvImZ43syOamGMosZjg5DHT6U5fRusTBCnBg9gBt3xqjK4pthSo8Vc5D3vtYiNnta/VYXAiX1TYeipKNHmaR9fpH+htbWgYMbLSZrEQNDYoBMF8gkAI78y05nO7EQeIpszEXKD2B9eqTRzAhFSb4WqPIvRzyQf2aGSQVT7P/Wx2cTe3qS7mXZ531HGTJ08eyX3ss5tocp9rTxA8kvyOgb5aKl/K4cOhg/vg13Hi3IUjQ+jAYe8K0pT6cjS3A8FyC95TxgcFZ9r6+sZneKPa20eez3C99gTBwfweI2CXpJmikTG0Qq3UmgJGdaeyqeWsxQrUlcCHjLJzO4EMvwMVgykcQ59+j9GZuYJ0dHQcyUAlnBfQrkmIeCzxllO0eRzcUK/DfKkeMJyjG2x5FZbrxgREjTPJfRIOdSlYEaBYENcu8FYjnVJ2wATF2hXEMKznmHifIS4N0IR2p06NnQAhvlJAqt2uvxdyOFZUpFf9wYGr0mnyWFfrcDYxKYxHdbjXVuZibiN+hcYlwruC4HCOZeLiZNytWFum8WoJKQ8o+HsWwk3zPY8Vj8QvcYR8hOjZnVIb8GhRoaJ7x4TLCRZSXHODpeAGWblYHR3xn+rowg6pXoT4rdA2vIjTYxjiCeyG5wzcx5/SmvXhXhtoL4awEEC+zAQwmTFwDGnqw/Zzzz23IM84ruGAvMVns+nrGB5WW3huXFCOkE0wtXEFozUQHMXZTFP0UhOL/S3SqPumdAaOzSvZhiB6NbTr4hxhuhqJzIgcTTf2YjmFTYlNmeCGKcYwgV7DAV2j96u1C6ZVjQI43OJKS/G8lGsmhxaHbqI6FnHTD1cQy3JcjdgD1thqkyAlnZtMdpZdrnQHZBri1uI8FStLt9mKVBqCInBTU1M9hNumgd2mrYyFprTHwpRGAf9vAq7IJp9GRnx9IJmk7PQV0xQzIIRLF+QFB7SOtZZMJ33mH6SlfqjLCyOkN0ZDySvCcLXCsPsLs9lOL17VOo7o6EwZtnHUgFIDFh5GDeUctFeY767OLls3FD46LbL1EX22cXSdcA5DKLBMZe8xDKMHd/ddpmNuazm4JVcpbul8QtoGspERBK+rqxthmk1GkEapPru/v38XMhqKn+zzXLKalILHkFvhXW4OMh5SX4on8cQ1eUhjQByNJiYjPOFWDvcWKHCOz2SzybMC4KpdJPlXS6nuhuX6kvWqg4DEI9GP4LzvDKODcsc7tnhHT1fD6GqB9TnimGpuxeUxNZIgB1ymEMp+4HAfR4KBdyvVLJU8EK1mXJKHQ+9joHovcYGZrJGmiNSyKJ0Gj1C3YfNuqnSgMefbOn21Nn+CcnOwQSJhGB+lzLowOBQyzLHlS+4+hBEMAYa3pYueXJ56u6pS4NQPxPPJCi+PKk6At8M9hkm+trMUaIYweQ2kEieEcvjTq9Eq6VS9a/BY8FqNTfsW9wu16oax3NA8onnpokWL+ghGn/hyue1rEZGPDdDuRsz4hR9W6OVE+7BWkbsUdzrLEs5uZMh5wzEm4VjDmPwFtvCegZwL8cpzV9jfZjxGt9UZ8s1kJrWMRlRVipTmciikwc/atdsLfZE/SLAf/SlTZrXVW/kNeILyTloldpYlvdyuEg3So6eg3PN0PF5tFuCh8BYdRu0dW3aMlsPkBNCXilQ9/co8dXVyWagBFi+G2dIAemOP3xG8oSDlezuVTn4VdDp3fZjXLvPTjHEfH4vvdgwr1aobKQIFKFTuh7DRsMRVuGsV7vwlwiG1psViZ5mO8XRNgzA/YtSB1WjjHfHfOBL3Oq3glD+Fj6uBU6MR7GcT17TFMOQ5Ohu4escYEEckVyU/0uGV2qEnBX7yRHwa8j1k+hnIUdD3KIIV1K6QsJjz/DRD68Vj8V/j9dl3n6Q3GtOUE/EU+DEmcrMZ5grXs5bbYXV8WvzUoEKITkl5JjbuPpyWV/BoMEAux5YS7kltwenfHMarVlgslrgSD2A+hdBYvPglkqtSNSmE6MuUAoU02nmFp73yQ0TXOwSj3UiNW6CMwjOIFL1IdX/clV32PjEcaqFPY00Nza/jUWCCPpaeP1Pp1HR66RPK8CmE6PDijk2tXGxDxXCKywmQdWHtVwJ3JWWiNlHAtGGE9E2yQC9FFqcwWj64MgTPr8cpp/DzBR+VVDfjm2LGBxukU6YULG4VFBJ0Cza+Ax4GS9o6CL8hofHJ4Xj80OAVbJJvHY4U38mkU0tcZo44NYyp7XsUKaewLGMZ0tQrwmJiOXUAokSEkpyurq7PApjQLv0qY/fOnr9ADl9x72WZ5G0+YA0d32YUf9F0RnAcmM9DpvVfVUgkGr8dnxDn+04k4kQ+3z+ef3FH68BTWCQoLMENZ1/VIA8DIvfWSLSVyrmJc1ub7ZaNUFx7gGZDrQqhcXt29azAGkfqPNDHHerzXZQ9pVCQxU/MfqIzLrafB3P3Q1sIbsigort6DRtR/nEPcYN+xeS5EXD3ckd9JvxyJZvJbtNB3Ib7HYE01W7cs3lfm91m8a+eGK/XLaJlJ9JR3D/8bm6fUDfqdNXauIzi2UWd7adR3X19PUO+KDMPdzX0hIEQ8QGCadktF98SZtmi6ekdO8btDHsuZEa11LHYzJOEk1+Dk+cZQy3jymnUE8j0Zunw2bNnt/Tt3bcZWaD7ak44ynrwm6yJYY/KkxJXNI/K516GRfuMAy+a84Nfa/V59Dbi3UR8WS575jEdMTG5PMm/wdOH1NS26ML0aW77P0BdphDiAKmW0q9EW0euLwXCSqyliCJA+nJ2JqXfMSvH/mHQKhk/pFqW3p55XN/e/mdwN/AUQnAoaBeSklPgBQ6zhIlLmnM4rOEE0HWofI6SFV+h4A+F3O8DVugUbvLir0E0rPy6/VEI8bNyue474bdD35qDE1brI//vxO9ryhTiLj6PT+9C+bIrd8uEPA1vV2sq8a10VzJsfzqMrxgz8XJ7QjkfSV/HHzGROWB+fEelo1Ne3Ccj6ZyEE/VWOTYcsi+vVoKfLxZBye/hpdr70BA+cnCohS8UN+AjwUKnzzxIWKq+zpb4ZzZb0mmBoA2OcJohSwtkasTRHg7ra8FimpUkNwHLhC/CBm8yLEoxy0s+j58OCHG4jsGQtfl83+krV67s1eHBNu4tY13/qiGwvfnWg1pf1UBwhjKp8s73YVyn6fDB2qQMqOqqtPajycHGEB4fYe7BMTzHT6v68QuPQGzxU9TaC8pc67j/azr3zc40j8DVw/12PswxnF5hbGuynE+QleX2d/H0SDtMqFG444wFr8MNQ27s7p744P7GXF7XfwANA4cigZWWggAAAABJRU5ErkJggg==\"","export default __webpack_public_path__ + \"static/media/nav_icon.359b92e2.png\";","import _ from \"lodash\";\nimport moment from \"moment\";\n\nclass LocalStorageService {\n setLocation(location) {\n const recentlyVisited =\n JSON.parse(localStorage.getItem(\"recentlyVisited\")) || [];\n const index = _.findIndex(\n recentlyVisited,\n (page) => page.id === location.id\n );\n if (index > -1) {\n // remove the item if it found\n recentlyVisited.splice(index, 1);\n }\n if (recentlyVisited.length >= 10) {\n // remove the oldest location if there are more than 5\n recentlyVisited.shift();\n }\n recentlyVisited.push({\n id: location.id,\n slug: location.slug,\n label: location.name,\n hasCam: !!location.gsn_cameras?.length\n });\n // Save the updated list to local storage.\n localStorage.setItem(\"recentlyVisited\", JSON.stringify(recentlyVisited));\n return recentlyVisited;\n }\n\n removeLocation(slug) {\n const recentlyVisited =\n JSON.parse(localStorage.getItem(\"recentlyVisited\")) || [];\n const index = _.findIndex(\n recentlyVisited,\n (page) => page.slug === slug\n );\n if (index > -1) {\n // remove the item if it found\n recentlyVisited.splice(index, 1);\n }\n // Save the updated list to local storage.\n localStorage.setItem(\"recentlyVisited\", JSON.stringify(recentlyVisited));\n return recentlyVisited;\n }\n\n getLocations() {\n const values = JSON.parse(localStorage.getItem(\"recentlyVisited\")) || [];\n return _.reverse(values);\n }\n\n setAuthCredentials(data) {\n const {\n user: { email, username },\n jwt,\n } = data || { user: {} };\n localStorage.setItem(\"username\", username);\n localStorage.setItem(\"email\", email);\n localStorage.setItem(\"jwt\", jwt);\n }\n\n removeAuthCredentials(data) {\n localStorage.removeItem(\"username\");\n localStorage.removeItem(\"email\");\n localStorage.removeItem(\"jwt\");\n }\n\n setPremiumMessageShowedAt() {\n const date = moment().toISOString();\n localStorage.setItem(\"premiumShowedAt\", date)\n }\n\n getPremiumMessageShowedAt() {\n return localStorage.getItem(\"premiumShowedAt\") || null;\n }\n}\n\nconst localStorageService = new LocalStorageService();\nexport default localStorageService;\n","import React, { useEffect, useState } from \"react\";\nimport _ from \"lodash\";\nimport localStorageService from \"services/LocalStorageService\";\nimport { useHistory, useLocation } from \"react-router\";\nimport \"./RecentlyVisited.scss\";\nimport flag from \"../../assets/recent/favourite_flag.png\";\nimport liveCam from \"../../assets/cams/live_cam_pink.png\"\nimport { Container } from \"reactstrap\";\n\nconst RecentlyVisited = () => {\n const [recent, setRecent] = useState(null);\n const location = useLocation();\n const history = useHistory();\n\n useEffect(() => {\n const recentLocations = localStorageService.getLocations();\n setRecent(recentLocations);\n }, [location?.pathname]);\n\n const handleCLickLocation = (loc) => {\n history.push({\n pathname: `/location/${loc.slug}`,\n });\n };\n return (\n \n {recent?.length ? (\n
\n {_.map(recent, (loc, index) => (\n
\n {loc.hasCam ? (\n \n ) : (\n \n )}\n\n handleCLickLocation(loc)}\n >\n {loc.label}\n
\n
\n ))}\n
\n ) : (\n
\n )}\n \n );\n};\n\nexport default RecentlyVisited;\n","export default \"data:image/png;base64,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\"","import constants from \"../constants\";\n\nconst calculateRelativeDirection = (direction) => {\n if (direction < 180) return direction + 180;\n else return direction - 180;\n};\n\nconst calculateWindRelativeSpeed = (speed) => {\n if (speed < 5) {\n return 10;\n } else if (speed < 10) {\n return 15;\n } else if (speed < 15) {\n return 20;\n } else if (speed < 20) {\n return 25;\n } else if (speed < 30) {\n return 30;\n } else if (speed < 40) {\n return 35;\n } else {\n return 40;\n }\n};\n\nconst directions = [\"N\", \"NE\", \"E\", \"SE\", \"S\", \"SW\", \"W\", \"NW\"];\n\nconst getDirectionLabel = (heading) => {\n return heading\n ? directions[\n Math.round(((heading %= 360) < 0 ? heading + 360 : heading) / 45) % 8\n ]\n : \"-\";\n};\n\nconst getSubscriptionPosition = (user) => {\n if (!user) {\n // user is not there\n return constants.SubscriptionPosition.UNKNOWN\n } else {\n if (user?.blocked) {\n // user is blocked by the admin\n return constants.SubscriptionPosition.BLOCKED;\n } else {\n // user is there\n if (!user?.user_subscription) {\n // subscription is not there\n return constants.SubscriptionPosition.UNSUBSCRIBED;\n } else {\n // there is a subscription\n if (user?.status === constants.SubscriptionStatus.INACTIVE) {\n // subscription was expired\n return constants.SubscriptionPosition.EXPIRED;\n } else if (user?.status === constants.SubscriptionStatus.OVERDUE) {\n // subscription is overdue\n return constants.SubscriptionPosition.OVERDUE;\n } else if (user?.status === constants.SubscriptionStatus.CANCELLED) {\n // subscription is canceled\n return constants.SubscriptionPosition.CANCELLED;\n } else {\n // active subscription found and active users\n if (user.trial) {\n // user is still in the trial\n return constants.SubscriptionPosition.TRIAL;\n } else {\n // user not in trial\n if (\n user?.billing_interval === constants.BillingPeriodUnit.MONTH\n ) {\n // monthly subscription\n return constants.SubscriptionPosition.MONTHLY;\n } else if (\n user?.billing_interval === constants.BillingPeriodUnit.YEAR\n ) {\n // yearly subscription\n return constants.SubscriptionPosition.YEARLY;\n } else if (\n user?.billing_interval === constants.BillingPeriodUnit.DAY\n ) {\n // yearly subscription\n return constants.SubscriptionPosition.DAILY;\n } else {\n // unknown subscription position\n return constants.SubscriptionPosition.UNKNOWN;\n }\n }\n }\n }\n }\n }\n};\n\nexport {\n calculateRelativeDirection,\n calculateWindRelativeSpeed,\n getDirectionLabel,\n getSubscriptionPosition,\n};\n","export default __webpack_public_path__ + \"static/media/walrus-lock.1e5ba97e.png\";","export default __webpack_public_path__ + \"static/media/play_button.a196bf87.svg\";","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","import React, { useEffect, useState } from \"react\";\nimport constants from \"../../constants\";\nimport \"./CamMask.scss\";\nimport { useHistory } from \"react-router-dom\";\nimport { getSubscriptionPosition } from \"tools/utills\";\nimport { useSelector } from \"react-redux\";\nimport walrus from '../../assets/cams/walrus-lock.png';\nimport join from '../../assets/nav/join.png';\nimport login from '../../assets/nav/login.png';\n\nconst CamMask = ({ size }) => {\n const userInfo = useSelector((state) => state?.user?.info);\n const [subscriptionPosition, setSubscriptionPosition] = useState(null);\n\n useEffect(() => {\n const position = getSubscriptionPosition(userInfo);\n setSubscriptionPosition(position);\n }, [userInfo]);\n\n const history = useHistory();\n\n const handleSignUp = () => {\n history.push({ pathname: \"/sign-up\" });\n };\n const handleSignIn = () => {\n history.push({ pathname: \"/sign-in\" });\n };\n const handleSubscribe = () => {\n history.push({ pathname: \"/packages\" });\n };\n\n\n // const handleManageSubscription = () => {\n // history.push({ pathname: \"/account\" });\n // }\n const renderJoin = () => (\n \n
\n
To extend your FREE access
\n handleSignUp()}\n >\n \n \n
NO CREDIT CARD REQUIRED!
\n
\n \n
\n Members handleSignIn()}\n >\n {/* */}\n LOGIN\n \n
\n\n
\n );\n const getMessage = () => {\n switch (subscriptionPosition) {\n case constants.SubscriptionPosition.ANONYMOUS:\n return renderJoin();\n case constants.SubscriptionPosition.BLOCKED:\n case constants.SubscriptionPosition.EXPIRED:\n case constants.SubscriptionPosition.UNSUBSCRIBED:\n case constants.SubscriptionPosition.CANCELLED:\n // {\n // return (\n // \n //
Members Only Live Surf-Cam
\n //
\n // \n // SUBSCRIBE NOW\n // {\" \"}\n //
\n //
\n // );\n // }\n case constants.SubscriptionPosition.TRIAL:\n return
;\n case constants.SubscriptionPosition.MONTHLY:\n return
;\n case constants.SubscriptionPosition.YEARLY:\n return
;\n case constants.SubscriptionPosition.OVERDUE:\n // we need to send the user to accounts page here in future\n return
;\n default:\n return renderJoin();\n }\n };\n\n return getMessage();\n};\n\nexport default CamMask;\n","export default \"data:image/png;base64,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\"","export default __webpack_public_path__ + \"static/media/banner_marketing1.26458678.jpeg\";","import React, { useEffect, useState } from \"react\";\n// import { Modal, ModalHeader, ModalBody, ModalFooter } from \"reactstrap\";\nimport { useHistory } from \"react-router-dom\";\nimport logoDesktop from \"../../assets/logo/gsn_logo_desktop.png\";\nimport logoMobile from \"../../assets/logo/gsn_logo_mobile.png\";\n// import navIcon from '../../assets/nav/nav_icon.png';\nimport navIcon from \"../../assets/nav/forecast_burger_icon.png\";\nimport avatar from \"../../assets/nav/seal_icon.png\";\nimport navIconMobile from \"../../assets/nav/nav_icon.png\";\nimport login from \"../../assets/nav/login.png\";\nimport join from \"../../assets/nav/join.png\";\n// import { FaBars } from 'react-icons/fa';\nimport LocationFooter from \"../Locations/LocationFooter\";\nimport \"./GoodSurfNavBar.scss\";\n\n// reactstrap components\nimport {\n Collapse,\n Col,\n Row,\n Navbar,\n Container,\n UncontrolledDropdown,\n Dropdown,\n DropdownToggle,\n DropdownMenu,\n DropdownItem,\n} from \"reactstrap\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { signOut } from \"redux/features/auth/authSlice\";\nimport { mobileModel } from \"react-device-detect\";\nimport { getSubscriptionPosition } from \"tools/utills\";\nimport constants from \"../../constants\";\n\nconst GoodSurfNavBarProd = ({ locations }) => {\n const history = useHistory();\n const dispatch = useDispatch();\n const [collapseOpen, setCollapseOpen] = useState(false);\n const [isOpenMenu, setIsOpenMenu] = useState(false);\n const [subscription, setSubscription] = useState();\n const user = useSelector((state) => state?.authInfo?.info);\n const uss = useSelector((state) => state?.user?.info);\n\n useEffect(() => {\n const sub = getSubscriptionPosition(uss);\n setSubscription(sub);\n }, [uss]);\n\n const handleClickLogo = () => {\n history.push({\n pathname: \"/\",\n });\n };\n\n const handleToggle = () => {\n document.documentElement.classList.toggle(\"nav-open\");\n setCollapseOpen(!collapseOpen);\n };\n\n const handleClickFreeTrial = () => {\n history.push({\n pathname: \"/sign-up\",\n });\n };\n\n const handleClickLogin = () => {\n history.push({\n pathname: \"/sign-in\",\n });\n };\n const handleSignIn = () => {\n console.log(\"handle sign in \");\n history.push({\n pathname: \"/sign-in\",\n });\n };\n const handleClickMyAccount = (e) => {\n e.preventDefault();\n history.push({\n pathname: \"/account\",\n });\n };\n\n const handleSignOut = (e) => {\n e.preventDefault();\n dispatch(signOut()).unwrap().then(() => {\n history.replace({\n pathname: \"/\",\n });\n })\n\n };\n\n const handleGetPremium = (e) => {\n e.preventDefault();\n history.push({\n pathname: \"/packages\",\n });\n };\n return (\n <>\n \n \n \n \n {/* */}\n
\n \n
\n \n \n {/* */}\n
\n \n
\n \n \n \n \n \n \n {/* */}\n \n \n
\n {user?.signedIn ? (\n \n setIsOpenMenu(!isOpenMenu)}\n // direction=\"up\"\n >\n {/*

CHUUURRR

*/}\n \n \n \n \n My account\n \n {/* {subscription ===\n constants.SubscriptionPosition.EXPIRED ||\n subscription === constants.SubscriptionPosition.DAILY ||\n subscription === constants.SubscriptionPosition.MONTHLY ||\n subscription === constants.SubscriptionPosition.TRIAL ||\n subscription === constants.SubscriptionPosition.YEARLY ? (\n
\n ) : (\n \n
\n Free version\n
\n Get Premium\n \n )} */}\n\n \n Sign Out\n \n \n \n ) : (\n \n handleClickLogin()}\n >\n \n \n handleClickFreeTrial()}\n >\n \n \n
\n )}\n
\n \n \n
\n {user?.signedIn ? (\n \n setIsOpenMenu(!isOpenMenu)}\n // direction=\"up\"\n >\n {/*

CHUUURRR

*/}\n \n \n \n \n My account\n {/*
Free version
*/}\n \n {/* \n Get Premium\n */}\n \n Sign Out\n \n \n
\n ) : (\n
\n handleClickLogin()}\n >\n \n \n handleClickFreeTrial()}\n >\n \n \n
\n )}\n
\n \n
\n \n \n \n
\n
\n \n );\n};\n\nexport default GoodSurfNavBarProd;\n","import React, { useEffect, useState } from \"react\";\nimport { Col, Container, Row } from \"reactstrap\";\nimport './Premium.scss';\nimport { useHistory } from \"react-router-dom\";\nimport { useSelector } from \"react-redux\";\nimport { getSubscriptionPosition } from \"tools/utills\";\nimport constants from \"../../constants\";\n\nconst Premium = () => {\n const history = useHistory();\n const userInfo = useSelector((state) => state?.user?.info) ?? null;\n\n const [subscriptionPosition, setSubscriptionPosition] = useState(null);\n\n useEffect(() => {\n const position = getSubscriptionPosition(userInfo);\n setSubscriptionPosition(position);\n }, [userInfo]);\n\n const handleClick = () => {\n switch (subscriptionPosition) {\n case constants.SubscriptionPosition.ANONYMOUS:\n case constants.SubscriptionPosition.EXPIRED:\n case constants.SubscriptionPosition.UNKNOWN:\n history.push({ pathname: \"/sign-up\" });\n break;\n // case constants.SubscriptionPosition.TRIAL:\n // case constants.SubscriptionPosition.MONTHLY:\n // case constants.SubscriptionPosition.YEARLY:\n // case constants.SubscriptionPosition.BLOCKED:\n // case constants.SubscriptionPosition.DAILY:\n // case constants.SubscriptionPosition.OVERDUE:\n case constants.SubscriptionPosition.UNSUBSCRIBED:\n case constants.SubscriptionPosition.CANCELLED:\n history.push({ pathname: \"/packages\" });\n break;\n default:\n history.push({ pathname: \"/sign-up\" });\n break;\n }\n };\n return !userInfo?.user_subscription || userInfo?.status === 'cancelled' ? (\n \n \n \n \n \n \n
\n
\n The O.G. HOOKUP\n
\n {/*
\n Be one of the first paid subscriber to get\n
*/}\n
\n 40% OFF FOR LIFE*\n
\n
Use code LIFE40 at checkout
\n
\n NZ$60/yearNZ$36/year ($3/month)\n
\n \n SUBSCRIBE\n
\n
\n
*Terms and conditions apply
\n
Offer Ends Soon!
\n
\n \n \n \n ) :
;\n}\n\nexport default Premium;","import React, { useEffect, useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { Helmet } from \"react-helmet-async\";\nimport FooterBlack from \"components/Footers/FooterBlack.js\";\nimport HomeSections from \"./home-sections/HomeSections.js\";\nimport GoodSurfNavBar from \"../components/Navbars/GoodSurfNavBar.js\";\nimport ApiService from \"services/ApiService.js\";\nimport _ from \"lodash\";\nimport LocationFooter from \"../components/Locations/LocationFooter.js\";\nimport RecentlyVisited from \"components/recentlyVisited/RecentlyVisited.js\";\nimport Promotion from \"components/GSNAds/Promotion.js\";\nimport HomeCams from \"components/HomeCams/HomeCams.js\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { getCameras } from \"redux/features/camera/cameraSlice.js\";\nimport { Hub } from \"aws-amplify\";\nimport { autoSignIn } from \"redux/features/auth/authSlice.js\";\nimport { getUser } from \"redux/features/user/userSlice.js\";\nimport FreeTrialPromotion from \"components/GSNAds/FreeTrialPromotion.js\";\nimport GoodSurfNavBarProd from \"components/Navbars/GoodSurfNavBarProd.js\";\nimport Premium from \"components/Premium/Premium.js\";\n\nfunction Home() {\n const history = useHistory();\n const dispatch = useDispatch();\n const [locations, setLocations] = useState([]);\n const user = useSelector((state) => state?.authInfo?.info);\n\n useEffect(() => {\n dispatch(\n getCameras({\n signedIn: user?.signedIn,\n })\n );\n }, [user?.signedIn]);\n\n\n useEffect(() => {\n if (user?.userId) {\n dispatch(getUser(user?.userId));\n }\n }, [user?.userId]);\n \n\n useEffect(() => {\n (async function callApi() {\n try {\n const locations = await ApiService.get(\"locations?_limit=-1\");\n setLocations(_.orderBy(locations, (item) => item.order));\n } catch (e) {\n console.log(e);\n }\n })();\n }, []);\n useEffect(() => {\n document.body.classList.add(\"presentation-page\");\n document.body.classList.add(\"sidebar-collapse\");\n document.documentElement.classList.remove(\"nav-open\");\n window.scrollTo(0, 0);\n document.body.scrollTop = 0;\n\n // we need to add a script for the github buttons\n let script = document.createElement(\"script\");\n script.src = \"https://buttons.github.io/buttons.js\";\n script.id = \"github-buttons-script-id\";\n document.body.appendChild(script);\n\n return function cleanup() {\n document.body.classList.remove(\"presentation-page\");\n document.body.classList.remove(\"sidebar-collapse\");\n\n // we need to remove the script when we change the page\n script.parentNode.removeChild(script);\n };\n });\n\n const handleSelectPost = (post) => {\n // should redirect to the post page\n history.push({\n pathname: `/post/${post.slug}`,\n state: { post },\n });\n };\n return (\n <>\n {/* */}\n \n Good Surf Now!\n \n \n \n \n \n \n \n \n
\n \n {/* */}\n {/* */}\n {/* */}\n \n \n \n \n
\n \n );\n}\n\nexport default Home;\n","import { useState, useEffect } from \"react\";\n\nlet hidden, visibilityChange;\n\nif (typeof document.hidden !== \"undefined\") {\n hidden = \"hidden\";\n visibilityChange = \"visibilitychange\";\n} else if (typeof document.msHidden !== \"undefined\") {\n hidden = \"msHidden\";\n visibilityChange = \"msvisibilitychange\";\n} else if (typeof document.webkitHidden !== \"undefined\") {\n hidden = \"webkitHidden\";\n visibilityChange = \"webkitvisibilitychange\";\n}\n\nexport default function usePageVisibility() {\n const [visibilityStatus, setVisibilityStatus] = useState(document[hidden]);\n\n useEffect(() => {\n function handleVisibilityChange() {\n setVisibilityStatus(document[hidden]);\n }\n\n document.addEventListener(visibilityChange, handleVisibilityChange);\n\n return () => {\n document.removeEventListener(visibilityChange, handleVisibilityChange);\n };\n }, []);\n\n return visibilityStatus;\n}\n","import Axios from 'axios';\nimport moment from 'moment-timezone';\n\nconst fetchData =async ({id, latitude, longitude})=>{\n try{\n const date = moment.tz('Pacific/Auckland').format('YYYY-MM-DD');\n const results = await Axios.post(`https://10f5iarxy9.execute-api.ap-southeast-2.amazonaws.com/prod/niwa`,{\n location: id,\n latitude,\n longitude,\n date\n },{headers:{\n 'X-Api-Key': 'ZdoncwT4zd2IIsftcLaQU6Bq7c3avkIv1Il36jG0'\n }}\n );\n if(results.data && results.data.body){\n return typeof results.data.body === 'string' ? JSON.parse(results.data.body) : results.data.body;\n }\n else{\n return null;\n }\n // const results = await Axios.get(`https://api.niwa.co.nz/tides/data?lat=${latitude}&long=${longitude}&numberOfDays=7&startDate=${date}&apikey=kA0aCBJI75CknWjMMU241p1CGhZVazS4`,{\n // headers:{\n // 'x-apikey': 'kA0aCBJI75CknWjMMU241p1CGhZVazS4',\n // 'Accept': 'application/json'\n // }\n // });\n\n // if(results.data){\n // const data = _.map(results.data.values , item => ({y: item.value, timestamp: item.time}));\n // return data;\n // }\n // else{\n // return null;\n // }\n }catch (e){\n console.log(e.message);\n }\n} \n\nexport {\n fetchData\n}","import React, { useEffect, useState } from 'react';\nimport _ from 'lodash';\nimport moment from 'moment-timezone';\nimport { Row, Col} from 'reactstrap';\nimport { fetchData } from '../../services/NiwaTidesDataService';\nimport './TidesChart.scss';\nimport ReactTooltip from 'react-tooltip';\n\nconst TidesChart = ({\n location\n}) => {\n const [data,setData] = useState([]);\n useEffect(()=>{\n (async function callApi () {\n if (location) {\n const data = await fetchData(location);\n setData(data);\n }\n })();\n }, [location])\n const getTideTime =(isHi, timestamp) =>{\n return (\n {`${moment.tz(timestamp, \"Pacific/Auckland\").format('h.mm')}`}{`${moment.tz(timestamp, \"Pacific/Auckland\").format('a')}`}\n )\n }\n const getTides = (date) => {\n const values = _.filter(data, (item) => moment.tz(item.timestamp, \"Pacific/Auckland\").isSame(moment.tz(date, \"Pacific/Auckland\"), 'day'));\n const mean = _.meanBy(values, (val) => val.y);\n return (\n \n {_.map(values, (val, index) => {\n\n return (\n \n \n \n \n {val.y > mean ? getTideTime(true, val.timestamp, val.y):
} \n \n
\n \n \n {val.y <= mean ? getTideTime(false, val.timestamp, val.y):
} \n \n
\n {/* {getTideTime(val.y > mean , val.timestamp)} */}\n \n )\n })}\n
\n )\n }\n const dates = data && _.uniq(_.map(data, (item) => moment.tz(item.timestamp, \"Pacific/Auckland\").startOf('day').format()));\n return (\n
\n \n {_.map(dates, (date, index) => (\n 0 ? 'rgba(68, 170, 213, 0.1)' : 'rgba(0, 0, 0, 0)'}}>\n {getTides(date)}\n \n ))}\n \n
\n )\n}\n\nexport default TidesChart;","import React from \"react\";\nimport { TiLocationArrow } from \"react-icons/ti\";\nimport \"./SpeedDirectionTrans.scss\";\n\nconst calculateOpacity = (speed) => {\n if (speed < 5) {\n return 0.2;\n } else if (speed < 8) {\n return 0.3;\n } else if (speed < 11) {\n return 0.5;\n } else if (speed < 15) {\n return 0.7;\n } else if (speed < 19) {\n return 0.9;\n } else {\n return 1;\n }\n};\n\nconst SpeedDirectionTrans = ({ direction, speed }) => {\n return (\n \n \n {speed}s\n
\n
\n \n
\n
\n );\n};\n\nexport default SpeedDirectionTrans;\n","import React from \"react\";\nimport { FaArrowUp } from \"react-icons/fa\";\nimport { GoPrimitiveDot } from \"react-icons/go\";\nimport { calculateRelativeDirection, calculateWindRelativeSpeed } from \"../../tools/utills\";\nimport \"./WindArrow.scss\";\n\nconst WindArrow = ({ speed, direction, iconColor }) => {\n return (\n
\n {speed === 0 || speed === 1 ? (\n \n ) : (\n \n )}\n
\n );\n};\n\nexport default WindArrow;\n","import React from \"react\";\nimport { TiLocationArrow } from \"react-icons/ti\";\nimport { calculateRelativeDirection } from \"tools/utills\";\n\nconst DirectionArrow = ({ color, size, direction }) => (\n
\n {!direction ? (\n -\n ) : (\n \n )}\n
\n);\n\nexport default DirectionArrow;\n","import React from \"react\";\nimport { Row, Col } from \"reactstrap\";\nimport moment from \"moment\";\nimport WindArrow from \"./WindArrow\";\nimport { getDirectionLabel } from \"../../tools/utills\";\nimport \"./Tooltip.scss\";\nimport DirectionArrow from \"./DirectionArrow\";\n\nconst Tooltip = ({\n waveDirection,\n waveDirection8s,\n wavePeriodB8s,\n wavePeriod,\n wavePeriod8s,\n waveDirectionB8s,\n windDirection,\n windSpeed,\n waveHeight,\n waveHeight8s,\n timestamp,\n}) => {\n return (\n
\n \n \n
\n {`${moment(timestamp).format(\"ha\")} ${moment(timestamp).format(\"ddd\")} `}\n {` ${moment(timestamp).format(\"DD\")} ${moment(timestamp).format(\"MMM\")}`}\n
\n \n
\n \n \n \n \n \n {`${windSpeed ? windSpeed.toFixed(0) + \"kt\" : \"-\"} `}\n \n \n \n {getDirectionLabel(windDirection)}\n \n \n {`${windDirection ? windDirection.toFixed(0) + \"°\" : \"-\"}`}\n \n \n \n \n \n \n \n {`${waveHeight && waveHeight8s? (waveHeight - waveHeight8s).toFixed(1) + \"m\" : \"-\"} `}\n \n \n {`${wavePeriodB8s ? wavePeriodB8s.toFixed(0) + \"s\" : \"-\"}`}\n \n \n {getDirectionLabel(waveDirectionB8s)}\n \n \n {`${waveDirectionB8s ? waveDirectionB8s.toFixed(0) + \"°\" : \"-\"}`}\n \n \n \n \n \n \n \n {`${waveHeight && waveHeight8s ? (waveHeight - (waveHeight - waveHeight8s)).toFixed(1) + \"m\" : \"-\"} `}\n \n \n {`${wavePeriod8s ? wavePeriod8s.toFixed(0) + \"s\" : \"-\"}`}\n \n \n {getDirectionLabel(waveDirection8s)}\n \n \n {`${waveDirection8s ? waveDirection8s.toFixed(0) + \"°\" : \"-\"}`}\n \n \n
\n );\n};\n\nexport default Tooltip;\n","import React, { Component } from \"react\";\nimport Highcharts from \"highcharts\";\nimport HighchartsReact from \"highcharts-react-official\";\nimport _ from \"lodash\";\nimport { renderToString } from \"react-dom/server\";\nimport moment from \"moment-timezone\";\nimport $ from \"jquery\";\nimport SpeedDirectionTrans from \"./SpeedDirectionTrans\";\nimport \"./WaveHeightChart.scss\";\nimport Tooltip from \"./Tooltip\";\n\nclass WaveHeightChart extends Component {\n state = {};\n constructor(props) {\n super(props);\n this.chart = React.createRef();\n }\n\n addSymbol = (chart) => {\n $(\".speedDirection\").remove();\n // chart.chartBackground.attr({\n // width: '100%'\n // });\n _.each(chart.series, (serie) => {\n _.each(serie.data, (p, i) => {\n const image = renderToString(\n
\n \n
\n );\n const x = chart.renderer\n .text(image, p.barX + chart.plotLeft + chart.series[0].barW / 2 - 15, chart.chartHeight - 25, true)\n .css({\n opacity: 1,\n // 'background-color':'red'\n })\n .add();\n x.addClass(\"speedDirection\");\n });\n });\n };\n\n getArrow(point) {\n const { waveDirection, waveDirection8s, windDirection, windSpeed, wavePeriod, wavePeriod8s, waveHeight, waveHeight8s, wavePeriodB8s, waveDirectionB8s, timestamp } = point;\n return renderToString(\n \n );\n }\n getPlotLines = (data) => {\n const lines = _.map(data, (slot, index) => ({\n color: \"lightgray\", // Color value\n // dashStyle: 'longdashdot', // Style of the plot line. Default to solid\n value: index + 0.5, // Value of where the line will appear\n width: 1, // Width of the line\n }));\n lines.unshift({\n color: \"lightgray\", // Color value\n value: -0.5, // Value of where the line will appear\n width: 1, // Width of the line\n });\n return lines;\n };\n calculateMaxY(data) {\n const waveHeight = _.map(data, (item) => item.y);\n const max = _.max(waveHeight);\n return max && max <= 2 ? 2.5 : max <= 3 ? 3.5 : max + 0.5;\n }\n getFilteredData(data, hour, top) {\n return _.compact(\n _.map(data, (item) => {\n const h = moment.tz(item.timestamp, \"Pacific/Auckland\").hour();\n if (h === hour || (h === (hour === 0 ? 23 : hour - 1)) || h === hour + 1) {\n return {\n y: top ? item.y - item.waveHeight8s : item.y - (item.y - item.waveHeight8s),\n timestamp: item.timestamp,\n windSpeed: item.windSpeed,\n windDirection: item.windDirection,\n wavePeriodB8s: item.wavePeriodB8s,\n wavePeriod: item.wavePeriod,\n wavePeriod8s: item.wavePeriod8s,\n waveDirectionB8s: item.waveDirectionB8s,\n waveDirection: item.waveDirection,\n waveDirection8s: item.waveDirection8s,\n waveHeight: item.y,\n waveHeight8s: item.waveHeight8s,\n };\n } else {\n return null;\n }\n })\n );\n }\n componentDidUpdate(prevProps) {\n const { location } = prevProps;\n const newLocation = this.props.location;\n if (location && newLocation) {\n if (location.id !== newLocation.id) {\n this.setOptions();\n }\n }\n }\n\n componentDidMount() {\n this.setOptions();\n }\n setOptions() {\n const { data } = this.props;\n if (data) {\n const THIS = this;\n const options = {\n chart: {\n // width:1100,\n height: 280,\n type: \"column\",\n useHTML: true,\n marginBottom: 60,\n events: {\n load: function () {\n THIS.addSymbol(this);\n },\n redraw: function () {\n THIS.addSymbol(this);\n },\n },\n //need to stop this behaviour\n // scrollablePlotArea: {\n // minWidth: 1000,\n // scrollPositionX: 1\n // },\n },\n title: {\n text: \"\",\n style: {\n color: \"#55555\",\n fontWeight: \"bold\",\n },\n },\n // subtitle: {\n // text: 'Source: Metocean'\n // },\n xAxis: [\n {\n categories: _.uniq(_.map(data, (item) => moment.tz(item.timestamp, \"Pacific/Auckland\").format(\"ddd Do MMM\"))),\n opposite: true,\n lineColor: \"transparent\",\n // plotLines:this.getPlotLines(data),\n alternateGridColor: \"rgba(68, 170, 213, 0.1)\",\n labels: {\n style: {\n fontSize: 0,\n fontWeight: \"bold\",\n fontFamily: \"Montserrat, Helvetica Neue, Arial, sans-seriff\",\n textAlign: \"center\",\n },\n },\n },\n // {\n // visible:true\n // }\n ],\n yAxis: {\n min: 0,\n endOnTick: false,\n max: this.calculateMaxY(data),\n gridLineColor: \"transparent\",\n visible: true,\n width: 0,\n labels: {\n enabled: false,\n },\n title: {\n text: \"Height m\",\n enabled: false,\n },\n stackLabels: {\n enabled: true,\n style: {\n color: \"#231F20\",\n fontWeight: 500,\n fontSize: 14,\n fontFamily: \"Montserrat, Helvetica Neue, Arial, sans-seriff\",\n textAlign: \"center\",\n textOutline: 0\n },\n formatter: function () {\n return this.total && this.total.toFixed(1);\n },\n },\n },\n legend: {\n enabled: false,\n },\n tooltip: {\n // pointFormat: `Sea height: {point.y} m${this.getCrazyValue()}`\n useHTML: true,\n formatter: function () {\n return THIS.getArrow(this.point);\n },\n borderRadius: 10,\n width: 300,\n shared: false,\n // crosshairs: true,\n },\n credits: {\n enabled: false,\n },\n series: [\n {\n name: \"12am\",\n data: this.getFilteredData(data, 0, true),\n color: \"#2196F3\",\n dataLabels: {\n enabled: false,\n },\n states: {\n hover: {\n color: \"#2196F3\",\n },\n },\n stack: \"12am\",\n },\n {\n name: \"12am\",\n data: this.getFilteredData(data, 0, false),\n color: \"#1A237E\",\n dataLabels: {\n enabled: false,\n },\n states: {\n hover: {\n color: \"#2196F3\",\n },\n },\n stack: \"12am\",\n },\n {\n name: \"6am\",\n data: this.getFilteredData(data, 6, true),\n color: \"#2196F3\",\n dataLabels: {\n enabled: false,\n },\n states: {\n hover: {\n color: \"#2196F3\",\n },\n },\n stack: \"6am\",\n },\n {\n name: \"6am\",\n data: this.getFilteredData(data, 6, false),\n color: \"#1A237E\",\n dataLabels: {\n enabled: false,\n },\n states: {\n hover: {\n color: \"#2196F3\",\n },\n },\n stack: \"6am\",\n },\n {\n name: \"12pm\",\n data: this.getFilteredData(data, 12, true),\n color: \"#2196F3\",\n dataLabels: {\n enabled: false,\n },\n states: {\n hover: {\n color: \"#2196F3\",\n },\n },\n stack: \"12pm\",\n },\n {\n name: \"12pm\",\n data: this.getFilteredData(data, 12, false),\n color: \"#1A237E\",\n dataLabels: {\n enabled: false,\n },\n states: {\n hover: {\n color: \"#2196F3\",\n },\n },\n stack: \"12pm\",\n },\n {\n name: \"6pm\",\n data: this.getFilteredData(data, 18, true),\n color: \"#2196F3\",\n dataLabels: {\n enabled: false,\n },\n states: {\n hover: {\n color: \"#2196F3\",\n },\n },\n stack: \"6pm\",\n },\n {\n name: \"6pm\",\n data: this.getFilteredData(data, 18, false),\n color: \"#1A237E\",\n dataLabels: {\n enabled: false,\n },\n states: {\n hover: {\n color: \"#2196F3\",\n },\n },\n stack: \"6pm\",\n },\n ],\n plotOptions: {\n column: {\n stacking: \"normal\",\n dataLabels: {\n enabled: true,\n crop: false,\n overflow: \"none\",\n },\n },\n series: {\n groupPadding: 0,\n borderWidth: 0,\n events: {\n hide: function () {\n $(\".speedDirection\").remove();\n },\n show: function () {\n THIS.addSymbol(this.chart);\n },\n },\n states: {\n inactive: {\n opacity: 1,\n },\n },\n },\n },\n };\n this.setState({ options });\n }\n }\n onChartAvailable(chartt) {\n // const data = _.map(chartt.userOptions.series, serie=> serie.data);\n // chartt.renderer.image('https://www.highcharts.com/samples/graphics/sun.png', 50, 50, 100, 30)\n // .add();\n }\n render() {\n const { options } = this.state;\n return (\n
\n {/* \n \n \n WAVE HEIGHT\n \n \n */}\n {options ? (\n \n ) : (\n \n )}\n
\n );\n }\n}\n\nexport default WaveHeightChart;\n","import React from \"react\";\nimport WindArrow from './WindArrow';\nimport {getDirectionLabel} from '../../tools/utills';\nimport \"./WindIcon.scss\";\n\n\nconst WindIcon = ({ speed, direction, textColor, iconColor }) => {\n\n return (\n
\n \n
\n {speed}\n
\n
\n {getDirectionLabel(direction)}\n
\n
\n );\n};\n\nexport default WindIcon;\n","import React from \"react\";\nimport { Row, Col } from \"reactstrap\";\nimport _ from \"lodash\";\nimport WindIcon from \"./WindIcon\";\nimport \"./WindChart.scss\";\nimport moment from \"moment-timezone\";\n\nconst WindChart = ({ location, data }) => {\n return (\n
\n \n {_.map(data, (item, index) => {\n const time = moment.tz(item.timestamp, \"Pacific/Auckland\");\n // const dayLightWinterTime = moment(\n // process.env.REACT_APP_DAY_LIGHT_WINTER,\n // \"DD-MM-YYYY hh:mm A\"\n // );\n // const dayLightSummerTime = moment(\n // process.env.REACT_APP_DAY_LIGHT_SUMMER,\n // \"DD-MM-YYYY hh:mm A\"\n // );\n // if (time.isAfter(dayLightWinterTime)) {\n // time.add(1, \"h\");\n // }\n\n // if (time.isAfter(dayLightSummerTime)) {\n // time.subtract(1, \"h\");\n // }\n // TODO: Day light summer time.\n return (\n 0\n ? \"rgba(68, 170, 213, 0.1)\"\n : \"rgba(0, 0, 0, 0)\",\n display: \"flex\",\n justifyContent: \"center\",\n }}\n >\n
\n
\n {time.format(\"ddd\")}\n
\n
{time.format(\"DD\")}
\n
{time.format(\"ha\")}
\n
\n \n );\n })}\n
\n \n {_.map(data, (item, index) => {\n return (\n 0\n ? \"rgba(68, 170, 213, 0.1)\"\n : \"rgba(0, 0, 0, 0)\",\n display: \"flex\",\n justifyContent: \"center\",\n height: \"90px\",\n }}\n >\n \n \n );\n })}\n \n
\n );\n};\n\nexport default WindChart;\n","import React from 'react';\nimport WaveHeightChart from './WaveHeightChart';\nimport WindChart from './WindChart';\nimport './MetOceanCharts.scss';\n\nconst MetOceanCharts = ({location, data}) => (\n
\n {\n data ? \n
\n \n \n {/* */}\n
:
\n }\n
\n)\n\nexport default MetOceanCharts;","import _ from \"lodash\";\nimport Axios from \"axios\";\nimport moment from \"moment-timezone\";\n\nconst mergeData = (data) => {\n // console.log(JSON.stringify(data));\n if (data.variables) {\n const time =\n data &&\n data.dimensions &&\n data.dimensions.time &&\n data.dimensions.time.data;\n const seaSurfaceHeight = data.variables[\"wave.height\"].data;\n const seaSurfaceHeight8s = data.variables[\"wave.height.above-8s\"].data;\n const windSpeed = data.variables[\"wind.speed.at-10m\"].data;\n const windDirection = data.variables[\"wind.direction.at-10m\"].data;\n const wavePeriod = data.variables[\"wave.period.peak\"].data;\n const wavePeriodB8s = data.variables[\"wave.period.below-8s.peak\"].data;\n const wavePeriod8s = data.variables[\"wave.period.above-8s.peak\"].data;\n const waveDirectionB8s =\n data.variables[\"wave.direction.below-8s.peak\"].data;\n const waveDirection = data.variables[\"wave.direction.peak\"].data;\n const waveDirection8s = data.variables[\"wave.direction.above-8s.peak\"].data;\n\n return _.map(time, (slot, index) => {\n return {\n timestamp: slot,\n y: seaSurfaceHeight.length > index ? seaSurfaceHeight[index] : null,\n waveHeight8s:\n seaSurfaceHeight8s.length > index ? seaSurfaceHeight8s[index] : null,\n windSpeed: windSpeed.length > index ? windSpeed[index] * 1.944 : null,\n windDirection:\n windDirection.length > index ? windDirection[index] : null,\n wavePeriodB8s:\n wavePeriodB8s.length > index ? wavePeriodB8s[index] : null,\n wavePeriod: wavePeriod.length > index ? wavePeriod[index] : null,\n wavePeriod8s: wavePeriod8s.length > index ? wavePeriod8s[index] : null,\n waveDirectionB8s:\n waveDirectionB8s.length > index ? waveDirectionB8s[index] : null,\n waveDirection:\n waveDirection.length > index ? waveDirection[index] : null,\n waveDirection8s:\n waveDirection8s.length > index ? waveDirection8s[index] : null,\n };\n });\n } else {\n return null;\n }\n};\n\nconst fetchData = async ({ id, latitude, longitude }) => {\n try {\n //get current dates 00:00 in local format\n const date = moment\n .tz(\"Pacific/Auckland\")\n .startOf(\"date\")\n .utc()\n .format(\"YYYY-MM-DDTHH:mm:ss\");\n const results = await Axios.post(\n `https://10f5iarxy9.execute-api.ap-southeast-2.amazonaws.com/prod/metocean/${id}`,\n {\n location: id,\n latitude: _.trim(latitude),\n longitude: _.trim(longitude),\n date: date + \"Z\",\n },\n {\n headers: {\n \"X-Api-Key\": \"ZdoncwT4zd2IIsftcLaQU6Bq7c3avkIv1Il36jG0\",\n },\n }\n );\n // if (results.data && results.data.body) {\n // return mergeData(\n // typeof results.data.body === \"string\"\n // ? JSON.parse(results.data.body)\n // : results.data.body\n // );\n // } else {\n // return null;\n // }\n if (results?.data?.data?.response) {\n const data = typeof results?.data?.data?.response === \"string\"\n ? JSON.parse(results?.data?.data?.response)?.data \n ? JSON.parse(results?.data?.data?.response)?.data\n : JSON.parse(results?.data?.data?.response)\n : results?.data?.data?.response\n return mergeData(data);\n } else {\n return null;\n }\n } catch (e) {\n console.log(e.message);\n }\n};\n\nexport { fetchData };\n","export default __webpack_public_path__ + \"static/media/legend.989d51db.png\";","import React, { useState, useEffect } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { Col, Container } from \"reactstrap\";\nimport _ from \"lodash\";\nimport moment from \"moment\";\nimport \"./ForcastCharts.scss\";\nimport TidesChart from \"./TidesChart\";\nimport MetOceanCharts from \"./MetOceanCharts\";\nimport { fetchData } from \"../../services/MetOceanDataService\";\nimport legend from \"../../assets/charts/legend.png\";\n\nconst ForcastCharts = ({ location }) => {\n const [metOceanData, setMetOceanData] = useState(null);\n const history = useHistory();\n\n useEffect(() => {\n (async function callApi() {\n const data = await fetchData(location);\n // console.log(JSON.stringify(data));\n // const cData = _.find(data, (item) => moment().isBefore(moment(item.timestamp)));\n setMetOceanData(data);\n // setCurrentData(cData);\n })();\n }, [location]);\n\n const handleClickHowTo = () => {\n history.push(\"/post/how_to/\");\n };\n return metOceanData ? (\n \n
\n \n
\n {location ?

{`${location.name} 7 day forecast`}

: }\n
\n \n
\n
\n \n \n
\n
\n \n
\n \n TIDE{\" \"}\n \n HIGH \n \n LOW\n \n
\n \n
\n
\n \n
\n \n
\n How to use forecast\n
\n
\n \n \n
\n \n
\n How to use forecast\n
\n
\n \n
\n
\n ) : (\n \n );\n};\n\nexport default ForcastCharts;\n","import React from \"react\";\nimport { CardTitle } from \"reactstrap\";\nimport \"./Cam.scss\";\n\nconst Cam = ({ resource, type }) => {\n return resource ? (\n
\n \n {resource.name}\n \n \n
\n ) : (\n \n );\n};\n\nexport default Cam;\n","import React from 'react';\nimport { Container, Row, Col } from 'reactstrap';\nimport Cam from './Cam';\nimport constants from '../../constants';\nimport './CamContainer.scss';\n\nconst CamContainer = ({\n cam_1,\n cam_2,\n buoy\n}) => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nexport default CamContainer;","export default __webpack_public_path__ + \"static/media/chain-link-icon.597fe245.svg\";","import React, { useState } from \"react\";\nimport { Row, Col } from \"reactstrap\";\nimport {\n FacebookShareButton,\n FacebookIcon,\n FacebookMessengerIcon,\n WhatsappShareButton,\n WhatsappIcon,\n TwitterIcon,\n TwitterShareButton,\n TelegramIcon,\n TelegramShareButton,\n EmailShareButton,\n EmailIcon,\n} from \"react-share\";\nimport ChainLinkIcon from \"../../assets/icons/chain-link-icon.svg\";\nimport { IoIosLink } from \"react-icons/io\";\nimport \"./SocialLinks.scss\";\nimport { UncontrolledTooltip } from \"reactstrap\";\n\nconst SocialLinks = () => {\n const [copied, setCopied] = useState(false);\n const [message, setMessage] = useState(\"\");\n const url = window.location.href;\n\n const handleCopy = () => {\n navigator.clipboard.writeText(url);\n setCopied(true);\n // setMessage(\"Link copied!\");\n // setTimeout(() => {\n // setCopied(false);\n // }, 2000); // Reset copied state and message after 2 seconds\n };\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n {copied &&

{message}

}\n \n \n \n {\" \"}\n Copied{\" \"}\n \n
\n \n \n );\n};\n\nexport default SocialLinks;\n","import React from 'react';\nimport { Col, Row } from 'reactstrap';\nimport './LocationAdSlotsTop.scss';\nimport useWindowDimensions from '../../hooks/useWindowDimensions';\n\nconst LocationAdSlotsTop = ({\n slot1,\n slot2,\n slot3,\n showClass\n}) => {\n const { width } = useWindowDimensions();\n\n const getClass = () => {\n if (slot2.hide && slot3.hide) {\n return 'location-ad-slot-top-large';\n }\n return 'location-ad-slot-top-small';\n }\n const handleClick = (link) => {\n if (link) {\n window.location = link\n }\n }\n if (width < 768) {\n // display for tabs and mobile\n return slot1.img || slot2.img || slot3.img ? (\n \n
\n {slot1 && slot1.img && (\n \n \n {/*
handleClick(slot1.link)} className={`${slot1.link ? 'location-ad-slot-top' : ''} `}> */}\n \"slot-1\" handleClick(slot1.link)} className={`${getClass()}-mobile ${slot1.link ? 'location-ad-slot-top' : ''}`} src={slot1.img} />\n {/*
*/}\n \n
)}\n {slot2 && slot2.img && !slot2.hide && (\n \n {/*
handleClick(slot2.link)} className={`${slot2.link ? 'location-ad-slot-top' : ''} `}> */}\n \"slot-2\" handleClick(slot1.link)} className={`${getClass()}-mobile ${slot1.link ? 'location-ad-slot-top' : ''}`} src={slot1.img} />\n {/*
*/}\n \n
)}\n {slot3 && slot3.img && !slot3.hide && (\n \n {/*
handleClick(slot3.link)} className={`${slot3.link ? 'location-ad-slot-top' : ''} `}> */}\n \"slot-3\" handleClick(slot1.link)} className={`${getClass()}-mobile ${slot1.link ? 'location-ad-slot-top' : ''}`} src={slot1.img} />\n {/*
*/}\n \n
)}\n
\n \n ) :
\n } else {\n return slot1.img || slot2.img || slot3.img ? (\n \n
\n {slot1 && slot1.img && (\n
handleClick(slot1.link)} className={`${slot1.link ? 'location-ad-slot-top' : ''} `}>\n \"slot-1\"\n
\n
)}\n {slot2 && slot2.img && !slot2.hide && (\n
handleClick(slot2.link)} className={`${slot2.link ? 'location-ad-slot-top' : ''} `}>\n \"slot-2\"\n
\n
)}\n {slot3 && slot3.img && !slot3.hide && (\n
handleClick(slot3.link)} className={`${slot3.link ? 'location-ad-slot-top' : ''} `}>\n \"slot-2\"\n
\n
)}\n
\n \n ) :
\n }\n}\n\nexport default LocationAdSlotsTop;","import React from 'react';\nimport { Col, Row, Container } from 'reactstrap';\nimport './LocationAdSlotBody.scss';\n\nconst LocationAdSlotBody = ({\n slot\n}) => {\n const handleClick = (link) => {\n if (link) {\n window.location = link\n }\n }\n return slot.img ? (\n \n \n \n
handleClick(slot.link)} className={`${slot.link ? 'location-ad-slot location-ad-slot-small': 'location-ad-slot-small'}`}>\n \"slot-1\"\n
\n \n
\n
\n ) :\n
\n}\n\nexport default LocationAdSlotBody;","import React, { useEffect, useState, useRef, useCallback } from \"react\";\nimport { Container, Row, Col } from \"reactstrap\";\nimport \"./WindyWidget.scss\";\n\nconst WindyWidget = ({ location }) => {\n const [width, setWidth] = useState();\n const [height, setHeight] = useState();\n const containerRef = useRef();\n\n useEffect(() => {\n function handleResize() {\n setWidth(containerRef.current.clientWidth);\n let height = (width / 16) * 9;\n setHeight(height);\n }\n handleResize();\n window.addEventListener(\"resize\", handleResize);\n return () => {\n window.removeEventListener(\"resize\", handleResize);\n };\n }, [width]);\n\n return (\n \n \n \n
\n \n
\n \n
\n
\n );\n};\n\nexport default WindyWidget;\n","import React, { useEffect, useRef, useState } from \"react\";\nimport usePageVisibility from \"hooks/useVisibility\";\nimport { useInView } from \"react-intersection-observer\";\nimport \"./GSNCam.scss\";\nimport CamMask from \"components/HomeCams/CamMask\";\nimport liveCam from \"../../assets/cams/cam_icon.png\";\n\nconst GSNCam = ({ user, cam, location }) => {\n const videoRef = useRef(null);\n const [width, setWidth] = useState();\n const [height, setHeight] = useState();\n\n const [inViewRef, inView] = useInView({\n triggerOnce: false, // Only trigger once when the video enters the viewport\n });\n\n const visibility = usePageVisibility();\n\n const containerRef = useRef();\n\n useEffect(() => {\n function handleResize() {\n setWidth(containerRef?.current?.clientWidth);\n // console.log(\"Test\", width);\n let height = (width / 16) * 9;\n setHeight(height);\n }\n handleResize();\n window.addEventListener(\"resize\", handleResize);\n return () => {\n window.removeEventListener(\"resize\", handleResize);\n };\n }, [width]);\n\n useEffect(() => {\n const interval = setInterval(() => {\n pause();\n }, [90 * 1000]);\n return () => {\n clearInterval(interval);\n };\n }, []);\n\n useEffect(() => {\n if (!visibility || !inView) {\n pause();\n }\n }, [visibility, inView]);\n\n const play = () => {\n const iframe = videoRef.current;\n if (iframe) {\n try {\n iframe.contentWindow.postMessage(\n JSON.stringify({ funcName: \"play\", args: null }),\n \"*\"\n );\n console.log(\"Video is playing\");\n } catch (e) {\n console.log(e.message);\n }\n }\n };\n\n const pause = () => {\n const iframe = videoRef.current;\n if (iframe) {\n try {\n iframe.contentWindow.postMessage(\n JSON.stringify({ funcName: \"stop\", args: null }),\n \"*\"\n );\n } catch (e) {\n console.log(e.message);\n }\n }\n };\n\n const renderMask = () => (\n
\n \n {/* */}\n \n
\n );\n const renderIframe = () => (\n
\n
\n \n
\n
\n );\n\n if (cam) {\n if (user?.signedIn) {\n // if (cam?.authorized && cam?.link) {\n if (cam?.link) {\n return renderIframe();\n } else {\n return renderMask();\n }\n } else {\n return renderMask();\n }\n } else {\n return
;\n }\n // return cam?.link ? renderIframe() : renderMask();\n // return renderIframe();\n};\n\nexport default GSNCam;\n","export default __webpack_public_path__ + \"static/media/gsn_premium_small.44f44bd6.png\";","import React, { useEffect, useState } from 'react';\nimport premium from '../../../assets/logo/gsn_premium_small.png';\nimport './OGPackage.scss'\nimport { useHistory } from 'react-router-dom';\nimport { selectSubscription } from 'redux/features/subscription/subscriptionSlice';\nimport { useDispatch } from 'react-redux';\nimport { Modal, ModalHeader } from 'reactstrap';\nimport { getPackages } from 'redux/features/subscription/subscriptionSlice';\nimport localStorageService from 'services/LocalStorageService';\n\nconst OGPackage = () => {\n const history = useHistory();\n const dispatch = useDispatch();\n const [isOpen, setIsOpen] = useState(false);\n const [ogPackage, setOGPackage] = useState(null);\n\n\n useEffect(() => {\n setTimeout(() => {\n dispatch(getPackages())\n .unwrap()\n .then((resp) => {\n console.log(resp)\n if (resp?.length && resp?.length === 1) {\n setOGPackage(resp[0])\n setIsOpen(true)\n }\n })\n .catch((err) => {\n console.log(err?.message)\n setIsOpen(true)\n })\n }, 5000)\n }, []);\n\n const handleSelectPackage = (packageId) => {\n if (packageId) {\n dispatch(selectSubscription(packageId));\n history.push(\"/checkout\");\n } else {\n history.push(\"/sign-up\");\n }\n };\n\n const handleShowModal = () => {\n localStorageService.setPremiumMessageShowedAt();\n setIsOpen(!isOpen);\n };\n const renderModal = () => {\n return (\n \n \n handleSelectPackage(ogPackage?.id)}\n >\n
\n \n
\n The O.G. HOOKUP\n
\n {/*
\n Be one of the first paid subscriber to get\n
*/}\n
\n 40% OFF FOR LIFE*\n
\n
Use code LIFE40 at checkout
\n
\n
\n\n
\n
\n
    \n
  • 14 + Kiwi owned cams
  • \n
  • 144 + High resolution spot forecasts
  • \n
  • Links to all local free cams and wave buoys
  • \n
  • Help us support local mahi, like Aroha Surf Club
  • \n
\n
\n {ogPackage ?
\n NZ${ogPackage?.stripe?.price?.unit_amount / 100}/yearNZ${ogPackage?.stripe?.price?.unit_amount * 0.006}/year ($3/month)\n
:
\n NZ$60/yearNZ$36/year ($3/month)\n
}\n
\n \n SUBSCRIBE\n
\n
\n
\n
*Terms and conditions apply
\n
14-day trial. Cancel anytime.
\n
\n {/*
{`Cancel auto-renewal anytime in account settings`}
*/}\n
\n
\n \n );\n };\n\n return renderModal()\n}\n\nexport default OGPackage;","import React, { useState, useEffect, useRef, useMemo } from \"react\";\nimport { useHistory } from \"react-router\";\n// reactstrap components\nimport { Container, Row, Col } from \"reactstrap\";\nimport _ from \"lodash\";\nimport VideoPlayer from \"../../components/video/VideoPlayer\";\nimport ForcastCharts from \"../../components/charts/ForcastCharts\";\nimport \"./LocationSections.scss\";\nimport ApiService from \"../../services/ApiService\";\n// import WeatherMapWrapper from \"../../components/WindyMap/WeatherMapWrapper\";\nimport CamContainer from \"components/Cams/CamContainer\";\nimport Description from \"components/Description/Description\";\nimport PostCards from \"components/PostCards/PostCards\";\nimport SocialLinks from \"components/SocialLinks/SocialLinks\";\nimport LocationAdSlotsTop from \"components/Ads/LocationAdSlotsTop\";\nimport LocationAdSlotBody from \"components/Ads/LocationAdSlotBody\";\nimport WindyWidget from \"components/WindyMap/WindyWidget\";\nimport { Helmet } from \"react-helmet-async\";\nimport localStorageService from \"services/LocalStorageService\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport GSNCam from \"components/GSNCam/GSNCam\";\nimport InstallPWABanner from \"components/InstallPWA/InstallPWABanner\";\nimport { getCameras } from \"redux/features/camera/cameraSlice\";\nimport OGPackage from \"views/packages-sections/package/OGPackage\";\nimport moment from \"moment\";\n\n// core components\n\nconst LocationSections = ({ slug }) => {\n const [location, setLocation] = useState(null);\n const [coast, setCoast] = useState(null);\n const [posts, setPosts] = useState(null);\n const sub = useSelector((state) => state?.user?.info?.user_subscription) ?? null;\n const status = useSelector((state) => state?.user?.info?.status) ?? null;\n const user = useSelector((state) => state?.authInfo?.info);\n const camInfo = useSelector((state) => state?.camera?.info);\n const [selectedCam, setSelectedCam] = useState(null);\n const history = useHistory();\n const dispatch = useDispatch();\n const [displayPremium, setDisplayPremium] = useState(false);\n\n const memoizedCams = useMemo(\n () => camInfo?.cams || [],\n [camInfo?.cams?.length, camInfo?.cams]\n );\n\n const [prevCams, setPrevCams] = useState(null);\n\n // Utility function for deep comparison\n const deepCompareCams = (prevCams, nextCams) => {\n if (prevCams?.length !== nextCams?.length) {\n return false; // If array length changes (new cam added or removed)\n }\n\n return prevCams?.every((prevCam, index) => {\n const nextCam = nextCams[index];\n // return JSON.stringify(prevCam) === JSON.stringify(nextCam); // Compare each cam deeply\n return prevCam?.name === nextCam?.name && prevCam?.link === nextCam?.link;\n });\n };\n\n useEffect(()=> {\n if (location) {\n const cam = _.find(memoizedCams, (c) => c.location === location?.id);\n setSelectedCam(cam);\n } else {\n dispatch(\n getCameras({\n signedIn: user?.signedIn,\n })\n )\n .unwrap()\n .then((resp) => {\n const cam = _.find(resp, (r) => r.location === location.id);\n setSelectedCam(cam);\n })\n .catch((err) => {\n console.log(\"Error\", err);\n });\n }\n }, [location])\n\n useEffect(() => {\n if (!prevCams || !deepCompareCams(prevCams, memoizedCams)) {\n setPrevCams(memoizedCams); // Store the current cams array for future comparison\n\n if (memoizedCams?.length) {\n const cam = _.find(memoizedCams, (c) => c.location === location?.id);\n setSelectedCam(cam);\n } else {\n dispatch(\n getCameras({\n signedIn: user?.signedIn,\n })\n )\n .unwrap()\n .then((resp) => {\n const cam = _.find(resp, (r) => r.location === location.id);\n setSelectedCam(cam);\n })\n .catch((err) => {\n console.log(\"Error\", err);\n });\n }\n }\n }, [memoizedCams]); // Effect depends on location and memoizedCams\n\n\n useEffect(() => {\n (async function callApi() {\n const loc = await ApiService.get(`locations?slug_eq=${slug}`);\n if (loc && loc.length) {\n const cst = await ApiService.get(`coasts?name=${loc[0].coast}`);\n setLocation(loc[0]);\n // set recently visited\n localStorageService.setLocation(loc[0]);\n if (cst && cst.length) {\n setCoast(cst[0]);\n }\n } else {\n localStorageService.removeLocation(slug);\n }\n const posts = await ApiService.get(\n `posts?_limit=${3}&_sort=id:DESC&zone_eq=generic`\n );\n if (posts && posts.length) {\n setPosts(posts);\n }\n })();\n }, [slug]);\n\n useEffect(() => {\n const date = localStorageService.getPremiumMessageShowedAt();\n if (date) {\n const shouldDisplay = moment().isSame(moment(date), 'day');\n setDisplayPremium(!shouldDisplay);\n } else {\n setDisplayPremium(true);\n }\n\n }, []);\n\n\n const handleSelectPost = (post) => {\n // should redirect to the post page\n history.push({\n pathname: `/post/${post.slug}`,\n state: { post },\n });\n };\n\n const renderArialImage = () => {\n return location.image && location.image.length ? (\n
\n \n
\n ) : (\n \n );\n };\n\n const renderCam = () => {\n return (\n
\n \n
\n );\n };\n return (\n
\n {location ? (\n <>\n \n {location.name} | Good Surf Now!\n \n \n \n \n \n \n \n \n {location.banner ? (\n {\n if (location.banner_link) {\n window.location = `${location.banner_link}`;\n }\n }}\n >\n \n
\n
\n ) : (\n \n )}\n \n \n \n
\n {location.name}\n
\n
\n
\n {(!sub || status === 'cancelled') && selectedCam && displayPremium ? :
}\n {/* Live Cam */}\n \n \n \n {selectedCam ? renderCam() : renderArialImage()}\n \n \n \n\n \n
\n \n {/* Description */}\n \n
\n
\n \n
\n
\n \n\n {/* Ad Slot 1*/}\n \n\n {/* Ad Slot 2*/}\n \n
\n
\n
\n\n {/* \n
\n \n \n {selectedCam ? renderArialImage() : }\n \n \n
\n
*/}\n\n
\n \n
\n \n {location.ad_slot4_image && (\n \n )}\n \n {coast && coast.video ? (\n \n \n
\n \n \n
\n ) : (\n \n )}\n
\n {/* */}\n \n \n {location.video ? (\n \n \n
\n \n \n
\n ) : (\n \n )}\n
\n
\n {location.cam_1 || location.cam_2 || location.buoy ? (\n
\n \n
\n
\n ) : (\n \n )}\n \n \n \n {location.ad_slot5_image && (\n \n )}\n {posts && posts.length ? (\n \n
\n
\n \n \n

\n latest posts

\n

\n \n
\n \n {_.map(posts, (post, index) => (\n // renderCard(post, index, !index ? \"d-flex d-md-none\" : \"\")\n handleSelectPost(post)}\n />\n ))}\n \n
\n
\n ) : (\n
\n )}\n {location.ad_slot6_image && (\n \n )}\n
\n \n ) : (\n \n )}\n
\n );\n};\n\nexport default LocationSections;\n","import React, { useEffect, useState } from \"react\";\nimport FooterBlack from \"components/Footers/FooterBlack.js\";\nimport LocationSections from \"./location-sections/LocationSections\";\n// import DropdownWhiteNavbar from 'components/Navbars/DropdownWhiteNavbar.js';\nimport ApiService from \"services/ApiService.js\";\nimport _ from \"lodash\";\nimport LocationFooter from \"../components/Locations/LocationFooter.js\";\nimport RecentlyVisited from \"components/recentlyVisited/RecentlyVisited\";\nimport GoodSurfNavBarProd from \"components/Navbars/GoodSurfNavBarProd\";\n\nfunction Location({ location }) {\n const [locations, setLocations] = useState([]);\n\n useEffect(() => {\n (async function callApi() {\n const locations = await ApiService.get(\"locations?_limit=-1\");\n setLocations(_.orderBy(locations, (item) => item.order));\n })();\n }, []);\n useEffect(() => {\n document.body.classList.add(\"presentation-page\");\n document.body.classList.add(\"sidebar-collapse\");\n document.documentElement.classList.remove(\"nav-open\");\n window.scrollTo(0, 0);\n document.body.scrollTop = 0;\n\n // we need to add a script for the github buttons\n let script = document.createElement(\"script\");\n script.src = \"https://buttons.github.io/buttons.js\";\n script.id = \"github-buttons-script-id\";\n document.body.appendChild(script);\n\n return function cleanup() {\n document.body.classList.remove(\"presentation-page\");\n document.body.classList.remove(\"sidebar-collapse\");\n\n // we need to remove the script when we change the page\n script.parentNode.removeChild(script);\n };\n });\n const parts = location && location.pathname && location.pathname.split(\"/\");\n return (\n <>\n \n
\n \n 2 && parts[2]}\n />\n \n \n
\n \n );\n}\n\nexport default Location;\n","import React, { useState, useEffect } from \"react\";\nimport { useHistory } from \"react-router-dom\";\n// import { DiscussionEmbed } from \"disqus-react\";\nimport { Container, Row, Col } from \"reactstrap\";\nimport HyvorTalk from \"hyvor-talk-react\";\nimport ReactMarkdown from \"react-markdown\";\nimport _ from \"lodash\";\n// reactstrap components\nimport \"./PostSections.scss\";\nimport ApiService from \"../../services/ApiService\";\nimport PostCards from \"../../components/PostCards/PostCards\";\nimport Description from \"../../components/Description/Description\";\nimport SocialLinks from \"../../components/SocialLinks/SocialLinks\";\nimport constants from \"../../constants\";\nimport AdSlot from \"../../components/Ads/AdSlot\";\nimport { Helmet } from \"react-helmet-async\";\n\n// core components\n\nconst PostSections = ({ slug }) => {\n const [post, setPost] = useState(null);\n const [related, setRelated] = useState([]);\n const [genericPostAds, setGenericPostAds] = useState(null);\n const history = useHistory();\n\n useEffect(() => {\n (async function callApi() {\n try {\n const psts = await ApiService.get(`posts?slug_eq=${slug}`);\n if (psts && psts.length) {\n if (psts[0].tags && psts[0].tags.length) {\n const query = `posts?${_.join(\n _.map(psts[0].tags, (tag) => `tags_in=${tag.id}`),\n \"&\"\n )}&id_ne=${psts[0].id}&_limit=${3}`;\n const rted = await ApiService.get(query);\n setRelated(rted);\n }\n setPost(psts[0]);\n const postGenericAds = await ApiService.get(\"post-content\");\n setGenericPostAds(postGenericAds);\n }\n } catch (e) {\n console.log(e.message);\n }\n })();\n }, [slug]);\n\n const handleSelectPost = (post) => {\n // should redirect to the post page\n history.push({\n pathname: `/post/${post.slug}`,\n state: { post },\n });\n };\n\n return (\n <>\n {post ? (\n <>\n \n {`${post.title} | Good Surf Now!`}\n \n \n \n \n \n \n \n {post.banner ? (\n
\n
\n
\n {/* \n \n

{post.title}

\n

{post.banner.url}

\n \n
*/}\n
\n
\n ) : (\n \n )}\n
\n \n
\n \n \n \n {post.title}

\n \n {post.short_description}\n \n
\n
\n \n {/* */}\n
\n \n
\n {_.map(post.images, (image, index) => (\n
\n \n
\n
\n ))}\n {/*
\n {post && post.video ? :
} */}\n \n \n \n
\n \n
\n \n {/* */}\n
\n \n
\n {/* */}\n \n
\n
\n {related && related.length ? (\n \n
\n \n \n

\n related posts

\n

\n \n
\n \n {_.map(related, (post, index) => (\n \n ))}\n \n
\n
\n ) : (\n \n )}\n
\n \n ) : (\n \n )}\n \n );\n};\n\nexport default PostSections;\n","import React, { useEffect, useState } from \"react\";\nimport FooterBlack from \"components/Footers/FooterBlack.js\";\nimport PostSections from \"./posts-sections/PostSections\";\n// import DropdownWhiteNavbar from 'components/Navbars/DropdownWhiteNavbar.js';\nimport ApiService from \"services/ApiService.js\";\nimport _ from \"lodash\";\nimport LocationFooter from \"../components/Locations/LocationFooter.js\";\nimport GoodSurfNavBar from \"../components/Navbars/GoodSurfNavBar.js\";\nimport RecentlyVisited from \"components/recentlyVisited/RecentlyVisited\";\nimport GoodSurfNavBarProd from \"components/Navbars/GoodSurfNavBarProd\";\n\nfunction Post({ location }) {\n const [locations, setLocations] = useState([]);\n\n useEffect(() => {\n (async function callApi() {\n const locations = await ApiService.get(\"locations?_limit=-1\");\n setLocations(_.orderBy(locations, (item) => item.order));\n })();\n }, []);\n useEffect(() => {\n document.body.classList.add(\"presentation-page\");\n document.body.classList.add(\"sidebar-collapse\");\n document.documentElement.classList.remove(\"nav-open\");\n window.scrollTo(0, 0);\n document.body.scrollTop = 0;\n\n // we need to add a script for the github buttons\n let script = document.createElement(\"script\");\n script.src = \"https://buttons.github.io/buttons.js\";\n script.id = \"github-buttons-script-id\";\n document.body.appendChild(script);\n\n return function cleanup() {\n document.body.classList.remove(\"presentation-page\");\n document.body.classList.remove(\"sidebar-collapse\");\n\n // we need to remove the script when we change the page\n script.parentNode.removeChild(script);\n };\n });\n const parts = location && location.pathname && location.pathname.split(\"/\");\n return (\n <>\n {/* */}\n \n
\n \n {/* 2 && parts[2]} slug={parts && parts.length > 2 && parts[2]}/> */}\n 2 && parts[2]} />\n \n \n
\n \n );\n}\n\nexport default Post;\n","import React from \"react\";\nimport {Row, Col, Container} from 'reactstrap';\nimport Description from \"components/Description/Description\";\nimport \"./AboutUsSection.scss\";\n\nconst AboutUsSection = ({ data }) => {\n return (\n
\n \n \n \n

\n About Us\n

\n \n
\n \n \n {data && data.description ? : }\n \n \n
\n
\n );\n};\nexport default AboutUsSection;\n","import React, { useEffect, useState } from 'react';\nimport _ from 'lodash';\n// import { useHistory } from 'react-router-dom';\nimport ApiService from 'services/ApiService.js';\nimport LocationFooter from '../components/Locations/LocationFooter';\nimport FooterBlack from \"components/Footers/FooterBlack.js\";\nimport AboutUsSection from './about-us-sections/AboutUsSection';\nimport { Helmet } from 'react-helmet-async';\nimport GoodSurfNavBarProd from 'components/Navbars/GoodSurfNavBarProd';\n\nconst AboutUs = () => {\n // const history = useHistory();\n const [data, setData] = useState();\n const [locations, setLocations] = useState();\n\n useEffect(() => {\n (async function callApi() {\n const data = await ApiService.get('about-us');\n setData(data);\n })();\n }, []);\n\n useEffect(() => {\n (async function callApi() {\n const data = await ApiService.get('locations?_limit=-1');\n setLocations(_.orderBy(data, (item) => item.order));\n })();\n }, []);\n\n useEffect(() => {\n document.body.classList.add(\"presentation-page\");\n document.body.classList.add(\"sidebar-collapse\");\n document.documentElement.classList.remove(\"nav-open\");\n window.scrollTo(0, 0);\n document.body.scrollTop = 0;\n\n // we need to add a script for the github buttons\n let script = document.createElement(\"script\");\n script.src = \"https://buttons.github.io/buttons.js\";\n script.id = \"github-buttons-script-id\";\n document.body.appendChild(script);\n\n return function cleanup() {\n document.body.classList.remove(\"presentation-page\");\n document.body.classList.remove(\"sidebar-collapse\");\n\n // we need to remove the script when we change the page\n script.parentNode.removeChild(script);\n };\n });\n\n return (\n <>\n \n About Us | Good Surf Now!\n \n \n \n \n \n \n \n \n
\n \n \n \n
\n \n )\n}\n\nexport default AboutUs;","\nimport React from \"react\";\nimport {Row, Col, Container} from 'reactstrap';\nimport Description from \"components/Description/Description\";\nimport \"./PrivacyPolicySection.scss\";\n\nconst PrivacyPolicySection = ({ data }) => {\n return (\n
\n \n \n \n
\n Privacy Policy\n
\n \n
\n \n \n {data && data.description ? : }\n \n \n
\n
\n );\n};\nexport default PrivacyPolicySection;\n","import GoodSurfNavBar from 'components/Navbars/GoodSurfNavBar';\nimport React, { useEffect, useState } from 'react';\nimport _ from 'lodash';\n// import { useHistory } from 'react-router-dom';\nimport ApiService from 'services/ApiService.js';\nimport LocationFooter from '../components/Locations/LocationFooter';\nimport FooterBlack from \"components/Footers/FooterBlack.js\";\nimport PrivacyPolicySection from './privacy-policy-sections/PrivacyPolicySection';\nimport { Helmet } from 'react-helmet-async';\nimport GoodSurfNavBarProd from 'components/Navbars/GoodSurfNavBarProd';\n\nconst PrivacyPolicy = () => {\n // const history = useHistory();\n const [data, setData] = useState();\n const [locations, setLocations] = useState();\n\n useEffect(() => {\n (async function callApi () {\n const data = await ApiService.get('privacy-policy');\n setData(data);\n })();\n }, []);\n\n useEffect(() => {\n (async function callApi () {\n const data = await ApiService.get('locations?_limit=-1');\n setLocations(_.orderBy(data, (item) => item.order));\n })();\n }, []);\n\n useEffect(() => {\n document.body.classList.add(\"presentation-page\");\n document.body.classList.add(\"sidebar-collapse\");\n document.documentElement.classList.remove(\"nav-open\");\n window.scrollTo(0, 0);\n document.body.scrollTop = 0;\n \n // we need to add a script for the github buttons\n let script = document.createElement(\"script\");\n script.src = \"https://buttons.github.io/buttons.js\";\n script.id = \"github-buttons-script-id\";\n document.body.appendChild(script);\n \n return function cleanup() {\n document.body.classList.remove(\"presentation-page\");\n document.body.classList.remove(\"sidebar-collapse\");\n \n // we need to remove the script when we change the page\n script.parentNode.removeChild(script);\n };\n });\n\n return (\n <>\n \n Privacy Policy | Good Surf Now!\n \n \n \n \n \n \n \n \n
\n \n \n \n
\n \n )\n}\n\nexport default PrivacyPolicy;","import React from \"react\";\nimport {Row, Col, Container} from 'reactstrap';\nimport Description from \"components/Description/Description\";\nimport \"./TermsAndConditionsSection.scss\";\n\nconst TermsAndConditionsSection = ({ data }) => {\n return (\n
\n \n \n \n
\n Terms and Conditions\n
\n \n
\n \n \n {data && data.description ? : }\n \n \n
\n
\n );\n};\nexport default TermsAndConditionsSection;\n","import GoodSurfNavBar from 'components/Navbars/GoodSurfNavBar';\nimport React, { useEffect, useState } from 'react';\nimport _ from 'lodash';\n// import { useHistory } from 'react-router-dom';\nimport ApiService from 'services/ApiService.js';\nimport LocationFooter from '../components/Locations/LocationFooter';\nimport FooterBlack from \"components/Footers/FooterBlack.js\";\nimport TermsAndConditionsSection from './terms-and-conditions-sections/TermsAndConditionsSection';\nimport { Helmet } from 'react-helmet-async';\nimport GoodSurfNavBarProd from 'components/Navbars/GoodSurfNavBarProd';\n\nconst TermsAndConditions = () => {\n // const history = useHistory();\n const [data, setData] = useState();\n const [locations, setLocations] = useState();\n\n useEffect(() => {\n (async function callApi() {\n const data = await ApiService.get('terms-and-conditions');\n setData(data);\n })();\n }, []);\n\n useEffect(() => {\n (async function callApi() {\n const data = await ApiService.get('locations?_limit=-1');\n setLocations(_.orderBy(data, (item) => item.order));\n })();\n }, []);\n\n useEffect(() => {\n document.body.classList.add(\"presentation-page\");\n document.body.classList.add(\"sidebar-collapse\");\n document.documentElement.classList.remove(\"nav-open\");\n window.scrollTo(0, 0);\n document.body.scrollTop = 0;\n\n // we need to add a script for the github buttons\n let script = document.createElement(\"script\");\n script.src = \"https://buttons.github.io/buttons.js\";\n script.id = \"github-buttons-script-id\";\n document.body.appendChild(script);\n\n return function cleanup() {\n document.body.classList.remove(\"presentation-page\");\n document.body.classList.remove(\"sidebar-collapse\");\n\n // we need to remove the script when we change the page\n script.parentNode.removeChild(script);\n };\n });\n\n return (\n <>\n \n Terms and Conditions | Good Surf Now!\n \n \n \n \n \n \n \n \n
\n \n \n \n
\n \n )\n}\n\nexport default TermsAndConditions;","import React, { useState } from \"react\";\nimport {\n FormFeedback,\n FormGroup,\n Input,\n Label,\n InputGroup,\n InputGroupText,\n} from \"reactstrap\";\nimport { FaEye, FaEyeSlash } from \"react-icons/fa\"; // Import icons\n\nconst TextInput = ({\n label,\n placeholder,\n type,\n inputRef,\n name,\n invalid,\n error,\n isPassword, // New prop to determine if the field is a password field\n ...props\n}) => {\n const [showPassword, setShowPassword] = useState(false); // State to toggle password visibility\n const { ref, ...inputProps } = inputRef || { ref: null };\n\n // Determine the input type (text/password)\n const inputType = isPassword ? (showPassword ? \"text\" : \"password\") : type;\n\n return (\n \n \n \n \n {isPassword && (\n setShowPassword(!showPassword)}\n style={{\n cursor: \"pointer\",\n display: \"flex\", // Use Flexbox to center content\n justifyContent: \"center\", // Horizontally center\n alignItems: \"center\", // Vertically center\n padding: \"0.5rem\", // Optional: Adjust padding to make the click area larger\n width: \"40px\",\n }}\n >\n {showPassword ? : }\n \n )}\n {error ? error : \"something went wrong!\"}\n \n \n \n );\n};\n\nexport default TextInput;\n","import React, { useEffect, useState } from \"react\";\nimport { Link, useHistory } from \"react-router-dom\";\nimport {\n Row,\n Col,\n Container,\n Form,\n Button,\n Spinner,\n} from \"reactstrap\";\nimport \"./EmailVerificationSection.scss\";\nimport TextInput from \"components/common/Form/TextInput/TextInput\";\nimport { useForm } from \"react-hook-form\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { confirm } from \"redux/features/auth/authSlice\";\nimport { autoSignIn, clearAuthError } from \"redux/features/auth/authSlice\";\nimport { getUser } from \"redux/features/user/userSlice\";\nimport { Hub } from \"aws-amplify\";\nimport { resendCode } from \"redux/features/auth/authSlice\";\n\nconst EmailVerificationSection = ({ data }) => {\n const dispatch = useDispatch();\n const authInfo = useSelector((state) => state?.authInfo);\n const history = useHistory(); \n const [loading, setLoading] = useState(false)\n\n const {\n register,\n handleSubmit,\n // watch,\n formState: { errors },\n } = useForm({\n // mode: \"onChange\",\n });\n\n useEffect(()=> {\n dispatch(clearAuthError());\n }, []);\n \n useEffect(() => {\n const hubListenerCancelToken = Hub.listen(\"auth\", ({ payload }) => {\n const { event } = payload;\n if (event === \"autoSignIn\") {\n const user = payload.data;\n dispatch(\n autoSignIn({\n email: user?.attributes?.email,\n emailVerified: user?.attributes?.email_verified,\n userId: user?.attributes[\"custom:gsnUserId\"],\n signedIn: true,\n })\n );\n dispatch(getUser(user?.attributes[\"custom:gsnUserId\"]));\n\n history.push(\"/packages\");\n // assign user\n } else if (event === \"autoSignIn_failure\") {\n // redirect to sign in page\n history.push(\"/sign-in\");\n } else {\n console.log(event);\n }\n });\n\n return () => {\n hubListenerCancelToken();\n };\n }, []);\n\n const onSubmit = (data) => {\n setLoading(true);\n dispatch(clearAuthError());\n dispatch(\n confirm({\n email: authInfo?.info?.email,\n code: data?.code,\n })\n ).unwrap().then().catch((e) => {\n console.log(e.message);\n setLoading(false);\n })\n };\n const handleClickResend = () => {\n dispatch(resendCode({ email: authInfo?.info?.email }));\n };\n return (\n
\n \n \n \n

Email Verification

\n \n
\n \n \n

\n Your 6-digit code has been sent! Please check your email, including your spam folder, if you don't see it right away\n

\n \n
\n
\n {/* \n \n
\n \n Almost there! We just sent you a 6-digit code. Please check your\n email then enter the code below\n \n
\n \n
*/}\n \n \n
\n \n {authInfo?.error?.message && (\n \n {authInfo?.error?.message}\n \n )}\n \n
\n \n Didn't receive a code ?{\" \"}\n \n RESEND\n \n \n
\n \n {/*
*/}\n \n \n \n
\n );\n};\nexport default EmailVerificationSection;\n\n","import React, { useEffect, useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { Helmet } from \"react-helmet-async\";\nimport FooterBlack from \"components/Footers/FooterBlack.js\";\nimport GoodSurfNavBar from \"../components/Navbars/GoodSurfNavBar.js\";\nimport ApiService from \"services/ApiService.js\";\nimport _ from \"lodash\";\nimport LocationFooter from \"../components/Locations/LocationFooter.js\";\nimport EmailVerificationSection from \"./email-verification-sections/EmailVerificationSection.js\";\nimport GoodSurfNavBarProd from \"components/Navbars/GoodSurfNavBarProd.js\";\n\nfunction EmailVerification() {\n const history = useHistory();\n const [locations, setLocations] = useState([]);\n\n useEffect(() => {\n (async function callApi() {\n try {\n const locations = await ApiService.get(\"locations?_limit=-1\");\n setLocations(_.orderBy(locations, (item) => item.order));\n } catch (e) {\n console.log(e);\n }\n })();\n }, []);\n useEffect(() => {\n document.body.classList.add(\"presentation-page\");\n document.body.classList.add(\"sidebar-collapse\");\n document.documentElement.classList.remove(\"nav-open\");\n window.scrollTo(0, 0);\n document.body.scrollTop = 0;\n\n // we need to add a script for the github buttons\n let script = document.createElement(\"script\");\n script.src = \"https://buttons.github.io/buttons.js\";\n script.id = \"github-buttons-script-id\";\n document.body.appendChild(script);\n\n return function cleanup() {\n document.body.classList.remove(\"presentation-page\");\n document.body.classList.remove(\"sidebar-collapse\");\n\n // we need to remove the script when we change the page\n script.parentNode.removeChild(script);\n };\n });\n\n return (\n <>\n {/* */}\n \n Good Surf Now!\n \n \n \n \n \n \n \n \n
\n \n \n \n
\n \n );\n}\n\nexport default EmailVerification;\n","import React, { useEffect } from \"react\";\nimport { Link, useHistory } from \"react-router-dom\";\nimport { Row, Col, Container, Form, Button, Spinner } from \"reactstrap\";\nimport \"./ResetPasswordSection.scss\";\nimport TextInput from \"components/common/Form/TextInput/TextInput\";\nimport { useForm } from \"react-hook-form\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { resetPassword } from \"redux/features/auth/authSlice\";\nimport { forgotPassword } from \"redux/features/auth/authSlice\";\n\nconst ResetPasswordSection = ({ data }) => {\n const dispatch = useDispatch();\n const user = useSelector((state) => state?.authInfo?.info);\n const authInfo = useSelector((state) => state?.authInfo);\n const error = useSelector((state) => state?.authInfo?.error);\n const history = useHistory();\n\n const {\n register,\n handleSubmit,\n // watch,\n formState: { errors },\n } = useForm({\n // mode: \"onChange\",\n });\n\n useEffect(() => {\n if (user?.email && !user?.pwdResetRequested) {\n history.push(\"/sign-in\");\n }\n }, [user?.email, user?.pwdResetRequested]);\n\n const onSubmit = (data) => {\n dispatch(\n resetPassword({\n email: user?.email,\n code: data?.code,\n password: data?.password,\n })\n );\n };\n\n const handleClickResend = () => {\n dispatch(forgotPassword({ email: user?.email }));\n };\n return (\n
\n \n \n \n

Reset Password

\n \n
\n
\n \n \n

\n We've sent a single-use code to your email, please enter it\n below. If it doesn't arrive check your spam or{\" \"}\n \n resend\n \n

\n \n
\n
\n \n \n
\n \n \n \n {error?.message && (\n \n {error?.message}\n \n )}\n \n \n
\n \n go to sign in\n \n
\n \n
\n
\n
\n );\n};\nexport default ResetPasswordSection;\n","import React, { useEffect, useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { Helmet } from \"react-helmet-async\";\nimport FooterBlack from \"components/Footers/FooterBlack.js\";\nimport GoodSurfNavBar from \"../components/Navbars/GoodSurfNavBar.js\";\nimport ApiService from \"services/ApiService.js\";\nimport _ from \"lodash\";\nimport LocationFooter from \"../components/Locations/LocationFooter.js\";\nimport ResetPasswordSection from \"./reset-password-sections/ResetPasswordSection.js\";\nimport GoodSurfNavBarProd from \"components/Navbars/GoodSurfNavBarProd.js\";\n\nfunction ResetPassword() {\n const history = useHistory();\n const [locations, setLocations] = useState([]);\n\n useEffect(() => {\n (async function callApi() {\n try {\n const locations = await ApiService.get(\"locations?_limit=-1\");\n setLocations(_.orderBy(locations, (item) => item.order));\n } catch (e) {\n console.log(e);\n }\n })();\n }, []);\n useEffect(() => {\n document.body.classList.add(\"presentation-page\");\n document.body.classList.add(\"sidebar-collapse\");\n document.documentElement.classList.remove(\"nav-open\");\n window.scrollTo(0, 0);\n document.body.scrollTop = 0;\n\n // we need to add a script for the github buttons\n let script = document.createElement(\"script\");\n script.src = \"https://buttons.github.io/buttons.js\";\n script.id = \"github-buttons-script-id\";\n document.body.appendChild(script);\n\n return function cleanup() {\n document.body.classList.remove(\"presentation-page\");\n document.body.classList.remove(\"sidebar-collapse\");\n\n // we need to remove the script when we change the page\n script.parentNode.removeChild(script);\n };\n });\n\n return (\n <>\n {/* */}\n \n Good Surf Now!\n \n \n \n \n \n \n \n \n
\n \n \n \n
\n \n );\n}\n\nexport default ResetPassword;\n","import Description from \"components/Description/Description\";\nimport Axios from \"axios\";\nimport React, {useState} from \"react\";\nimport {\n Button,\n FormGroup,\n Form,\n Input,\n InputGroupAddon,\n InputGroupText,\n InputGroup,\n Container,\n Row,\n Col\n} from 'reactstrap';\nimport \"./ContactUsSection.scss\";\n\nconst ContactUsSection = () => {\n const [nameFocus, setNameFocus] = useState(false);\n const [emailFocus, setEmailFocus] = useState(false);\n const [disabled, setDisabled] = useState(false);\n\n const handleSubmit = async (e) => {\n e.preventDefault();\n setDisabled(true);\n const results = await Axios.post(`https://10f5iarxy9.execute-api.ap-southeast-2.amazonaws.com/prod/email`,{\n name: e.target.name.value,\n email: e.target.email.value,\n body: e.target.message.value,\n subject: 'Support Request'\n },{headers:{\n 'X-Api-Key': 'ZdoncwT4zd2IIsftcLaQU6Bq7c3avkIv1Il36jG0'\n }}\n );\n document.getElementById(\"contact-form\").reset();\n setDisabled(false);\n }\n return (\n
\n \n \n \n
\n Send us a message\n
\n \n
\n \n \n {/*

Send us a message

*/}\n \n \n \n
\n {/*
\n \n \n \n \n \n \n \n setNameFocus(true)}\n onBlur={() => setNameFocus(false)}\n >\n \n \n \n \n \n \n \n \n setEmailFocus(true)}\n onBlur={() => setEmailFocus(false)}\n >\n \n \n \n \n \n
\n \n Submit\n \n
\n */}\n \n
\n
\n
\n );\n};\nexport default ContactUsSection;\n","import GoodSurfNavBar from 'components/Navbars/GoodSurfNavBar';\nimport React, { useEffect, useState } from 'react';\nimport _ from 'lodash';\n// import { useHistory } from 'react-router-dom';\nimport ApiService from 'services/ApiService.js';\nimport LocationFooter from '../components/Locations/LocationFooter';\nimport FooterBlack from \"components/Footers/FooterBlack.js\";\nimport ContactUsSection from './contact-us-sections/ContactUsSection';\nimport { Helmet } from 'react-helmet-async';\nimport GoodSurfNavBarProd from 'components/Navbars/GoodSurfNavBarProd';\n\nconst ContactUs = () => {\n // const history = useHistory();\n const [data, setData] = useState();\n const [locations, setLocations] = useState();\n\n useEffect(() => {\n (async function callApi () {\n const data = await ApiService.get('terms-and-conditions');\n setData(data);\n })();\n }, []);\n\n useEffect(() => {\n (async function callApi () {\n const data = await ApiService.get('locations?_limit=-1');\n setLocations(_.orderBy(data, (item) => item.order));\n })();\n }, []);\n\n useEffect(() => {\n document.body.classList.add(\"presentation-page\");\n document.body.classList.add(\"sidebar-collapse\");\n document.documentElement.classList.remove(\"nav-open\");\n window.scrollTo(0, 0);\n document.body.scrollTop = 0;\n \n // we need to add a script for the github buttons\n let script = document.createElement(\"script\");\n script.src = \"https://buttons.github.io/buttons.js\";\n script.id = \"github-buttons-script-id\";\n document.body.appendChild(script);\n \n return function cleanup() {\n document.body.classList.remove(\"presentation-page\");\n document.body.classList.remove(\"sidebar-collapse\");\n \n // we need to remove the script when we change the page\n script.parentNode.removeChild(script);\n };\n });\n\n return (\n <>\n \n Contact Us | Good Surf Now!\n \n \n \n \n \n \n \n \n
\n \n \n \n
\n \n )\n}\n\nexport default ContactUs;","import React, { useEffect } from \"react\";\nimport { Link, useHistory } from \"react-router-dom\";\nimport { Row, Col, Container, Form, Button, Spinner } from \"reactstrap\";\nimport \"./SignInSection.scss\";\nimport TextInput from \"components/common/Form/TextInput/TextInput\";\nimport { useForm } from \"react-hook-form\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { signIn, clearAuthError, clearPwdRestReq } from \"../../redux/features/auth/authSlice\";\nimport constants from \"../../constants\";\n\nconst SignInSection = ({ data }) => {\n const dispatch = useDispatch();\n const authInfo = useSelector((state) => state?.authInfo);\n // const userInfo = useSelector((state) => state?.user?.info);\n const history = useHistory();\n\n const {\n register,\n handleSubmit,\n // watch,\n formState: { errors },\n } = useForm({\n // mode: \"onChange\",\n });\n useEffect(()=> {\n dispatch(clearAuthError());\n }, []);\n useEffect(() => {\n if (authInfo?.info?.email && authInfo?.info?.signedIn) {\n history.push(\"/\");\n }\n if (\n authInfo?.info?.email &&\n authInfo?.error?.code ===\n constants.AmplifyExceptions.USER_NOT_CONFIRMED_EXCEPTION\n ) {\n history.push(\"/verify-email\");\n }\n }, [authInfo?.info?.email, authInfo?.info?.signedIn, authInfo?.error?.code]);\n\n const onSubmit = async (data) => {\n // console.log(data);\n dispatch(clearAuthError());\n dispatch(signIn({ email: data?.email, password: data?.password }));\n // clear auth error\n };\n return (\n
\n \n \n \n

Sign In

\n \n
\n
\n \n \n
\n \n \n {authInfo?.error?.message && (\n \n {authInfo?.error?.message}\n \n )}\n \n \n
\n \n Create Account\n \n {\n dispatch(clearPwdRestReq());\n history.push(\"/forgot-password\");\n }}\n className=\"forgot-password\"\n color=\"neutral\"\n // tag={Link}\n // to=\"/forgot-password\"\n >\n Forgot Password?\n \n
\n {/*
*/}\n \n
\n
\n
\n );\n};\nexport default SignInSection;\n","import React, { useEffect, useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { Helmet } from \"react-helmet-async\";\nimport FooterBlack from \"components/Footers/FooterBlack.js\";\nimport GoodSurfNavBar from \"../components/Navbars/GoodSurfNavBar.js\";\nimport ApiService from \"services/ApiService.js\";\nimport _ from \"lodash\";\nimport LocationFooter from \"../components/Locations/LocationFooter.js\";\nimport SignInSection from \"./sign-in-sections/SignInSection.js\";\nimport GoodSurfNavBarProd from \"components/Navbars/GoodSurfNavBarProd.js\";\n\nfunction SignIn() {\n const history = useHistory();\n const [locations, setLocations] = useState([]);\n\n useEffect(() => {\n (async function callApi() {\n try {\n const locations = await ApiService.get(\"locations?_limit=-1\");\n setLocations(_.orderBy(locations, (item) => item.order));\n } catch (e) {\n console.log(e);\n }\n })();\n }, []);\n useEffect(() => {\n document.body.classList.add(\"presentation-page\");\n document.body.classList.add(\"sidebar-collapse\");\n document.documentElement.classList.remove(\"nav-open\");\n window.scrollTo(0, 0);\n document.body.scrollTop = 0;\n\n // we need to add a script for the github buttons\n let script = document.createElement(\"script\");\n script.src = \"https://buttons.github.io/buttons.js\";\n script.id = \"github-buttons-script-id\";\n document.body.appendChild(script);\n\n return function cleanup() {\n document.body.classList.remove(\"presentation-page\");\n document.body.classList.remove(\"sidebar-collapse\");\n\n // we need to remove the script when we change the page\n script.parentNode.removeChild(script);\n };\n });\n\n return (\n <>\n {/* */}\n \n Good Surf Now!\n \n \n \n \n \n \n \n \n
\n \n \n \n
\n \n );\n}\n\nexport default SignIn;\n","import React from \"react\";\nimport { FormFeedback, FormGroup, Input, Label } from \"reactstrap\";\n\nconst CheckBox = ({\n label,\n placeholder,\n inputRef,\n name,\n content,\n invalid,\n error,\n ...props\n}) => {\n const { ref, ...inputProps } = inputRef || { ref: null };\n return (\n \n \n \n {error ? error : \"something went wrong!\"}\n \n );\n};\n\nexport default CheckBox;\n","import React, { useEffect, useState } from \"react\";\nimport { Link, useHistory } from \"react-router-dom\";\nimport { useForm } from \"react-hook-form\";\nimport {\n Row,\n Col,\n Container,\n Form,\n Button,\n Modal,\n ModalHeader,\n ModalBody,\n ModalFooter,\n FormFeedback,\n Spinner,\n} from \"reactstrap\";\nimport \"./SignUpSection.scss\";\nimport { useSelector, useDispatch } from \"react-redux\";\nimport TextInput from \"components/common/Form/TextInput/TextInput\";\nimport CheckBox from \"components/common/Form/CheckBox/CheckBox\";\nimport { signUp, clearAuthError } from \"redux/features/auth/authSlice\";\nimport { FaEye, FaEyeSlash } from \"react-icons/fa\";\nimport Description from \"components/Description/Description\";\nimport ApiService from 'services/ApiService.js';\n\nconst SignUpSection = () => {\n const [isOpen, setIsOpen] = useState(false);\n const [termsAccepted, setTermsAccepted] = useState(false);\n const authInfo = useSelector((state) => state?.authInfo);\n const [showPassword, setShowPassword] = useState(false);\n const [showConfirmPassword, setShowConfirmPassword] = useState(false);\n const [data, setData] = useState();\n const dispatch = useDispatch();\n const history = useHistory();\n\n useEffect(() => {\n (async function callApi() {\n const data = await ApiService.get('terms-and-conditions');\n setData(data);\n })();\n}, []);\n\n // useEffect(() => {\n // if (authInfo?.info?.email && !authInfo?.info?.emailVerified) {\n // history.push(\"/verify-email\");\n // }\n // }, [authInfo?.info?.email, authInfo?.info?.emailVerified]);\n\n const {\n register,\n handleSubmit,\n watch,\n formState: { errors },\n } = useForm({\n mode: \"onChange\",\n });\n\n const password = watch(\"password\");\n\n useEffect(() => {\n dispatch(clearAuthError());\n }, []);\n\n const onSubmit = async (data) => {\n dispatch(clearAuthError());\n dispatch(\n signUp({\n email: data?.email,\n password: data?.password,\n firstName: data?.firstName,\n lastName: data?.lastName,\n })\n ).unwrap().then((resp) => {\n if (resp?.email) {\n history.push(\"/verify-email\");\n }\n })\n };\n\n const handleShowModal = () => {\n setIsOpen(!isOpen);\n };\n\n const handleAcceptTerm = () => {\n setTermsAccepted(true);\n };\n\n const handleDeclineTerm = () => {\n setTermsAccepted(false);\n };\n\n const renderModal = () => {\n return (\n \n Terms And Conditions\n \n \n \n {/* \n \n \n */}\n \n );\n };\n\n return (\n
\n {renderModal()}\n \n \n \n

Sign Up

\n \n
\n \n \n

\n To get started, create a free account\n

\n \n
\n
\n \n \n
\n \n \n \n ,.?~\\\\/-]{8,40}$/,\n message:\n \"Password should be 8 to 40 characters and contain at least one uppercase, one lowercase, and one number\",\n },\n })}\n name=\"password\"\n invalid={!!errors.password}\n error={errors?.password?.message}\n isPassword={true} // For confirm password as well\n />\n \n value === password || \"Passwords do not match\",\n })}\n name=\"confirmPassword\"\n invalid={!!errors.confirmPassword}\n error={errors?.confirmPassword?.message}\n isPassword={true} // For confirm password as well\n />\n \n I agree to the{\" \"}\n \n terms and conditions\n \n .\n \n }\n />\n {authInfo?.error?.message ? (\n {authInfo?.error?.message}\n ) : (\n
\n )}\n {authInfo?.error?.message && (\n \n {authInfo?.error?.message}\n \n )}\n \n \n
\n \n I have an Account\n \n
\n \n \n \n
\n );\n};\nexport default SignUpSection;\n","import React, { useEffect, useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { Helmet } from \"react-helmet-async\";\nimport FooterBlack from \"components/Footers/FooterBlack.js\";\nimport GoodSurfNavBar from \"../components/Navbars/GoodSurfNavBar.js\";\nimport ApiService from \"services/ApiService.js\";\nimport _ from \"lodash\";\nimport LocationFooter from \"../components/Locations/LocationFooter.js\";\nimport SignUpSection from \"./sign-up-sections/SignUpSection.js\";\nimport GoodSurfNavBarProd from \"components/Navbars/GoodSurfNavBarProd.js\";\n\nfunction SignUp() {\n const history = useHistory();\n const [locations, setLocations] = useState([]);\n\n useEffect(() => {\n (async function callApi() {\n try {\n const locations = await ApiService.get(\"locations?_limit=-1\");\n setLocations(_.orderBy(locations, (item) => item.order));\n } catch (e) {\n console.log(e);\n }\n })();\n }, []);\n useEffect(() => {\n document.body.classList.add(\"presentation-page\");\n document.body.classList.add(\"sidebar-collapse\");\n document.documentElement.classList.remove(\"nav-open\");\n window.scrollTo(0, 0);\n document.body.scrollTop = 0;\n\n // we need to add a script for the github buttons\n let script = document.createElement(\"script\");\n script.src = \"https://buttons.github.io/buttons.js\";\n script.id = \"github-buttons-script-id\";\n document.body.appendChild(script);\n\n return function cleanup() {\n document.body.classList.remove(\"presentation-page\");\n document.body.classList.remove(\"sidebar-collapse\");\n\n // we need to remove the script when we change the page\n script.parentNode.removeChild(script);\n };\n });\n\n const handleSelectPost = (post) => {\n // should redirect to the post page\n history.push({\n pathname: `/post/${post.slug}`,\n state: { post },\n });\n };\n return (\n <>\n {/* */}\n \n Good Surf Now!\n \n \n \n \n \n \n \n \n
\n \n \n \n
\n \n );\n}\n\nexport default SignUp;\n","import React, { useEffect, useState } from \"react\";\nimport { Link, useHistory } from \"react-router-dom\";\nimport { Row, Col, Container, Form, Button, FormFeedback } from \"reactstrap\";\nimport \"./ForgotPasswordSection.scss\";\nimport TextInput from \"components/common/Form/TextInput/TextInput\";\nimport { useForm } from \"react-hook-form\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { forgotPassword, clearAuthError } from \"redux/features/auth/authSlice\";\n\nconst ForgotPasswordSection = () => {\n const dispatch = useDispatch();\n const user = useSelector((state) => state?.authInfo?.info);\n const error = useSelector((state) => state?.authInfo?.error);\n const history = useHistory();\n useEffect(()=> {\n dispatch(clearAuthError());\n }, []);\n useEffect(() => {\n if (user?.pwdResetRequested) {\n history.push(\"/reset-password\");\n }\n }, [user?.pwdResetRequested]);\n\n const {\n register,\n handleSubmit,\n // watch,\n formState: { errors },\n } = useForm({\n // mode: \"onChange\",\n });\n\n const onSubmit = (data) => {\n // console.log(data);\n dispatch(clearAuthError());\n dispatch(forgotPassword({ email: data?.email }));\n };\n return (\n
\n \n \n \n

Forgot Password

\n \n
\n
\n \n \n
\n \n {error?.message && (\n \n {error?.message}\n \n )}\n \n \n
\n \n go to sign in\n \n
\n \n
\n
\n
\n );\n};\nexport default ForgotPasswordSection;\n","import React, { useEffect, useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { Helmet } from \"react-helmet-async\";\nimport FooterBlack from \"components/Footers/FooterBlack.js\";\nimport GoodSurfNavBar from \"../components/Navbars/GoodSurfNavBar.js\";\nimport ApiService from \"services/ApiService.js\";\nimport _ from \"lodash\";\nimport LocationFooter from \"../components/Locations/LocationFooter.js\";\nimport ForgotPasswordSection from \"./forgot-password-sections/ForgotPasswordSection\";\nimport GoodSurfNavBarProd from \"components/Navbars/GoodSurfNavBarProd.js\";\n\nfunction ForgotPassword() {\n const history = useHistory();\n const [locations, setLocations] = useState([]);\n\n useEffect(() => {\n (async function callApi() {\n try {\n const locations = await ApiService.get(\"locations?_limit=-1\");\n setLocations(_.orderBy(locations, (item) => item.order));\n } catch (e) {\n console.log(e);\n }\n })();\n }, []);\n useEffect(() => {\n document.body.classList.add(\"presentation-page\");\n document.body.classList.add(\"sidebar-collapse\");\n document.documentElement.classList.remove(\"nav-open\");\n window.scrollTo(0, 0);\n document.body.scrollTop = 0;\n\n // we need to add a script for the github buttons\n let script = document.createElement(\"script\");\n script.src = \"https://buttons.github.io/buttons.js\";\n script.id = \"github-buttons-script-id\";\n document.body.appendChild(script);\n\n return function cleanup() {\n document.body.classList.remove(\"presentation-page\");\n document.body.classList.remove(\"sidebar-collapse\");\n\n // we need to remove the script when we change the page\n script.parentNode.removeChild(script);\n };\n });\n\n const handleSelectPost = (post) => {\n // should redirect to the post page\n history.push({\n pathname: `/post/${post.slug}`,\n state: { post },\n });\n };\n return (\n <>\n {/* */}\n \n Good Surf Now!\n \n \n \n \n \n \n \n \n
\n \n \n \n
\n \n );\n}\n\nexport default ForgotPassword;\n","import React, { useEffect } from \"react\";\nimport { Link, useHistory } from \"react-router-dom\";\nimport {\n Row,\n Col,\n Container,\n Form,\n Button,\n Label,\n Card,\n CardBody,\n CardText,\n CardTitle,\n} from \"reactstrap\";\nimport \"./SubscriptionSection.scss\";\nimport TextInput from \"components/common/Form/TextInput/TextInput\";\nimport { useForm } from \"react-hook-form\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { confirm } from \"redux/features/auth/authSlice\";\n\nconst SubscriptionSection = ({ data }) => {\n const dispatch = useDispatch();\n const user = useSelector((state) => state?.authInfo?.info);\n const history = useHistory();\n\n const {\n register,\n handleSubmit,\n // watch,\n formState: { errors },\n } = useForm({\n // mode: \"onChange\",\n });\n\n // useEffect(() => {\n // if (user?.email && user?.emailVerified) {\n // history.push(\"/sign-in\");\n // } else if (!user?.email && !user?.emailVerified) {\n // history.push(\"/\");\n // }\n // }, [user?.email, user?.emailVerified]);\n\n const onSubmit = (data) => {\n dispatch(\n confirm({\n email: user?.email,\n code: data?.code,\n })\n );\n };\n return (\n
\n \n \n \n

Select Subscription

\n \n
\n \n \n
\n \n \n Yearly\n
\n \n
\n
\n
\n \n \n Monthly\n
\n \n
\n
\n
\n
\n \n
\n
\n
\n );\n};\nexport default SubscriptionSection;\n","import React, { useEffect, useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { Helmet } from \"react-helmet-async\";\nimport FooterBlack from \"components/Footers/FooterBlack.js\";\nimport GoodSurfNavBar from \"../components/Navbars/GoodSurfNavBar.js\";\nimport ApiService from \"services/ApiService.js\";\nimport _ from \"lodash\";\nimport LocationFooter from \"../components/Locations/LocationFooter.js\";\nimport SubscriptionsSection from \"./subcription-sections/SubscriptionSection.js\";\nimport GoodSurfNavBarProd from \"components/Navbars/GoodSurfNavBarProd.js\";\n\nfunction Subscriptions() {\n const history = useHistory();\n const [locations, setLocations] = useState([]);\n\n useEffect(() => {\n (async function callApi() {\n try {\n const locations = await ApiService.get(\"locations?_limit=-1\");\n setLocations(_.orderBy(locations, (item) => item.order));\n } catch (e) {\n console.log(e);\n }\n })();\n }, []);\n useEffect(() => {\n document.body.classList.add(\"presentation-page\");\n document.body.classList.add(\"sidebar-collapse\");\n document.documentElement.classList.remove(\"nav-open\");\n window.scrollTo(0, 0);\n document.body.scrollTop = 0;\n\n // we need to add a script for the github buttons\n let script = document.createElement(\"script\");\n script.src = \"https://buttons.github.io/buttons.js\";\n script.id = \"github-buttons-script-id\";\n document.body.appendChild(script);\n\n return function cleanup() {\n document.body.classList.remove(\"presentation-page\");\n document.body.classList.remove(\"sidebar-collapse\");\n\n // we need to remove the script when we change the page\n script.parentNode.removeChild(script);\n };\n });\n\n return (\n <>\n {/* */}\n \n Good Surf Now!\n \n \n \n \n \n \n \n \n
\n \n \n \n
\n \n );\n}\n\nexport default Subscriptions;\n","import React, { useState, useEffect } from \"react\";\nimport { Row, Col, Container, Spinner } from \"reactstrap\";\nimport { useHistory } from \"react-router-dom\";\nimport \"./PaymentReturnSection.scss\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport amplifyApiService from \"services/AmplifyApiService\";\nimport { getUser } from \"redux/features/user/userSlice\";\n\nconst PaymentReturnSection = ({ data }) => {\n const [status, setStatus] = useState('');\n const history = useHistory();\n const dispatch = useDispatch();\n const [customerEmail, setCustomerEmail] = useState(\"\");\n const subscription = useSelector((state) => state.subscription.info);\n const user = useSelector((state) => state?.authInfo?.info);\n const uss = useSelector((state) => state?.user?.info);\n // console.log(user);\n useEffect(() => {\n if (!user?.userId || !subscription?.selectedPackage) return;\n\n const queryString = window.location.search;\n const urlParams = new URLSearchParams(queryString);\n const sessionId = urlParams.get(\"session_id\");\n\n const callApi = async () => {\n // can pass the gsn username to the backend so that we can process both information\n const results = await amplifyApiService.get(\n `payments/status?session_id=${sessionId}&user_id=${user?.userId}&package_id=${subscription?.selectedPackage}`\n );\n if (results) {\n if (results?.data?.status === \"complete\") {\n dispatch(getUser(user?.userId));\n }\n setStatus(results?.data?.status);\n\n setCustomerEmail(results?.data?.customer_email);\n }\n };\n\n callApi().catch((err) => {\n console.log(err);\n });\n \n }, [user?.userId, subscription?.selectedPackage]);\n\n const handleClick = () => {\n history.push(\"/post/gsn-cams-project\");\n };\n\n const handleTabClick = () => {\n history.push(\"/post/add-app-24\");\n };\n\n const handleForecastClick = () => {\n history.push(\"/post/how_to\");\n };\n if (status === \"open\") {\n history.push(\"/checkout\");\n return null;\n }\n if (status === \"complete\") {\n return (\n \n \n \n \n

Payment Successful

\n \n
\n \n \n
\n

\n Chuurrr {uss?.first_name}\n

\n

\n Your GOOD SURF NOW premium membership is now active. Get\n frothy with access to our growing network of HD-as home grown{\" \"}\n \n surf cams - \n {\" \"}\n YEEEEWWWW!!!\n

\n

\n Here’s some things you might like to know:\n

\n

\n \n How to save GSN to your phone/tablet like an app\n \n

\n

\n \n How to read the forecasts (if you’re new to GSN)! \n \n

\n
\n

\n If you have any questions hit us up on the contact page at the\n bottom of the page or at{\" \"}\n support@goodsurfnow.com{\" \"}\n

\n

\n Chuuurrr again frother, you rule!\n

\n

\n Benno\n

\n
\n
\n history.push(\"/\")}\n >\n GET STARTED!\n

\n \n
\n
\n
\n );\n }\n return (\n
\n \n \n \n

\n \n Payment Processing \n \n \n \n

\n \n
\n \n \n \n
\n
\n );\n};\nexport default PaymentReturnSection;\n","import React, { useEffect, useState } from \"react\";\nimport { Helmet } from \"react-helmet-async\";\nimport FooterBlack from \"components/Footers/FooterBlack.js\";\nimport GoodSurfNavBar from \"../components/Navbars/GoodSurfNavBar.js\";\nimport ApiService from \"services/ApiService.js\";\nimport _ from \"lodash\";\nimport LocationFooter from \"../components/Locations/LocationFooter.js\";\nimport PaymentReturnSection from \"./payment-return-sections/PaymentReturnSection.js\";\nimport GoodSurfNavBarProd from \"components/Navbars/GoodSurfNavBarProd.js\";\n\nfunction PaymentReturn() {\n const [locations, setLocations] = useState([]);\n\n useEffect(() => {\n (async function callApi() {\n try {\n const locations = await ApiService.get(\"locations?_limit=-1\");\n setLocations(_.orderBy(locations, (item) => item.order));\n } catch (e) {\n console.log(e);\n }\n })();\n }, []);\n useEffect(() => {\n document.body.classList.add(\"presentation-page\");\n document.body.classList.add(\"sidebar-collapse\");\n document.documentElement.classList.remove(\"nav-open\");\n window.scrollTo(0, 0);\n document.body.scrollTop = 0;\n\n // we need to add a script for the github buttons\n let script = document.createElement(\"script\");\n script.src = \"https://buttons.github.io/buttons.js\";\n script.id = \"github-buttons-script-id\";\n document.body.appendChild(script);\n\n return function cleanup() {\n document.body.classList.remove(\"presentation-page\");\n document.body.classList.remove(\"sidebar-collapse\");\n\n // we need to remove the script when we change the page\n script.parentNode.removeChild(script);\n };\n });\n\n return (\n <>\n {/* */}\n \n Good Surf Now!\n \n \n \n \n \n \n \n \n
\n \n \n \n
\n \n );\n}\n\nexport default PaymentReturn;\n","import React from \"react\";\nimport { Spinner } from \"reactstrap\";\nimport \"./CenterSpinner.scss\";\n\nconst CenterSpinner = ({ size, type }) => {\n return (\n
\n \n
\n );\n};\n\nexport default CenterSpinner;\n","import React, { useState, useEffect } from \"react\";\nimport { Row, Col, Container } from \"reactstrap\";\nimport _ from \"lodash\";\nimport { loadStripe } from \"@stripe/stripe-js\";\nimport {\n EmbeddedCheckoutProvider,\n EmbeddedCheckout,\n} from \"@stripe/react-stripe-js\";\nimport \"./CheckoutSection.scss\";\nimport { useSelector } from \"react-redux\";\nimport amplifyApiService from \"services/AmplifyApiService\";\nimport { ToastContainer, toast } from \"react-toastify\";\nimport \"react-toastify/dist/ReactToastify.css\";\nimport CenterSpinner from \"components/Spinner/CenterSpinner\";\n\nconst stripePromise = loadStripe(process.env.REACT_APP_STRIPE_PUBLIC_KEY);\n\nconst CheckoutSection = ({ data }) => {\n const [clientSecret, setClientSecret] = useState(\"\");\n const user = useSelector((state) => state.authInfo.info);\n const subInfo = useSelector((state) => state.subscription.info);\n\n useEffect(() => {\n if (subInfo?.selectedPackage) {\n const pac = _.find(\n subInfo.packages,\n (_pac) => _pac.id === subInfo.selectedPackage\n );\n if (pac) {\n const callApi = async () => {\n const results = await amplifyApiService.post(\"payments\", {\n priceId: pac.priceId,\n email: user?.email,\n });\n if (results) {\n setClientSecret(results?.data?.clientSecret);\n }\n };\n\n callApi().catch((err) => {\n toast.warn(\"Already subscribed\", {\n position: \"top-right\",\n autoClose: 5000,\n hideProgressBar: false,\n closeOnClick: true,\n pauseOnHover: true,\n draggable: true,\n progress: undefined,\n theme: \"light\",\n transition: \"Bounce\",\n });\n });\n }\n } else {\n toast.warn(\"Something went wrong\", {\n position: \"top-right\",\n autoClose: 5000,\n hideProgressBar: false,\n closeOnClick: true,\n pauseOnHover: true,\n draggable: true,\n progress: undefined,\n theme: \"light\",\n transition: \"Bounce\",\n });\n }\n // window.location.replace(results?.data?.data?.paymentUrl);\n }, [subInfo?.selectedPackage]);\n return (\n
\n \n \n \n \n

Checkout

\n \n
\n {clientSecret ? (\n \n \n
\n \n \n \n
\n \n
\n ) : (\n
\n \n
\n )}\n
\n
\n );\n};\nexport default CheckoutSection;\n","import React, { useEffect, useState } from \"react\";\nimport { Helmet } from \"react-helmet-async\";\nimport FooterBlack from \"components/Footers/FooterBlack.js\";\nimport ApiService from \"services/ApiService.js\";\nimport _ from \"lodash\";\nimport LocationFooter from \"../components/Locations/LocationFooter.js\";\nimport CheckoutSection from \"./checkout-sections/CheckoutSection.js\";\nimport GoodSurfNavBarProd from \"components/Navbars/GoodSurfNavBarProd.js\";\n\nfunction Checkout() {\n const [locations, setLocations] = useState([]);\n\n useEffect(() => {\n (async function callApi() {\n try {\n const locations = await ApiService.get(\"locations?_limit=-1\");\n setLocations(_.orderBy(locations, (item) => item.order));\n } catch (e) {\n console.log(e);\n }\n })();\n }, []);\n useEffect(() => {\n document.body.classList.add(\"presentation-page\");\n document.body.classList.add(\"sidebar-collapse\");\n document.documentElement.classList.remove(\"nav-open\");\n window.scrollTo(0, 0);\n document.body.scrollTop = 0;\n\n // we need to add a script for the github buttons\n let script = document.createElement(\"script\");\n script.src = \"https://buttons.github.io/buttons.js\";\n script.id = \"github-buttons-script-id\";\n document.body.appendChild(script);\n\n return function cleanup() {\n document.body.classList.remove(\"presentation-page\");\n document.body.classList.remove(\"sidebar-collapse\");\n\n // we need to remove the script when we change the page\n script.parentNode.removeChild(script);\n };\n });\n\n return (\n <>\n {/* */}\n \n Good Surf Now!\n \n \n \n \n \n \n \n \n
\n \n \n \n
\n \n );\n}\n\nexport default Checkout;\n","export default __webpack_public_path__ + \"static/media/shaka.8a552a3f.png\";","import React, { useEffect, useState } from \"react\";\nimport { Row, Col, Container } from \"reactstrap\";\nimport { useHistory } from \"react-router-dom\";\nimport _ from \"lodash\";\nimport \"./PackagesSection.scss\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport {\n selectSubscription,\n getPackages,\n // clearSubscriptionError,\n} from \"redux/features/subscription/subscriptionSlice\";\n// import { ToastContainer, toast } from \"react-toastify\";\nimport \"react-toastify/dist/ReactToastify.css\";\nimport constants, { SubscriptionStatus } from \"../../constants\";\nimport shaka from \"../../assets/icons/shaka.png\";\nimport premium from \"../../assets/logo/gsn_premium_small.png\"\nimport CenterSpinner from \"components/Spinner/CenterSpinner\";\nimport moment from \"moment\";\n\nconst PackagesSection = () => {\n const info = useSelector((state) => state.subscription.info);\n const userInfo = useSelector((state) => state?.user?.info);\n const [monthlyPackage, setMonthlyPackage] = useState(null);\n const today = moment();\n const cutOffDay = moment('31/01/2025', 'DD/MM/YYYY'); // Ensure you specify the format\n const days = cutOffDay.diff(today, 'days'); \n // const [errorVisible, setErrorVisible] = useState(false);\n const dispatch = useDispatch();\n const history = useHistory();\n\n // // Trigger toast if there's an error\n // useEffect(() => {\n // if (error && !errorVisible) {\n // toast.warn(error?.message, {\n // position: \"top-right\",\n // autoClose: 5000, // Close after 5 seconds\n // hideProgressBar: false,\n // closeOnClick: true,\n // pauseOnHover: true,\n // draggable: true,\n // theme: \"light\",\n // transition: \"Bounce\",\n // onClose: handleClickClose, // Close handler for both timeout and manual close\n // });\n // setErrorVisible(true);\n // }\n // }, [error, errorVisible]);\n\n useEffect(() => {\n if (info?.packages?.length) {\n const monthly = _.find(\n info?.packages,\n (pkg) => pkg?.stripe?.price?.recurring?.interval === constants.BillingPeriodUnit.MONTH\n );\n setMonthlyPackage(monthly);\n }\n }, [info?.packages]);\n\n // Fetch packages on mount\n useEffect(() => {\n dispatch(getPackages());\n }, [dispatch]);\n\n // Handle package selection\n const handleSelectPackage = (packageId) => {\n dispatch(selectSubscription(packageId));\n history.push(\"/checkout\");\n };\n\n // Navigate to homepage on skip\n const handleClickSkipNow = () => {\n history.push(\"/\");\n };\n\n // Handle closing the toast and clearing the error\n // const handleClickClose = () => {\n // setErrorVisible(false); // Reset error visibility state\n // dispatch(clearSubscriptionError()); // Clear error from Redux store\n // };\n const renderOGPackage = (pac, index) => {\n return (
\n \n handleSelectPackage(pac?.id)}\n >\n
\n \n
\n The O.G. HOOKUP\n
\n {/*
\n Be one of the first paid subscriber to get\n
*/}\n
\n 40% OFF FOR LIFE*\n
\n
Use code LIFE40 at checkout
\n
\n\n
\n
\n
    \n
  • 14 + Kiwi owned cams
  • \n
  • 144 + High resolution spot forecasts
  • \n {/*
  • Swell alert emails for your region
  • */}\n
  • Links to all local free cams and wave buoys
  • \n
  • Help us support local mahi, like Aroha Surf Club
  • \n
\n
\n
\n NZ${pac?.stripe?.price?.unit_amount / 100}/yearNZ${pac?.stripe?.price?.unit_amount * 0.006}/year ($3/month)\n
\n
\n \n SUBSCRIBE\n
\n
\n
\n
*Terms and conditions apply
\n
14-day trial. Cancel anytime.
\n
\n {/*
{`Cancel auto-renewal anytime in account settings`}
*/}\n
\n
\n
)\n }\n const renderGenericPackage = (pac, index) => {\n return (\n handleSelectPackage(pac?.id)}\n >\n {pac?.promo && monthlyPackage\n ? (\n
\n \n
\n \n SAVE{\" \"}\n {(\n ((monthlyPackage?.stripe?.price?.unit_amount *\n 12 -\n pac?.stripe?.price?.unit_amount) /\n (monthlyPackage?.stripe?.price?.unit_amount *\n 12)) *\n 100\n ).toFixed(0)}\n %\n {\" \"}\n CHUUUURRR!!!\n
\n
\n ) : (\n
\n )}\n\n
\n

{pac.name}

\n

\n {pac.freeTrialDays && userInfo?.status !== SubscriptionStatus.CANCELLED\n ? `${pac.freeTrialDays} - days free trial`\n : \"no trial\"}\n

\n
\n {pac?.promo ? `$${(\n pac?.stripe?.price?.unit_amount /\n (100 * 12)\n ).toFixed(2)}/ month` : `$${(\n pac?.stripe?.price?.unit_amount /\n (100)\n ).toFixed(2)}/ month`}
\n
\n
\n {pac?.promo ? (\n
{`$${(\n pac?.stripe?.price?.unit_amount / 100\n ).toFixed(2)} NZD billed once a ${pac?.stripe?.price?.recurring?.interval\n }`}
\n ) : (\n
{`$${(\n pac?.stripe?.price?.unit_amount / 100\n ).toFixed(2)} NZD billed monthly`}
\n )}\n
\n
{`Cancel auto-renewal anytime in account settings`}
\n
\n
\n )\n }\n return (\n
\n {/* */}\n \n \n \n

Sign up complete!

\n \n
\n \n {info?.packages?.length > 1 ? \n

\n Almost there!!! Please choose a payment option\n

\n : info?.packages?.length === 1 ?\n \n \n
\n \n
    \n
  • \n
    ✔︎
    {days} days of FREE cam access remaining. Subscribe Now to get 40% off for life.
    \n
  • \n
  • \n
    ✔︎
    Weekend Surf Outlook email every Thurs.
    \n
  • \n
\n
\n
:
}\n \n {info?.packages?.length ? (\n \n \n \n {_.map(\n _.orderBy(info?.packages, (p) => p.stripe?.price?.unit_amount, \"desc\"),\n (pac, index) => info?.packages?.length > 1 ? renderGenericPackage(pac, index) : renderOGPackage(pac, index)\n )}\n \n \n \n ) : (\n
\n \n
\n )}\n {/* \n \n
\n \n
\n \n
*/}\n
\n skip for now\n
\n \n
\n );\n};\nexport default PackagesSection;\n","import React, { useEffect, useState } from \"react\";\nimport { Helmet } from \"react-helmet-async\";\nimport FooterBlack from \"components/Footers/FooterBlack.js\";\nimport GoodSurfNavProd from \"../components/Navbars/GoodSurfNavBarProd.js\";\nimport ApiService from \"services/ApiService.js\";\nimport _ from \"lodash\";\nimport LocationFooter from \"../components/Locations/LocationFooter.js\";\nimport PackagesSection from \"./packages-sections/PackagesSection.js\";\nimport GoodSurfNavBarProd from \"../components/Navbars/GoodSurfNavBarProd.js\";\n\nfunction Packages() {\n const [locations, setLocations] = useState([]);\n\n useEffect(() => {\n (async function callApi() {\n try {\n const locations = await ApiService.get(\"locations?_limit=-1\");\n setLocations(_.orderBy(locations, (item) => item.order));\n } catch (e) {\n console.log(e);\n }\n })();\n }, []);\n useEffect(() => {\n document.body.classList.add(\"presentation-page\");\n document.body.classList.add(\"sidebar-collapse\");\n document.documentElement.classList.remove(\"nav-open\");\n window.scrollTo(0, 0);\n document.body.scrollTop = 0;\n\n // we need to add a script for the github buttons\n let script = document.createElement(\"script\");\n script.src = \"https://buttons.github.io/buttons.js\";\n script.id = \"github-buttons-script-id\";\n document.body.appendChild(script);\n\n return function cleanup() {\n document.body.classList.remove(\"presentation-page\");\n document.body.classList.remove(\"sidebar-collapse\");\n\n // we need to remove the script when we change the page\n script.parentNode.removeChild(script);\n };\n });\n\n return (\n <>\n {/* */}\n \n Good Surf Now!\n \n \n \n \n \n \n \n \n
\n \n \n \n
\n \n );\n}\n\nexport default Packages;\n","import React, { useEffect, useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { Row, Col, Container, Button, Label, Spinner } from \"reactstrap\";\nimport \"./AccountSection.scss\";\nimport { useSelector, useDispatch } from \"react-redux\";\nimport amplifyApiService from \"services/AmplifyApiService\";\nimport constants from \"../../constants\";\nimport moment from \"moment\";\nimport { getSubscriptionPosition } from \"tools/utills\";\nimport { getUser } from \"redux/features/user/userSlice\";\nimport { signOut } from \"redux/features/auth/authSlice\";\n\nconst AccountSection = () => {\n const dispatch = useDispatch();\n const user = useSelector((state) => state?.authInfo?.info);\n const uss = useSelector((state) => state?.user?.info);\n const [subscription, setSubscription] = useState();\n const [loading, setLoading] = useState(false);\n const history = useHistory();\n\n useEffect(() => {\n const sub = getSubscriptionPosition(uss);\n setSubscription(sub);\n }, [uss]);\n useEffect(() => {\n return () => {\n setLoading(false);\n };\n }, []);\n\n useEffect(() => {\n if (user?.email && !user?.emailVerified) {\n history.push(\"/verify-email\");\n }\n }, [user?.email, user?.emailVerified]);\n\n useEffect(() => {\n if (user?.userId) {\n dispatch(getUser(user?.userId));\n }\n }, [user?.userId]);\n\n const handleClick = async (e) => {\n e.preventDefault();\n setLoading(true);\n const results = await amplifyApiService.post(\"payments/portal\", {\n email: user?.email,\n });\n if (results) {\n // window.open(results?.data?.billingUrl);\n window.location.href = results?.data?.billingUrl;\n }\n };\n const logOut = async (e) => {\n e.preventDefault();\n history.replace({\n pathname: \"/\",\n });\n dispatch(signOut());\n };\n\n const getPackageName = (unit) => {\n switch (unit) {\n case constants.BillingPeriodUnit.MONTH:\n return \"Monthly\";\n case constants.BillingPeriodUnit.YEAR:\n return \"Yearly\";\n case constants.BillingPeriodUnit.DAY:\n return \"Daily\";\n default:\n return \"\";\n }\n };\n\n const getPremBtn = () => {\n history.push({\n pathname: \"/packages\",\n });\n };\n\n return (\n
\n \n \n \n

My Details

\n \n
\n \n \n
\n \n \n
\n \n
\n \n \n \n
\n \n
\n \n
\n
\n \n
\n \n
\n
\n \n
\n\n {subscription === constants.SubscriptionPosition.EXPIRED ||\n subscription === constants.SubscriptionPosition.OVERDUE ||\n subscription === constants.SubscriptionPosition.DAILY ||\n subscription === constants.SubscriptionPosition.MONTHLY ||\n subscription === constants.SubscriptionPosition.TRIAL ||\n subscription === constants.SubscriptionPosition.YEARLY ? (\n
\n \n \n

My Subscription

\n \n
\n \n \n \n
\n \n
\n \n
\n
\n {/* {uss?.next_billing_date ? <>
:
} */}\n
\n \n {loading ? (\n \n ) : (\n `Manage Subscription ${\" \"}`\n )}\n \n
\n
\n \n Sign Out\n \n
\n
\n \n \n
\n ) : (\n \n \n
\n
\n \n
\n {/* Condition based on Free or Premium Version */}\n \n
\n
\n
\n \n
\n
\n \n
\n )}\n {/* \n \n
\n \n
\n \n
*/}\n \n
\n );\n};\nexport default AccountSection;\n","import React, { useEffect, useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { Helmet } from \"react-helmet-async\";\nimport FooterBlack from \"components/Footers/FooterBlack.js\";\nimport ApiService from \"services/ApiService.js\";\nimport _ from \"lodash\";\nimport LocationFooter from \"../components/Locations/LocationFooter.js\";\nimport AccountSection from \"./account-sections/AccountSection.js\";\nimport GoodSurfNavBarProd from \"../components/Navbars/GoodSurfNavBarProd.js\";\n\nfunction Account() {\n const history = useHistory();\n const [locations, setLocations] = useState([]);\n\n useEffect(() => {\n (async function callApi() {\n try {\n const locations = await ApiService.get(\"locations?_limit=-1\");\n setLocations(_.orderBy(locations, (item) => item.order));\n } catch (e) {\n console.log(e);\n }\n })();\n }, []);\n useEffect(() => {\n document.body.classList.add(\"presentation-page\");\n document.body.classList.add(\"sidebar-collapse\");\n document.documentElement.classList.remove(\"nav-open\");\n window.scrollTo(0, 0);\n document.body.scrollTop = 0;\n\n // we need to add a script for the github buttons\n let script = document.createElement(\"script\");\n script.src = \"https://buttons.github.io/buttons.js\";\n script.id = \"github-buttons-script-id\";\n document.body.appendChild(script);\n\n return function cleanup() {\n document.body.classList.remove(\"presentation-page\");\n document.body.classList.remove(\"sidebar-collapse\");\n\n // we need to remove the script when we change the page\n script.parentNode.removeChild(script);\n };\n });\n\n const handleSelectPost = (post) => {\n // should redirect to the post page\n history.push({\n pathname: `/post/${post.slug}`,\n state: { post },\n });\n };\n return (\n <>\n {/* */}\n \n Good Surf Now!\n \n \n \n \n \n \n \n \n {/* */}\n
\n \n \n \n
\n \n );\n}\n\nexport default Account;\n","import React, { useEffect } from \"react\";\nimport { Route, Redirect, Switch } from \"react-router-dom\";\n\nimport Home from \"views/Home.js\";\nimport Location from \"./views/Location\";\nimport Posts from \"./views/Posts\";\nimport AboutUs from \"./views/AboutUs\";\nimport PrivacyPolicy from \"./views/PrivacyPolicy\";\nimport TermsAndConditions from \"./views/TermsAndConditions\";\nimport EmailVerification from \"views/EmailVerification\";\nimport ResetPassword from \"./views/ResetPassword\";\n// import InstallPWA from './components/InstallPWA/InstallPWA';\nimport ContactUs from \"./views/ContactUs\";\nimport SignIn from \"views/SignIn\";\nimport SignUp from \"views/SignUp\";\nimport ForgotPassword from \"views/ForgotPassword\";\nimport Subscriptions from \"views/Subscriptions\";\nimport PaymentReturn from \"views/PaymentReturn\";\nimport Checkout from \"views/Checkout\";\nimport Packages from \"views/Packages\";\nimport { useDispatch } from \"react-redux\";\nimport { receiveCurrentUser } from \"redux/features/auth/authSlice\";\nimport Account from \"views/Account\";\nimport { getCameras } from \"redux/features/camera/cameraSlice\";\n\nconst Routes = () => {\n const dispatch = useDispatch();\n\n useEffect(() => {\n dispatch(receiveCurrentUser()).unwrap()\n .then((resp) => {\n dispatch(getCameras({\n signedIn: resp?.signedIn,\n }))\n })\n }, []);\n\n return (\n \n } />\n } />\n }\n />\n } />\n }\n />\n }\n />\n }\n />\n }\n />\n } />\n } />\n } />\n } />\n } />\n }\n />\n }\n />\n } />\n } />\n \n \n );\n};\n\nexport default Routes;\n","import React from \"react\";\nimport ReactDOM from \"react-dom/client\";\nimport TagManager from \"react-gtm-module\";\nimport { BrowserRouter } from \"react-router-dom\";\n\n// styles\nimport \"assets/css/bootstrap.min.css\";\nimport \"assets/scss/now-ui-kit.scss?v=1.4.0\";\nimport \"assets/demo/demo.css?v=1.4.0\";\nimport \"assets/demo/react-demo.css?v=1.4.0\";\nimport \"assets/demo/nucleo-icons-page-styles.css?v=1.4.0\";\n// import InstallPWA from './components/InstallPWA/InstallPWA';\nimport { HelmetProvider } from \"react-helmet-async\";\n// import ContactUs from './views/examples/ContactUs';\nimport store from \"./redux/store\";\nimport { Provider } from \"react-redux\";\nimport { configure } from \"amplify/Config\";\nimport Routes from \"routes\";\nimport { PersistGate } from \"redux-persist/integration/react\";\nimport { persistStore } from \"redux-persist\";\n\n// others\nconst tagManagerArgs = {\n gtmId: \"GTM-T43TFKJ\",\n};\n\nconst helmetContext = {};\n\nTagManager.initialize(tagManagerArgs);\n\n// configure amplify\nconfigure();\n\nconst root = ReactDOM.createRoot(document.getElementById(\"root\"));\nlet persistor = persistStore(store);\nroot.render(\n \n \n \n \n {\n /* */\n \n }\n \n \n \n \n);\n","import { Amplify } from \"aws-amplify\";\n\nconst configure = () => {\n const auth = {\n // REQUIRED only for Federated Authentication - Amazon Cognito Identity Pool ID\n identityPoolId: process.env.REACT_APP_AWS_COGNITO_IDENTITY_POOL_ID,\n\n // REQUIRED - Amazon Cognito Region\n region: process.env.REACT_APP_AWS_REGION,\n\n // OPTIONAL - Amazon Cognito User Pool ID\n userPoolId: process.env.REACT_APP_AWS_COGNITO_USER_POOL,\n\n // OPTIONAL - Amazon Cognito Web Client ID (26-char alphanumeric string)\n userPoolWebClientId: process.env.REACT_APP_AWS_COGNITO_USER_POOL_CLIENT_ID,\n\n // OPTIONAL - Hosted UI configuration\n oauth: {\n domain: process.env.REACT_APP_AWS_OAUTH_DOMAIN,\n // scope: ['phone', 'email', 'profile', 'openid', 'aws.cognito.signin.user.admin'],\n redirectSignIn: `${process.env.REACT_APP_BASE_URL}/${process.env.REACT_APP_REDIRECT_SIGN_IN}`,\n redirectSignOut: `${process.env.REACT_APP_BASE_URL}/${process.env.REACT_APP_REDIRECT_SIGN_OUT}`,\n responseType: \"code\", // or 'token', note that REFRESH token will only be generated when the responseType is code\n },\n };\n\n const api = {\n endpoints: [\n {\n name: process.env.REACT_APP_API_NAME,\n endpoint: process.env.REACT_APP_API_ENDPOINT,\n region: process.env.REACT_APP_API_REGION,\n },\n ],\n };\n\n const storage = {\n AWSS3: {\n bucket: \"gsn-uploads\", //REQUIRED - Amazon S3 bucket name\n region: \"ap-southeast-2\", //OPTIONAL - Amazon service region\n },\n };\n\n Amplify.configure({\n Auth: auth,\n API: api,\n Storage: storage,\n });\n};\n\nexport { configure };\n\n// reference\n// Amplify.configure({\n// Auth: {\n// // (required) only for Federated Authentication - Amazon Cognito Identity Pool ID\n// identityPoolId: 'XX-XXXX-X:XXXXXXXX-XXXX-1234-abcd-1234567890ab',\n\n// // (required)- Amazon Cognito Region\n// region: 'XX-XXXX-X',\n\n// // (optional) - Amazon Cognito Federated Identity Pool Region\n// // Required only if it's different from Amazon Cognito Region\n// identityPoolRegion: 'XX-XXXX-X',\n\n// // (optional) - Amazon Cognito User Pool ID\n// userPoolId: 'XX-XXXX-X_abcd1234',\n\n// // (optional) - Amazon Cognito Web Client ID (26-char alphanumeric string, App client secret needs to be disabled)\n// userPoolWebClientId: 'a1b2c3d4e5f6g7h8i9j0k1l2m3',\n\n// // (optional) - Enforce user authentication prior to accessing AWS resources or not\n// mandatorySignIn: false,\n\n// // (optional) - Configuration for cookie storage\n// // Note: if the secure flag is set to true, then the cookie transmission requires a secure protocol\n// cookieStorage: {\n// // - Cookie domain (only required if cookieStorage is provided)\n// domain: '.yourdomain.com',\n// // (optional) - Cookie path\n// path: '/',\n// // (optional) - Cookie expiration in days\n// expires: 365,\n// // (optional) - See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite\n// sameSite: 'strict' | 'lax',\n// // (optional) - Cookie secure flag\n// // Either true or false, indicating if the cookie transmission requires a secure protocol (https).\n// secure: true\n// },\n\n// // (optional) - customized storage object\n// storage: MyStorage,\n\n// // (optional) - Manually set the authentication flow type. Default is 'USER_SRP_AUTH'\n// authenticationFlowType: 'USER_PASSWORD_AUTH',\n\n// // (optional) - Manually set key value pairs that can be passed to Cognito Lambda Triggers\n// clientMetadata: { myCustomKey: 'myCustomValue' },\n\n// // (optional) - Hosted UI configuration\n// oauth: {\n// domain: 'your_cognito_domain',\n// scope: [\n// 'phone',\n// 'email',\n// 'profile',\n// 'openid',\n// 'aws.cognito.signin.user.admin'\n// ],\n// redirectSignIn: 'http://localhost:3000/',\n// redirectSignOut: 'http://localhost:3000/',\n// clientId: '1g0nnr4h99a3sd0vfs9',\n// responseType: 'code' // or 'token', note that REFRESH token will only be generated when the responseType is code\n// }\n// }\n// });\n"],"sourceRoot":""}